-
Thomas Guillem authored
This commit adds support for direct rendering with YUV/RGB software chromas. This is done using Pixel Buffer Object (PBO, A Buffer Object that is used for asynchronous pixel transfer operations) [1][2]. PBO are present since OpenGL 2.1 and since OpenGLES 3.0. But there is an issue, VLC software decoders and video filters might need to read picture buffers while they're being displayed. Therefore, the basic use case of PBOs can't work (since you need to unmap the buffer before displaying it). To solve this issue, we need to use persistent mapped buffers[3]. This can be done using the glBufferStorage() function with the GL_MAP_PERSISTENT_BIT flag. Unfortunately, this new API is only present since OpenGL 4.4 and as an extension since OpenGLES 3.1 (so no Android, macos and ios support for now). References: [1]: https://www.khronos.org/opengl/wiki/Pixel_Buffer_Object [2]: http://www.songho.ca/opengl/gl_pbo.html [3]: https://www.khronos.org/opengl/wiki/Buffer_Object_Streaming
565d1771
To find the state of this project's repository at the time of any of these versions, check out the tags.