[libcamera-devel] [PATCH v4 0/3] qcam: NV family YUV format conversion by using OpenGL shader
Show Liu
show.liu at linaro.org
Fri Aug 21 18:15:59 CEST 2020
Hi,
This is the version 4 patchset for qcam to accelerate the YUV format conversion
by OpenGL shader. Most of the modifications are according to the comments
and suggestions from V3.
And the big change is using the QOpenGLFramebufferObject with QOffscreenSurface
instead of the QOpenGLWidget, the main reason that use dynamic_cast
to get the viewfinder_ is really weird.
In this version, OpenGL rendering enabled by --render=gles,
and if any error occurs during OpenGL configuration, it will return to use QT rendering.
But compared with the previous version, this version performance dropped a lot
due to I using the toImage() function to get the image when rendering complete,
it's really an inefficient operation. the framerate down to 16.x ~ 18.x fps(1280 x 800).
I am still trying to improve this performance issue. Any suggestions are welcome.
BR,
Show Liu
Show Liu (3):
qcam: add OpenGL shader code as QT resource
qcam: add OpenGL renderer
qcam: use the OpenGL renderer as NV family YUV format converter
src/qcam/assets/shader/NV_2_planes_UV_f.glsl | 32 ++
src/qcam/assets/shader/NV_2_planes_VU_f.glsl | 32 ++
src/qcam/assets/shader/NV_3_planes_UV_f.glsl | 33 ++
src/qcam/assets/shader/NV_3_planes_VU_f.glsl | 33 ++
src/qcam/assets/shader/NV_vertex_shader.glsl | 16 +
src/qcam/assets/shader/shaders.qrc | 10 +
src/qcam/main.cpp | 3 +
src/qcam/main_window.cpp | 2 +
src/qcam/main_window.h | 1 +
src/qcam/meson.build | 3 +
src/qcam/renderer.cpp | 346 +++++++++++++++++++
src/qcam/renderer.h | 81 +++++
src/qcam/viewfinder.cpp | 46 ++-
src/qcam/viewfinder.h | 10 +
14 files changed, 640 insertions(+), 8 deletions(-)
create mode 100644 src/qcam/assets/shader/NV_2_planes_UV_f.glsl
create mode 100644 src/qcam/assets/shader/NV_2_planes_VU_f.glsl
create mode 100644 src/qcam/assets/shader/NV_3_planes_UV_f.glsl
create mode 100644 src/qcam/assets/shader/NV_3_planes_VU_f.glsl
create mode 100644 src/qcam/assets/shader/NV_vertex_shader.glsl
create mode 100644 src/qcam/assets/shader/shaders.qrc
create mode 100644 src/qcam/renderer.cpp
create mode 100644 src/qcam/renderer.h
--
2.20.1
More information about the libcamera-devel
mailing list