/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2020, Linaro * * viewfinder_GL.h - OpenGL Viewfinder for rendering by OpenGL shader * */ #ifndef __VIEWFINDER_GL_H__ #define __VIEWFINDER_GL_H__ #include #include #include #include #include #include #include #include #include #include #include #include #include #include "viewfinder.h" class ViewFinderGL : public QOpenGLWidget, public ViewFinder, protected QOpenGLFunctions { Q_OBJECT public: ViewFinderGL(QWidget *parent = nullptr); ~ViewFinderGL(); const QList &nativeFormats() const override; int setFormat(const libcamera::PixelFormat &format, const QSize &size) override; void render(libcamera::FrameBuffer *buffer, MappedBuffer *map) 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 configureTexture(QOpenGLTexture &texture); bool createFragmentShader(); bool createVertexShader(); void removeShader(); void doRender(); /* Captured image size, format and buffer */ libcamera::FrameBuffer *buffer_; libcamera::PixelFormat format_; QSize size_; unsigned char *data_; /* Shaders */ QOpenGLShaderProgram shaderProgram_; std::unique_ptr vertexShader_; std::unique_ptr fragmentShader_; QString fragmentShaderFile_; QStringList fragmentShaderDefines_; /* Vertex buffer */ QOpenGLBuffer vertexBuffer_; /* Textures */ std::array, 3> textures_; /* YUV texture parameters */ GLuint textureUniformU_; GLuint textureUniformV_; GLuint textureUniformY_; GLuint textureUniformStepX_; unsigned int horzSubSample_; unsigned int vertSubSample_; QMutex mutex_; /* Prevent concurrent access to image_ */ }; #endif /* __VIEWFINDER_GL_H__ */ /base/log.h'>
blob: 866a2133523b8a736f71844d586b95205d942189 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
 * Copyright (C) 2018, Google Inc.
 *
 * log.h - Logging infrastructure
 */
#ifndef __LIBCAMERA_BASE_LOG_H__
#define __LIBCAMERA_BASE_LOG_H__

#include <chrono>
#include <sstream>

#include <libcamera/base/private.h>

#include <libcamera/base/class.h>
#include <libcamera/base/utils.h>

namespace libcamera {

enum LogSeverity {
	LogInvalid = -1,
	LogDebug = 0,
	LogInfo,
	LogWarning,
	LogError,
	LogFatal,
};

class LogCategory
{
public:
	explicit LogCategory(const char *name);

	const char *name() const { return name_; }
	LogSeverity severity() const { return severity_; }
	void setSeverity(LogSeverity severity);

	static const LogCategory &defaultCategory();

private: