cellCamera: fix qt camera handler format

This commit is contained in:
Megamouse 2021-10-19 19:18:19 +02:00
parent 9a6285942b
commit 67ba381dfe
7 changed files with 16 additions and 15 deletions

View File

@ -1692,6 +1692,7 @@ error_code camera_context::start_camera()
handler->set_mirrored(!!attr[CELL_CAMERA_MIRRORFLAG].v1);
handler->set_frame_rate(info.framerate);
handler->set_resolution(info.width, info.height);
handler->set_format(info.format, info.bytesize);
atomic_t<bool> wake_up = false;

View File

@ -12,10 +12,10 @@ public:
void start_camera() override { m_state = camera_handler_state::running; };
void stop_camera() override { m_state = camera_handler_state::open; };
void set_format(s32 format, u32 bytes_per_pixel) override
void set_format(s32 format, u32 bytesize) override
{
m_format = format;
m_bytes_per_pixel = bytes_per_pixel;
m_bytesize = bytesize;
}
void set_frame_rate(u32 frame_rate) override

View File

@ -36,7 +36,7 @@ protected:
atomic_t<camera_handler_state> m_state = camera_handler_state::not_available;
bool m_mirrored = false;
s32 m_format = 2; // CELL_CAMERA_RAW8
u32 m_bytes_per_pixel = 1;
u32 m_bytesize = 0;
u32 m_width = 640;
u32 m_height = 480;
u32 m_frame_rate = 30;

View File

@ -181,10 +181,10 @@ void qt_camera_handler::stop_camera()
m_camera->stop();
}
void qt_camera_handler::set_format(s32 format, u32 bytes_per_pixel)
void qt_camera_handler::set_format(s32 format, u32 bytesize)
{
m_format = format;
m_bytes_per_pixel = bytes_per_pixel;
m_bytesize = bytesize;
update_camera_settings();
}
@ -299,7 +299,7 @@ void qt_camera_handler::update_camera_settings()
if (m_surface)
{
m_surface->set_resolution(m_width, m_height);
m_surface->set_format(m_format, m_bytes_per_pixel);
m_surface->set_format(m_format, m_bytesize);
m_surface->set_mirrored(m_mirrored);
}
}

View File

@ -20,7 +20,7 @@ public:
void close_camera() override;
void start_camera() override;
void stop_camera() override;
void set_format(s32 format, u32 bytes_per_pixel) override;
void set_format(s32 format, u32 bytesize) override;
void set_frame_rate(u32 frame_rate) override;
void set_resolution(u32 width, u32 height) override;
void set_mirrored(bool mirrored) override;

View File

@ -93,7 +93,7 @@ bool qt_camera_video_surface::present(const QVideoFrame& frame)
}
}
const u64 new_size = m_width * m_height * m_bytes_per_pixel;
const u64 new_size = m_bytesize;
image_buffer& image_buffer = m_image_buffer[m_write_index];
// Reset buffer if necessary
@ -226,8 +226,8 @@ bool qt_camera_video_surface::present(const QVideoFrame& frame)
// Unmap frame memory
tmp.unmap();
camera_log.trace("Wrote image to video surface. index=%d, m_frame_number=%d, width=%d, height=%d, bytes_per_pixel=%d",
m_write_index, m_frame_number.load(), m_width, m_height, m_bytes_per_pixel);
camera_log.trace("Wrote image to video surface. index=%d, m_frame_number=%d, width=%d, height=%d, bytesize=%d",
m_write_index, m_frame_number.load(), m_width, m_height, m_bytesize);
// Toggle write/read index
std::lock_guard lock(m_mutex);
@ -237,12 +237,12 @@ bool qt_camera_video_surface::present(const QVideoFrame& frame)
return true;
}
void qt_camera_video_surface::set_format(s32 format, u32 bytes_per_pixel)
void qt_camera_video_surface::set_format(s32 format, u32 bytesize)
{
camera_log.notice("Setting format: format=%d, bytes_per_pixel=%d", format, bytes_per_pixel);
camera_log.notice("Setting format: format=%d, bytesize=%d", format, bytesize);
m_format = format;
m_bytes_per_pixel = bytes_per_pixel;
m_bytesize = bytesize;
}
void qt_camera_video_surface::set_resolution(u32 width, u32 height)

View File

@ -14,7 +14,7 @@ public:
QList<QVideoFrame::PixelFormat> supportedPixelFormats(QAbstractVideoBuffer::HandleType type = QAbstractVideoBuffer::NoHandle) const override;
bool present(const QVideoFrame& frame) override;
void set_format(s32 format, u32 bytes_per_pixel);
void set_format(s32 format, u32 bytesize);
void set_resolution(u32 width, u32 height);
void set_mirrored(bool mirrored);
@ -28,7 +28,7 @@ private:
bool m_front_facing = false;
bool m_mirrored = false; // Set by cellCamera
s32 m_format = 2; // CELL_CAMERA_RAW8, set by cellCamera
u32 m_bytes_per_pixel = 1;
u32 m_bytesize = 0;
u32 m_width = 640;
u32 m_height = 480;