diff options
Diffstat (limited to 'src/qcam/viewfinder_gl.h')
-rw-r--r-- | src/qcam/viewfinder_gl.h | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/src/qcam/viewfinder_gl.h b/src/qcam/viewfinder_gl.h deleted file mode 100644 index 68c2912d..00000000 --- a/src/qcam/viewfinder_gl.h +++ /dev/null @@ -1,108 +0,0 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ -/* - * Copyright (C) 2020, Linaro - * - * viewfinder_GL.h - OpenGL Viewfinder for rendering by OpenGL shader - * - */ - -#pragma once - -#include <array> -#include <memory> - -#include <QImage> -#include <QMutex> -#include <QOpenGLBuffer> -#include <QOpenGLFunctions> -#include <QOpenGLShader> -#include <QOpenGLShaderProgram> -#include <QOpenGLTexture> -#include <QOpenGLWidget> -#include <QSize> - -#include <libcamera/formats.h> -#include <libcamera/framebuffer.h> - -#include "viewfinder.h" - -class ViewFinderGL : public QOpenGLWidget, - public ViewFinder, - protected QOpenGLFunctions -{ - Q_OBJECT - -public: - ViewFinderGL(QWidget *parent = nullptr); - ~ViewFinderGL(); - - const QList<libcamera::PixelFormat> &nativeFormats() const override; - - int setFormat(const libcamera::PixelFormat &format, const QSize &size, - const libcamera::ColorSpace &colorSpace, - unsigned int stride) override; - void render(libcamera::FrameBuffer *buffer, Image *image) override; - void stop() override; - - QImage getCurrentImage() override; - -Q_SIGNALS: - void renderComplete(libcamera::FrameBuffer *buffer); - -protected: - void initializeGL() override; - void paintGL() override; - void resizeGL(int w, int h) override; - QSize sizeHint() const override; - -private: - bool selectFormat(const libcamera::PixelFormat &format); - void selectColorSpace(const libcamera::ColorSpace &colorSpace); - - void configureTexture(QOpenGLTexture &texture); - bool createFragmentShader(); - bool createVertexShader(); - void removeShader(); - void doRender(); - - /* Captured image size, format and buffer */ - libcamera::FrameBuffer *buffer_; - libcamera::PixelFormat format_; - libcamera::ColorSpace colorSpace_; - QSize size_; - unsigned int stride_; - Image *image_; - - /* Shaders */ - QOpenGLShaderProgram shaderProgram_; - std::unique_ptr<QOpenGLShader> vertexShader_; - std::unique_ptr<QOpenGLShader> fragmentShader_; - QString vertexShaderFile_; - QString fragmentShaderFile_; - QStringList fragmentShaderDefines_; - - /* Vertex buffer */ - QOpenGLBuffer vertexBuffer_; - - /* Textures */ - std::array<std::unique_ptr<QOpenGLTexture>, 3> textures_; - - /* Common texture parameters */ - GLuint textureMinMagFilters_; - - /* YUV texture parameters */ - GLuint textureUniformU_; - GLuint textureUniformV_; - GLuint textureUniformY_; - GLuint textureUniformStep_; - unsigned int horzSubSample_; - unsigned int vertSubSample_; - - /* Raw Bayer texture parameters */ - GLuint textureUniformSize_; - GLuint textureUniformStrideFactor_; - GLuint textureUniformBayerFirstRed_; - QPointF firstRed_; - - QMutex mutex_; /* Prevent concurrent access to image_ */ -}; |