13 #include "system_gl.h" 15 #include "BaseRenderer.h" 16 #include "cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodec.h" 17 #include "cores/VideoSettings.h" 18 #include "FrameBufferObject.h" 19 #include "guilib/Shader.h" 20 #include "RenderFlags.h" 21 #include "RenderInfo.h" 22 #include "windowing/GraphicContext.h" 25 #include <libavutil/mastering_display_metadata.h> 36 class BaseYUV2RGBGLSLShader;
37 class BaseVideoFilterShader;
65 static bool Register();
68 bool Configure(
const VideoPicture& picture,
float fps,
unsigned int orientation)
override;
69 bool IsConfigured()
override {
return m_bConfigured; }
70 void AddVideoPicture(
const VideoPicture& picture,
int index)
override;
71 void UnInit()
override;
72 bool Flush(
bool saveBuffers)
override;
73 void SetBufferSize(
int numBuffers)
override { m_NumYV12Buffers = numBuffers; }
74 bool IsGuiLayer()
override;
75 void ReleaseBuffer(
int idx)
override;
76 void RenderUpdate(
int index,
int index2,
bool clear,
unsigned int flags,
unsigned int alpha)
override;
77 void Update()
override;
80 bool ConfigChanged(
const VideoPicture& picture)
override;
83 bool SupportsMultiPassRendering()
override;
84 bool Supports(ERENDERFEATURE feature)
const override;
85 bool Supports(ESCALINGMETHOD method)
const override;
90 static const int FIELD_FULL{0};
91 static const int FIELD_TOP{1};
92 static const int FIELD_BOT{2};
94 virtual void Render(
unsigned int flags,
int index);
95 virtual void RenderUpdateVideo(
bool clear,
unsigned int flags = 0,
unsigned int alpha = 255);
97 int NextYV12Texture();
98 virtual bool ValidateRenderTarget();
99 virtual void LoadShaders(
int field=FIELD_FULL);
100 virtual void ReleaseShaders();
101 void SetTextureFilter(GLenum method);
102 void UpdateVideoFilter();
103 AVColorPrimaries GetSrcPrimaries(AVColorPrimaries srcPrimaries,
unsigned int width,
unsigned int height);
106 virtual bool UploadTexture(
int index);
107 virtual void DeleteTexture(
int index);
108 virtual bool CreateTexture(
int index);
110 bool UploadYV12Texture(
int index);
111 void DeleteYV12Texture(
int index);
112 bool CreateYV12Texture(
int index);
113 virtual bool SkipUploadYV12(
int index) {
return false; }
115 bool UploadNV12Texture(
int index);
116 void DeleteNV12Texture(
int index);
117 bool CreateNV12Texture(
int index);
119 void CalculateTextureSourceRects(
int source,
int num_planes);
122 void RenderToFBO(
int index,
int field);
123 void RenderFromFBO();
124 void RenderSinglePass(
int index,
int field);
127 virtual bool LoadShadersHook() {
return false; }
128 virtual bool RenderHook(
int idx) {
return false; }
129 virtual void AfterRenderHook(
int idx) {}
138 int m_iYV12RenderBuffer{0};
139 int m_NumYV12Buffers{0};
141 bool m_bConfigured{
false};
142 bool m_bValidated{
false};
143 GLenum m_textureTarget = GL_TEXTURE_2D;
144 int m_renderMethod{RENDER_GLSL};
145 RenderQuality m_renderQuality{RQ_SINGLEPASS};
148 int m_currentField{FIELD_FULL};
149 int m_reloadShaders{0};
151 GLenum m_pixelStoreKey{0};
156 CRect rect{0, 0, 0, 0};
161 unsigned texwidth{0};
162 unsigned texheight{0};
165 unsigned pixpertex_x{0};
166 unsigned pixpertex_y{0};
171 CYuvPlane fields[MAX_FIELDS][YuvImage::MAX_PLANES];
177 AVColorPrimaries m_srcPrimaries;
178 AVColorSpace m_srcColSpace;
180 int m_srcTextureBits{8};
183 bool hasDisplayMetadata{
false};
184 AVMasteringDisplayMetadata displayMetadata;
185 bool hasLightMetadata{
false};
186 AVContentLightMetadata lightMetadata;
193 void LoadPlane(
CYuvPlane& plane,
int type,
194 unsigned width,
unsigned height,
195 int stride,
int bpp,
void* data);
200 ESCALINGMETHOD m_scalingMethod{VS_SCALINGMETHOD_LINEAR};
201 ESCALINGMETHOD m_scalingMethodGui{VS_SCALINGMETHOD_MAX};
203 AVColorPrimaries m_srcPrimaries;
204 bool m_toneMap =
false;
205 ETONEMAPMETHOD m_toneMapMethod = VS_TONEMAPMETHOD_OFF;
206 bool m_passthroughHDR =
false;
207 unsigned char* m_planeBuffer =
nullptr;
208 size_t m_planeBufferSize = 0;
211 float m_clearColour{0.0f};
215 void DrawBlackBars();
This is an Event class built from a ConditionVariable.
Definition: Event.h:35
Definition: VideoBuffer.h:85
Definition: RenderCapture.h:23
Definition: RenderInfo.h:19
Definition: RenderSystemGLES.h:73
Definition: LinuxRendererGLES.h:169
Definition: VideoFilterShaderGLES.h:20
Definition: VideoBuffer.h:24
Definition: LinuxRendererGL.h:30
Base texture class, subclasses of which depend on the render spec (DX, GL etc.)
Definition: Texture.h:34
Definition: DVDVideoCodec.h:36
Definition: LinuxRendererGLES.h:153
Definition: LinuxRendererGLES.h:57
Definition: BaseRenderer.h:48
Definition: FrameBufferObject.h:32
Definition: YUV2RGBShaderGLES.h:26