gstreamer issueshttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues2024-03-28T13:12:23Zhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3432vtdec: Seeking sometimes freezes output and causes kVTVideoDecoderBadDataErr2024-03-28T13:12:23ZPiotr Brzezińskivtdec: Seeking sometimes freezes output and causes kVTVideoDecoderBadDataErrWhen using `gst-play` with some files, in my case a [HDR10 60fps 4K test clip](https://drive.google.com/file/d/1Ic9DZXMSo07EJMqCFaQRKSSrSw6y1mYv/view?usp=sharing) from the [Kodi samples library](https://kodi.wiki/view/Samples), seeking f...When using `gst-play` with some files, in my case a [HDR10 60fps 4K test clip](https://drive.google.com/file/d/1Ic9DZXMSo07EJMqCFaQRKSSrSw6y1mYv/view?usp=sharing) from the [Kodi samples library](https://kodi.wiki/view/Samples), seeking forward (2+ times for this example) causes `vtdec` to get into a bad state where output frames are empty and the output callback signals `kVTVideoDecoderBadDataErr` infinitely. When looking at the output, every few seconds a frame or two will appear, but it's frozen otherwise.
**Note**: This only happens if hardware acceleration is enabled. Software decoding works fine.
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6446 will make things a bit better (should error out at some point instead of just freezing and waiting until input runs out), but the issue still stands.
For the record, when using `avdec_h265` no such issue can be seen.
#### Setup
- **Operating System:** macOS Sonoma 14.4
- **Device:** MacBook Pro (M1 Pro)
- **GStreamer Version:** latest `main`https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3431Unable to play mkv video using gstreamer2024-03-28T14:22:29ZGuilherme HubnerUnable to play mkv video using gstreamer### Describe your issue
I am unable to play MKV files using gstreamer. I've tried many different ways and none worked for me.
Initially I wrote a program to extract a frame out of the video using `playbin`, it works for most of the vide...### Describe your issue
I am unable to play MKV files using gstreamer. I've tried many different ways and none worked for me.
Initially I wrote a program to extract a frame out of the video using `playbin`, it works for most of the videos I input to it. But for some files when I call `gst_element_get_state(playbin, NULL, NULL, 5*GST_SECOND)` I get `GST_STATE_CHANGE_FAILURE` as return.
Triggered by that I started trying another ways to reproduce the video, for example:
`gst-play-1.0 ~/Downloads/cicd.mkv`
That opens the player but all the frames are black.
I also tried:
`gst-launch-1.0 -v playbin3 uri=file:///home/$USER/Downloads/cicd.mkv`
`gst-launch-1.0 -v playbin uri=file:///home/$USER/Downloads/cicd.mkv`
And again all I got was a black screen.
Using VLC and other players I was able to play the video.
Other MKV videos I have works with all methods listed above.
#### Expected Behavior
I would expect to be able to play the video using gstreamer.
#### Observed Behavior
gstreamer is unable to properly play the video, programatically it gives error and using cli tools it shows only completely black frames.
#### Setup
- Operating System: Ubuntu 22.04.4 LTS x86_64
- Device: Computer
- GStreamer Version: 1.20.3
- gst-play-1.0 version 1.20.1
- gst-launch-1.0 version 1.20.3
### Steps to reproduce the bug
1. Download the video in this issue
2. open terminal
3. type `gst-play-1.0 ~/Downloads/cicd.mkv`
4. You can also try `gst-launch-1.0 -v playbin3 uri=file:///home/$USER/Downloads/cicd.mkv` or `gst-launch-1.0 -v playbin uri=file:///home/$USER/Downloads/cicd.mkv`
### How reproducible is the bug?
We tried in many different machines running linux, so it is not device specific.
### Additional Information
Video that is failing: [cicd.mkv](/uploads/ed66b66141d804ee330e92576a303a4a/cicd.mkv)
Worth to mention that the video above was also encoded using gstreamer.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3427vavp9enc: some resolutions fails to encode using CQP2024-03-28T00:14:04ZVíctor Manuel Jáquez Lealvavp9enc: some resolutions fails to encode using CQPUsing iHD driver version 24.1.3 (libva 2.21) on Alder Lake
This pipeline fails:
```
gst-launch-1.0 videotestsrc pattern=1 ! video/x-raw, format=NV12, width=640, height=480 ! vavp9lpenc rate-control=cqp ! fakesink
```
with these logs
...Using iHD driver version 24.1.3 (libva 2.21) on Alder Lake
This pipeline fails:
```
gst-launch-1.0 videotestsrc pattern=1 ! video/x-raw, format=NV12, width=640, height=480 ! vavp9lpenc rate-control=cqp ! fakesink
```
with these logs
```
0:00:00.106913809 88845 0x7f9f4c000b90 DEBUG vabaseenc gstvabaseenc.c:371:gst_va_base_enc_copy_output_data:<vavp9lpenc0> Not enough space for coded data
0:00:00.106927139 88845 0x7f9f4c000b90 ERROR vavp9enc gstvavp9enc.c:2544:_vp9_create_super_frame_output_buffer:<vavp9lpenc0> Fails to copy the output data of system_frame_number 1, frame_num: 1
0:00:00.106931294 88845 0x7f9f4c000b90 ERROR vavp9enc gstvavp9enc.c:2660:gst_va_vp9_enc_prepare_output:<vavp9lpenc0> Failed to create output buffer
0:00:00.106933608 88845 0x7f9f4c000b90 ERROR vabaseenc gstvabaseenc.c:466:_push_buffer_to_downstream:<vavp9lpenc0> Failed to prepare output
0:00:00.106954914 88845 0x7f9f4c000b90 DEBUG vabaseenc gstvabaseenc.c:513:_push_out_one_buffer:<vavp9lpenc0> fails to push one buffer, system_frame_number 1: error
```
cc: @He_Junyanhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3426switchbin doesn't negotiate requested resolution from webcam2024-03-27T18:04:49ZSergei Ilinykhswitchbin doesn't negotiate requested resolution from webcam### Describe your issue
I'm a somewhat puzzled on how switchbin element does negotiation.
Below are minimal examples just for the problem demonstration. Real life code will include more paths to switchbin.
# Next 3 work well
gs...### Describe your issue
I'm a somewhat puzzled on how switchbin element does negotiation.
Below are minimal examples just for the problem demonstration. Real life code will include more paths to switchbin.
# Next 3 work well
gst-launch-1.0 -v v4l2src device=/dev/video0 ! switchbin num-paths=1 path0::caps="image/jpeg,with=1280,height=720" ! jpegdec ! videoconvert ! autovideosink
gst-launch-1.0 -v v4l2src device=/dev/video0 ! switchbin num-paths=1 path0::caps="image/jpeg,with=320,height=240" ! jpegdec ! videoconvert ! autovideosink
gst-launch-1.0 -v v4l2src device=/dev/video0 ! switchbin num-paths=1 path0::caps="image/jpeg,with=1280,height=720" path0::element="jpegdec" ! videoconvert ! autovideosink
# but the next one doesn't work
gst-launch-1.0 -v v4l2src device=/dev/video0 ! switchbin num-paths=1 path0::caps="image/jpeg,with=320,height=240" path0::element="jpegdec" ! videoconvert ! autovideosink
I can't explain why. But according to the log the failing sample just took the first available caps from v4l2src, which is `image/jpeg, width=1280, height=720, framerate=30/1` and didn't even try to negotiate with any other, regardless v4l2src also declares `image/jpeg, width=320, height=240, framerate=30/1`.
Looks like a bug.
#### Expected Behavior
Requested resolution is negotiated
#### Observed Behavior
<!-- What actually happened -->
#### Setup
- **Operating System:** Gentoo
- **Device:** Laptop MSI GL75 9SDK
- **GStreamer Version:** 1.22.3
- **Command line:** ? bash/konsole
### Steps to reproduce the bug
<!-- please fill in exact steps which reproduce the bug on your system, for example: -->
1. open terminal
2. type `gst-launch-1.0 -v v4l2src device=/dev/video0 ! switchbin num-paths=1 path0::caps="image/jpeg,with=320,height=240" path0::element="jpegdec" ! videoconvert ! autovideosink`
### Additional Information
The command above opens a window with single static frame for less than a second and closes immediately.
<!-- Any other information such as logs. Make use of <details> for long output -->
```
0:00:00.674750199 373216 0x7f7428000d10 INFO GST_STATES gstelement.c:2716:_priv_gst_element_state_changed:<pipeline0> notifying about state-changed PAUSED to PLAYING (VOID_PENDING pending)
0:00:00.674894259 373216 0x55ce4cadf330 INFO bin gstbin.c:2767:gst_bin_do_latency_func:<pipeline0> configured latency of 0:00:00.048333333
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0: crop-bounds = < (int)0, (int)0, (int)424, (int)240 >
0:00:00.687233331 373216 0x7f7428000b70 INFO v4l2src gstv4l2src.c:854:gst_v4l2src_negotiate:<v4l2src0> fixated to: image/jpeg, width=(int)1280, height=(int)720, framerate=(fraction)30/1, parsed=(boolean)true, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:5:1
0:00:00.687266699 373216 0x7f7428000b70 INFO GST_EVENT gstevent.c:918:gst_event_new_caps: creating caps event image/jpeg, width=(int)1280, height=(int)720, framerate=(fraction)30/1, parsed=(boolean)true, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:5:1
0:00:00.687322122 373216 0x7f7428000b70 WARN GST_CAPS gstpad.c:5787:pre_eventfunc_check:<switchbin0:sink> caps image/jpeg, width=(int)1280, height=(int)720, framerate=(fraction)30/1, parsed=(boolean)true, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:5:1 not accepted
0:00:00.687337726 373216 0x7f7428000b70 WARN GST_CAPS gstpad.c:5787:pre_eventfunc_check:<switchbin0:sink> caps image/jpeg, width=(int)1280, height=(int)720, framerate=(fraction)30/1, parsed=(boolean)true, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:5:1 not accepted
0:00:00.687343283 373216 0x7f7428000b70 WARN GST_PADS gstpad.c:4361:gst_pad_peer_query:<v4l2src0:src> could not send sticky events
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = image/jpeg, width=(int)1280, height=(int)720, framerate=(fraction)30/1, parsed=(boolean)true, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:5:1
0:00:00.688144772 373216 0x7f7428000b70 WARN v4l2 gstv4l2object.c:4440:gst_v4l2_object_set_crop:<v4l2src0:src> VIDIOC_S_CROP failed
0:00:00.712830318 373216 0x7f7428000b70 INFO v4l2 gstv4l2object.c:4035:gst_v4l2_object_set_format_full:<v4l2src0:src> Set capture framerate to 30/1
0:00:00.712850244 373216 0x7f7428000b70 WARN v4l2 gstv4l2object.c:3258:gst_v4l2_object_reset_compose_region:<v4l2src0:src> Failed to get default compose rectangle with VIDIOC_G_SELECTION: Недопустимый аргумент
0:00:00.712855689 373216 0x7f7428000b70 INFO v4l2 gstv4l2object.c:3194:gst_v4l2_object_setup_pool:<v4l2src0:src> accessing buffers via mode 4
0:00:00.712924496 373216 0x7f7428000b70 INFO v4l2bufferpool gstv4l2bufferpool.c:586:gst_v4l2_buffer_pool_set_config:<v4l2src0:pool1:src> increasing minimum buffers to 2
0:00:00.712929207 373216 0x7f7428000b70 INFO v4l2bufferpool gstv4l2bufferpool.c:599:gst_v4l2_buffer_pool_set_config:<v4l2src0:pool1:src> reducing maximum buffers to 32
0:00:00.712952484 373216 0x7f7428000b70 INFO v4l2bufferpool gstv4l2bufferpool.c:599:gst_v4l2_buffer_pool_set_config:<v4l2src0:pool1:src> reducing maximum buffers to 32
0:00:00.713605268 373216 0x7f7428000b70 WARN v4l2bufferpool gstv4l2bufferpool.c:848:gst_v4l2_buffer_pool_start:<v4l2src0:pool1:src> Uncertain or not enough buffers, enabling copy threshold
0:00:01.128822853 373216 0x7f7428000b70 WARN GST_CAPS gstpad.c:5787:pre_eventfunc_check:<switchbin0:sink> caps image/jpeg, width=(int)1280, height=(int)720, framerate=(fraction)30/1, parsed=(boolean)true, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:5:1 not accepted
0:00:01.128907610 373216 0x7f7428000b70 WARN basesrc gstbasesrc.c:3132:gst_base_src_loop:<v4l2src0> error: Internal data stream error.
0:00:01.128928899 373216 0x7f7428000b70 WARN basesrc gstbasesrc.c:3132:gst_base_src_loop:<v4l2src0> error: streaming stopped, reason not-negotiated (-4)
0:00:01.128965241 373216 0x7f7428000b70 INFO GST_ERROR_SYSTEM gstelement.c:2281:gst_element_message_full_with_details:<v4l2src0> posting message: Internal data stream error.
ОШИБКА: из элемента /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Дополнительная отладочная информация:
../gstreamer-1.22.3/libs/gst/base/gstbasesrc.c(3132): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)
0:00:01.129116749 373216 0x7f7428000b70 INFO GST_ERROR_SYSTEM gstelement.c:2308:gst_element_message_full_with_details:<v4l2src0> posted error message: Internal data stream error.
0:00:01.129170285 373216 0x7f7428000b70 WARN GST_CAPS gstpad.c:5787:pre_eventfunc_check:<switchbin0:sink> caps image/jpeg, width=(int)1280, height=(int)720, framerate=(fraction)30/1, parsed=(boolean)true, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:5:1 not accepted
0:00:01.129208187 373216 0x7f7428000b70 WARN GST_CAPS gstpad.c:5787:pre_eventfunc_check:<switchbin0:sink> caps image/jpeg, width=(int)1280, height=(int)720, framerate=(fraction)30/1, parsed=(boolean)true, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:5:1 not accepted
0:00:01.129260135 373216 0x7f7428000b70 WARN GST_CAPS gstpad.c:5787:pre_eventfunc_check:<switchbin0:sink> caps image/jpeg, width=(int)1280, height=(int)720, framerate=(fraction)30/1, parsed=(boolean)truExecution ended after 0:00:00.997273841
e, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:5:1 not accepted
Установка конвейера в состояние NULL…
0:00:01.129366704 373216 0x55ce4cadf330 INFO GST_STATES gstbin.c:2480:gst_bin_element_set_state:<autovideosink0> current PLAYING pending VOID_PENDING, desired next PAUSED
```
```
name : HD Webcam (V4L2)
class : Video/Source
caps : image/jpeg, width=1280, height=720, framerate=30/1
image/jpeg, width=320, height=180, framerate=30/1
image/jpeg, width=320, height=240, framerate=30/1
image/jpeg, width=352, height=288, framerate=30/1
image/jpeg, width=424, height=240, framerate=30/1
image/jpeg, width=640, height=360, framerate=30/1
image/jpeg, width=640, height=480, framerate=30/1
image/jpeg, width=848, height=480, framerate=30/1
image/jpeg, width=960, height=540, framerate=30/1
video/x-raw, format=YUY2, width=1280, height=720, framerate=10/1
video/x-raw, format=YUY2, width=320, height=180, framerate=30/1
video/x-raw, format=YUY2, width=320, height=240, framerate=30/1
video/x-raw, format=YUY2, width=352, height=288, framerate=30/1
video/x-raw, format=YUY2, width=424, height=240, framerate=30/1
video/x-raw, format=YUY2, width=640, height=360, framerate=30/1
video/x-raw, format=YUY2, width=640, height=480, framerate=30/1
video/x-raw, format=YUY2, width=848, height=480, framerate=20/1
video/x-raw, format=YUY2, width=960, height=540, framerate=15/1
properties:
api.v4l2.cap.bus_info = usb-0000:00:14.0-13
api.v4l2.cap.capabilities = 84a00001
api.v4l2.cap.card = HD Webcam: HD Webcam
api.v4l2.cap.device-caps = 04200001
api.v4l2.cap.driver = uvcvideo
api.v4l2.cap.version = 6.8.1
api.v4l2.path = /dev/video0
device.api = v4l2
device.devids = 20736
device.id = 41
device.product.id = 0x211
device.vendor.id = 0x598
factory.name = api.v4l2.source
media.class = Video/Source
node.description = HD Webcam (V4L2)
node.name = v4l2_input.pci-0000_00_14.0-usb-0_13_1.0
node.nick = HD Webcam
node.pause-on-idle = false
object.path = v4l2:/dev/video0
priority.session = 1000
factory.id = 10
client.id = 34
clock.quantum-limit = 8192
media.role = Camera
node.driver = true
object.id = 45
object.serial = 45
gst-launch-1.0 pipewiresrc target-object=45 ! ...
```https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3425vtdec: Fails to decode some kinds of 10bit HDR footage2024-03-26T14:58:26ZPiotr Brzezińskivtdec: Fails to decode some kinds of 10bit HDR footageWhen testing a [HDR10 60fps 4K test clip](https://drive.google.com/file/d/1Ic9DZXMSo07EJMqCFaQRKSSrSw6y1mYv/view?usp=sharing) from the [Kodi samples library](https://kodi.wiki/view/Samples), `vtdec` fails to play it completely.
The erro...When testing a [HDR10 60fps 4K test clip](https://drive.google.com/file/d/1Ic9DZXMSo07EJMqCFaQRKSSrSw6y1mYv/view?usp=sharing) from the [Kodi samples library](https://kodi.wiki/view/Samples), `vtdec` fails to play it completely.
The error message is as follows:
```
0:00:00.667358334 71926 0x600003f4ad90 ERROR vtdec vtdec.c:1218:gst_vtdec_session_output_callback:<vtdechw0> Error decoding frame -17694
```
which indicates `kVTVideoDecoderReferenceMissingErr`. It's not a critical error, and should ideally be worked around instead of aborting completely. It's of course hard to find any documentation about this error, but VLC for example only [restarts the encoding session](https://code.videolan.org/videolan/vlc/-/blob/master/modules/codec/videotoolbox/decoder.c#L1751) when this error is encountered.
It's not clear why and when this error can be expected, it definitely doesn't happen for all kinds of HDR 10bit footage (a quick recording of similar kind from a relatively modern iPhone has no issues being played back), but that's the only case where I was able to reproduce it.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3424rtspsrc retrieves frames from another multicast stream2024-03-26T12:31:12Zrobin-blanchardrtspsrc retrieves frames from another multicast stream### Describe your issue
<!-- Please provide a clear and concise summary of the bug. -->
I am currently in the process of bumping GStreamer to 1.22.9 in my solution. When using an rtspsrc pipeline to a multicast stream, the frames I recei...### Describe your issue
<!-- Please provide a clear and concise summary of the bug. -->
I am currently in the process of bumping GStreamer to 1.22.9 in my solution. When using an rtspsrc pipeline to a multicast stream, the frames I receive are from another multicast stream. Both streams come from the same media gateway.
<!-- For any GStreamer usage questions or application development support
please head over to our new GStreamer Discourse forum at
https://discourse.gstreamer.org/ instead, or find us on
the GStreamer Matrix room at https://matrix.to/#/#gstreamer:gstreamer.org -->
#### Expected Behavior
<!-- What did you expect to happen -->
I expected both pipelines to retrieve frames from the corresponding stream. The pipelines are:
`/usr/bin/gst-launch-1.0 rtspsrc location=$RTSP latency=20000 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! jpegenc ! multifilesink location="frame%05d.jpg"` with `RTSP` being the RTSP link.
#### Observed Behavior
<!-- What actually happened -->
The pipeline running on `rtsp://A.B.C.D:1234/camera01` corrrectly works.
The pipeline running on `rtsp://A.B.C.D:1234/camera02` retrieves frames from the `camera01` stream.
#### Setup
- **Operating System:** Linux
- **Device:** Docker container <!-- Delete as appropriate !-->
- **GStreamer Version:** 1.22.9
- **Command line:** `/usr/bin/gst-launch-1.0 rtspsrc location=$RTSP latency=20000 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! jpegenc ! multifilesink location="frame%05d.jpg"`
### Steps to reproduce the bug
<!-- please fill in exact steps which reproduce the bug on your system, for example: -->
Here's the Dockerfile used to build GStreamer:
```
# Taken from https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3202
FROM ubuntu:22.04
# Setting bash as the default shell in this container
SHELL ["/bin/bash", "-c"]
# Environment variable to configure timezone
ENV TZ=Etc/UTC \
GSTREAMER_VERSION=1.22.9
WORKDIR /tmp/workdir
RUN apt update \
&& apt install -y tzdata \
&& rm -rf /var/lib/apt/lists/*
RUN apt update \
&& apt install -y \
autoconf \
build-essential \
cmake \
curl \
dvb-apps \
fonts-open-sans \
g++ \
git \
liba52-0.7.4-dev \
libaom-dev \
libasound2-dev \
libass-dev \
libavc1394-dev \
libavcodec-dev \
libavdevice-dev \
libavformat-dev \
libavutil-dev \
libcdio-cdda-dev \
libcdio-dev \
libcdio-paranoia-dev \
libdrm-dev \
libfaad-dev \
libfdk-aac-dev \
libfreetype6-dev \
libgl1-mesa-dev \
libiec61883-dev \
libjack-dev \
libjpeg62-dev \
libmad0-dev \
libmp3lame-dev \
libogg-dev \
libopenal-dev \
libopencore-amrnb-dev \
libopencore-amrwb-dev \
libopus-dev \
libpng-dev \
libpulse-dev \
libraw1394-dev \
librtmp-dev \
libsdl2-dev \
libsoup2.4-dev \
libsrt-openssl-dev \
libssl-dev \
libswscale-dev \
libtheora-dev \
libtool \
libvorbis-dev \
libvpx-dev \
libwebp-dev \
libx264-dev \
libx265-dev \
libxcb-shape0-dev \
libxcb-shm0-dev \
libxcb-xfixes0-dev \
libxv-dev \
libxvidcore-dev \
mesa-utils \
pkg-config \
scons \
wget \
x11proto-gl-dev \
x11proto-video-dev \
yasm \
zlib1g-dev \
&& rm -rf /var/lib/apt/lists/*
ENV LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64
RUN apt update \
&& apt remove -y \
meson \
&& apt install -y \
python3-pip \
flex \
bison \
&& python3 -m pip install meson ninja tomli \
&& rm -rf /var/lib/apt/lists/*
###################################################################################################
# GStreamer clone
RUN git clone --depth 1 --branch ${GSTREAMER_VERSION} https://github.com/GStreamer/gstreamer.git
# GStreamer build
RUN cd /tmp/workdir/gstreamer \
&& meson setup --wipe \
-Dlibav=enabled \
-Dgood=enabled \
-Dbad=enabled \
-Dugly=enabled \
-Dgpl=enabled \
--buildtype release \
builddir \
&& meson compile -C builddir \
&& cd builddir \
&& meson install \
&& ldconfig \
&& cd /tmp/workdir \
&& rm -rf gstreamer
```
Build the image and run a container with `--network host` to access multicast streams.
Running the gst-launch command on both streams should reproduce the bug.
### How reproducible is the bug?
Always once we're in such a setup
### Additional Information
<!-- Any other information such as logs. Make use of <details> for long output -->
With GStreamer 1.18.4, there is no such problemhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3420macos: Transparent PNG into glimagesink doesn't display correctly2024-03-25T20:41:29ZPiotr Brzezińskimacos: Transparent PNG into glimagesink doesn't display correctlyA pipeline like `filesrc ! pngdec ! imagefreeze ! glimagesink`, when decoding a PNG file with an alpha channel, does not seem to render correctly (only on macOS, to my knownledge). The image only appears for 1 frame after a forced re-ren...A pipeline like `filesrc ! pngdec ! imagefreeze ! glimagesink`, when decoding a PNG file with an alpha channel, does not seem to render correctly (only on macOS, to my knownledge). The image only appears for 1 frame after a forced re-render, through resizing the window for example. Displays fine with `! osxvideosink`. It's identical to https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1548 with how it manifests. Haven't investigated any further yet.
Here's a quick recording when attempting to show the [GStreamer logo png](/uploads/05df15420ac0e49969836d6ccc8da223/gstreamer-logo.png):
![Screen_Recording_2024-03-25_at_21.39.12](/uploads/4aef37e90f6d33397581b6744f051dc2/Screen_Recording_2024-03-25_at_21.39.12.mov)
#### Setup
- **Operating System:** macOS Sonoma 14.4
- **Device:** MacBook Pro w/ M1 Pro
- **GStreamer Version:** latest `main`https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3415GStreamer 1.24.2 stable bug-fix release tracker2024-03-22T01:28:29ZTim-Philipp Müllertim@centricular.comGStreamer 1.24.2 stable bug-fix release tracker# Milestone 1.24.2
- Milestone 1.24.2 Overview: %1.24.2
- ETA: 01-07 April 2024 (maybe sooner if anything comes up)
# Todo
- [ ] [Merge Requests with `Needs backport` label](https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requ...# Milestone 1.24.2
- Milestone 1.24.2 Overview: %1.24.2
- ETA: 01-07 April 2024 (maybe sooner if anything comes up)
# Todo
- [ ] [Merge Requests with `Needs backport` label](https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&state=merged&label_name%5B%5D=Needs%20backport¬%5Blabel_name%5D%5B%5D=Backported%20into%201.24)
- [ ] [Issues with `Needs backport` label](https://gitlab.freedesktop.org/groups/gstreamer/-/issues?scope=all&utf8=%E2%9C%93&state=all&label_name%5B%5D=Needs%20backport)
- [ ] [Merge Requests with `Maybe backport` label](https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=all&label_name%5B%5D=Maybe%20backport)
- [ ] [Merge Requests with `1.24.2` milestone](https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?milestone_title=1.24.2)
- [ ] [Issues with `1.24.2` milestone](https://gitlab.freedesktop.org/groups/gstreamer/-/issues?milestone_title=1.24.2)
- [ ] [Issues with `Security` label](https://gitlab.freedesktop.org/groups/gstreamer/-/issues?scope=all&utf8=%E2%9C%93&state=all&label_name%5B%5D=Security)
- [ ] Blockers / Todo
- nothing so far
# Prep
- [ ] gst-plugins-rs
- [ ] make sure 0.12 branch is up-to-date with regards to backports ( @slomo)
- [ ] update `Cargo.lock` in 0.12 branch (if needed)
- [ ] double-check meson.build version matches Cargo.toml version
- [ ] add `gstreamer-1.24.2` tag pointing to tip of 0.12 branch
- [ ] www: add release note entry and add contributors
- [ ] including gst-plugin-rs fixes perhaps
- [ ] update translations, maybe (also in main, then backport)
# GStreamer
- [ ] MR / commit for release
- [ ] tag release
- [ ] upload tarballs (plus checksums and GPG signatures)
- [ ] back to dev in 1.24 branch
# Cerbero
- [ ] pending merge requests: https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests?scope=all&state=opened&target_branch=1.24
- [ ] [cerbero issues with 1.24.2 milestone](https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/?sort=created_date&state=opened&milestone_title=1.24.2&first_page_size=100)
- [ ] build 1.24.2 tag
- [ ] binaries
- [ ] Windows x86 MinGW + MSVC ( @nirbheek)
- [ ] Windows x86_64 MinGW + MSVC ( @nirbheek)
- [ ] Android
- [ ] macOS ( @ystreet)
- [ ] iOS ( @ystreet)
- [ ] source bundle
- [ ] check for sha265sums for binaries
- [ ] check for GPG signatures for binaries
- [ ] tag cerbero ( @tpm)
- [ ] build 1.24 branch again
- [ ] update download section on website
- [ ] announce binaries (twitter, discourse, gstreamer-devel)
# Announce
- [ ] Discourse
- [ ] Website: news item + release notes
- [ ] Twitter ( @tpm)
- [ ] Mastodon ( @slomo)
- [ ] IRC channel topic
- [ ] Mailing lists
# Post release
- [ ] Add 1.24.3 milestone
- [ ] Add 1.24.3 tracker issue1.24.2Tim-Philipp Müllertim@centricular.comTim-Philipp Müllertim@centricular.com2024-04-02https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3414jpegparse: Constant stream of "Invalid data" warnings when used with v4l2src ...2024-03-26T20:29:54ZRobert Maderjpegparse: Constant stream of "Invalid data" warnings when used with v4l2src / pipewiresrcThe following example pipelines produce a otherwise unproblematic stream of error messages (I guess on every frame) on different common UVC cameras of my Laptop and Desktop:
```
gst-launch-1.0 v4l2src ! image/jpeg,width=1280,height=720 !...The following example pipelines produce a otherwise unproblematic stream of error messages (I guess on every frame) on different common UVC cameras of my Laptop and Desktop:
```
gst-launch-1.0 v4l2src ! image/jpeg,width=1280,height=720 ! decodebin3 ! waylandsink
```
or
```
gst-launch-1.0 pipewiresrc ! image/jpeg,width=1280,height=720 ! decodebin3 ! waylandsink
```
Note that whatever comes behind `decodebin3` does not matter - `fakesink` is also affected.
The warning looks as follows:
```
Additional debug info:
../subprojects/gst-plugins-bad/gst/jpegformat/gstjpegparse.c(939): gst_jpeg_parse_handle_frame (): /GstPipeline:pipeline0/GstDecodebin3:decodebin3-0/GstParseBin:parsebin0/GstJpegParse:jpegparse0:
Failed to parse app0 segment
```https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3413vaav1dec fails to decode av1 contents on Alder lake2024-03-22T09:07:04ZStéphane Cerveauscerveau@igalia.comvaav1dec fails to decode av1 contents on Alder lake### Describe your issue
Playing with some medias such as [BigBuckBunny mp4](https://lafibre.info/tv-numerique-hd-3d/comparer-h-264-vp9-av1/msg980640/#msg980640), the decoder fails to decode frames saying
```
0:00:00.033643671 645970 0...### Describe your issue
Playing with some medias such as [BigBuckBunny mp4](https://lafibre.info/tv-numerique-hd-3d/comparer-h-264-vp9-av1/msg980640/#msg980640), the decoder fails to decode frames saying
```
0:00:00.033643671 645970 0x63ac6da97ea0 WARN vadecoder gstvadecoder.c:662:gst_va_decoder_decode_with_aux_surface:<vadecoder0> vaEndPicture: internal decoding error
0:00:00.033651037 645970 0x63ac6da97ea0 WARN av1decoder gstav1decoder.c:739:gst_av1_decoder_handle_frame:<vaav1dec0> end picture error
0:00:00.033660416 645970 0x63ac6da97ea0 WARN videodecoder gstvideodecoder.c:4787:_gst_video_decoder_error:<vaav1dec0> error: Failed to handle the frame 1543372222
0:00:00.033733013 645970 0x63ac6da97ea0 WARN vadecoder gstvadecoder.c:662:gst_va_decoder_decode_with_aux_surface:<vadecoder0> vaEndPicture: internal decoding error
0:00:00.033735564 645970 0x63ac6da97ea0 WARN av1decoder gstav1decoder.c:739:gst_av1_decoder_handle_frame:<vaav1dec0> end picture error
0:00:00.033739535 645970 0x63ac6da97ea0 WARN videodecoder gstvideodecoder.c:4787:_gst_video_decoder_error:<vaav1dec0> error: Failed to handle the frame 1543372222
0:00:00.033755050 645970 0x63ac6da97ea0 WARN vadecoder gstvadecoder.c:662:gst_va_decoder_decode_with_aux_surface:<vadecoder0> vaEndPicture: internal decoding error
0:00:00.033757085 645970 0x63ac6da97ea0 WARN av1decoder gstav1decoder.c:739:gst_av1_decoder_handle_frame:<vaav1dec0> end picture error
0:00:00.033760540 645970 0x63ac6da97ea0 WARN videodecoder gstvideodecoder.c:4787:_gst_video_decoder_error:<vaav1dec0> error: Failed to handle the frame 1543372222
0:00:00.033769051 645970 0x63ac6da97ea0 WARN codecparsers_av1 gstav1parser.c:4235:gst_av1_parse_uncompressed_frame_header: parse uncompressed frame header error 3
0:00:00.033771246 645970 0x63ac6da97ea0 WARN av1decoder gstav1decoder.c:582:gst_av1_decoder_process_frame:<vaav1dec0> Parsing frame failed.
0:00:00.033773319 645970 0x63ac6da97ea0 WARN av1decoder gstav1decoder.c:640:gst_av1_decoder_decode_one_obu:<vaav1dec0> Failed to handle frame OBU
...
```
#### Expected Behavior
To play properly the media
#### Observed Behavior
the element does not succeed to display any of the frames
#### Setup
- **Operating System:** Linux
- **Device:** Computer
- **GStreamer Version:** 1.24
- **Command line:**
`gst-launch-1.0 filesrc location=201411_blender_big_buck_bunny_24fps_720p_av1.mp4 ! qtdemux ! av1parse ! vaav1dec ! autovideosink`
### Steps to reproduce the bug
<!-- please fill in exact steps which reproduce the bug on your system, for example: -->
1. open terminal
2. type `command`
### How reproducible is the bug?
Always
### Screenshots if relevant
### Solutions you have tried
Play other medias
### Related non-duplicate issues
### Additional Information
<!-- Any other information such as logs. Make use of <details> for long output -->https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3411udpsrc: Surprising effects of reuse property being default true2024-03-21T12:37:55ZJonas Danielssonudpsrc: Surprising effects of reuse property being default true### Describe your issue
When having an application with many (\~100) `udpsrc` elements all allocating their ports automatically (port = 0) we tracked down some very confusing behavior to the root cause of two different `udpsrc` allocati...### Describe your issue
When having an application with many (\~100) `udpsrc` elements all allocating their ports automatically (port = 0) we tracked down some very confusing behavior to the root cause of two different `udpsrc` allocating the same port.
#### Expected Behavior
The expected behavior was for none of the `udpsrc` to allocate a port already bound by another `udpsrc`
### Additional Information
This is on Linux:
```shell
$ uname -a
Linux fedora 6.7.7-200.fc39.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Mar 1 16:53:59 UTC 2024 x86_64 GNU/Linux
```
After setting the `reuse` property of `udpsrc` to false this behavior went away. I constructed a small test to check the likelihood of port conflicts using `udpsrc`:
```Rust
#[tracing_test::traced_test]
#[test]
fn test_port_conflict() {
gst::init().unwrap();
let mut map = std::collections::HashMap::new();
loop {
let udpsrc = spiideo_gst_utils::make_element("udpsrc", None).unwrap();
udpsrc.set_property("port", 0);
udpsrc.set_state(gst::State::Ready).unwrap();
let port = udpsrc.property::<i32>("port");
tracing::info!("port: {port}");
if map.contains_key(&port) {
tracing::error!("Port conflict on {port} after {} iterations", map.len());
udpsrc.set_state(gst::State::Null).unwrap();
break;
}
map.insert(port, udpsrc);
}
map.values().into_iter().for_each(|element| { element.set_state(gst::State::Null).unwrap(); });
}
```
This resulted in it being quite likely (due to the Birthday paradox, there are many pairs that can conflict):
```shell
running 1 test
INFO test_port_conflict: shibuya::ingestion_jack::test: port: 42937
INFO test_port_conflict: shibuya::ingestion_jack::test: port: 39148
INFO test_port_conflict: shibuya::ingestion_jack::test: port: 57579
INFO test_port_conflict: shibuya::ingestion_jack::test: port: 59762
[...]
INFO test_port_conflict: shibuya::ingestion_jack::test: port: 54535
INFO test_port_conflict: shibuya::ingestion_jack::test: port: 39319
INFO test_port_conflict: shibuya::ingestion_jack::test: port: 58404
ERROR test_port_conflict: shibuya::ingestion_jack::test: Port conflict on 58404 after 249 iterations
test ingestion_jack::test::test_port_conflict ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 19 filtered out; finished in 0.08s
```
The issue here is the unexpected effect of `SO_REUSEADDR` for UDP sockets (at least on Linux!):
From the [`socket(7)`](http://man7.org/linux/man-pages/man7/socket.7.html) man page:
```
SO_REUSEADDR
Indicates that the rules used in validating addresses supplied
in a bind(2) call should allow reuse of local addresses. For
AF_INET sockets this means that a socket may bind, except when
there is an active listening socket bound to the address.
```
UDP does not do listen though ...
From blog post: https://gavv.net/articles/ephemeral-port-reuse/
> Hence, when an ephemeral port is allocated, `SO_REUSEADDR` enables the kernel to reuse any other non-listening ephemeral port.
>
> The important point here is that the kernel doesn’t check whether there is an opened socket for an ephemeral port, it only checks whether there is a socket in the listening state for that port.
Given all this, is revisiting `reuse` default `true` for `udpsrc` an option?1.26-dev-cyclehttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3408NVIDIA NvFBC Linux screen capture element2024-03-20T14:13:17ZSeungmin KimNVIDIA NvFBC Linux screen capture elementMaintainer of nvcodec: @seungha.yang
Proof of concept implementation: https://github.com/CERIT-SC/gstreamer-nvimagesrc
This proposal for a new element provides a high-performance screen capture API in Linux for NVIDIA GPUs. Requires T...Maintainer of nvcodec: @seungha.yang
Proof of concept implementation: https://github.com/CERIT-SC/gstreamer-nvimagesrc
This proposal for a new element provides a high-performance screen capture API in Linux for NVIDIA GPUs. Requires Tesla, Quadro, GRID, or equivalent GPUs. I may provide (albeit limited in capabilities) an instance with such GPU if you ask.
This is mainly intended as an alternative to `ximagesrc`, which uses X11 MIT-SHM.
More information: https://developer.nvidia.com/capture-sdk
Unfortunately, this doesn't work on Wayland, yet, but is expected to be implemented over time.
https://forums.developer.nvidia.com/t/wayland-information-for-r545-beta-release/214275
If you're also interested and you're in the industry, please consider sponsoring.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3404GStreamer 1.22.12 old-stable bug-fix release tracker2024-03-19T22:40:13ZTim-Philipp Müllertim@centricular.comGStreamer 1.22.12 old-stable bug-fix release tracker# Milestone 1.22.12
- Milestone 1.22.12 Overview: %1.22.12
- ETA: 15-30 April 2024 (or sooner if anything comes up)
# Todo
- [ ] [Merge Requests with `Needs backport` label](https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requ...# Milestone 1.22.12
- Milestone 1.22.12 Overview: %1.22.12
- ETA: 15-30 April 2024 (or sooner if anything comes up)
# Todo
- [ ] [Merge Requests with `Needs backport` label](https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&state=merged&label_name%5B%5D=Needs%20backport¬%5Blabel_name%5D%5B%5D=Backported%20into%201.22)
- [ ] [Issues with `Needs backport` label](https://gitlab.freedesktop.org/groups/gstreamer/-/issues?scope=all&utf8=%E2%9C%93&state=all&label_name%5B%5D=Needs%20backport)
- [ ] [Merge Requests with `Maybe backport` label](https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=all&label_name%5B%5D=Maybe%20backport)
- [ ] [Merge Requests with `1.22.12` milestone](https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?milestone_title=1.22.12)
- [ ] [Issues with `1.22.12` milestone](https://gitlab.freedesktop.org/groups/gstreamer/-/issues?milestone_title=1.22.12)
- [ ] [Issues with `Security` label](https://gitlab.freedesktop.org/groups/gstreamer/-/issues?scope=all&utf8=%E2%9C%93&state=all&label_name%5B%5D=Security)
- [ ] Blockers / Todo
- [ ] https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2996 (png 16-bit crasher) would be nice to fix
# Prep
- [ ] gst-plugins-rs
- [ ] make sure 0.9 branch is up-to-date with regards to backports ( @slomo)
- [ ] update `Cargo.lock` in 0.9 branch (if needed)
- [ ] double-check meson.build version matches Cargo.toml version
- [ ] add `gstreamer-1.22.12` tag pointing to tip of 0.9 branch
- [ ] www: add release note entry and add contributors
- [ ] including gst-plugin-rs fixes perhaps
- [~] update translations (also in main, then backport)
# GStreamer
- [ ] MR / commit for release
- [ ] tag release
- [ ] upload tarballs (plus checksums and GPG signatures)
- [ ] back to dev in 1.22 branch
# Cerbero
- [ ] pending merge requests: https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests?scope=all&state=opened&target_branch=1.22
- [ ] [cerbero issues with 1.22.12 milestone](https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/?sort=created_date&state=opened&milestone_title=1.22.12&first_page_size=100)
- [ ] build 1.22.12 tag
- [ ] binaries
- [ ] Windows x86 MinGW + MSVC ( @nirbheek)
- [ ] Windows x86_64 MinGW + MSVC ( @nirbheek)
- [~] Windows UWP release-crt + debug-crt
- [ ] Android ( @thaytan)
- [ ] macOS ( @ystreet)
- [ ] iOS ( @ystreet)
- [ ] source bundle ( @thaytan)
- [ ] check for sha265sums for binaries
- [ ] check for GPG signatures for binaries
- [ ] tag cerbero ( @tpm)
- [ ] build 1.22 branch again
- [ ] update download section on website
- [ ] announce binaries (twitter, discourse, gstreamer-devel)
# Announce
- [ ] Mailing lists
- [ ] Website: news item + release notes
- [ ] Twitter ( @tpm)
- [ ] Mastodon ( @slomo)
- [ ] IRC channel topic
- [ ] Discourse
# Post release
- [ ] Add 1.22.13 milestone
- [ ] Add 1.22.13 tracker issuee1.22.12Tim-Philipp Müllertim@centricular.comTim-Philipp Müllertim@centricular.com2024-04-30https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3401msdkmjpegenc: Unable to Enc BGRx MJPEG on ADL/MTL2024-03-19T02:47:35ZVincent Cheahmsdkmjpegenc: Unable to Enc BGRx MJPEG on ADL/MTL### Describe your issue
MJPEG encode BGRx with error "invalid video parameters)" returned from MFXVideoENCODE_EncodeFrameAsync().
#### Expected Behavior
Since BGRA works well, BGRx should work similarly.
#### Observed Behavior
MJPEG e...### Describe your issue
MJPEG encode BGRx with error "invalid video parameters)" returned from MFXVideoENCODE_EncodeFrameAsync().
#### Expected Behavior
Since BGRA works well, BGRx should work similarly.
#### Observed Behavior
MJPEG encode BGRx with error "invalid video parameters)" returned from MFXVideoENCODE_EncodeFrameAsync(). Snippet of the error log below.
0:00:00.084259638 641878 0x55b080577d20 LOG msdkenc gstmsdkenc.c:1211:gst_msdk_create_va_pool:<msdkmjpegenc0> Creating va pool
0:00:00.084275482 641878 0x55b080577d20 INFO msdkenc gstmsdkenc.c:1086:gst_msdkenc_set_latency:<msdkmjpegenc0> Updating latency to 0:00:00.160000000 (4 frames)
Redistribute latency...
0:00:00.086899686 641878 0x55b080577d20 WARN msdkenc gstmsdkenc.c:1042:gst_msdkenc_encode_frame:<msdkmjpegenc0> error: Encode frame failed.
0:00:00.086905887 641878 0x55b080577d20 WARN msdkenc gstmsdkenc.c:1042:gst_msdkenc_encode_frame:<msdkmjpegenc0> error: MSDK encode error (invalid video parameters)
ERROR: from element /GstPipeline:pipeline0/GstMsdkMJPEGEnc:msdkmjpegenc0: Encode frame failed
#### Setup
- **Operating System:**
* Platform: Intel MTL
* Operating System: Linux
* Device: Computer
* GStreamer Version:1.25.0.1
* Command line: gst-launch-1.0 filesrc location=1080_BGRX.yuv ! videoparse width=1920 height=1080 format=bgrx ! msdkmjpegenc ! filesink location=test.mjpeg
### Steps to reproduce the bug
The issues can be reproduced with these commands
1. gst-launch-1.0 ximagesrc use-damage=0 num-buffers=-1 startx=0 starty=0 endx=800 endy=600 ! video/x-raw,framerate=30/1 ! msdkmjpegenc ! filesink location=test.mjpeg
2. gst-launch-1.0 filesrc location=1080_BGRX.yuv ! videoparse width=1920 height=1080 format=bgrx ! msdkmjpegenc ! filesink location=test.mjpeg
### How reproducible is the bug?
The reproducibility of the bug is always (100%). Checked both MTL/ADL.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3399Codec / SPS / PPS info missing on multi-video track content on track switch2024-03-18T10:13:23Zfilipe-norte-redCodec / SPS / PPS info missing on multi-video track content on track switch### Describe your issue
On pipelines build for multi-video track containers using independent parser for each track, but with the decoder element present after an input switch element connected to the parsers, the decoder may not have th...### Describe your issue
On pipelines build for multi-video track containers using independent parser for each track, but with the decoder element present after an input switch element connected to the parsers, the decoder may not have the correct codec info when a track switch occurs. Consequently, video freezes.
This can be easily observed when switching between tracks with different resolutions.
#### Expected Behavior
Decoder has up-to-date info and no video freezes are observed
#### Observed Behavior
Video freeze is observed due missing up-to-date SPS / PPS info
#### Setup
- **Operating System:** Linux / Ubuntu, but should be reproducible with other OSs as well
- **Device:** Computer / Embedded Device
- **GStreamer Version:** 1.18, 1.20 (should be reproducible also with other versions)
### Steps to reproduce the bug
Attached [video-track-switch.tar](/uploads/3c3fd47ce8ef442a7f8cf04d84bffaaa/video-track-switch.tar) package contains small app that reproduces the issue. Extract archive and from a terminal run:
```
./gst-demo combined-nok.mp4
```
The test samples in this package were generated in the following way:
```
curl http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4 -o BigBuckBunny.mp4
curl http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4 -o ElephantsDream.mp4
curl http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/WhatCarCanYouGetForAGrand.mp4 -o WhatCarCanYouGetForAGrand.mp4
ffmpeg -i BigBuckBunny.mp4 -i ElephantsDream.mp4 -fs 25M -c copy -map 0:v -map 0:a -map 1:v combined-ok.mp4
ffmpeg -i BigBuckBunny.mp4 -i WhatCarCanYouGetForAGrand.mp4 -fs 25M -c copy -map 0:v -map 0:a -map 1:v combined-nok.mp4
```
### How reproducible is the bug?
Always (with the specific pipeline config)
### Solutions you have tried
Merge request [6293](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6293) contains a fix for h264parse and h265parse elements, but other parsers may need to be updated.
### Additional Information
The issue was originally reproduced with h264parse element. Following pipeline config allows reproducing issue when a track switch occurs after playback started on one of the video tracks:
```
input-selector name=is is. ! queue ! avdec_h264 ! videoconvert ! autovideosink \
filesrc location=combined-nok.mp4 ! qtdemux name=demux \
demux.video_0 ! queue ! h264parse ! capsfilter caps=video/x-h264,stream-format=byte-stream ! is.sink_0 \
demux.video_1 ! queue ! h264parse ! capsfilter caps=video/x-h264,stream-format=byte-stream ! is.sink_1
```https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3395Support content URIs of `content://` form on android2024-03-16T12:48:14ZRahul GillSupport content URIs of `content://` form on androidOn android, the samples suggest to query MediaStore.Video.Media.DATA column for the content uri to get the absolute path of the file. But on android 14, that column is returned null when picking a file with file picker. The only other op...On android, the samples suggest to query MediaStore.Video.Media.DATA column for the content uri to get the absolute path of the file. But on android 14, that column is returned null when picking a file with file picker. The only other option is to copy a file to cache directory, but files can be too large sometimes.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3393vaencoder: split open method in two: config and context creation2024-03-15T15:48:28ZVíctor Manuel Jáquez Lealvaencoder: split open method in two: config and context creationSo it would be possible to get surface attributes, required for context creation
The following discussion from !6282 should be addressed:
- [ ] @vjaquez started a [discussion](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_...So it would be possible to get surface attributes, required for context creation
The following discussion from !6282 should be addressed:
- [ ] @vjaquez started a [discussion](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6282#note_2314074): (+10 comments)
> Hi! Thanks a lot for your patch. A couple things:
>
> 1. Please remove the signed-off-by in the commit log. GStreamer doesn't use it.
> 2. Move this function to GstVaEncoder, as we did for decoders too. In that object you already have the config, so there won't be any need to create it again. It can be something like `gst_va_encoder_get_surface_alignment()`https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3389gst-play/gstplaybin3: assertion failed: (combine->sinkpad == NULL) in reconfi...2024-03-14T11:16:13ZNaglis Jonaitisgst-play/gstplaybin3: assertion failed: (combine->sinkpad == NULL) in reconfigure_output### Describe your issue
`gst-play-1.0` crashes due to [assertion error in `reconfigure_output` ](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/1.24.0/subprojects/gst-plugins-base/gst/playback/gstplaybin3.c#L2622)after failin...### Describe your issue
`gst-play-1.0` crashes due to [assertion error in `reconfigure_output` ](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/1.24.0/subprojects/gst-plugins-base/gst/playback/gstplaybin3.c#L2622)after failing to play an invalid AAC file.
#### Expected Behavior
Error about invalid file is reported, but the player does not crash, playback continues on the next file.
#### Observed Behavior
#### Setup
- **Operating System:** Arch Linux
- **Device:** Computer
- **GStreamer Version:** 1.24.0
- **Command line:** `gst-play-1.0 1.aac 2.mp3`
### Steps to reproduce the bug
1. open terminal
2. type `gst-play-1.0 1.aac 2.mp3` (the files are attached)
[1.aac](/uploads/99eb19deb8a8abfdc8ca3cbbaeff040b/1.aac)
[2.mp3](/uploads/3c0fbd54e6eb55973f064e27d6e31af5/2.mp3)
### How reproducible is the bug?
Every time.
### Screenshots if relevant
n/a
### Solutions you have tried
n/a
### Related non-duplicate issues
n/a
### Additional Information
<details>
<summary>Backtrace</summary>
```
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1 0x00007ffff7893393 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2 0x00007ffff78426c8 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007ffff782a4b8 in __GI_abort () at abort.c:79
#4 0x00007ffff7b560ee in g_assertion_message
(domain=domain@entry=0x0, file=file@entry=0x7ffff7401b80 "../gstreamer/subprojects/gst-plugins-base/gst/playback/gstplaybin3.c", line=line@entry=2622, func=func@entry=0x7ffff7408eb0 <__func__.26.lto_priv.2> "reconfigure_output", message=message@entry=0x7fffd8019010 "assertion failed: (combine->sinkpad == NULL)") at ../glib/glib/gtestutils.c:3497
#5 0x00007ffff7bb7220 in g_assertion_message_expr
(domain=domain@entry=0x0, file=file@entry=0x7ffff7401b80 "../gstreamer/subprojects/gst-plugins-base/gst/playback/gstplaybin3.c", line=line@entry=2622, func=func@entry=0x7ffff7408eb0 <__func__.26.lto_priv.2> "reconfigure_output", expr=expr@entry=0x7ffff73fba8b "combine->sinkpad == NULL") at ../glib/glib/gtestutils.c:3523
#6 0x00007ffff73dd8d4 in reconfigure_output (playbin=0x55555571c210 [GstPlayBin3|playbin]) at ../gstreamer/subprojects/gst-plugins-base/gst/playback/gstplaybin3.c:2622
#7 0x00007ffff73cffcc in gst_play_bin3_handle_message (bin=0x55555571c210 [GstBin|playbin], msg=0x7fffe802d9b0) at ../gstreamer/subprojects/gst-plugins-base/gst/playback/gstplaybin3.c:2007
#8 0x00007ffff7d77a2c in bin_bus_handler (bus=<optimized out>, message=<optimized out>, bin=<optimized out>) at ../gstreamer/subprojects/gstreamer/gst/gstbin.c:3263
#9 0x00007ffff7d8eb9b in gst_bus_post (bus=0x55555571c5a0 [GstBus|bus0], message=0x7fffe802d9b0) at ../gstreamer/subprojects/gstreamer/gst/gstbus.c:358
#10 0x00007ffff7da2d6c in gst_element_post_message_default (element=element@entry=0x5555557273e0 [GstElement|uridecodebin3], message=0x7fffe802d9b0)
at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:2127
#11 0x00007ffff7d81650 in gst_bin_post_message (element=0x5555557273e0 [GstElement|uridecodebin3], msg=0x7fffe802d9b0) at ../gstreamer/subprojects/gstreamer/gst/gstbin.c:2789
#12 0x00007ffff7da0799 in gst_element_post_message (element=0x5555557273e0 [GstElement|uridecodebin3], message=0x7fffe802d9b0) at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:2170
#13 0x00007ffff7d77a2c in bin_bus_handler (bus=<optimized out>, message=<optimized out>, bin=<optimized out>) at ../gstreamer/subprojects/gstreamer/gst/gstbin.c:3263
#14 0x00007ffff7d8eb9b in gst_bus_post (bus=0x5555557276b0 [GstBus|bus2], message=0x7fffe802d9b0) at ../gstreamer/subprojects/gstreamer/gst/gstbus.c:358
#15 0x00007ffff7da2d6c in gst_element_post_message_default (element=element@entry=0x5555557295d0 [GstElement|decodebin3-0], message=0x7fffe802d9b0)
at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:2127
#16 0x00007ffff7d81650 in gst_bin_post_message (element=0x5555557295d0 [GstElement|decodebin3-0], msg=0x7fffe802d9b0) at ../gstreamer/subprojects/gstreamer/gst/gstbin.c:2789
#17 0x00007ffff7da0799 in gst_element_post_message (element=element@entry=0x5555557295d0 [GstElement|decodebin3-0], message=message@entry=0x7fffe802d9b0)
at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:2170
#18 0x00007ffff73a04da in sink_event_function (sinkpad=0x55555572a070 [GstPad|sink], dbin=0x5555557295d0 [GstDecodebin3|decodebin3-0], event=0x7fffd8018ba0)
at ../gstreamer/subprojects/gst-plugins-base/gst/playback/gstdecodebin3.c:1427
#19 0x00007ffff7dcdb46 in gst_pad_send_event_unchecked (pad=pad@entry=0x55555572a070 [GstPad|sink], event=event@entry=0x7fffd8018ba0, type=<optimized out>,
type@entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5971
#20 0x00007ffff7dce1e6 in gst_pad_push_event_unchecked (pad=pad@entry=0x7fffd8017f80 [GstPad|src_1], event=0x7fffd8018ba0, type=<optimized out>,
type@entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5604
#21 0x00007ffff7dce929 in push_sticky (pad=pad@entry=0x7fffd8017f80 [GstPad|src_1], ev=ev@entry=0x7ffff63ff8d0, user_data=user_data@entry=0x7ffff63ff940)
at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:4083
#22 0x00007ffff7dc2e8e in events_foreach (pad=0x7fffd8017f80 [GstPad|src_1], func=0x7ffff7dce880 <push_sticky>, user_data=0x7ffff63ff940)
at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:613
#23 0x00007ffff7dd19a0 in check_sticky (event=0x7fffd8018ba0, pad=0x7fffd8017f80 [GstPad|src_1]) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:4142
#24 gst_pad_push_event (pad=0x7fffd8017f80 [GstPad|src_1], event=0x7fffd8018ba0) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5737
#25 0x00007ffff7dc8ace in event_forward_func (pad=0x7fffd8017f80 [GstPad|src_1], data=0x7ffff63ffa40) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:3156
#26 0x00007ffff7dc884d in gst_pad_forward
(pad=pad@entry=0x7fffd8018300 [GstPad|proxypad13], forward=forward@entry=0x7ffff7dc8a10 <event_forward_func>, user_data=user_data@entry=0x7ffff63ffa40)
at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:3110
#27 0x00007ffff7dc8936 in gst_pad_event_default (pad=0x7fffd8018300 [GstPad|proxypad13], parent=<optimized out>, event=0x7fffd8018ba0) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:3207
#28 0x00007ffff7dcdb46 in gst_pad_send_event_unchecked (pad=pad@entry=0x7fffd8018300 [GstPad|proxypad13], event=event@entry=0x7fffd8018ba0, type=<optimized out>,
type@entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5971
#29 0x00007ffff7dce1e6 in gst_pad_push_event_unchecked (pad=pad@entry=0x7fffd8017bf0 [GstPad|src_0], event=0x7fffd8018ba0, type=<optimized out>,
type@entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5604
#30 0x00007ffff7dce929 in push_sticky (pad=pad@entry=0x7fffd8017bf0 [GstPad|src_0], ev=ev@entry=0x7ffff63ffc50, user_data=user_data@entry=0x7ffff63ffcc0)
at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:4083
#31 0x00007ffff7dc2e8e in events_foreach (pad=0x7fffd8017bf0 [GstPad|src_0], func=0x7ffff7dce880 <push_sticky>, user_data=0x7ffff63ffcc0)
--Type <RET> for more, q to quit, c to continue without paging--c
at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:613
#32 0x00007ffff7dd19a0 in check_sticky (event=0x7fffd8018ba0, pad=0x7fffd8017bf0 [GstPad|src_0]) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:4142
#33 gst_pad_push_event (pad=pad@entry=0x7fffd8017bf0 [GstPad|src_0], event=event@entry=0x7fffd8018ba0) at ../gstreamer/subprojects/gstreamer/gst/gstpad.c:5737
#34 0x00007ffff7343130 in gst_single_queue_push_one (allow_drop=<synthetic pointer>, object=0x7fffd8018ba0, sq=0x7fffd8005030, mq=<optimized out>)
at ../gstreamer/subprojects/gstreamer/plugins/elements/gstmultiqueue.c:2066
#35 gst_multi_queue_loop (pad=<optimized out>) at ../gstreamer/subprojects/gstreamer/plugins/elements/gstmultiqueue.c:2345
#36 0x00007ffff7e03563 in gst_task_func (task=0x7fffd8004ec0 [GstTask|multiqueue2:src_0]) at ../gstreamer/subprojects/gstreamer/gst/gsttask.c:399
#37 0x00007ffff7bc6523 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/glib/gthreadpool.c:350
#38 0x00007ffff7bc3a45 in g_thread_proxy (data=0x7ffff0000b90) at ../glib/glib/gthread.c:831
#39 0x00007ffff789155a in start_thread (arg=<optimized out>) at pthread_create.c:447
#40 0x00007ffff790ea3c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
```
</details>
<details>
<summary>Verbose output</summary>
```
Press 'k' to see a list of keyboard shortcuts.
Now playing /tmp/1.aac
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3: instant-uri = false
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstDecodebin3:decodebin3-0: caps = video/x-raw(ANY); audio/x-raw(ANY); text/x-raw(ANY); subpicture/x-dvd; subpicture/x-dvb; subpicture/x-xsub; subpicture/x-pgs; closedcaption/x-cea-608; closedcaption/x-cea-708; application/x-onvif-metadata; application/x-ssa; application/x-ass; application/x-subtitle; application/x-subtitle-sami; application/x-subtitle-tmplayer; application/x-subtitle-mpl2; application/x-subtitle-dks; application/x-subtitle-qttext; application/x-subtitle-lrc; application/x-subtitle-vtt; application/x-subtitle-avi; application/x-ogm-text
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3: uri = file:///tmp/1.aac
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0: source = "\(GstFileSrc\)\ filesrc0"
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3: current-uri = file:///tmp/1.aac
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3: current-suburi = (null)
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstTypeFindElement:typefindelement0.GstPad:src: caps = audio/mpeg, framed=(boolean)false, mpegversion=(int)4, stream-format=(string)adif
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstTypeFindElement:typefindelement0.GstPad:src: caps = NULL
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstParseBin:parsebin0/GstTypeFindElement:typefind.GstPad:src: caps = audio/mpeg, framed=(boolean)false, mpegversion=(int)4, stream-format=(string)adif
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstParseBin:parsebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstParseBin:parsebin0/GstAacParse:aacparse0.GstPad:src: caps = audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)ssr, profile=(string)ssr, rate=(int)48000, channels=(int)2, stream-format=(string)adif
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstParseBin:parsebin0.GstParsePad:src_0: caps = audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)ssr, profile=(string)ssr, rate=(int)48000, channels=(int)2, stream-format=(string)adif
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstMultiQueue:multiqueue1.GstMultiQueuePad:sink_0: caps = audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)ssr, profile=(string)ssr, rate=(int)48000, channels=(int)2, stream-format=(string)adif
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstParseBin:parsebin0.GstParsePad:src_0.GstProxyPad:proxypad2: caps = audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)ssr, profile=(string)ssr, rate=(int)48000, channels=(int)2, stream-format=(string)adif
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstMultiQueue:multiqueue1.GstMultiQueuePad:src_0: caps = audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)ssr, profile=(string)ssr, rate=(int)48000, channels=(int)2, stream-format=(string)adif
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0.GstGhostPad:src_0: caps = audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)ssr, profile=(string)ssr, rate=(int)48000, channels=(int)2, stream-format=(string)adif
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstDecodebin3:decodebin3-0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)ssr, profile=(string)ssr, rate=(int)48000, channels=(int)2, stream-format=(string)adif
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstDecodebin3:decodebin3-0/GstIdentity:identity0.GstPad:src: caps = audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)ssr, profile=(string)ssr, rate=(int)48000, channels=(int)2, stream-format=(string)adif
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstDecodebin3:decodebin3-0/GstIdentity:identity0.GstPad:sink: caps = audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)ssr, profile=(string)ssr, rate=(int)48000, channels=(int)2, stream-format=(string)adif
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstDecodebin3:decodebin3-0.GstGhostPad:sink: caps = audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)ssr, profile=(string)ssr, rate=(int)48000, channels=(int)2, stream-format=(string)adif
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0.GstGhostPad:src_0.GstProxyPad:proxypad3: caps = audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)ssr, profile=(string)ssr, rate=(int)48000, channels=(int)2, stream-format=(string)adif
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstDecodebin3:decodebin3-0/GstMultiQueue:multiqueue0.GstMultiQueuePad:sink_0: group-id = 2
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstDecodebin3:decodebin3-0/GstMultiQueue:multiqueue0.GstMultiQueuePad:sink_0: caps = audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)ssr, profile=(string)ssr, rate=(int)48000, channels=(int)2, stream-format=(string)adif
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstDecodebin3:decodebin3-0/GstMultiQueue:multiqueue0.GstMultiQueuePad:src_0: caps = audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)ssr, profile=(string)ssr, rate=(int)48000, channels=(int)2, stream-format=(string)adif
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstDecodebin3:decodebin3-0/GstFdkAacDec:fdkaacdec0.GstPad:sink: caps = audio/mpeg, framed=(boolean)true, mpegversion=(int)4, level=(string)1, base-profile=(string)ssr, profile=(string)ssr, rate=(int)48000, channels=(int)2, stream-format=(string)adif
ERROR No valid frames decoded before end of stream for file:///tmp/1.aac
ERROR debug information: ../gstreamer/subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudiodecoder.c(2506): gst_audio_decoder_sink_eventfunc (): /GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstDecodebin3:decodebin3-0/GstFdkAacDec:fdkaacdec0:
no valid frames found
Now playing /tmp/2.mp3
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstDecodebin3:decodebin3-0: caps = video/x-raw(ANY); audio/x-raw(ANY); text/x-raw(ANY); subpicture/x-dvd; subpicture/x-dvb; subpicture/x-xsub; subpicture/x-pgs; closedcaption/x-cea-608; closedcaption/x-cea-708; application/x-onvif-metadata; application/x-ssa; application/x-ass; application/x-subtitle; application/x-subtitle-sami; application/x-subtitle-tmplayer; application/x-subtitle-mpl2; application/x-subtitle-dks; application/x-subtitle-qttext; application/x-subtitle-lrc; application/x-subtitle-vtt; application/x-subtitle-avi; application/x-ogm-text
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0: uri = file:///tmp/2.mp3
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3: uri = file:///tmp/2.mp3
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3: current-uri = file:///tmp/2.mp3
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3: current-suburi = (null)
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0: source = "\(GstFileSrc\)\ filesrc1"
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstTypeFindElement:typefindelement1.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)false
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstTypeFindElement:typefindelement1.GstPad:src: caps = NULL
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstParseBin:parsebin1/GstTypeFindElement:typefind.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)false
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstParseBin:parsebin1/GstTypeFindElement:typefind.GstPad:src: caps = NULL
/GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstURISourceBin:urisourcebin0/GstParseBin:parsebin1/GstMpegAudioParse:mpegaudioparse0.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3, rate=(int)44100, channels=(int)1, parsed=(boolean)true
**
ERROR:../gstreamer/subprojects/gst-plugins-base/gst/playback/gstplaybin3.c:2622:reconfigure_output: assertion failed: (combine->sinkpad == NULL)
Bail out! ERROR:../gstreamer/subprojects/gst-plugins-base/gst/playback/gstplaybin3.c:2622:reconfigure_output: assertion failed: (combine->sinkpad == NULL)
```
</details>https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3387Android hardware decoders in GStreamer 1.24.0 are hard-capped to 4096 pixels2024-03-14T11:49:02ZNoTuxNoBuxAndroid hardware decoders in GStreamer 1.24.0 are hard-capped to 4096 pixels### Describe your issue
The various hardware-accelerated `androidmedia` decoders all appear capped to a width and height of 4096 pixels in GStreamer 1.24.0. At first I thought this was a device limitation, but in GStreamer 1.22.6 I could...### Describe your issue
The various hardware-accelerated `androidmedia` decoders all appear capped to a width and height of 4096 pixels in GStreamer 1.24.0. At first I thought this was a device limitation, but in GStreamer 1.22.6 I could get working 7680x3840 on even h.264 on the same device (Meta Quest 2). With 1.24.0 my caps negotiation is failing due to this.
I've evaluated h.264, h.265, VP9 and AV1, and all have the same cap, which seems impossible since h.265 and AV1 are specifically geared at 8k support, so this sounds like a regression.
I've tested the following decoders, so various codecs as well as the c2qti and omxqcom decoders:
- amcviddec-c2qtiavcdecoder
- amcviddec-omxqcomvideodecoderavc
- amcviddec-c2qtihevcdecoder
- amcviddec-omxqcomvideodecoderhevc
- amcviddec-c2qtivp9decoder
- amcviddec-omxqcomvideodecodervp9
- amcviddec-c2qtiav1decoder
#### Expected Behavior
I can go to 8k, at least on h.265 and AV1.
I guess h.264 is debatable since the hardware obviously supported it (but it didn't run well, mind you), but I don't think it was ever meant for > 4k.
#### Observed Behavior
All codecs and androidmedia features are limited to 4096x4096 pixels.
#### Setup
- **Operating System:**: Android
- **Device:** Mobile (Meta Quest 2 and Meta Quest 3)
- **GStreamer Version:** 1.24.0
- **Command line:** N.a.
### Steps to reproduce the bug
Try to decode an 8k h.265 or AV1 stream on an Android device using one of the above hardware-accelerated androidmedia video decoders.
### How reproducible is the bug?
Every time.
### Solutions you have tried
As mentioned above, I've evaluated h.264, h.265, VP9 and AV1, and all have the same cap.
I could use a software decoder, but at this resolution the performance likely won't be good enough on this type of device.
### Additional Information
None.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3385gstwayland public API cleanup2024-03-13T22:55:13ZDamian Hobson-Garciadamian@hobsong.comgstwayland public API cleanupSome brief discussion was had in the context of https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6133#note_2301636 about the fact that some of the functions in the gstwayland API are really only useful when called
inte...Some brief discussion was had in the context of https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6133#note_2301636 about the fact that some of the functions in the gstwayland API are really only useful when called
internally, so probably don't need to be exported as part of the (currently unstable) public API.
I'd like to try moving the API in the direction of stability, so I was hoping to have a discussion about the
scope of what an initial round of improvement would look like. I am assuming that any function defined in the
[installed headers](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/subprojects/gst-plugins-bad/gst-libs/gst/wayland/meson.build?ref_type=heads#L22) is part of the public API.
My initial thought is to move the WlBuffer creation and registration into the gstwayland library,
which would eliminate the need to export several buffer management related functions from WlDisplay and WlBuffer.
With that, it should be possible to move some of the currently exported functions into `-priv.h` variants of the headers.
Any thoughts?
@ndufresne you mentioned inter-operating with glimagesink and others (vaapisink is the only other one that comes to mind).
Those sinks manage their own wl_display dispatching and buffer creation, so it seems like there might need to be a bit
more refactoring necessary to have something that works for all of them.