GStreamer issueshttps://gitlab.freedesktop.org/groups/gstreamer/-/issues2021-09-24T12:52:42Zhttps://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/87avviddec: Allocates twice as many output frames as required2021-09-24T12:52:42ZEdward Herveyavviddec: Allocates twice as many output frames as requiredThis can be seen with current master and a minimalist h264 pipeline: `GST_DEBUG=2,*libav*:8 gst-launch-1.0 ... ! avdec_h264 ! fakesink`
The problem is that for every frame both `gst_ffmpegviddec_get_buffer2()` and `get_output_buffer()` ...This can be seen with current master and a minimalist h264 pipeline: `GST_DEBUG=2,*libav*:8 gst-launch-1.0 ... ! avdec_h264 ! fakesink`
The problem is that for every frame both `gst_ffmpegviddec_get_buffer2()` and `get_output_buffer()` get called. Both allocating output frames.
* `gst_ffmpegviddec_get_buffer2()` is what ffmpeg calls when it needs to allocate buffers
* `get_output_buffer()` is meant to be a *fallback* if ever we don't get that allocated buffer in the returned opaque
Problem is ... we never get a valid buffer in the returned opaque :(https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/86ffmpeg's spdif demuxer is missing2021-09-24T12:52:41ZChristian Glodtffmpeg's spdif demuxer is missingffmpeg has an SPDIF demuxer in libavformat/spdifdec.c, which is not included in gst-libav, unfortunately.
It would be very useful to me for handling digital audio data coming in from an SPDIF input.ffmpeg has an SPDIF demuxer in libavformat/spdifdec.c, which is not included in gst-libav, unfortunately.
It would be very useful to me for handling digital audio data coming in from an SPDIF input.https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/79avdec_mxpeg wrong/no sink pads2021-09-24T12:52:41ZMaximilian Senftlebenavdec_mxpeg wrong/no sink padsThe plugin avdec_mxpeg has no sink capabilites, or moe precisely (unknown/unknown), and should have at least "video/x-mxpeg".
https://gstreamer.freedesktop.org/documentation/libav/avdec_mxpeg.htmlThe plugin avdec_mxpeg has no sink capabilites, or moe precisely (unknown/unknown), and should have at least "video/x-mxpeg".
https://gstreamer.freedesktop.org/documentation/libav/avdec_mxpeg.htmlhttps://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/77Bitmap files are not being decoded properly2021-09-24T12:52:40ZDavid IngBitmap files are not being decoded properlyUsing Gstreamer 1.16.1.
![audio_only](/uploads/af26a54ceb2c151c09e145aeda9748ba/audio_only.bmp)
I'm trying to use GES with a bitmap and it doesn't work.
```
ges-launch-1.0 +clip C:/Users/ding/Desktop/audio_only.bmp duration=1 -o C:/Us...Using Gstreamer 1.16.1.
![audio_only](/uploads/af26a54ceb2c151c09e145aeda9748ba/audio_only.bmp)
I'm trying to use GES with a bitmap and it doesn't work.
```
ges-launch-1.0 +clip C:/Users/ding/Desktop/audio_only.bmp duration=1 -o C:/Users/ding/Desktop/audio_only.mp4
Error loading asset file:///C:/Panopto/scratch/0b961ecc-5f4c-4c97-91fa-abc90135c799/bmp_images/audio_only.png.1ngDlnOkhD.bmp: No valid frames decoded before end of stream
Error loading asset file:///C:/Panopto/scratch/0b961ecc-5f4c-4c97-91fa-abc90135c799/bmp_images/audio_only.png.1ngDlnOkhD.bmp: No valid frames decoded before end of stream
ERROR: Could not create timeline because: No valid frames decoded before end of stream
```
With debug info:
```
ges-launch-1.0 --gst-debug-level=2 +clip C:/Users/ding/Desktop/audio_only.bmp duration=1 -o C:/Users/ding/Desktop/audio_only.mp4
0:00:00.211976000 11124 00000221EB2D4060 WARN discoverer gstdiscoverer.c:2015:start_discovering: No URI to process
0:00:00.227697000 11124 00000221EB2D4060 WARN ges ges-effect.c:406:ges_effect_class_register_rate_property: Did not add rate property 'tempo' for element 'pitch': the element factory could not be found
0:00:00.248219000 11124 00000221EB2D4060 WARN ges ges-effect.c:406:ges_effect_class_register_rate_property: Did not add rate property 'rate' for element 'pitch': the element factory could not be found
0:00:00.269179000 11124 00000221EB2D4060 WARN default ges-meta-container.c:212:_set_value:<GESAsset@00000221ED1D6DC0> Could not set value on item: format-version
0:00:00.284443000 11124 00000221EB2D4060 WARN default ges-meta-container.c:212:_set_value:<GESAsset@00000221ED1D6E40> Could not set value on item: format-version
0:00:00.300566000 11124 00000221EB2D4060 WARN default ges-meta-container.c:212:_set_value:<GESAsset@00000221ED1D6EC0> Could not set value on item: format-version
0:00:00.461040000 11124 00000221EB2D4060 WARN base-xml-formatter ges-base-xml-formatter.c:227:create_parser_context: failed to load contents from " +clip "C:/Users/ding/Desktop/audio_only.bmp" duration="1""
0:00:00.491924000 11124 00000221EB2D4060 WARN ges-asset ges-asset.c:1056:ges_asset_request: Tried to create an Asset for type GESUriClip but no ->init method
0:00:00.507165000 11124 00000221EB2D4060 WARN discoverer gstdiscoverer.c:2015:start_discovering: No URI to process
0:00:00.522913000 11124 00000221EB2D4060 WARN basesrc gstbasesrc.c:3600:gst_base_src_start_complete:<source> pad not activated yet
0:00:00.538600000 11124 00000221EB2D4060 WARN basesrc gstbasesrc.c:3600:gst_base_src_start_complete:<source> pad not activated yet
0:00:00.567089000 11124 00000221ED21FB40 WARN videodecoder gstvideodecoder.c:2425:gst_video_decoder_chain:<avdec_bmp0> Received buffer without a new-segment. Assuming timestamps start from 0.
0:00:00.587867000 11124 00000221ED21FB40 ERROR libav :0:: not enough data (4096 < 2025654), trying to decode anyway
0:00:00.600130000 11124 00000221ED21FB40 ERROR libav :0:: not enough data (4042 < 2025600)
0:00:00.610040000 11124 00000221ED21FB40 WARN libav gstavviddec.c:1864:gst_ffmpegviddec_handle_frame:<avdec_bmp0> Failed to send data for decoding
0:00:00.624669000 11124 00000221ED21FB40 ERROR libav :0:: bad magic number
0:00:00.633054000 11124 00000221ED21FB40 WARN libav gstavviddec.c:1864:gst_ffmpegviddec_handle_frame:<avdec_bmp0> Failed to send data for decoding
0:00:00.650882000 11124 00000221ED21FB40 ERROR libav :0:: bad magic number
0:00:00.658675000 11124 00000221ED21FB40 WARN libav gstavviddec.c:1864:gst_ffmpegviddec_handle_frame:<avdec_bmp0> Failed to send data for decoding
0:00:00.675739000 11124 00000221ED21FB40 ERROR libav :0:: bad magic number
0:00:00.688425000 11124 00000221ED21FB40 WARN libav gstavviddec.c:1864:gst_ffmpegviddec_handle_frame:<avdec_bmp0> Failed to send data for decoding
0:00:00.707565000 11124 00000221ED21FB40 ERROR libav :0:: bad magic number
... and it keeps repeating
```
Presumably the problem is with `avdec_bmp` (guessing) which is why I'm posting here.https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/76Follow-up from "Avdemux fix fps": figure out whether AVCodecContext::framerat...2021-09-24T12:52:39ZMathieu DuponchelleFollow-up from "Avdemux fix fps": figure out whether AVCodecContext::framerate needs to be set along with AVCodecContext::time_base when encodingThe following discussion from !74 should be addressed:
- [ ] @slomo started a [discussion](https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/74#note_512879): (+6 comments)
> There are various other uses of `time_...The following discussion from !74 should be addressed:
- [ ] @slomo started a [discussion](https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/74#note_512879): (+6 comments)
> There are various other uses of `time_base` as framerate in the same file. Do they also need to be updated?https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/71avenc_mpeg2video: Null pointer access when pipeline is seeked on2021-09-24T12:52:39ZJens Georgavenc_mpeg2video: Null pointer access when pipeline is seeked onAs you might remember, Rygel supports live transcoding. In those transcoded streams, we support time-based seeking from clients. This is implemented by calling something like
```
if (!gst_element_seek (data->pipeline,
...As you might remember, Rygel supports live transcoding. In those transcoded streams, we support time-based seeking from clients. This is implemented by calling something like
```
if (!gst_element_seek (data->pipeline,
1.0f,
GST_FORMAT_TIME,
GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE,
GST_SEEK_TYPE_SET,
0,
GST_SEEK_TYPE_SET,
1000000001)) {
```
in the state change from ready -> paused on the pipeline.
This crashes when the encode process reaches the end, see [gdb.txt](/uploads/405644ad820bcbfa88b4c0c2d97e9ba9/gdb.txt), the crashing thread is thread 6
The attached encode.tgz [encode.tgz](/uploads/c7644a2ce349308c310a8fa54b70f000/encode.tgz) contains example code that resembles what rygel does internallyhttps://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/70Detect run-time license (GPL, LGPL etc.) at run-time2021-09-24T12:52:38ZTim-Philipp Müllertim@centricular.comDetect run-time license (GPL, LGPL etc.) at run-timeCan check via `avcodec_configuration()` if GPL etc. was enabled/disabled, see e.g.:
```
$ ffprobe -v 2>&1 | grep config
configuration: --prefix=/usr --extra-version=1+b1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=...Can check via `avcodec_configuration()` if GPL etc. was enabled/disabled, see e.g.:
```
$ ffprobe -v 2>&1 | grep config
configuration: --prefix=/usr --extra-version=1+b1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
```
# Depends on:
- https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg/-/issues/18
- https://gitlab.freedesktop.org/gstreamer/meson-ports/ffmpeg/-/merge_requests/11 (soft dep)https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/69Dolby TrueHD: Skip/fast forward shows errors in log and in some cases lead to...2021-09-24T12:52:36ZBetacentauriDolby TrueHD: Skip/fast forward shows errors in log and in some cases lead to crashsTo reproduce:
Download "Amaze (Lossless-ATMOS)" file from this site https://thedigitaltheater.com/dolby-trailers/ or use any other mkv with dolby true hd audio track.
Use gst-play-1.0 to playback the file. Use left/right cursor keys to...To reproduce:
Download "Amaze (Lossless-ATMOS)" file from this site https://thedigitaltheater.com/dolby-trailers/ or use any other mkv with dolby true hd audio track.
Use gst-play-1.0 to playback the file. Use left/right cursor keys to seek forward/back or use d to reverse playback direction.
In the console you will see these errors:
```$ gst-play-1.0 ../Dolby_Amaze_Lossless-ATMOS-thedigitaltheater.mkv
Press 'k' to see a list of keyboard shortcuts.
Now playing /mnt/data/gstreamer/master/Dolby_Amaze_Lossless-ATMOS-thedigitaltheater.mkv
Redistribute latency...
Redistribute latency...
Redistribute latency...
Playback rate: -1,00
Playback rate: 1,00
0:00:09.795967778 25969 0x7f7f4801c280 ERROR libav :0:: too many audio samples in frame
0:00:09.796094181 25969 0x7f7f4801c280 ERROR libav :0:: too many audio samples in frame
0:00:09.796133686 25969 0x7f7f4801c280 ERROR libav :0:: Invalid blocksize.
0:00:09.796168019 25969 0x7f7f4801c280 ERROR libav :0:: Invalid blocksize.
0:00:09.796194001 25969 0x7f7f4801c280 ERROR libav :0:: restart header sync incorrect (got 0x056e)
0:00:09.796215041 25969 0x7f7f4801c280 ERROR libav :0:: restart header sync incorrect (got 0x070c)
0:00:09.796232604 25969 0x7f7f4801c280 ERROR libav :0:: too many audio samples in frame
0:00:09.796338293 25969 0x7f7f4801c280 ERROR libav :0:: Invalid channel 13 specified as output from matrix.
0:00:09.796363444 25969 0x7f7f4801c280 ERROR libav :0:: restart header sync incorrect (got 0x1be9)
0:00:09.796408234 25969 0x7f7f4801c280 ERROR libav :0:: restart header sync incorrect (got 0x1815)
0:00:09.796428855 25969 0x7f7f4801c280 ERROR libav :0:: too many audio samples in frame
0:00:09.796456226 25969 0x7f7f4801c280 ERROR libav :0:: restart header sync incorrect (got 0x0f61)
0:00:09.796486561 25969 0x7f7f4801c280 ERROR libav :0:: IIR filter coeff_bits must be between 1 and 16.
0:00:09.796538056 25969 0x7f7f4801c280 ERROR libav :0:: restart header sync incorrect (got 0x1bec)
0:00:09.796606799 25969 0x7f7f4801c280 ERROR libav :0:: FIR filter order 9 is greater than maximum 8.
0:00:09.796630803 25969 0x7f7f4801c280 ERROR libav :0:: Invalid blocksize.
0:00:09.796650717 25969 0x7f7f4801c280 ERROR libav :0:: too many audio samples in frame
0:00:09.796694034 25969 0x7f7f4801c280 ERROR libav :0:: restart header sync incorrect (got 0x04ac)
0:00:09.796709169 25969 0x7f7f4801c280 ERROR libav :0:: Invalid channel 8 specified as output from matrix.
Playback rate: -1,00
0:00:12.378814862 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:12.378832499 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:12.378838799 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:12.378845556 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:12.378852447 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:12.378860644 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:12.378866336 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:12.378874015 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:12.378879851 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:12.378889649 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:12.378895186 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:12.378901427 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:12.378906966 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:12.378912480 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:12.378921760 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:12.378930113 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:12.378941644 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:12.378952588 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:12.378960026 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:12.378967269 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:12.378978132 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:12.378987852 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:12.379001549 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:12.379012578 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:12.379026080 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:12.379036274 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:14.898238532 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:14.898250620 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:14.898256399 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:14.898266208 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:14.898270794 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:14.898275480 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:14.898281066 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:14.898286250 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:14.898294685 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:14.898299641 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:14.898304149 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:14.898310004 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:14.898325422 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:14.898332400 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:14.898339734 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:14.898349442 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:14.898356086 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:14.898363338 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:14.898369849 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:14.898379717 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:14.898389236 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:14.898397100 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:14.898404139 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
0:00:14.898410768 25969 0x7f7f4801c280 ERROR libav :0:: substream 1 length mismatch
Playback rate: 1,00
0:00:14.900200260 25969 0x7f7f4801c280 ERROR libav :0:: too many audio samples in frame
0:00:14.900227771 25969 0x7f7f4801c280 ERROR libav :0:: substream 2 length mismatch
0:00:16.439301642 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:16.439424890 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:16.439482576 25969 0x7f7f4801c280 ERROR libav :0:: too many audio samples in frame
0:00:16.439546386 25969 0x7f7f4801c280 ERROR libav :0:: substream 0 length mismatch
0:00:17.682153981 25969 0x7f7f4801c280 ERROR libav :0:: Invalid blocksize.
0:00:17.682190539 25969 0x7f7f4801c280 ERROR libav :0:: Invalid blocksize.
0:00:17.682210911 25969 0x7f7f4801c280 ERROR libav :0:: too many audio samples in frame
0:00:17.682245901 25969 0x7f7f4801c280 ERROR libav :0:: restart header sync incorrect (got 0x1678)
0:00:17.682258945 25969 0x7f7f4801c280 ERROR libav :0:: Invalid blocksize.
0:00:17.682273456 25969 0x7f7f4801c280 ERROR libav :0:: too many audio samples in frame
0:00:17.682314873 25969 0x7f7f4801c280 ERROR libav :0:: restart header sync incorrect (got 0x0782)
0:00:19.093269916 25969 0x7f7f4801c280 ERROR libav :0:: restart header sync incorrect (got 0x0fd7)
0:00:19.093294916 25969 0x7f7f4801c280 ERROR libav :0:: too many audio samples in frame
0:00:19.093359134 25969 0x7f7f4801c280 ERROR libav :0:: too many audio samples in frame
0:00:19.093378756 25969 0x7f7f4801c280 ERROR libav :0:: too many audio samples in frame
0:00:19.093398708 25969 0x7f7f4801c280 ERROR libav :0:: restart header sync incorrect (got 0x1409)
0:00:19.093415007 25969 0x7f7f4801c280 ERROR libav :0:: restart header sync incorrect (got 0x161c)
0:00:19.093452088 25969 0x7f7f4801c280 ERROR libav :0:: too many audio samples in frame
0:00:36.8 / 0:01:03.5
```https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/65Can't build 1.16.1 on ubuntu 18.04 with built-in ffmpeg2021-09-24T12:52:35ZMichal LazoCan't build 1.16.1 on ubuntu 18.04 with built-in ffmpegI can't build 1.16.1 on ubuntu 18.04(x64) with build in version of ffmpeg (without --with-system-libav)
some problem with missing libm
undefined reference to `hypot'
undefined reference to `exp2'
......I can't build 1.16.1 on ubuntu 18.04(x64) with build in version of ffmpeg (without --with-system-libav)
some problem with missing libm
undefined reference to `hypot'
undefined reference to `exp2'
......https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/64avenc_opus can't negotiate2021-09-24T12:52:35ZMarianna Smidth Buschleavenc_opus can't negotiateSomething as simple as:
```
gst-launch-1.0 audiotestsrc ! audioconvert ! avenc_opus strict=experimental ! fakesink --gst-debug=*:3
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
0:00:00.149466112 8926 0x55da6b957f70 FIXME ...Something as simple as:
```
gst-launch-1.0 audiotestsrc ! audioconvert ! avenc_opus strict=experimental ! fakesink --gst-debug=*:3
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
0:00:00.149466112 8926 0x55da6b957f70 FIXME default gstutils.c:3981:gst_pad_create_stream_id_internal:<audiotestsrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:00.151105733 8926 0x55da6b957f70 WARN audioencoder gstaudioencoder.c:1362:gst_audio_encoder_chain:<avenc_opus0> error: encoder not initialized
0:00:00.151210310 8926 0x55da6b957f70 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop:<audiotestsrc0> error: Internal data stream error.
0:00:00.151221859 8926 0x55da6b957f70 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop:<audiotestsrc0> error: streaming stopped, reason not-negotiated (-4)
ERROR: from element /GstPipeline:pipeline0/avenc_opus:avenc_opus0: GStreamer error: negotiation problem.
Additional debug info:
gstaudioencoder.c(1362): gst_audio_encoder_chain (): /GstPipeline:pipeline0/avenc_opus:avenc_opus0:
encoder not initialized
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
```
Fails to negotiate.
The problem seems to be in the `avenc_opus`:
```
0:00:00.164404152 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<avenc_opus0:src> get pad caps with filter (NULL)
0:00:00.164426419 8933 0x56098001f370 DEBUG GST_CAPS gstpad.c:3183:gst_pad_query_caps_default:<avenc_opus0:src> query caps caps query: 0x7f95b4004590, GstQueryCaps, filter=(GstCaps)"NULL", caps=(GstCaps)"NULL";
0:00:00.164441413 8933 0x56098001f370 DEBUG GST_CAPS gstpad.c:3200:gst_pad_query_caps_default:<avenc_opus0:src> fixed pad caps: trying pad caps
0:00:00.164455370 8933 0x56098001f370 DEBUG GST_CAPS gstpad.c:3206:gst_pad_query_caps_default:<avenc_opus0:src> trying pad template caps
0:00:00.164470876 8933 0x56098001f370 DEBUG GST_CAPS gstpad.c:3236:gst_pad_query_caps_default:<avenc_opus0:src> using caps 0x56097fdcc630 unknown/unknown
0:00:00.164500601 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<avenc_opus0:src> query returned unknown/unknown
0:00:00.164521806 8933 0x56098001f370 DEBUG GST_CAPS gstpad.c:2836:gst_pad_get_allowed_caps:<avenc_opus0:src> allowed caps unknown/unknown
```
Maybe some mapping issue similar to https://gitlab.freedesktop.org/gstreamer/gst-libav/issues/25?
Full log of caps:
```
msb@QtecDebian:~$ gst-launch-1.0 audiotestsrc ! audioconvert ! avenc_opus strict=experimental ! fakesink --gst-debug=*:3
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
0:00:00.149466112 8926 0x55da6b957f70 FIXME default gstutils.c:3981:gst_pad_create_stream_id_internal:<audiotestsrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:00.151105733 8926 0x55da6b957f70 WARN audioencoder gstaudioencoder.c:1362:gst_audio_encoder_chain:<avenc_opus0> error: encoder not initialized
0:00:00.151210310 8926 0x55da6b957f70 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop:<audiotestsrc0> error: Internal data stream error.
0:00:00.151221859 8926 0x55da6b957f70 WARN basesrc gstbasesrc.c:3055:gst_base_src_loop:<audiotestsrc0> error: streaming stopped, reason not-negotiated (-4)
ERROR: from element /GstPipeline:pipeline0/avenc_opus:avenc_opus0: GStreamer error: negotiation problem.
Additional debug info:
gstaudioencoder.c(1362): gst_audio_encoder_chain (): /GstPipeline:pipeline0/avenc_opus:avenc_opus0:
encoder not initialized
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
msb@QtecDebian:~$ gst-launch-1.0 audiotestsrc ! audioconvert ! avenc_opus strict=experimental ! fakesink --gst-debug=GST_CAPS*:5
0:00:00.161504001 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<audiotestsrc0:src> get pad caps with filter (NULL)
0:00:00.161656792 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<audiotestsrc0:src> query returned audio/x-raw, format=(string){ S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE, S8, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]
0:00:00.161725736 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<audioconvert0:sink> get pad caps with filter (NULL)
0:00:00.161823140 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3104:gst_pad_peer_query_caps:<audioconvert0:src> get pad peer caps with filter (NULL)
0:00:00.162026353 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<audioconvert0:sink> query returned audio/x-raw, rate=(int)[ 1, 2147483647 ], layout=(string)interleaved, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, channels=(int)[ 1, 2147483647 ]
0:00:00.162116570 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<audiotestsrc0:src> get pad caps with filter (NULL)
0:00:00.162153868 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<audiotestsrc0:src> query returned audio/x-raw, format=(string){ S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE, S8, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]
0:00:00.162164276 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<audioconvert0:sink> get pad caps with filter (NULL)
0:00:00.162175749 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3104:gst_pad_peer_query_caps:<audioconvert0:src> get pad peer caps with filter (NULL)
0:00:00.162208567 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<audioconvert0:sink> query returned audio/x-raw, rate=(int)[ 1, 2147483647 ], layout=(string)interleaved, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, channels=(int)[ 1, 2147483647 ]
0:00:00.162237059 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:2278:gst_pad_link_check_compatible_unlocked:<audiotestsrc0:src> src caps audio/x-raw, format=(string){ S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE, S8, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]
0:00:00.162250973 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:2280:gst_pad_link_check_compatible_unlocked:<audioconvert0:sink> sink caps audio/x-raw, rate=(int)[ 1, 2147483647 ], layout=(string)interleaved, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, channels=(int)[ 1, 2147483647 ]
0:00:00.162262904 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:2298:gst_pad_link_check_compatible_unlocked: caps are compatible
0:00:00.162280848 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<audioconvert0:src> get pad caps with filter (NULL)
0:00:00.162318415 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3104:gst_pad_peer_query_caps:<audioconvert0:sink> get pad peer caps with filter (NULL)
0:00:00.162338114 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3111:gst_pad_peer_query_caps:<audioconvert0:sink> peer query returned audio/x-raw, format=(string){ S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE, S8, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]
0:00:00.162511677 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<audioconvert0:src> query returned audio/x-raw, format=(string){ S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE, S8, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]
0:00:00.162534907 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<avenc_opus0:sink> get pad caps with filter (NULL)
0:00:00.162545150 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3104:gst_pad_peer_query_caps:<avenc_opus0:src> get pad peer caps with filter (NULL)
0:00:00.162569174 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<avenc_opus0:sink> query returned audio/x-raw, channels=(int)1, rate=(int)48000, layout=(string)interleaved, format=(string)F32LE; audio/x-raw, channels=(int)2, rate=(int)48000, layout=(string)interleaved, format=(string)F32LE
0:00:00.162586775 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<audioconvert0:src> get pad caps with filter (NULL)
0:00:00.162608656 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3104:gst_pad_peer_query_caps:<audioconvert0:sink> get pad peer caps with filter (NULL)
0:00:00.162624303 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3111:gst_pad_peer_query_caps:<audioconvert0:sink> peer query returned audio/x-raw, format=(string){ S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE, S8, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]
0:00:00.162746862 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<audioconvert0:src> query returned audio/x-raw, format=(string){ S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE, S8, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]
0:00:00.162768070 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<avenc_opus0:sink> get pad caps with filter (NULL)
0:00:00.162776799 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3104:gst_pad_peer_query_caps:<avenc_opus0:src> get pad peer caps with filter (NULL)
0:00:00.162795130 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<avenc_opus0:sink> query returned audio/x-raw, channels=(int)1, rate=(int)48000, layout=(string)interleaved, format=(string)F32LE; audio/x-raw, channels=(int)2, rate=(int)48000, layout=(string)interleaved, format=(string)F32LE
0:00:00.162808668 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:2278:gst_pad_link_check_compatible_unlocked:<audioconvert0:src> src caps audio/x-raw, format=(string){ S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE, S8, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]
0:00:00.162822319 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:2280:gst_pad_link_check_compatible_unlocked:<avenc_opus0:sink> sink caps audio/x-raw, channels=(int)1, rate=(int)48000, layout=(string)interleaved, format=(string)F32LE; audio/x-raw, channels=(int)2, rate=(int)48000, layout=(string)interleaved, format=(string)F32LE
0:00:00.162835991 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:2298:gst_pad_link_check_compatible_unlocked: caps are compatible
0:00:00.162850218 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<avenc_opus0:src> get pad caps with filter (NULL)
0:00:00.162865047 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:3183:gst_pad_query_caps_default:<avenc_opus0:src> query caps caps query: 0x56098001f1e0, GstQueryCaps, filter=(GstCaps)"NULL", caps=(GstCaps)"NULL";
0:00:00.162874852 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:3200:gst_pad_query_caps_default:<avenc_opus0:src> fixed pad caps: trying pad caps
0:00:00.162883031 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:3206:gst_pad_query_caps_default:<avenc_opus0:src> trying pad template caps
0:00:00.162890945 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:3236:gst_pad_query_caps_default:<avenc_opus0:src> using caps 0x56097fdcc630 unknown/unknown
0:00:00.162898864 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<avenc_opus0:src> query returned unknown/unknown
0:00:00.162907431 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<fakesink0:sink> get pad caps with filter (NULL)
0:00:00.162916587 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<fakesink0:sink> query returned ANY
0:00:00.162929005 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<avenc_opus0:src> get pad caps with filter (NULL)
0:00:00.162938998 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:3183:gst_pad_query_caps_default:<avenc_opus0:src> query caps caps query: 0x56098001f400, GstQueryCaps, filter=(GstCaps)"NULL", caps=(GstCaps)"NULL";
0:00:00.162947549 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:3200:gst_pad_query_caps_default:<avenc_opus0:src> fixed pad caps: trying pad caps
0:00:00.162953543 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:3206:gst_pad_query_caps_default:<avenc_opus0:src> trying pad template caps
0:00:00.162960535 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:3236:gst_pad_query_caps_default:<avenc_opus0:src> using caps 0x56097fdcc630 unknown/unknown
0:00:00.162970752 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<avenc_opus0:src> query returned unknown/unknown
0:00:00.162977522 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<fakesink0:sink> get pad caps with filter (NULL)
0:00:00.162985488 8933 0x560980023200 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<fakesink0:sink> query returned ANY
0:00:00.163008924 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:2278:gst_pad_link_check_compatible_unlocked:<avenc_opus0:src> src caps unknown/unknown
0:00:00.163018638 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:2280:gst_pad_link_check_compatible_unlocked:<fakesink0:sink> sink caps ANY
0:00:00.163024524 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:2298:gst_pad_link_check_compatible_unlocked: caps are compatible
Setting pipeline to PAUSED ...
0:00:00.163178228 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:2733:gst_pad_get_current_caps:<audioconvert0:sink> get current pad caps (NULL)
0:00:00.163199833 8933 0x560980023200 DEBUG GST_CAPS gstpad.c:2733:gst_pad_get_current_caps:<audioconvert0:src> get current pad caps (NULL)
Pipeline is PREROLLING ...
0:00:00.163496997 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<audiotestsrc0:src> get pad caps with filter (NULL)
0:00:00.163538980 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<audiotestsrc0:src> query returned audio/x-raw, format=(string){ S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE, S8, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]
0:00:00.163563759 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3104:gst_pad_peer_query_caps:<audiotestsrc0:src> get pad peer caps with filter audio/x-raw, format=(string){ S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE, S8, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]
0:00:00.163653850 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3104:gst_pad_peer_query_caps:<audioconvert0:src> get pad peer caps with filter audio/x-raw, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, channels=(int)[ 1, 2147483647 ]
0:00:00.163678844 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3104:gst_pad_peer_query_caps:<avenc_opus0:src> get pad peer caps with filter unknown/unknown, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]
0:00:00.163698557 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3111:gst_pad_peer_query_caps:<avenc_opus0:src> peer query returned unknown/unknown, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]
0:00:00.163733985 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3111:gst_pad_peer_query_caps:<audioconvert0:src> peer query returned audio/x-raw, rate=(int)48000, channels=(int)1, layout=(string)interleaved, format=(string)F32LE; audio/x-raw, rate=(int)48000, channels=(int)2, layout=(string)interleaved, format=(string)F32LE
0:00:00.163839400 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3111:gst_pad_peer_query_caps:<audiotestsrc0:src> peer query returned audio/x-raw, rate=(int)48000, channels=(int)1, layout=(string)interleaved, format=(string)F32LE; audio/x-raw, rate=(int)48000, channels=(int)2, layout=(string)interleaved, format=(string)F32LE; audio/x-raw, format=(string){ S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE, S8, U8 }, layout=(string)interleaved, rate=(int)48000, channels=(int)[ 1, 2147483647 ]
0:00:00.163864222 8933 0x56098001f370 DEBUG GST_CAPS gstpad.c:2733:gst_pad_get_current_caps:<audiotestsrc0:src> get current pad caps (NULL)
0:00:00.163901188 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3141:gst_pad_query_accept_caps:<audioconvert0:sink> accept caps of audio/x-raw, rate=(int)48000, channels=(int)1, layout=(string)interleaved, format=(string)F32LE
0:00:00.163946276 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<avenc_opus0:sink> get pad caps with filter audio/x-raw, rate=(int)48000, layout=(string)interleaved, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, channels=(int)[ 1, 2147483647 ]
0:00:00.163970879 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3104:gst_pad_peer_query_caps:<avenc_opus0:src> get pad peer caps with filter unknown/unknown, rate=(int)48000, channels=(int)[ 1, 2147483647 ]
0:00:00.164005530 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3111:gst_pad_peer_query_caps:<avenc_opus0:src> peer query returned unknown/unknown, rate=(int)48000, channels=(int)[ 1, 2147483647 ]
0:00:00.164043324 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<avenc_opus0:sink> query returned audio/x-raw, rate=(int)48000, channels=(int)1, layout=(string)interleaved, format=(string)F32LE; audio/x-raw, rate=(int)48000, channels=(int)2, layout=(string)interleaved, format=(string)F32LE
0:00:00.164084454 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3141:gst_pad_query_accept_caps:<avenc_opus0:sink> accept caps of audio/x-raw, rate=(int)48000, channels=(int)1, layout=(string)interleaved, format=(string)F32LE
0:00:00.164106733 8933 0x56098001f370 DEBUG GST_CAPS gstpad.c:2733:gst_pad_get_current_caps:<audioconvert0:sink> get current pad caps (NULL)
0:00:00.164122215 8933 0x56098001f370 DEBUG GST_CAPS gstpad.c:2733:gst_pad_get_current_caps:<audioconvert0:src> get current pad caps (NULL)
0:00:00.164172438 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3141:gst_pad_query_accept_caps:<avenc_opus0:sink> accept caps of audio/x-raw, rate=(int)48000, channels=(int)1, layout=(string)interleaved, format=(string)F32LE
0:00:00.164200977 8933 0x56098001f370 DEBUG GST_CAPS gstpad.c:2733:gst_pad_get_current_caps:<audiotestsrc0:src> get current pad caps audio/x-raw, rate=(int)48000, channels=(int)1, layout=(string)interleaved, format=(string)F32LE
0:00:00.164291740 8933 0x56098001f370 DEBUG GST_CAPS gstpad.c:2733:gst_pad_get_current_caps:<avenc_opus0:sink> get current pad caps audio/x-raw, rate=(int)48000, channels=(int)1, layout=(string)interleaved, format=(string)F32LE
0:00:00.164404152 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3058:gst_pad_query_caps:<avenc_opus0:src> get pad caps with filter (NULL)
0:00:00.164426419 8933 0x56098001f370 DEBUG GST_CAPS gstpad.c:3183:gst_pad_query_caps_default:<avenc_opus0:src> query caps caps query: 0x7f95b4004590, GstQueryCaps, filter=(GstCaps)"NULL", caps=(GstCaps)"NULL";
0:00:00.164441413 8933 0x56098001f370 DEBUG GST_CAPS gstpad.c:3200:gst_pad_query_caps_default:<avenc_opus0:src> fixed pad caps: trying pad caps
0:00:00.164455370 8933 0x56098001f370 DEBUG GST_CAPS gstpad.c:3206:gst_pad_query_caps_default:<avenc_opus0:src> trying pad template caps
0:00:00.164470876 8933 0x56098001f370 DEBUG GST_CAPS gstpad.c:3236:gst_pad_query_caps_default:<avenc_opus0:src> using caps 0x56097fdcc630 unknown/unknown
0:00:00.164500601 8933 0x56098001f370 DEBUG GST_CAPS gstutils.c:3065:gst_pad_query_caps:<avenc_opus0:src> query returned unknown/unknown
0:00:00.164521806 8933 0x56098001f370 DEBUG GST_CAPS gstpad.c:2836:gst_pad_get_allowed_caps:<avenc_opus0:src> allowed caps unknown/unknown
ERROR: from element /GstPipeline:pipeline0/avenc_opus:avenc_opus0: GStreamer error: negotiation problem.
Additional debug info:
gstaudioencoder.c(1362): gst_audio_encoder_chain (): /GstPipeline:pipeline0/avenc_opus:avenc_opus0:
encoder not initialized
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
```https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/59avdemux_nut cannot demux nut file with h264 stream?2021-09-24T12:52:33ZLLavdemux_nut cannot demux nut file with h264 stream?the nut file contain ffv1 stream is OK. However if the nut file using h264 encoder, it cannot correctly sink to decodebin and h264parse.
```
$ ffmpeg -f lavfi -i testsrc2=r=30:size=800x800:duration=10 -c:v libx264 -g 60 -bf 0 test.nut
$ ...the nut file contain ffv1 stream is OK. However if the nut file using h264 encoder, it cannot correctly sink to decodebin and h264parse.
```
$ ffmpeg -f lavfi -i testsrc2=r=30:size=800x800:duration=10 -c:v libx264 -g 60 -bf 0 test.nut
$ gst-launch-1.0 -v --gst-debug=trace filesrc location=test.nut ! avdemux_nut ! decodebin ! autovideosink Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-h264, width=(int)800, height=(int)800, framerate=(fraction)30/1, alignment=(string)au, codec_data=(buffer)000000016764001facb2019032d80880000003008000001e078c19240000000168ebc3cb22c0
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/x-h264, width=(int)800, height=(int)800, framerate=(fraction)30/1, alignment=(string)au, codec_data=(buffer)000000016764001facb2019032d80880000003008000001e078c19240000000168ebc3cb22c0
Missing element: H.264 decoder
ERROR: from element /GstPipeline:pipeline0/GstDecodeBin:decodebin0: Your GStreamer installation is missing a plug-in.
Additional debug info:
gstdecodebin2.c(4640): gst_decode_bin_expose (): /GstPipeline:pipeline0/GstDecodeBin:decodebin0:
no suitable plugins found:
Couldn't set h264parse0 to PAUSED
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
```
remuxing also failed:
```
$ gst-launch-1.0 -v --gst-debug=trace filesrc location=test.nut ! avdemux_nut ! h264parse ! queue ! qtmux ! filesink location=gstremux_from_nut.mp4
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/avdemux_nut:avdemux_nut0: Internal data stream error.
Additional debug info:
gstavdemux.c(1590): gst_ffmpegdemux_loop (): /GstPipeline:pipeline0/avdemux_nut:avdemux_nut0:
streaming stopped, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
```
```
$ gst-launch-1.0 --version
gst-launch-1.0 version 1.14.4
GStreamer 1.14.4
https://launchpad.net/distros/ubuntu/+source/gstreamer1.0
gstreamer1.0-libav:amd64 1.14.4-0ubuntu1~ubuntu18.04.1
```https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/55avvidenc: Add support for HDR metadata2021-09-24T12:52:31ZSebastian Drögeavvidenc: Add support for HDR metadataThe following discussion from !13 should be addressed:
- [ ] @slomo started a [discussion](https://gitlab.freedesktop.org/gstreamer/gst-libav/merge_requests/13#note_154708): (+2 comments)
> Should there also be support in the enco...The following discussion from !13 should be addressed:
- [ ] @slomo started a [discussion](https://gitlab.freedesktop.org/gstreamer/gst-libav/merge_requests/13#note_154708): (+2 comments)
> Should there also be support in the encoder the same way?https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/53avvidenc: add AFD side data2021-09-24T12:52:31ZAaron Boxeravvidenc: add AFD side dataExtract `AV_FRAME_DATA_AFD` side data, to store in meta.Extract `AV_FRAME_DATA_AFD` side data, to store in meta.https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/52avviddec: add AFD side data2021-09-24T12:52:30ZAaron Boxeravviddec: add AFD side dataAre there other types of side data we would like to handle as meta data ?Are there other types of side data we would like to handle as meta data ?https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/48invalidate cache when external libav* changes2021-09-24T12:52:30ZRobert McQueeninvalidate cache when external libav* changesEndless OS and Flatpak runtimes with a codecs extension both share the property that in certain cases, libav gets replaced with a more capable version elsewhere on the library search path. The GStreamer caching machinery does not "notice...Endless OS and Flatpak runtimes with a codecs extension both share the property that in certain cases, libav gets replaced with a more capable version elsewhere on the library search path. The GStreamer caching machinery does not "notice" this change (indeed I'm not sure it's monitoring the dependent .so files at all) so in the case of a more capable system libav with more supported codecs, if GStreamer has already built its caches they are not updated and the new codecs are unavailable.
Endless has an ugly patch for this which has been copied into the Flatpak freedesktop-sdk runtime - https://gitlab.com/freedesktop-sdk/freedesktop-sdk/blob/18.08/patches/gst-libav-stop-caching-codecs.patch
This works, in as much as when a more capable libav is provided in an alternative location on the path, the cache is invalidated and refreshed. However it has the obvious downside that this is hardcoding the library search path, which means that if you place a different libav in another location on the library path (particularly in a sandboxed context like Flatpak where the library path can be changed dynamically) it is not noticed.
We could avoid hardcoding the library path and solve this problem more robustly by fetching the path of the currently loaded libav* using dlinfo, and then making the cache validity dependent on the properties of that file, so that if a different one is found by the linker, the cache will be correctly invalidated.
Perhaps in the end you would want to add a function to the registry to allow a dynamic library file cache dependency to be added easily, or you could do this dlinfo lookup in gst-libav as a special case.https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/45ProRes decoding regression in validate.file.playback.reverse_playback.rawaudi...2021-09-24T12:52:27ZwangzhanjunProRes decoding regression in validate.file.playback.reverse_playback.rawaudioS32LE_prores_mov### System Environment
- gstreamer commit e501e2f5c9b69dcedaeb89a25a1de29503b1d51f
- gst-libav commit 6ffe685b89adadf0e9fbdb06c55376a9b102a1c7
4 cases failed during run gst-validate scenarios test, and these cases can be pass with gst-...### System Environment
- gstreamer commit e501e2f5c9b69dcedaeb89a25a1de29503b1d51f
- gst-libav commit 6ffe685b89adadf0e9fbdb06c55376a9b102a1c7
4 cases failed during run gst-validate scenarios test, and these cases can be pass with gst-libav 7c304c0c1ed37cac2001aa9ecd7ebd6a8715a042
**failed cases:**
- gst_validate_scenarios/validate.file.playback.reverse_playback.rawaudioS32LE_prores_mov FAIL
- gst_validate_scenarios/validate.file.transcode.to_mp3_and_h264_in_mp4.samples_multimedia_cx_flac_Yesterday_flac FAIL
- gst_validate_scenarios/validate.file.transcode.to_vorbis_and_h264_in_mkv.samples_multimedia_cx_flac_Yesterday_flac FAIL
- gst_validate_scenarios/validate.file.transcode.to_vorbis_and_vp8_in_webm.samples_multimedia_cx_flac_Yesterday_flac FAIL
### Reproduce Steps
1. build enc as above lists
2. export GST_VALIDATE_APPS_DIR="path to your GST-VALIDATE director"
3. gst-validate-launcher validate -t validate.file.transcode.to_mp3_and_h264_in_mp4.samples_multimedia_cx_flac_Yesterday_flachttps://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/44A lot of elements get registered with unknown caps2021-09-24T12:52:26ZMathieu DuponchelleA lot of elements get registered with unknown caps`gst-inspect-1.0 -a | grep unknown/unknown`
We should have tests to check that, a lot of codec ids need to be handled in gst_ffmpeg_codecid_to_caps or ignored in the relevant registering functions.`gst-inspect-1.0 -a | grep unknown/unknown`
We should have tests to check that, a lot of codec ids need to be handled in gst_ffmpeg_codecid_to_caps or ignored in the relevant registering functions.https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/40avmux_ivf: Add VP9 and AV1 sink capabilities2021-09-24T12:52:25ZBugzilla Migration Useravmux_ivf: Add VP9 and AV1 sink capabilities## Submitted by Georg Ottinger
**[Link to original bug (#796718)](https://bugzilla.gnome.org/show_bug.cgi?id=796718)**
## Description
avmux_ivf uses libav to create IVF containers.
libav's ivfenc.c supports VP9 and AV1 starting...## Submitted by Georg Ottinger
**[Link to original bug (#796718)](https://bugzilla.gnome.org/show_bug.cgi?id=796718)**
## Description
avmux_ivf uses libav to create IVF containers.
libav's ivfenc.c supports VP9 and AV1 starting with 2018/03/12 (this is currently not a release version), but probably next release will support it.
This patch registers the capability for video/x-vp9 and video/x-av1 (along video/x-vp8) when using avmux_ivf.
This work is part of a GSOC 2018 project, mentored by Intel Media And Audio For Linuxhttps://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/39failed to link avmux_spdif link with alsasink for ac3 passthrough2021-09-24T12:52:25ZBugzilla Migration Userfailed to link avmux_spdif link with alsasink for ac3 passthrough## Submitted by Lyon
**[Link to original bug (#796466)](https://bugzilla.gnome.org/show_bug.cgi?id=796466)**
## Description
Hi,
I was trying to realize ac3 audio passthrough via hdmi by a certain pipeline with avmux_spdif.
...## Submitted by Lyon
**[Link to original bug (#796466)](https://bugzilla.gnome.org/show_bug.cgi?id=796466)**
## Description
Hi,
I was trying to realize ac3 audio passthrough via hdmi by a certain pipeline with avmux_spdif.
By pipeline:
"gst-launch-1.0 filesrc location= 5.1_de.ac3 ! ac3parse ! avmux_spdif ! filesink location= ac3.spdif"
I managed to dump out the encapsulated ac3 (iec61958) format.
Then I was trying to link avmux_spdif with alsasink
Noticing avmux_spdif src caps is "application/x-gst-av-spdif", which alsasink not supported, so I modified avmux_spdif src caps with "audio/x-ac3, framed=true"
However seems I still met problem when trying to output the data via alsasink
below is some log with GST_DEBUG=audiobasesink:6,2
Setting pipeline to PAUSED ...
0:00:00.182977808 [335m 3646[00m 0x3c8bb190 [33;01mWARN [00m [00m basesrc gstbasesrc.c:3583:gst_base_src_start_complete:`<filesrc0>`[00m pad not activated yet
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstAc3Parse:ac3parse0.GstPad:src: caps = audio/x-ac3, framed=(boolean)true, rate=(int)48000, channels=(int)6, alignment=(string)frame
/GstPipeline:pipeline0/avmux_spdif:avmux_spdif0.GstPad:audio_0: caps = audio/x-ac3, framed=(boolean)true, rate=(int)48000, channels=(int)6, alignment=(string)frame
0:00:00.186149288 [335m 3646[00m 0x3c867280 [32;01mFIXME [00m [00m basesink gstbasesink.c:3145:gst_base_sink_default_event:`<alsasink0>`[00m stream-start event without group-id. Consider implementing group-id handling in the upstream elements
0:00:00.186471848 [335m 3646[00m 0x3c867280 [37mDEBUG [00m [00m audiobasesink gstaudiobasesink.c:1197:gst_audio_base_sink_preroll:`<alsasink0>`[00m ringbuffer in wrong state
0:00:00.186508208 [335m 3646[00m 0x3c867280 [33;01mWARN [00m [00m audiobasesink gstaudiobasesink.c:1198:gst_audio_base_sink_preroll:`<alsasink0>`[00m error: sink not negotiated.
0:00:00.186702488 [335m 3646[00m 0x3c867280 [37mDEBUG [00m [00m audiobasesink gstaudiobasesink.c:1197:gst_audio_base_sink_preroll:`<alsasink0>`[00m ringbuffer in wrong state
ERROR: from element /GstPipeline:pipeline0/GstAlsaSink:alsasink0: The stream is in the wrong format.
0:00:00.186732608 [335m 3646[00m 0x3c867280 [33;01mWARN [00m [00m audiobasesink gstaudiobasesink.c:1198:gst_audio_base_sink_preroll:`<alsasink0>`[00m error: sink not negotiated.
Additional debug info:
../../../../git/gst-libs/gst/audio/gstaudiobasesink.c(1198): gst_audio_base_sink_preroll (): /GstPipeline:pipeline0/GstAlsaSink:alsasink0:
sink not negotiated.
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Do anyone meet similar issue when trying to use avmux_spdif to passthrough ac3 via alsasink?
Any hint will be appreciated for this issue
Thanks
Lyon
Version: 1.14.0https://gitlab.freedesktop.org/gstreamer/gst-libav/-/issues/36gst-libav: configure exits with no error status if configuring internal libav...2021-09-24T12:52:25ZBugzilla Migration Usergst-libav: configure exits with no error status if configuring internal libav fails## Submitted by Alistair Buxton
**[Link to original bug (#794912)](https://bugzilla.gnome.org/show_bug.cgi?id=794912)**
## Description
Here the configure for gst-libav runs the configure for libav:
https://cgit.freedesktop.org/...## Submitted by Alistair Buxton
**[Link to original bug (#794912)](https://bugzilla.gnome.org/show_bug.cgi?id=794912)**
## Description
Here the configure for gst-libav runs the configure for libav:
https://cgit.freedesktop.org/gstreamer/gst-libav/tree/configure.ac#n464
If for some reason the libav configuration fails, the gst-libav configuration does not return an error status. This means if you are building from a script or Makefile, then that script will not realise that an error has occured and will continue to attempt to build gst-libav, with undefined results.
I encountered this in the context of 39df65e8a27496650ea7c36d8d91f48b770ec46a. If I try to build from the commit prior to this one, libav configure will fail as it cannot find gas-preprocessor. Despite this, attempting to compile gst-libav still "succeeds" - in the sense that it also does not return an error. I have no idea what it actually produces, but my build scripts happily pack it up and report success.