gstreamer/subprojects
Víctor Manuel Jáquez Leal 301e281777 vabasedec: refactor format and capsfeature selection
This is a simplification of the venerable
gst_va_base_dec_get_preferred_format_and_caps_features() function, which
predates since gstreamer-vaapi. It's used to select the format and the
capsfeature to use when setting the output state. It was complex and hard to
follow. This refactor simplifies a lot the algorithm.

The first thing to remove _downstream_has_video_meta() since, most of the time
it will be called before the caps negotiation, and allocation queries make sense
only after caps negotiation. It might work during renegotiation but, in that
case, caps feature change is uncommon. Better a simple and common approach.

Also, for performance, instead of dealing with caps features as strings, GQuarks
are used.

The refactor works like this:

1. If peer pad returns any caps, the returned caps feature is system memory and
   looks for a proper format in the allowed caps.

2. The allowed caps are traversed at most 3 times: one per each valid caps
   feature. First VAMemory, later DMABuf, and last system memory. The first to
   match in allowed caps is picked, and the first format matching with the
   chroma is picked too.

Notice that, right now, using playbin videoconvert never return any.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6154>
2024-02-22 20:59:13 +00:00
..
gst-devtools Back to development 2024-02-15 16:38:53 +00:00
gst-docs Back to development 2024-02-15 16:38:53 +00:00
gst-editing-services meson: Use cdata.set_quoted() for configuration data 2024-02-21 21:47:12 +00:00
gst-examples Back to development 2024-02-15 16:38:53 +00:00
gst-integration-testsuites Back to development 2024-02-15 16:38:53 +00:00
gst-libav avviddec: Fix crash with FFmpeg n6.0 2024-02-22 18:54:45 +00:00
gst-plugins-bad vabasedec: refactor format and capsfeature selection 2024-02-22 20:59:13 +00:00
gst-plugins-base appsrc: clear eos flag on flush stop event 2024-02-22 19:46:50 +00:00
gst-plugins-good examples/qmlsinnk-multisink: allow running with leaks tracer 2024-02-22 10:26:39 +00:00
gst-plugins-ugly rtpasfdepay: Enabled header extension aggregation 2024-02-19 11:23:17 +00:00
gst-python gst-python: Print exception if pygobject fails to initialize 2024-02-21 21:47:12 +00:00
gst-rtsp-server Back to development 2024-02-15 16:38:53 +00:00
gstreamer ptp-helper: Allow sync to master clock on same host 2024-02-22 07:52:35 +00:00
gstreamer-sharp csharp: Change gtk-sharp revision in gstreamer-sharp subproject to match monorepo subproject 2024-02-22 13:21:06 +00:00
gstreamer-vaapi gstreamer-vaapi: tests: test vaapipostproc only if exists 2024-02-16 15:11:23 +00:00
macos-bison-binary macos-bison: Update to 3.8.2 and add an ARM64 build 2023-08-31 07:50:43 +00:00
packagefiles aja: suppress compiler warnings for aja ntv2 subproject 2024-02-10 10:10:06 +00:00
win-flex-bison-binaries
win-nasm
win-pkgconfig win: add new win-pkgconfig subproject 2023-07-21 06:37:45 +00:00
avtp.wrap
cairo.wrap cairo: update wrap to 1.18.0 2023-12-13 11:51:53 +00:00
dav1d.wrap
DirectX-Headers.wrap subprojects: Add DirectX-Headers wrap 2023-12-14 18:08:00 +09:00
directxmath.wrap directxmath.wrap: Fix cpuid mismatch on MinGW 2023-11-20 20:08:57 +00:00
dssim.wrap
dv.wrap
expat.wrap
fdk-aac.wrap
FFmpeg.wrap wraps:ffmpeg: Update to 6.0 2024-01-17 08:39:13 +00:00
fontconfig.wrap meson: Provide fontconfig dep from the subproject 2023-07-20 11:00:35 +00:00
freetype2.wrap
fribidi.wrap fribidi.wrap: Move to tarball, bump, provide dep 2023-07-12 21:17:25 +00:00
gl-headers.wrap
glib-networking.wrap
glib.wrap subprojects: update glib wrap to 2.78.3 2023-12-21 19:22:25 +02:00
gobject-introspection.wrap gi: add support for introspection with subprojects 2023-07-21 06:37:45 +00:00
graphene.wrap meson: Use tarball for graphene instead of git 2023-07-20 11:00:35 +00:00
gst-plugins-rs.wrap Back to development 2024-02-15 16:38:53 +00:00
gtk-sharp.wrap csharp: update gtk-sharp subproject 2023-12-07 17:34:30 +01:00
gtk.wrap gtk: Update subproject from 4.9.2 to 4.10.3 2023-07-19 07:38:36 +00:00
harfbuzz.wrap harfbuzz.wrap: Bump to latest to fix MSYS2 build failure 2023-07-12 21:17:25 +00:00
json-glib.wrap
lame.wrap meson: Update lame to -7 which contains the def file fix 2022-12-19 01:43:08 +05:30
libdrm.wrap
libffi.wrap libffi: fix wrap file to provide the libffi dependency 2023-07-21 06:37:45 +00:00
libgudev.wrap meson: Update libgudev wrap to 238 2023-12-06 20:17:56 +00:00
libjpeg-turbo.wrap
liblc3.wrap lc3: fix pkg-config file lookup 2023-08-08 22:12:29 +00:00
libmicrodns.wrap
libnice.wrap
libopenjp2.wrap
libpng.wrap
libpsl.wrap meson: Ensure that soup plugin is built on Windows 2023-07-15 05:06:35 +00:00
libsoup.wrap soup: Link to libsoup in all cases on non-Linux 2024-02-21 09:27:59 +05:30
libsrtp2.wrap
libva.wrap
libwpe.wrap
libxml2.wrap libxml2: update to 2.10.3-4 2023-06-22 08:38:22 +00:00
ntv2.wrap ntv2: Use a patch overlay instead of diff 2023-12-20 18:18:43 +00:00
ogg.wrap
openh264.wrap
opus.wrap
orc.wrap orc: Pin subproject to 0.4.37 2024-02-09 07:58:38 +00:00
pango.wrap pango: update wrap to 1.51.0 2023-12-13 11:51:53 +00:00
pcre2.wrap meson: Force pcre2 to be provided by a subproject on macOS 2023-07-20 11:00:35 +00:00
pixman.wrap meson: Fix pixman build on ARM64 macOS 2023-07-20 11:00:35 +00:00
proxy-libintl.wrap
pycairo.wrap
pygobject.wrap
sqlite3.wrap
vorbis.wrap
vpx.wrap subprojects: Add libvpx wrap 2023-08-08 18:08:24 +00:00
wayland-protocols.wrap gstwayland: Support wp_single_pixel_buffer_v1 2024-01-22 16:51:36 -05:00
webrtc-audio-processing.wrap meson: Update webrtc-audio-processing wrap to 1.3 2023-09-05 11:27:17 -04:00
wpebackend-fdo.wrap
x264.wrap subprojects: update x264 wrap to latest stable 164.3108 2024-02-02 14:46:06 +00:00
zlib.wrap