mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-28 04:31:06 +00:00
find_codec_preferences: use received caps
When negotiation is triggered by receiving caps on our sink pad probes, we could encounter a race condition where need-negotiation is emitted and the application requires the creation of an offer before the current caps were actually updated. This led to retrieving incomplete caps when creating the offer, using find_codec_preferences -> pad_get_current_caps. Instead, as we save the caps in the probe callback anyway, it is better and thread safe to use these if they were set. https://bugzilla.gnome.org/show_bug.cgi?id=796801
This commit is contained in:
parent
e47cf9abe1
commit
6fd3e2a400
1 changed files with 5 additions and 2 deletions
|
@ -1259,8 +1259,11 @@ _find_codec_preferences (GstWebRTCBin * webrtc, GstWebRTCRTPTransceiver * trans,
|
|||
} else {
|
||||
GstWebRTCBinPad *pad = _find_pad_for_mline (webrtc, direction, media_idx);
|
||||
if (pad) {
|
||||
GstCaps *caps = gst_pad_get_current_caps (GST_PAD (pad));
|
||||
if (caps) {
|
||||
GstCaps *caps = NULL;
|
||||
|
||||
if (pad->received_caps) {
|
||||
caps = gst_caps_ref (pad->received_caps);
|
||||
} else if ((caps = gst_pad_get_current_caps (GST_PAD (pad)))) {
|
||||
GST_LOG_OBJECT (webrtc, "Using current pad caps: %" GST_PTR_FORMAT,
|
||||
caps);
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue