mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 11:41:09 +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/2947>
This commit is contained in:
parent
ad6ba10ae3
commit
cbc6761199
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