gstreamer/subprojects
Marianna Smidth Buschle 2766e4816a v4l2object: Fixed framerate negotiation
We had a problem with negotiation of the framerate.

Gstreamer was querying the FRAMEINTERVALS based on the max frame size
instead of the desired frame size.

This was resulting in non-negotiated errors when trying to run with a
smaller frame size and fps higher than the max for the max image size.

Fx the max framerate for 1024x1024 RGB on CMOSIS4000 is 28.292
While for 1024x100 RGB it is 280.867

But Gstreamer would allow any framerates bigger than 28.292 no matter
the frame size used...

I have fixed it by 1st changing the CAPS query to use the minimum frame
size instead of maximum.
This however has the downside of allowing gstreamer to negotiate
framerates that are too high if the image size is bigger than the
minimum.
This is not a huge problem since our driver just CLAMPS the fps value to
the max then.

However gstreamer was not being properly notified of this change, and
would therefore report a wrong fps in the CAPS structure.
Note that the fps would be correct inside the buffer info.
Since gstreamer was reading the fps back after setting it.
It was just not being "propagated" to the CAPS structure.
I have also added a WARNING to this point so we can see if the fps that
gstreamer tries to apply was accepted or not.

And the next part of the fix was to add a framerate check after the
frame size has been established.
I did this inside the fixate_caps function of the v4l2src, which was
calling the TRY_FMT in order to check if the format was correct.
So I just added a check for the ENUM_FRAMEINTERVALS in there.

And now we get the non-negotiated again if the fps is too high for the
selected frame size.
Also added a couple of warnings so it is easy to see that this was the
cause.

See:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3037

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7850>
2024-11-15 22:29:56 +00:00
..
gst-devtools validate: flow: Fix logging upstream events 2024-11-07 20:52:46 +00:00
gst-docs docs: tutorials: improve Linux compile instruction for newbies 2024-11-11 17:25:18 +00:00
gst-editing-services ges: pipeline: Add missing API guard 2024-11-13 21:23:43 +00:00
gst-examples Revert "gst-examples: update to gradle 8.3" 2024-10-31 04:03:55 +05:30
gst-integration-testsuites tests: ges: Update known issue links as they were moved to the monorepo 2024-11-13 19:22:17 -03:00
gst-libav avcodecmap: Add support for M101 Matrox uncompressed SD video codec 2024-11-11 08:47:41 +00:00
gst-plugins-bad vkutils: add gst_vulkan_ensure_element_device 2024-11-15 20:32:24 +00:00
gst-plugins-base gl: colorconvert: Add support for Y444_10XX and Y444_16XX 2024-11-12 11:31:37 -03:00
gst-plugins-good v4l2object: Fixed framerate negotiation 2024-11-15 22:29:56 +00:00
gst-plugins-ugly meson: bail out earlier in docs subdir if docs are disabled 2024-11-04 19:14:10 +00:00
gst-python tensormeta: Add Python unit tests for the tensor meta APIs 2024-11-08 14:58:49 +00:00
gst-rtsp-server meson: bail out earlier in docs subdir if docs are disabled 2024-11-04 19:14:10 +00:00
gstreamer utils: improve gst_util_ceil_log2 2024-11-15 16:52:29 +00:00
gstreamer-sharp Back to development 2024-03-05 12:58:57 +00:00
gstreamer-vaapi meson: bail out earlier in docs subdir if docs are disabled 2024-11-04 19:14:10 +00:00
macos-bison-binary
packagefiles cairo.wrap: Update to 1.18.2 and fix MSYS2 build 2024-11-06 17:20:37 +00:00
webview2 subprojects: webview2: Fix warning with meson 1.4.0 2024-04-13 14:47:29 +00:00
win-flex-bison-binaries
win-nasm
win-pkgconfig
avtp.wrap
cairo.wrap cairo.wrap: Update to 1.18.2 and fix MSYS2 build 2024-11-06 17:20:37 +00:00
dav1d.wrap meson: Declare dav1d dependency in subproject 2024-03-25 10:14:13 +00:00
DirectX-Headers.wrap subprojects: Add DirectX-Headers wrap 2023-12-14 18:08:00 +09:00
directxmath.wrap subprojects: directxmath: Update to 3.1.9 2024-04-02 05:14:53 +09:00
dssim.wrap
dv.wrap
expat.wrap
fdk-aac.wrap
FFmpeg.wrap subprojects: Update ffmpeg to 7.1 2024-11-07 10:38:08 +00:00
flac.wrap flac: Add wrap file and add fallback for it to the flac plugin 2024-04-07 11:12:51 +00:00
fontconfig.wrap
freetype2.wrap
fribidi.wrap
gdk-pixbuf.wrap ci: Add a gdk-pixbuf file-based wrap for gtk4 2024-10-24 15:52:15 +05:30
gl-headers.wrap
glib-networking.wrap subprojects: update glib-networking wrap to 2.78.1 2024-04-03 18:49:08 +00:00
glib.wrap subprojects: update glib wrap to 2.82.2 2024-10-26 14:33:11 +03:00
gobject-introspection.wrap gi: add support for introspection with subprojects 2023-07-21 06:37:45 +00:00
graphene.wrap
gst-plugins-rs.wrap Back to development 2024-03-05 12:58:57 +00:00
gtk-sharp.wrap
gtk.wrap meson: Bump gtk4 and pango wraps 2024-08-17 15:00:11 +05:30
harfbuzz.wrap
json-glib.wrap subprojects: add fallback_urls for json-glib and pygobject wraps 2024-11-07 13:43:29 +00:00
lame.wrap
libdrm.wrap libdrm.wrap: Bump to latest 2.4.120 2024-05-29 15:49:45 +00:00
libffi.wrap libffi: fix wrap file to provide the libffi dependency 2023-07-21 06:37:45 +00:00
libgudev.wrap wraps: libgudev: add fallback uri 2024-07-24 11:44:28 +00:00
libjpeg-turbo.wrap
liblc3.wrap subprojects: update liblc3 wrap to 1.1.1 2024-06-28 13:38:36 +01:00
libmicrodns.wrap
libnice.wrap webrtc: Change requirement to libnice 0.1.22 2024-03-22 08:49:32 +00:00
libopenjp2.wrap meson: Update openjpeg wrap to 2.5.2, fixes a warning 2024-09-10 14:59:36 +00:00
libpng.wrap
libpsl.wrap
libsoup.wrap subprojects: Fix libsoup build on windows with gcc14 2024-08-14 04:34:28 +00:00
libsrtp2.wrap
libva.wrap meson: Fix libva.wrap meson build 2024-06-13 04:48:56 +00:00
libwpe.wrap
libxml2.wrap
ntv2.wrap ntv2: Update to AJA NTV2 SDK 17.1.0 2024-09-27 16:43:37 +00:00
ogg.wrap
openh264.wrap subprojects: update openh264 to 2.4.1 2024-09-08 15:31:27 +00:00
opus.wrap subprojects: bump opus wrap to 1.5.2 2024-06-22 12:26:22 +01:00
orc.wrap subprojects: track orc main branch again 2024-03-05 13:25:19 +00:00
pango.wrap meson: Bump gtk4 and pango wraps 2024-08-17 15:00:11 +05:30
pcre2.wrap
pixman.wrap meson: Bump pixman.wrap to latest version 2024-03-23 13:08:15 +00:00
proxy-libintl.wrap
pycairo.wrap
pygobject.wrap subprojects: add fallback_urls for json-glib and pygobject wraps 2024-11-07 13:43:29 +00:00
soundtouch.wrap pitch: add validate tests 2024-05-02 13:26:09 +02:00
sqlite3.wrap
vorbis.wrap
vpx.wrap subprojects: bump libvpx wrap to 1.14 2024-08-14 04:34:27 +00:00
wayland-protocols.wrap gstwayland: Support wp_single_pixel_buffer_v1 2024-01-22 16:51:36 -05:00
webrtc-audio-processing.wrap
wpebackend-fdo.wrap
x264.wrap meson: Make wrap downloads smaller 2024-03-23 13:08:15 +00:00
zlib.wrap