summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/demuxers/demux_mpeg.c22
1 files 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<stuffing; i++)
+ read_bytes (this, 1);
+ }
+
/* system header */
buf = read_bytes (this, 4) ;