mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-26 02:00:33 +00:00
rtpvp8depay: If configured to wait for keyframes after packet loss, also do that if incomplete frames are detected
This can happen if the data inside the packets is incomplete without the seqnums being discontinuous because of ULPFEC being used. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2988>
This commit is contained in:
parent
4414271a02
commit
186d8bd789
1 changed files with 15 additions and 0 deletions
|
@ -354,6 +354,13 @@ gst_rtp_vp8_depay_process (GstRTPBaseDepayload * depay, GstRTPBuffer * rtp)
|
|||
gst_adapter_clear (self->adapter);
|
||||
self->started = FALSE;
|
||||
|
||||
if (self->wait_for_keyframe)
|
||||
self->waiting_for_keyframe = TRUE;
|
||||
if (self->request_keyframe)
|
||||
gst_pad_push_event (GST_RTP_BASE_DEPAYLOAD_SINKPAD (depay),
|
||||
gst_video_event_new_upstream_force_key_unit (GST_CLOCK_TIME_NONE,
|
||||
TRUE, 0));
|
||||
|
||||
send_new_lost_event (self, GST_BUFFER_PTS (rtp->buffer), picture_id,
|
||||
"Incomplete frame detected");
|
||||
sent_lost_event = TRUE;
|
||||
|
@ -368,6 +375,14 @@ gst_rtp_vp8_depay_process (GstRTPBaseDepayload * depay, GstRTPBuffer * rtp)
|
|||
send_last_lost_event (self);
|
||||
self->stop_lost_events = FALSE;
|
||||
}
|
||||
|
||||
if (self->wait_for_keyframe)
|
||||
self->waiting_for_keyframe = TRUE;
|
||||
if (self->request_keyframe)
|
||||
gst_pad_push_event (GST_RTP_BASE_DEPAYLOAD_SINKPAD (depay),
|
||||
gst_video_event_new_upstream_force_key_unit (GST_CLOCK_TIME_NONE,
|
||||
TRUE, 0));
|
||||
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue