From c08afccd5658381ed9f4cf9568f1a5e35d3f0848 Mon Sep 17 00:00:00 2001 From: Miguel Freitas Date: Tue, 19 Aug 2003 12:43:46 +0000 Subject: Laurent Aimar mpeg demuxer fixes CVS patchset: 5296 CVS date: 2003/08/19 12:43:46 --- src/demuxers/demux_mpeg.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/demuxers/demux_mpeg.c b/src/demuxers/demux_mpeg.c index ad9bf5ca1..3600e96ff 100644 --- a/src/demuxers/demux_mpeg.c +++ b/src/demuxers/demux_mpeg.c @@ -19,7 +19,7 @@ */ /* - * $Id: demux_mpeg.c,v 1.122 2003/07/25 21:02:05 miguelfreitas Exp $ + * $Id: demux_mpeg.c,v 1.123 2003/08/19 12:43:46 miguelfreitas Exp $ * * demultiplexer for mpeg 1/2 program streams * reads streams of variable blocksizes @@ -667,7 +667,7 @@ static uint32_t parse_pack(demux_mpeg_t *this) { buf = read_bytes (this, 1); - if ((buf>>4) == 4) { + if ((buf>>6) == 0x01) { int stuffing, i; @@ -675,8 +675,8 @@ static uint32_t parse_pack(demux_mpeg_t *this) { /* system_clock_reference */ - scr = (buf & 0x08) << 27; - scr = (buf & 0x03) << 28; + scr = (buf & 0x38) << 27; + scr |= (buf & 0x03) << 28; buf = read_bytes (this, 1); scr |= buf << 20; buf = read_bytes (this, 1); @@ -777,7 +777,7 @@ static uint32_t parse_pack_preview (demux_mpeg_t *this, int *num_buffers) { /* system_clock_reference */ buf = read_bytes (this, 1); - if ((buf>>4) == 4) { + if ((buf>>6) == 0x01) { buf = read_bytes(this, 1); mpeg_version = 2; } else { @@ -809,6 +809,18 @@ static uint32_t parse_pack_preview (demux_mpeg_t *this, int *num_buffers) { } else buf = read_bytes (this, 3) ; + if( mpeg_version == 2 ) + { + int i, stuffing; + + buf = read_bytes(this,1); + + /* stuffing bytes */ + stuffing = buf &0x03; + for (i=0; i