From ddf32e2c49e4169bce2894466a445b4aa91de571 Mon Sep 17 00:00:00 2001 From: George Kiagiadakis Date: Mon, 5 Sep 2011 20:02:57 +0300 Subject: [PATCH] h264parse: Fix IDR position marking when the IDR is split into several NALs --- gst/videoparsers/gsth264parse.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c index d3fbb29..e818e6e 100644 --- a/gst/videoparsers/gsth264parse.c +++ b/gst/videoparsers/gsth264parse.c @@ -496,12 +496,14 @@ gst_h264_parse_process_nal (GstH264Parse * h264parse, GstH264NalUnit * nalu) /* mark where config needs to go if interval expired */ /* mind replacement buffer if applicable */ - if (h264parse->format == GST_H264_PARSE_FORMAT_AVC) - h264parse->idr_pos = gst_adapter_available (h264parse->frame_out); - else - h264parse->idr_pos = nalu->offset - 4; - GST_DEBUG_OBJECT (h264parse, "marking IDR in frame at offset %d", - h264parse->idr_pos); + if (h264parse->idr_pos == -1) { + if (h264parse->format == GST_H264_PARSE_FORMAT_AVC) + h264parse->idr_pos = gst_adapter_available (h264parse->frame_out); + else + h264parse->idr_pos = nalu->offset - 4; + GST_DEBUG_OBJECT (h264parse, "marking IDR in frame at offset %d", + h264parse->idr_pos); + } GST_DEBUG ("first MB: %u, slice type: %u", slice.first_mb_in_slice, slice.type); -- 2.7.4