From 6a9c70486ff3f1d3771105b2fccedb912e78f6fe Mon Sep 17 00:00:00 2001 From: Mark Nauwelaerts Date: Wed, 16 Jun 2010 15:52:57 +0200 Subject: [PATCH] rtph264depay: tweak DELTA_UNIT labeling Consider SPS, PPS and IDR as keyframe, all others as DELTA_UNIT. See #620154. --- gst/rtp/gstrtph264depay.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/gst/rtp/gstrtph264depay.c b/gst/rtp/gstrtph264depay.c index 8bc93fa1b3..e09eee5b4b 100644 --- a/gst/rtp/gstrtph264depay.c +++ b/gst/rtp/gstrtph264depay.c @@ -412,14 +412,13 @@ gst_rtp_h264_depay_mark_delta (GstRtpH264Depay * rtph264depay, GstBuffer * nal) nal_unit_type = (GST_BUFFER_DATA (nal))[4] & 0x1f; GST_DEBUG_OBJECT (rtph264depay, "type %d", nal_unit_type); - /* non-IDR VCL layer NAL considered DELTA, also AU and SEI; + /* SPS/PPS/IDR considered key, all others DELTA; * so downstream waiting for keyframe can pick up at SPS/PPS/IDR */ - if ((nal_unit_type >= 1 && nal_unit_type <= 4) || - (nal_unit_type == 6) || (nal_unit_type == 9)) { + if ((nal_unit_type == 5) || (nal_unit_type == 7) || (nal_unit_type == 8)) { + GST_BUFFER_FLAG_UNSET (nal, GST_BUFFER_FLAG_DELTA_UNIT); + } else { GST_BUFFER_FLAG_SET (nal, GST_BUFFER_FLAG_DELTA_UNIT); res = TRUE; - } else { - GST_BUFFER_FLAG_UNSET (nal, GST_BUFFER_FLAG_DELTA_UNIT); } return res;