| From 11cf797e31a671e0ef4a5ca7c1a0205c15ea9456 Mon Sep 17 00:00:00 2001 |
| From: Qian Hu <Qian.Hu@mediatek.com> |
| Date: Sun, 1 Dec 2019 11:06:20 +0800 |
| Subject: [PATCH] add judge for mpeg4 codec in mpeg container |
| |
| Signed-off-by: Qian Hu <Qian.Hu@mediatek.com> |
| --- |
| gst/mpegdemux/gstmpegdemux.c | 24 +++++++++++++++++++++--- |
| 1 file changed, 21 insertions(+), 3 deletions(-) |
| |
| diff --git a/gst/mpegdemux/gstmpegdemux.c b/gst/mpegdemux/gstmpegdemux.c |
| index 4454149..0c684b5 100644 |
| --- a/gst/mpegdemux/gstmpegdemux.c |
| +++ b/gst/mpegdemux/gstmpegdemux.c |
| @@ -2255,6 +2255,23 @@ gst_ps_demux_data_cb (GstPESFilter * filter, gboolean first, |
| } |
| if (stream_type == -1) |
| goto unknown_stream_type; |
| + } else if (stream_type == ST_GST_VIDEO_MPEG1_OR_2) { |
| + if (datalen >= 4) { |
| + if (!memcmp("\x00\x00\x01\xB0", map.data, 4)) { |
| + stream_type = ST_VIDEO_MPEG4; |
| + } |
| + } |
| + if (datalen >= 5) { |
| + if (!memcmp("\x00\x00\x01\x00\x00", map.data, 5)) { |
| + stream_type = ST_VIDEO_MPEG4; |
| + } |
| + } |
| + } else if (stream_type == ST_AUDIO_MPEG1) { |
| + if (datalen >= 4) { |
| + if (!memcmp("\xFF\xF1\x50\x80", map.data, 4)) { |
| + stream_type = ST_AUDIO_AAC_ADTS; |
| + } |
| + } |
| } |
| if (filter->pts != -1) { |
| demux->next_pts = filter->pts + demux->scr_adjust; |
| @@ -2858,9 +2875,10 @@ gst_ps_demux_loop (GstPad * pad) |
| offset += size; |
| gst_segment_set_position (&demux->sink_segment, GST_FORMAT_BYTES, offset); |
| /* check EOS condition */ |
| - if ((demux->sink_segment.position >= demux->sink_segment.stop) || |
| - (demux->src_segment.stop != (guint64) - 1 && |
| - demux->src_segment.position >= demux->src_segment.stop)) { |
| + if ((demux->src_segment.flags & GST_SEEK_FLAG_SEGMENT) && |
| + ((demux->sink_segment.position >= demux->sink_segment.stop) || |
| + (demux->src_segment.stop != (guint64) - 1 && |
| + demux->src_segment.position >= demux->src_segment.stop))) { |
| GST_DEBUG_OBJECT (demux, |
| "forward mode using segment reached end of " "segment pos %" |
| GST_TIME_FORMAT " stop %" GST_TIME_FORMAT " pos in bytes %" |
| -- |
| 2.6.4 |
| |