gst-plugins-bad issueshttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues2022-10-25T02:38:42Zhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1713gstwebrtcbin.c: retransmissions work with bundle-policy=max-bundle but not wi...2022-10-25T02:38:42ZMarkus Pollakgstwebrtcbin.c: retransmissions work with bundle-policy=max-bundle but not with default bundle-policyHello,
I've found a bug in gstwebrtcbin.c (https://github.com/GStreamer/gst-plugins-bad/blob/master/ext/webrtc/gstwebrtcbin.c) which causes retransmissions (RTX for NACKs) to not work in common scenarios. I've also found the root cause ...Hello,
I've found a bug in gstwebrtcbin.c (https://github.com/GStreamer/gst-plugins-bad/blob/master/ext/webrtc/gstwebrtcbin.c) which causes retransmissions (RTX for NACKs) to not work in common scenarios. I've also found the root cause and provide a detailed explanation:
**Setup:**
- Gstreamer installation based on restreamio/gstreamer:1.19.2.0-prod Docker image
- do-nack is set to true at the transceiver (fec-type is not set as I'm testing retransmissions only)
- gst1-java-core:1.4.0 is used to build up the pipeline
- Gstreamer is used to send a video stream (video only, no audio, send-only) to Chrome
- A range of multiple video source is used (rtspsrc, srtsrc, videotestsrc, ...)
- Chrome on Windows is used for receiving a video-stream via WebRTC
- H264 encoding (baseline and high profile) is used in different cases
- Clumsy is used for simulating packet loss (client-side)
**SDPs:**
The SDPs are correctly mentioning nack and rtx and pt mappings seem to be correct.
**SDP Offer:**
```
v=0
o=- 8338404406669528263 0 IN IP4 0.0.0.0
s=-
t=0 0
a=ice-options:trickle
m=video 9 UDP/TLS/RTP/SAVPF 97 96
c=IN IP4 0.0.0.0
a=setup:actpass
a=ice-ufrag:qt8YBq9p6brgGFJPTcOEZnpzNuGGaiZc
a=ice-pwd:IUzbx6zU7c1cAEpr9v8pUd8fQX4WMWc4
a=rtcp-mux
a=rtcp-rsize
a=sendonly
a=rtpmap:97 H264/90000
a=rtcp-fb:97 nack
a=rtcp-fb:97 nack pli
a=rtcp-fb:97 transport-cc
a=framerate:25
a=fmtp:97 packetization-mode=1;profile-level-id=4d001f;sprop-parameter-sets=Z00AH5Y1QKALdNwEBAUAAAcIAAFfkAQ=,aO48gA==
a=rtpmap:96 rtx/90000
a=fmtp:96 apt=97
a=ssrc-group:FID 2 876927395
a=ssrc:2 msid:user73081093@host-10bea89f webrtctransceiver4
a=ssrc:2 cname:user73081093@host-10bea89f
a=ssrc:876927395 msid:user73081093@host-10bea89f webrtctransceiver4
a=ssrc:876927395 cname:user73081093@host-10bea89f
a=mid:video0
a=fingerprint:sha-256 5A:BB:64:EB:DA:4C:59:AE:25:97:46:BA:18:BC:67:A1:8A:8B:30:15:B0:D3:F0:21:7C:43:95:79:DA:EA:66:25
a=rtcp-mux-only
```
**SDP Answer:**
```
v=0
o=- 9170499300271825649 2 IN IP4 127.0.0.1
s=-
t=0 0
a=msid-semantic: WMS
m=video 9 UDP/TLS/RTP/SAVPF 97 96
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:eFrN
a=ice-pwd:8X4CVq0UQPKCyHgT9Mt+ArfF
a=ice-options:trickle
a=fingerprint:sha-256 9E:43:31:2F:55:64:63:76:53:B8:35:F9:9B:B9:AD:71:04:95:E2:F9:2A:66:71:2D:64:B0:26:42:E8:4D:CD:73
a=setup:active
a=mid:video0
a=recvonly
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:97 H264/90000
a=rtcp-fb:97 transport-cc
a=rtcp-fb:97 nack
a=rtcp-fb:97 nack pli
a=fmtp:97 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f
a=rtpmap:96 rtx/90000
a=fmtp:96 apt=97
```
I can see that NACKs are sent by Chrome via chrome://webrtc-internals
The NACK count is increasing when packets are lost.
So far so good, but the retransmissions through Gstreamer don't work yet.
**I've debugged it and finally found the reason in gstwebrtcbin.c:**
on_rtpbin_request_aux_sender calls _set_rtx_ptmap_from_stream (webrtc, stream) after creating the rtprtxsend (rtx = gst_element_factory_make ("rtprtxsend", NULL)) while stream->rtxsend has not yet been set.
It's basically set at the end of on_rtpbin_request_aux_sender: stream->rtxsend = gst_object_ref (rtx);
I can verify that _set_rtx_ptmap_from_stream is called only once while rtprtxsend is null via the logs (GST_DEBUG='3,rtprtx*:5,webrtc*:6'):
```
0:01:19.678286676 6 0x7fd1c42d7060 DEBUG webrtcbin gstwebrtcbin.c:4313:_set_rtx_ptmap_from_stream:<transportstream0> setting payload map on (NULL) : (NULL) and application/x-rtp-pt-map, 97=(uint)96;
```
The following logs show that the retransmissions triggered by NACKs are not working:
```
0:01:19.679474693 6 0x7fd1c53bc700 WARN rtprtxsend gstrtprtxsend.c:655:gst_rtp_rtx_send_sink_event:<rtprtxsend0> Payload 97 not in rtx-pt-map
```
and
```
0:08:28.606424318 6 0x7fd1a1176c60 DEBUG rtprtxsend gstrtprtxsend.c:489:gst_rtp_rtx_send_src_event:<rtprtxsend0> got rtx request for seqnum: 31149, ssrc: 2
0:08:28.606434319 6 0x7fd1a1176c60 WARN rtprtxsend gstrtprtxsend.c:525:gst_rtp_rtx_send_src_event:<rtprtxsend0> requested seqnum 31149 has not been transmitted yet in the original stream; eithe
r the remote end is not configured correctly, or the source is too slow
0:08:28.606442719 6 0x7fd1a1176c60 DEBUG rtprtxsend gstrtprtxsend.c:489:gst_rtp_rtx_send_src_event:<rtprtxsend0> got rtx request for seqnum: 31150, ssrc: 2
0:08:28.606447819 6 0x7fd1a1176c60 WARN rtprtxsend gstrtprtxsend.c:525:gst_rtp_rtx_send_src_event:<rtprtxsend0> requested seqnum 31150 has not been transmitted yet in the original stream; eithe
r the remote end is not configured correctly, or the source is too slow
```
The lost packets are not received by Chrome too and the video stream starts freezing already at <5% packet loss.
This is problematic because _set_rtx_ptmap_from_stream only sets the "playload-type-map" if stream->rtxsend is set which is not the case:
```
if (stream->rtxreceive)
g_object_set (stream->rtxreceive, "payload-type-map", pt_map, NULL);
if (stream->rtxsend)
g_object_set (stream->rtxsend, "payload-type-map", pt_map, NULL);
```
A workaround is to use bundle-policy=max-bundle because in this case _set_rtx_ptmap_from_stream is called a second time from _update_transceiver_from_sdp_media:
```
if (!bundled || bundle_idx == media_idx) {
if (stream->rtxsend || stream->rtxreceive) {
_set_rtx_ptmap_from_stream (webrtc, stream);
}
g_object_set (stream, "dtls-client",
new_setup == GST_WEBRTC_DTLS_SETUP_ACTIVE, NULL);
}
```
**The workaround can be verified via logs too:**
The "payload-type-map" is set via _set_rtx_ptmap_from_stream at the second call (from _update_transceiver_from_sdp_media) with `stream->rtxsend` being not null:
```
0:01:11.110764316 7 0x7f9220b115e0 DEBUG webrtcbin gstwebrtcbin.c:4313:_set_rtx_ptmap_from_stream:<transportstream0> setting payload map on (NULL) : (NULL) and application/x-rtp-pt-map, 97=(uin
t)96;
0:01:11.111793531 7 0x7f9220b115e0 DEBUG webrtcbin gstwebrtcbin.c:4313:_set_rtx_ptmap_from_stream:<transportstream0> setting payload map on (NULL) : <rtprtxsend0> and application/x-rtp-pt-map,
97=(uint)96;
```
The requested packets are found and retransmitted:
```
0:02:35.661652056 7 0x7f91fc840d20 DEBUG rtprtxsend gstrtprtxsend.c:489:gst_rtp_rtx_send_src_event:<rtprtxsend0> got rtx request for seqnum: 45671, ssrc: 2
0:02:35.661658856 7 0x7f91fc840d20 DEBUG rtprtxsend gstrtprtxsend.c:405:gst_rtp_rtx_buffer_new:<rtprtxsend0> creating rtx buffer, orig seqnum: 45671, rtx seqnum: 58534, rtx ssrc: 851211DE
0:02:35.661680057 7 0x7f91fc840d20 DEBUG rtprtxsend gstrtprtxsend.c:489:gst_rtp_rtx_send_src_event:<rtprtxsend0> got rtx request for seqnum: 45672, ssrc: 2
0:02:35.661693457 7 0x7f91fc840d20 DEBUG rtprtxsend gstrtprtxsend.c:405:gst_rtp_rtx_buffer_new:<rtprtxsend0> creating rtx buffer, orig seqnum: 45672, rtx seqnum: 58535, rtx ssrc: 851211DE
0:02:35.661705557 7 0x7f91fc840d20 DEBUG rtprtxsend gstrtprtxsend.c:489:gst_rtp_rtx_send_src_event:<rtprtxsend0> got rtx request for seqnum: 45673, ssrc: 2
0:02:35.661715557 7 0x7f91fc840d20 DEBUG rtprtxsend gstrtprtxsend.c:405:gst_rtp_rtx_buffer_new:<rtprtxsend0> creating rtx buffer, orig seqnum: 45673, rtx seqnum: 58536, rtx ssrc: 851211DE
0:02:35.661726757 7 0x7f91fc840d20 DEBUG rtprtxsend gstrtprtxsend.c:489:gst_rtp_rtx_send_src_event:<rtprtxsend0> got rtx request for seqnum: 45674, ssrc: 2
```
Now the retransmission is working and the video stream is still stable at >20% packet loss.
I would appreciate if someone from the Gstreamer community could verify my bug report and fix it.
Thank you!
Best regards,
Markus Pollakhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1712gstwebrtcbin : BUNDLE not coming in offer SDP with error 'GstWebRTCBin' has...2022-04-17T07:28:03ZGhost Usergstwebrtcbin : BUNDLE not coming in offer SDP with error 'GstWebRTCBin' has no property named 'bundle-policy'Implementing gstreamer based webrtc client app for receiving nest camera stream using google api's.
However in the offer SDP bundle are not getting created(no lines for BUNDLE i.e BUNDLE audio0 video1 application2 in offer sdp).
Followin...Implementing gstreamer based webrtc client app for receiving nest camera stream using google api's.
However in the offer SDP bundle are not getting created(no lines for BUNDLE i.e BUNDLE audio0 video1 application2 in offer sdp).
Following error is getting trigerred on running the webrtc client app
GLib-GObject-WARNING **: g_object_set_valist: object class 'GstWebRTCBin' has no property named 'bundle-policy'https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1711v4l2h264dec0: Too old frames, bug in decoder -- please file a bug2022-03-22T01:25:34ZF. Duncanhv4l2h264dec0: Too old frames, bug in decoder -- please file a bugThis g_warning is triggered by an anomaly (NOT a decoder bug) where the first few video frames are not processed in gstv4l2videodec.c `gst_v4l2_video_dec_loop(GstVideodecoder *decoder)`.
For certain streams, (described below)
the first ...This g_warning is triggered by an anomaly (NOT a decoder bug) where the first few video frames are not processed in gstv4l2videodec.c `gst_v4l2_video_dec_loop(GstVideodecoder *decoder)`.
For certain streams, (described below)
the first frame to get past line 712
```
frame =
gst_video_decoder_get_frame (decoder,
GST_BUFFER_TIMESTAMP (buffer) / GST_SECOND);
```
is the frame with frame->system_frame_number = 4, while frames 0,1,2,3 are waiting, with oldest_frame->system_frame_number = 0.
These only get removed by the garbage collection code when frames 101 - 104 are processed, triggering the warning four times.
I could not diagnose why the these frames dont get through. There is one instance of a return at line 693
if (ret == GST_V4L2_FLOW_RESOLUTION_CHANGE) {
GST_WARNING_OBJECT (decoder, "Received resolution change");
g_atomic_int_set (&self->capture_configuration_change, TRUE);
return;
}
The source is an h264 video stream (Apple Airplay from an iOS client) where the first frame has the structure
0x00 0x00 0x00 0x01 SPS 0x00 0x00 00x00 0x01 PPS 0x00 0x00 00x00 0x01 (h264 video)
and thereafter only 0x00 0x00 0x00 0x01 (h264 video).
Every works fine when an appsrc with no caps set injects this into a video pipeline starting with h264parse. Possibly a few (4) initial video frames are lost, but every then works fine in the pipeline, so no decoder errors.
The cleanup of these first four orphan frames ideally should only generate a GST_DEBUG-2 warning, not the "annoying"
g_warning it now does.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1710[gst-va] there is an issue for h264 4k vbr encode2022-03-11T07:55:13ZFocusLuo[gst-va] there is an issue for h264 4k vbr encodetest cmdline: gst-launch-1.0 -vf filesrc location=/home/focus/yuv/4k_2013_3840x2160_I420_75frames.yuv num-buffers=75 ! rawvideoparse format=i420 width=3840 height=2160 framerate=30 ! videoconvert chroma-mode=none dither=0 ! video/x-raw,f...test cmdline: gst-launch-1.0 -vf filesrc location=/home/focus/yuv/4k_2013_3840x2160_I420_75frames.yuv num-buffers=75 ! rawvideoparse format=i420 width=3840 height=2160 framerate=30 ! videoconvert chroma-mode=none dither=0 ! video/x-raw,format=NV12 ! vah264enc rate-control=vbr key-int-max=30 target-usage=4 num-slices=1 b-frames=3 target-percentage=70 bitrate=142857 ref-frames=1 ! video/x-h264,profile=main ! h264parse ! filesink location=test.h264
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Got context from element 'vah264enc0': gst.va.display.handle=context, gst-display=(GstObject)"\(GstVaDisplayDrm\)\ vadisplaydrm1";
/GstPipeline:pipeline0/GstRawVideoParse:rawvideoparse0.GstPad:src: caps = video/x-raw, format=(string)I420, width=(int)3840, height=(int)2160, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)3840, height=(int)2160, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, format=(string)NV12, chroma-site=(string)mpeg2
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, width=(int)3840, height=(int)2160, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, format=(string)NV12, chroma-site=(string)mpeg2
/GstPipeline:pipeline0/GstVaH264Enc:vah264enc0: dct8x8 = false
/GstPipeline:pipeline0/GstVaH264Enc:vah264enc0: cpb-size = 408162
/GstPipeline:pipeline0/GstVaH264Enc:vah264enc0: b-frames = 0
/GstPipeline:pipeline0/GstVaH264Enc:vah264enc0.GstPad:src: caps = video/x-h264, profile=(string)main, level=(string)6.1, width=(int)3840, height=(int)2160, alignment=(string)au, stream-format=(string)byte-stream, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709, chroma-site=(string)mpeg2
/GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:src: caps = video/x-h264, profile=(string)main, level=(string)6.1, width=(int)3840, height=(int)2160, alignment=(string)au, stream-format=(string)byte-stream, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709, chroma-site=(string)mpeg2
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, profile=(string)main, level=(string)6.1, width=(int)3840, height=(int)2160, alignment=(string)au, stream-format=(string)byte-stream, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709, chroma-site=(string)mpeg2, parsed=(boolean)true
/GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps = video/x-h264, profile=(string)main, level=(string)6.1, width=(int)3840, height=(int)2160, alignment=(string)au, stream-format=(string)byte-stream, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709, chroma-site=(string)mpeg2, parsed=(boolean)true
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = video/x-h264, profile=(string)main, level=(string)6.1, width=(int)3840, height=(int)2160, alignment=(string)au, stream-format=(string)byte-stream, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709, chroma-site=(string)mpeg2
/GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:sink: caps = video/x-h264, profile=(string)main, level=(string)6.1, width=(int)3840, height=(int)2160, alignment=(string)au, stream-format=(string)byte-stream, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709, chroma-site=(string)mpeg2
/GstPipeline:pipeline0/GstVaH264Enc:vah264enc0.GstPad:sink: caps = video/x-raw, width=(int)3840, height=(int)2160, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, format=(string)NV12, chroma-site=(string)mpeg2
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, width=(int)3840, height=(int)2160, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, format=(string)NV12, chroma-site=(string)mpeg2
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)I420, width=(int)3840, height=(int)2160, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2, framerate=(fraction)30/1
0:00:00.068594978 121102 0x56147cd825e0 ERROR vah264enc gstvah264enc.c:2984:gst_va_h264_enc_encode_frame:<vah264enc0> Encode frame error
0:00:00.068610177 121102 0x56147cd825e0 ERROR vah264enc gstvah264enc.c:3456:_encode_frame:<vah264enc0> Failed to encode the frame
ERROR: from element /GstPipeline:pipeline0/GstVaH264Enc:vah264enc0: Failed to encode the frame.
Additional debug info:
../sys/va/gstvah264enc.c(3554): gst_va_h264_enc_handle_frame (): /GstPipeline:pipeline0/GstVaH264Enc:vah264enc0
ERROR: pipeline doesn't want to preroll.
ERROR: from element /GstPipeline:pipeline0/GstRawVideoParse:rawvideoparse0: Internal data stream error.
Setting pipeline to NULL ...
Additional debug info:
../libs/gst/base/gstbaseparse.c(3681): gst_base_parse_loop (): /GstPipeline:pipeline0/GstRawVideoParse:rawvideoparse0:
streaming stopped, reason error (-5)
ERROR: pipeline doesn't want to preroll.
Freeing pipeline ...https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1709[build][ubuntu 18.04] gst-plugins-bad/mpegtsdemux/mpegtsbase.c use glib2.7 b...2022-03-10T03:03:48ZBin-CI[build][ubuntu 18.04] gst-plugins-bad/mpegtsdemux/mpegtsbase.c use glib2.7 block on ubuntu bionicCatch build error on ubuntu 18.04 bionic:
```
21:25:47,710 INFO - [2578/3353] cc -Isubprojects/gst-plugins-bad/gst/mpegtsdemux/libgstmpegtsdemux.so.p -Isubprojects/gst-plugins-bad/gst/mpegtsdemux -I../subprojects/gst-plugins-bad/gst/mpe...Catch build error on ubuntu 18.04 bionic:
```
21:25:47,710 INFO - [2578/3353] cc -Isubprojects/gst-plugins-bad/gst/mpegtsdemux/libgstmpegtsdemux.so.p -Isubprojects/gst-plugins-bad/gst/mpegtsdemux -I../subprojects/gst-plugins-bad/gst/mpegtsdemux -Isubprojects/gst-plugins-bad -I../subprojects/gst-plugins-bad -Isubprojects/gst-plugins-bad/gst-libs -I../subprojects/gst-plugins-bad/gst-libs -Isubprojects/gstreamer/libs -I../subprojects/gstreamer/libs -Isubprojects/gstreamer -I../subprojects/gstreamer -Isubprojects/gst-plugins-base/gst-libs -I../subprojects/gst-plugins-base/gst-libs -Isubprojects/orc -I../subprojects/orc -Isubprojects/gstreamer/gst -Isubprojects/gst-plugins-bad/gst-libs/gst/mpegts -Isubprojects/gst-plugins-base/gst-libs/gst/tag -Isubprojects/gst-plugins-base/gst-libs/gst/pbutils -Isubprojects/gst-plugins-base/gst-libs/gst/video -Isubprojects/gst-plugins-base/gst-libs/gst/audio -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/opt/media/install/include -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O2 -g -fvisibilit...
21:25:47,710 INFO - ../subprojects/gst-plugins-bad/gst/mpegtsdemux/mpegtsbase.c: In function 'mpegts_base_steal_program':
21:25:47,710 INFO - ../subprojects/gst-plugins-bad/gst/mpegtsdemux/mpegtsbase.c:505:14: warning: implicit declaration of function 'g_ptr_array_steal_index'; did you mean 'g_ptr_array_remove_index'? [-Wimplicit-function-declaration]
21:25:47,710 INFO - return g_ptr_array_steal_index (base->programs, i);
21:25:47,710 INFO - ^~~~~~~~~~~~~~~~~~~~~~~
21:25:47,710 INFO - g_ptr_array_remove_index
21:25:47,710 INFO - ../subprojects/gst-plugins-bad/gst/mpegtsdemux/mpegtsbase.c:505:14: warning: return makes pointer from integer without a cast [-Wint-conversion]
21:25:47,710 INFO - return g_ptr_array_steal_index (base->programs, i);
21:25:47,710 INFO - ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
Check with ubuntu 20.04 focal: without the build problem
g_ptr_array_remove_index: glib2.4
g_ptr_array_steal_index: glib2.7https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1707[regression] subprojects/gst-plugins-bad build issue (no this issue if revert...2022-09-07T19:49:33ZFocusLuo[regression] subprojects/gst-plugins-bad build issue (no this issue if revert c31bf2db4d86a530af0ab85a4870400b8e5aaa4b)meson -Dprefix=/opt/gstreamer10/ -Dlibdir=/opt/gstreamer10/lib/ build
./subprojects/gst-plugins-bad/sys/nvcodec/gstcudamemorycopy.c:919:3: error: expected identifier or ‘(’ before ‘if’
919 | if (!ret) {
| ^~
../subprojects/gst-plugins-ba...meson -Dprefix=/opt/gstreamer10/ -Dlibdir=/opt/gstreamer10/lib/ build
./subprojects/gst-plugins-bad/sys/nvcodec/gstcudamemorycopy.c:919:3: error: expected identifier or ‘(’ before ‘if’
919 | if (!ret) {
| ^~
../subprojects/gst-plugins-bad/sys/nvcodec/gstcudamemorycopy.c:926:3: error: expected identifier or ‘(’ before ‘if’
926 | if (ret)
| ^~
../subprojects/gst-plugins-bad/sys/nvcodec/gstcudamemorycopy.c:929:3: error: expected identifier or ‘(’ before ‘return’
929 | return GST_FLOW_ERROR;
| ^~~~~~
../subprojects/gst-plugins-bad/sys/nvcodec/gstcudamemorycopy.c:930:1: error: expected identifier or ‘(’ before ‘}’ token
930 | }
if git revert c31bf2db4d86a530af0ab85a4870400b8e5aaa4b, then there is no this issuehttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1706After openh264enc all the VideoMeta is lost2022-03-02T06:27:46Zzack xueAfter openh264enc all the VideoMeta is lostit seems that the base video encode don't use gst_buffer_copy_into GST_BUFFER_COPY_METADATA?it seems that the base video encode don't use gst_buffer_copy_into GST_BUFFER_COPY_METADATA?https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1704ipcpipeline does not work on windows2022-02-24T05:41:20Zjinsl00000jinsl00000@msn.cnipcpipeline does not work on windowsWhen I use ipcpipeline in windows, I found "gstipcpipelinecomm.c" use fd in two different way.
1.POSIX read and write the fd as a File Descriptor.
2.Call gst_poll_funs and use the fd as a WSASocket.
Should "read/write" be "recv/send" ...When I use ipcpipeline in windows, I found "gstipcpipelinecomm.c" use fd in two different way.
1.POSIX read and write the fd as a File Descriptor.
2.Call gst_poll_funs and use the fd as a WSASocket.
Should "read/write" be "recv/send" in windows?
Thinks.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1703hls: choppy radio stream2022-02-20T08:43:41ZArnaud Rebillouthls: choppy radio streamHi,
through https://gitlab.com/goodvibes/goodvibes/-/issues/145, I discovered a HLS audio stream (an internet radio station) that doesn't play right with GStreamer. The sound is choppy. The URL for the station is https://hls-01-radiorec...Hi,
through https://gitlab.com/goodvibes/goodvibes/-/issues/145, I discovered a HLS audio stream (an internet radio station) that doesn't play right with GStreamer. The sound is choppy. The URL for the station is https://hls-01-radiorecord.hostingradio.ru/record-brks/96/playlist.m3u8.
One can try it with:
```
gst-launch-1.0 playbin uri='https://hls-01-radiorecord.hostingradio.ru/record-brks/96/playlist.m3u8'
```
Upon download, the playlist looks like that:
```
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:3427745
#EXTINF:4.99229,
https://hls-07-storage.hostingradio.ru/record-brks/96/out3427745.ts
#EXTINF:4.99229,
https://hls-07-storage.hostingradio.ru/record-brks/96/out3427746.ts
#EXTINF:4.99229,
https://hls-07-storage.hostingradio.ru/record-brks/96/out3427747.ts
#EXTINF:4.99229,
https://hls-07-storage.hostingradio.ru/record-brks/96/out3427748.ts
#EXTINF:4.99229,
https://hls-07-storage.hostingradio.ru/record-brks/96/out3427749.ts
#EXTINF:4.99229,
https://hls-07-storage.hostingradio.ru/record-brks/96/out3427750.ts
```
One thing that caught my eyes here is that the value for `EXT-X-TARGETDURATION` is different from the value for `EXTINF`. But after a [very quick search](https://stackoverflow.com/a/38361448), it seems that it shouldn't be a problem.
I also wonder about `EXT-X-VERSION:6`, which means [CLOSED-CAPTIONS media type](https://developer.apple.com/documentation/http_live_streaming/about_the_ext-x-version_tag), but TBH I have no clue what it means.
Another surprising thing with this stream is that GStreamer doesn't send any buffering message, never ever. My application strongly expected that, so it fails to play this stream, but I realized that it's a mistake on my side.
Anyway. In the end I tried to play this stream with VLC (just picked the latest VLC from Flatpak), and the stream plays just fine.
Thanks for reading!https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1702audiovisualizers: spectrascope: SIGSEGV when shader fade-and-move-horiz-out(6)2022-02-21T15:03:56ZSebastian Grossaudiovisualizers: spectrascope: SIGSEGV when shader fade-and-move-horiz-out(6)The following pipeline fails with SIGSEGV
```
gst-launch-1.0 audiotestsrc num-buffers=1 ! spectrascope shader=6 ! fakesink
```
The error is invariant of audio source and video sink or the presence of buffers
Behaviour
=========
SIGSE...The following pipeline fails with SIGSEGV
```
gst-launch-1.0 audiotestsrc num-buffers=1 ! spectrascope shader=6 ! fakesink
```
The error is invariant of audio source and video sink or the presence of buffers
Behaviour
=========
SIGSEGV caught, core dumped. See info below.
Expected Behaviour
==================
Pipeline should run normally and stop after EOS as with other shaders
```
gst-launch-1.0 audiotestsrc num-buffers=1 ! spectrascope shader=8 ! fakesink
```
System
======
`Linux diamond-tiara 5.16.10-arch1-1 #1 SMP PREEMPT Wed, 16 Feb 2022 19:35:18 +0000 x86_64 GNU/Linux`
```
Plugin Details:
Name audiovisualizers
Description Creates video visualizations of audio input
Filename /usr/lib/gstreamer-1.0/libgstaudiovisualizers.so
Version 1.20.0
License LGPL
Source module gst-plugins-bad
Source release date 2022-02-03
Binary package Arch Linux gst-plugins-bad 1.20.0-2
Origin URL https://www.archlinux.org/
```
Coredump Info
=============
```
UID: 1000
GID: 1000
Signal: 11 (SEGV)
Timestamp: Fri 2022-02-18 19:56:53 CET (20s ago)
Command Line: gst-launch-1.0 audiotestsrc num-buffers=1 $'!' spectrascope shader=6 $'!' fakesink
Executable: /usr/bin/gst-launch-1.0
Control Group: /user.slice/user-1000.slice/session-1.scope
Unit: session-1.scope
Slice: user-1000.slice
Session: 1
Owner UID: 1000
```https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1700ICE Connection state changed to '4' without any indication2023-05-30T16:08:14ZSabri MTIBAAICE Connection state changed to '4' without any indicationI'm facing an issue with streaming app between cam with webrtbin and HTML5 client.
in some cases, the negotiation doesn't end correctly and ICE Connection state changed to '4' .. then the player become dark.
I don't know how to debug th...I'm facing an issue with streaming app between cam with webrtbin and HTML5 client.
in some cases, the negotiation doesn't end correctly and ICE Connection state changed to '4' .. then the player become dark.
I don't know how to debug the issue. Have you any idea about the issue?
![image](/uploads/8cdce1c56942bebfbb827ac24f3106f1/image.png)
the issue is more frequent when I'm using the HTLM5 player from my VPN.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1699set local-description in webrtcbin takes long time2023-05-16T03:53:01ZSabri MTIBAAset local-description in webrtcbin takes long timeHello
I'm using webrtcbin in webrtc app between GW deployed on my camera and a HTML5 client. Tests performed are OK but the performance is not acceptable.
After a deep analysis on the log, I found that the streaming takes too long time ...Hello
I'm using webrtcbin in webrtc app between GW deployed on my camera and a HTML5 client. Tests performed are OK but the performance is not acceptable.
After a deep analysis on the log, I found that the streaming takes too long time because the set local description associated to the offer takes variable time to return the result. The fact that it's asynchronous by design doesn't mean that g_signal_emit_by_name remain blocked 10s, 18s even 20s.
I don't know if there is any solution to investigate the issue, I suspect that the signal is not emitted and maybe there is a hidden dependency.
here the screenshot
![image](/uploads/ee834bad22289ca23ea40eec151b72d2/image.png)
Thanks in advance for your help.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1697gstreamer fails to compile without debuginfo2022-01-29T21:03:04ZBernhard M. Wiedemanngstreamer fails to compile without debuginfoWhile working on [reproducible builds](https://reproducible-builds.org/) for [openSUSE](https://en.opensuse.org/openSUSE:Reproducible_Builds), I found that our `gstreamer-plugins-good` package failed to build with
```bash
osc co openSUS...While working on [reproducible builds](https://reproducible-builds.org/) for [openSUSE](https://en.opensuse.org/openSUSE:Reproducible_Builds), I found that our `gstreamer-plugins-good` package failed to build with
```bash
osc co openSUSE:Factory/gstreamer-plugins-good && cd $_
osc build --clean --noservice --disable-debuginfo standard
```
Because that omits the `-g` in CFLAGS.
```bash
cc -o gst/isomp4/libgstisomp4.so gst/isomp4/libgstisomp4.so.p/isomp4-plugin.c.o gst/isomp4/libgstisomp4.so.p/gstrtpxqtdepay.c.o gst/isomp4/libgstisomp4.so.p/qtdemux.c.o gst/isomp4/libgstisomp4.so.p/qtdemux_types.c.o gst/isomp4/libgstisomp4.so.p/qtdemux_dump.c.o gst/isomp4/libgstisomp4.so.p/qtdemux_lang.c.o gst/isomp4/libgstisomp4.so.p/qtdemux_tags.c.o gst/isomp4/libgstisomp4.so.p/qtdemux_tree.c.o gst/isomp4/libgstisomp4.so.p/gstisoff.c.o gst/isomp4/libgstisomp4.so.p/gstqtmux.c.o gst/isomp4/libgstisomp4.so.p/gstqtmoovrecover.c.o gst/isomp4/libgstisomp4.so.p/atoms.c.o gst/isomp4/libgstisomp4.so.p/atomsrecovery.c.o gst/isomp4/libgstisomp4.so.p/descriptors.c.o gst/isomp4/libgstisomp4.so.p/properties.c.o gst/isomp4/libgstisomp4.so.p/gstqtmuxmap.c.o -Wl,--as-needed -Wl,--no-undefined -shared -fPIC -Wl,--start-group -Wl,-soname,libgstisomp4.so -Wl,-Bsymbolic-functions -flto=auto -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto /usr/lib64/libgstreamer-1.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libglib-2.0.so /usr/lib64/libgstriff-1.0.so /usr/lib64/libgstaudio-1.0.so /usr/lib64/libgstbase-1.0.so /usr/lib64/libgsttag-1.0.so /usr/lib64/libgstvideo-1.0.so /usr/lib64/libgstrtp-1.0.so /usr/lib64/libgstpbutils-1.0.so /usr/lib64/libz.so -Wl,--end-group
ninja: build stopped: subcommand failed.
```
Our [build instructions](https://code.opensuse.org/package/gstreamer-plugins-good/blob/master/f/gstreamer-plugins-good.spec#_169) look good to me.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1696NVCODEC + Y4442022-01-12T12:51:14ZChristophe LAFOLETNVCODEC + Y444Tested on Gstreamer 1.19.3
Since Turing architecture, Nvidia cards can decode YUV 444 (H264 + H265)
https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new
gstnvdech264dec.c and gstnvdech265dec.c only support chroma...Tested on Gstreamer 1.19.3
Since Turing architecture, Nvidia cards can decode YUV 444 (H264 + H265)
https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new
gstnvdech264dec.c and gstnvdech265dec.c only support chroma_format_idc = 1 (YUV 420) : new case needed for chroma_format_idc = 3 (YUV 444)
gsth265parser.c need evolutions for 444 chroma constraints.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1695nvdec 1.14.5 failed to register texture with CUDA2022-01-13T14:30:18ZErwan Le Blondnvdec 1.14.5 failed to register texture with CUDAhere, env values
Video_Codec_SDK_11.0.10.zip
docker images nvidia/cuda:11.2.2-cudnn8-devel-ubuntu18.04
GPU rtx 3070 Ampere artchitecture
```
NV_LIBCUBLAS_DEV_VERSION=11.4.1.1043-1
NV_CUDA_COMPAT_PACKAGE=cuda-compat-11-2
NV_CUDNN_PACKAG...here, env values
Video_Codec_SDK_11.0.10.zip
docker images nvidia/cuda:11.2.2-cudnn8-devel-ubuntu18.04
GPU rtx 3070 Ampere artchitecture
```
NV_LIBCUBLAS_DEV_VERSION=11.4.1.1043-1
NV_CUDA_COMPAT_PACKAGE=cuda-compat-11-2
NV_CUDNN_PACKAGE_DEV=libcudnn8-dev=8.1.1.33-1+cuda11.2
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/lib/x86_64-linux-gnu/
NV_LIBNCCL_DEV_PACKAGE=libnccl-dev=2.8.4-1+cuda11.2
PULSE_SERVER=unix:/run/user/1000/pulse/native
TZ=Europe/Paris
NV_LIBNPP_DEV_PACKAGE=libnpp-dev-11-2=11.3.2.152-1
DISPLAY=:0
TAG=tags/1.14.1
HOSTNAME=zotac07
NV_LIBNPP_VERSION=11.3.2.152-1
NVIDIA_VISIBLE_DEVICES=all
VIRTUAL_ENV=/home/workingsrc/venv
NV_LIBCUSPARSE_VERSION=11.4.1.1152-1
NV_LIBCUBLAS_DEV_PACKAGE=libcublas-dev-11-2=11.4.1.1043-1
NCCL_VERSION=2.8.4-1
PWD=/home/workingsrc
NVARCH=x86_64
HOME=/root
NV_LIBCUSPARSE_DEV_VERSION=11.4.1.1152-1
NV_ML_REPO_URL=https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64
NV_LIBNCCL_PACKAGE_VERSION=2.8.4-1
NV_LIBNCCL_PACKAGE=libnccl2=2.8.4-1+cuda11.2
NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev
NV_CUDA_LIB_VERSION=11.2.2-1
NV_ML_REPO_ENABLED=1
NV_LIBNPP_PACKAGE=libnpp-11-2=11.3.2.152-1
NV_LIBNCCL_PACKAGE_NAME=libnccl2
LIBRARY_PATH=/usr/local/cuda/lib64/stubs:/usr/local/cuda/lib64/stubs
VIDEOSDK_VERSION=11.0.10
NV_NVTX_VERSION=11.2.152-1
NV_LIBCUBLAS_VERSION=11.4.1.1043-1
NV_LIBCUBLAS_PACKAGE=libcublas-11-2=11.4.1.1043-1
NV_CUDNN_VERSION=8.1.1.33
NV_CUDA_CUDART_DEV_VERSION=11.2.152-1
TERM=xterm
NV_NVML_DEV_VERSION=11.2.152-1
CUDA_PKG_VERSION=11-2
CUDA_VERSION=11.2.2
NV_LIBCUBLAS_PACKAGE_NAME=libcublas-11-2
NVIDIA_DRIVER_CAPABILITIES=all
SHLVL=1
NV_LIBCUBLAS_DEV_PACKAGE_NAME=libcublas-dev-11-2
DBUS_SYSTEM_BUS_ADDRESS=unix:path=/host/run/dbus/system_bus_socket
NVIDIA_REQUIRE_CUDA=cuda>=11.2 brand=tesla,driver>=418,driver<419 brand=tesla,driver>=440,driver<441 driver>=450
NV_LIBNPP_DEV_VERSION=11.3.2.152-1
NV_CUDA_CUDART_VERSION=11.2.152-1
NV_CUDNN_PACKAGE_NAME=libcudnn8
PATH=/home/workingsrc/venv/bin:/env/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NV_LIBNCCL_DEV_PACKAGE_VERSION=2.8.4-1
PS1=(venv) \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
PYTHON=/usr/bin/python3
NV_CUDNN_PACKAGE=libcudnn8=8.1.1.33-1+cuda11.2
_=/usr/bin/env
OLDPWD=/gst-plugins-bad/sys/nvdec
```
log errors
```
0:00:05.124802953 15816 0x7f46d0002e80 WARN nvdec gstnvdec.c:61:cuda_OK: CUDA call failed: CUDA_ERROR_UNKNOWN, unknown error, 999
0:00:05.124814449 15816 0x7f46d0002e80 WARN nvdec gstnvdec.c:140:register_cuda_resource: failed to register texture with CUDA
0:00:05.124867528 15816 0x7f46d0002e80 WARN nvdec gstnvdec.c:61:cuda_OK: CUDA call failed: CUDA_ERROR_UNKNOWN, unknown error, 999
0:00:05.124872757 15816 0x7f46d0002e80 WARN nvdec gstnvdec.c:140:register_cuda_resource: failed to register texture with CUDA
0:00:05.124917621 15816 0x7f46d0002e80 WARN nvdec gstnvdec.c:61:cuda_OK: CUDA call failed: CUDA_ERROR_INVALID_HANDLE, invalid resource handle, 400
0:00:05.124924554 15816 0x7f46d0002e80 WARN nvdec gstnvdec.c:597:copy_video_frame_to_gl_textures:<nvdec0> failed to map CUDA resources
0:00:05.124972583 15816 0x2c75ed0 INFO videodecoder gstvideodecoder.c:3201:gst_video_decoder_clip_and_push_buf:<nvdec0> First buffer since flush took 0:00:00.593113561 to produce
0:00:05.124989822 15816 0x7f46d0002e80 INFO glconvert gstglcolorconvert.c:1986:_init_convert: Initializing color conversion from NV12 to RGB
```
nvdec 1.14.5 can't register texture with CUDA
can you help mehttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1694vtenc: color profile or gamma seems to be wrong sometimes2022-02-08T15:28:13ZStepan Salenikovichvtenc: color profile or gamma seems to be wrong sometimesI have a pipeline converting a stream of jpegs (mjpegs) to an h264 RTP stream which looks something like this:
`appsrc ! jpegdec ! vtenc_h264 ! rtph264pay ! appsink`
The issue I have is with jpegs from some sources (not all) the colors...I have a pipeline converting a stream of jpegs (mjpegs) to an h264 RTP stream which looks something like this:
`appsrc ! jpegdec ! vtenc_h264 ! rtph264pay ! appsink`
The issue I have is with jpegs from some sources (not all) the colors in the resulting h264 stream are slightly off. eg: some greys appear almost white. When I run the same "pipeline" in ffmpeg on the same machine, using the same videotoolbox h264 encoder the resulting output has the correct colors, eg:
`ffmpeg -i <input> -profile:v baseline -c:v h264_videotoolbox -realtime 1 -f rtp rtp://<address>`
I'm wondering if this has something to do with the color profile of the jpegs.
I noticed in the ffmpeg source these 3 keys can be set which seem to specify the color profile in various ways:
https://github.com/FFmpeg/FFmpeg/blob/6c4074e4234edacfb3f37184fd68771df3cb2b7f/libavcodec/videotoolboxenc.c#L847-L867
see also:
https://developer.apple.com/documentation/corevideo/cvimagebuffer/image_buffer_transfer_function_constants
https://developer.apple.com/documentation/corevideo/cvimagebuffer/image_buffer_color_primaries_constants
https://developer.apple.com/documentation/corevideo/cvimagebuffer/image_buffer_ycbcr_matrix_constants
I don't see these keys being set in vtenc.c
I'm not sure if it would make sense to set the manually, or they could be somehow derived from the source buffer.
I'm currently playing around with setting these keys manually in the vtenc.c source to see if it will fix my issue, though I'm not sure what they should be or how to parse the raw h264 stream to see what they are currently set as...
Thanks.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1692hlssink2 does not support async flag anymore in 1.19.3 and hangs during ingest2021-11-30T19:12:50ZGuru Govindanhlssink2 does not support async flag anymore in 1.19.3 and hangs during ingestVersion:
```
root@907fb86a2171:/tmp/# gst-launch-1.0 --version
gst-launch-1.0 version 1.19.3
GStreamer 1.19.3
```
I built gstreamer with 1.19.3 tag and I am running into issues running the following pipeline to ingest rtsp stream.
In the...Version:
```
root@907fb86a2171:/tmp/# gst-launch-1.0 --version
gst-launch-1.0 version 1.19.3
GStreamer 1.19.3
```
I built gstreamer with 1.19.3 tag and I am running into issues running the following pipeline to ingest rtsp stream.
In the previous version (GStreamer 1.18.4) I was able to use async=false and able to do an ABR transcode with an rtsp stream.
I am testing the 1.19.3 and I am running into issues ingesting a pipeline like the following. I have added a encode_ingest_360 but not yet transcoded. But that already hangs.
The following is an example of the pipeline and its output
```
root@907fb86a2171:/# GST_DEBUG=3 gst-launch-1.0 hlssink2 name=ingest playlist-length=0 max-files=0 target-duration=5 \
send-keyframe-requests=true playlist-location=stream0.m3u8 location="fragment%00005d.ts" hlssink2 name=enc_ingest_360 \ playlist-length=5 max-files=5 target-duration=2 send-keyframe-requests=true playlist-location="/spot-tmp/gst1/360/enc_stream1.m3u8" location="/spot-tmp/gst1/360/fa%05d.ts" \
rtspsrc location="rtsp://admin:pass@10.0.0.15:554/cam/realmonitor?channel=1&subtype=0" protocols=4 name=rtspsrc0 \
rtspsrc0. ! rtph264depay ! h264parse ! tee name=t t.! queue ! ingest.video rtspsrc0. ! decodebin ! queue ! audiorate ! \
audioconvert ! fdkaacenc ! tee name=audio_t audio_t. ! ingest.audio
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Pipeline is PREROLLED ...
Prerolled, waiting for progress to finish...
Progress: (connect) Connecting to rtsp://admin:pass@10.0.0.15:554/cam/realmonitor?channel=1&subtype=0
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
Progress: (request) SETUP stream 1
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Progress: (request) Sending PLAY request
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request
Redistribute latency...
Redistribute latency...
Redistribute latency...
0:00:02.166829738 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.167791992 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.168418079 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.168726499 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.168879268 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.169126105 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.169335588 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.169486487 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.169720183 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.169959725 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.170102934 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.170337681 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.170582701 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.170725907 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.170974450 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.171218938 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.171361875 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.171601589 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.295854905 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.303176343 2930910 0x7fbe7404a360 WARN audiodecoder gstaudiodecoder.c:1535:gst_audio_decoder_finish_frame_or_subframe:<fdkaacdec0> Can't copy metadata because input buffers disappeared
0:00:02.303475577 2930910 0x5567570d5a40 FIXME basesink gstbasesink.c:3395:gst_base_sink_default_event:<giostreamsink0> stream-start event without group-id. Consider implementing group-id handling in the upstream elements
0:00:02.303535167 2930910 0x5567570d5a40 WARN gio_base_sink gstgiobasesink.c:219:gst_gio_base_sink_event:<giostreamsink0> ignored SEGMENT event in time format
Redistribute latency...
^Chandling interrupt.:99.
```
I appreciate any help in this.
Thanks,
Guruhttps://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1691v4l2codecs PIPE_FORMAT_B10G10R10A2_UNORM2021-12-02T14:11:58Zsimplev4l2codecs PIPE_FORMAT_B10G10R10A2_UNORMI can not wait 1.20, so I build the 1.19.3, please forgive me.
But I try play a demo video on the gnome wayland,no video show and the terminal crazy print `PIPE_FORMAT_B10G10R10A2_UNORM` :
```
drq@opi4:~/music_pi$ GST_DEBUG=4 GST_DEBUG_...I can not wait 1.20, so I build the 1.19.3, please forgive me.
But I try play a demo video on the gnome wayland,no video show and the terminal crazy print `PIPE_FORMAT_B10G10R10A2_UNORM` :
```
drq@opi4:~/music_pi$ GST_DEBUG=4 GST_DEBUG_FILE=g.log GST_DEBUG_NO_COLOR=1 gst-play-1.0 ~/ggxs.mp4
Press 'k' to see a list of keyboard shortcuts.
Now playing /home/drq/ggxs.mp4
Redistribute latency...
Redistribute latency...
Redistribute latency..
0:00:00.0 / 0:04:04.0
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
PIPE_FORMAT_B10G10R10A2_UNORM
drq@opi4:~/music_pi$ ^C
```
[gst.log](/uploads/2f82504938f9e846d56b4e90e44da013/g.log)https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1690jpegparse only pushes tags for first frame2022-05-20T11:58:04Zelementgreenjpegparse only pushes tags for first frameI'm setting application specific data in the MakerNote EXIF "application-data" tag in each MJPEG frame in a Matroska container using the jifmux plugin. I've confirmed this is working by extracting all of the JPEG images to files and usin...I'm setting application specific data in the MakerNote EXIF "application-data" tag in each MJPEG frame in a Matroska container using the jifmux plugin. I've confirmed this is working by extracting all of the JPEG images to files and using the exiv2 utility to display the metadata tags.
The issue is that when creating a GStreamer pipeline to parse the frames for accessing the tags, the application EXIF metadata "application-data" tag is only emitted on the first frame.
Pipeline:
filesrc name=filesrc location=file.mkv ! matroskademux name=demux ! jpegparse ! appsink name=appsink emit-signals=True sync=False
Looking at the code in https://github.com/GStreamer/gst-plugins-bad/blob/master/gst/jpegformat/gstjpegparse.c it seems that the function gst_jpeg_parse_handle_frame() only pushes tags when there is a change in the frame dimensions or rate.
Ideally the jpegparse plugin would parse tags for each JPEG frame. I think I'll need to use another library to parse out the tags from the JPEG frame data for now.https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1689avtp plugin not found, but appears to have been built ok2021-11-20T20:11:49ZIan steelavtp plugin not found, but appears to have been built okBuilding gsteeamer 1.19.2 ok on raspberryPi CM4 Buster kernel 5.10.76 arm7l 32 bit.
plugins bad built ok and installed but gst-inspect-1.0 avtp says not found.
I appear to have libavtp which I believe is need for avtp plugin.
during t...Building gsteeamer 1.19.2 ok on raspberryPi CM4 Buster kernel 5.10.76 arm7l 32 bit.
plugins bad built ok and installed but gst-inspect-1.0 avtp says not found.
I appear to have libavtp which I believe is need for avtp plugin.
during the install phase I see:
`Installing ext/avtp/libgstavtp.so to /usr/lib/arm-linux-gnueabihf/gstreamer-1.0`
I've tried a lot of gstreamer plugin stuff with this build and all is OK but I need avtp...\
Any clues, TIA.
Here is the plugins listing:
`pi@cm42:~ $ ls /usr/lib/arm-linux-gnueabihf/gstreamer-1.0
libgstaccurip.so libgstdebugutilsbad.so libgstlegacyrawparse.so libgstsegmentclip.so
libgstadder.so libgstdecklink.so libgstlibvisual.so libgstshm.so
libgstadpcmdec.so libgstdtls.so libgstmidi.so libgstsiren.so
libgstadpcmenc.so libgstdvb.so libgstmpegpsdemux.so libgstsmooth.so
libgstaes.so libgstdvbsubenc.so libgstmpegpsmux.so libgstsndfile.so
libgstaiff.so libgstdvbsuboverlay.so libgstmpegtsdemux.so libgstspeed.so
libgstapp.so libgstdvdspu.so libgstmpegtsmux.so libgstsubenc.so
libgstasfmux.so libgstencoding.so libgstmxf.so libgstsubparse.so
libgstaudiobuffersplit.so libgstfaceoverlay.so libgstnetsim.so libgstswitchbin.so
libgstaudioconvert.so libgstfbdevsink.so libgstnvcodec.so libgsttcp.so
libgstaudiofxbad.so libgstfestival.so libgstogg.so libgsttheora.so
libgstaudiolatency.so libgstfieldanalysis.so libgstopus.so libgsttimecode.so
libgstaudiomixer.so libgstfreeverb.so libgstpbtypes.so libgsttranscode.so
libgstaudiomixmatrix.so libgstfrei0r.so libgstpcapparse.so libgsttypefindfunctions.so
libgstaudiorate.so libgstgaudieffects.so libgstplayback.so libgstvideoconvert.so
libgstaudioresample.so libgstgdp.so libgstpnm.so libgstvideofiltersbad.so
libgstaudiotestsrc.so libgstgeometrictransform.so libgstproxy.so libgstvideoframe_audiolevel.so
libgstaudiovisualizers.so libgstgio.so libgstrawparse.so libgstvideoparsersbad.so
libgstautoconvert.so libgsthls.so libgstremovesilence.so libgstvideorate.so
libgstavtp.so libgstid3tag.so libgstrfbsrc.so libgstvideoscale.so
libgstbayer.so libgstinterlace.so libgstrist.so libgstvideosignal.so
libgstcamerabin.so libgstinter.so libgstrtmp2.so libgstvideotestsrc.so
libgstcdparanoia.so libgstipcpipeline.so libgstrtmp.so libgstvmnc.so
libgstcodecalpha.so libgstivfparse.so libgstrtpmanagerbad.so libgstvoaacenc.so
libgstcoloreffects.so libgstivtc.so libgstrtponvif.so libgstvolume.so
libgstcoreelements.so libgstjp2kdecimator.so libgstsctp.so libgstvorbis.so
libgstcoretracers.so libgstjpegformat.so libgstsdpelem.so libgsty4mdec.so
pi@cm42:~ $
pi@cm42:~ $ gst-inspect-1.0 avtp
No such element or plugin 'avtp'
`