kodi
RendererVAAPIGLES.h
1 /*
2  * Copyright (C) 2007-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "VaapiEGL.h"
12 #include "cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.h"
13 
14 #include <array>
15 #include <memory>
16 
17 namespace KODI
18 {
19 namespace UTILS
20 {
21 namespace EGL
22 {
23 class CEGLFence;
24 }
25 }
26 }
27 
28 namespace VAAPI
29 {
30 class IVaapiWinSystem;
31 }
32 
34 {
35 public:
37  ~CRendererVAAPIGLES() override;
38 
39  static CBaseRenderer* Create(CVideoBuffer *buffer);
40  static void Register(VAAPI::IVaapiWinSystem *winSystem, VADisplay vaDpy, EGLDisplay eglDisplay, bool &general, bool &deepColor);
41 
42  bool Configure(const VideoPicture &picture, float fps, unsigned int orientation) override;
43 
44  // Player functions
45  bool ConfigChanged(const VideoPicture &picture) override;
46  void ReleaseBuffer(int idx) override;
47  bool NeedBuffer(int idx) override;
48 
49 protected:
50  bool LoadShadersHook() override;
51  bool RenderHook(int idx) override;
52  void AfterRenderHook(int idx) override;
53 
54  // textures
55  bool UploadTexture(int index) override;
56  void DeleteTexture(int index) override;
57  bool CreateTexture(int index) override;
58 
59  EShaderFormat GetShaderFormat() override;
60 
61  bool m_isVAAPIBuffer = true;
62  std::unique_ptr<VAAPI::CVaapiTexture> m_vaapiTextures[NUM_BUFFERS];
63  std::array<std::unique_ptr<KODI::UTILS::EGL::CEGLFence>, NUM_BUFFERS> m_fences;
64  static VAAPI::IVaapiWinSystem *m_pWinSystem;
65 };
Definition: RendererVAAPIGLES.h:33
Definition: VideoBuffer.h:85
Definition: ColorUtils.h:18
Definition: AudioDecoder.h:18
Definition: VAAPI.h:434
Definition: DVDVideoCodec.h:36
Definition: VAAPI.h:43
Definition: LinuxRendererGLES.h:57
Definition: BaseRenderer.h:48