mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-20 08:41:07 +00:00
21faad5eca
Most of the time, the RGB kind formats are OpenGL native supported format which has only one plane. They can be imported at one shot using no matter DIRECT or INDIRECT mode. While YUV kind formats which have multi planes have two ways to import. They can be DIRECT imported, which requires GL_OES_EGL_image_external extension. The output format should be RGBA and TARGET should be set as OES after imported. The other way, they can be INDIRECT imported, which makes each plane as a texture. In this mode, the imported textures have different fourcc from the original format. For example, the NV12 format can be imported as a R8 texture for the first plane and RG88 texture for the second plane. The output TARGET should be sets as 2D in this mode. When converting sink caps to src caps, we first filter the feature of "video/x-raw(memory:DMABuf)" and system memory. Then Based on the external_only flag (INDIRECT mode does not care while DIRECT mode cares), we transform the drm-format into the gst video format. When converting src caps into sink caps, we first filter the correct TARGET(INDIRECT mode contains 2D only while DIRECT mode contains 2D, OES or both of them) gstructure. Then Based on the include_external flag (INDIRECT mode always true while DIRECT mode depends on TARGET), we transform the gst video format into drm-format. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3524> |
||
---|---|---|
.. | ||
gst | ||
meson.build |