Commit f223ef75 authored by Christophe Massiot's avatar Christophe Massiot
Browse files

Fixed MPEG-1 mux_rate parsing.

Fixed MPEG-1 stuffing.
parent da6730d5
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* mpeg_system.c: TS, PS and PES management * mpeg_system.c: TS, PS and PES management
***************************************************************************** *****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN * Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: mpeg_system.c,v 1.40 2001/03/02 13:20:29 massiot Exp $ * $Id: mpeg_system.c,v 1.41 2001/03/05 16:00:30 massiot Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* Michel Lespinasse <walken@via.ecp.fr> * Michel Lespinasse <walken@via.ecp.fr>
...@@ -258,7 +258,7 @@ void input_ParsePES( input_thread_t * p_input, es_descriptor_t * p_es ) ...@@ -258,7 +258,7 @@ void input_ParsePES( input_thread_t * p_input, es_descriptor_t * p_es )
/* Cannot fail because the previous one succeeded. */ /* Cannot fail because the previous one succeeded. */
MoveChunk( NULL, &p_data, &p_byte, 6 ); MoveChunk( NULL, &p_data, &p_byte, 6 );
while( *p_byte == 0xFF && i_pes_header_size < 22 ) while( *p_byte == 0xFF && i_pes_header_size < 23 )
{ {
i_pes_header_size++; i_pes_header_size++;
if( MoveChunk( NULL, &p_data, &p_byte, 1 ) != 1 ) if( MoveChunk( NULL, &p_data, &p_byte, 1 ) != 1 )
...@@ -270,7 +270,7 @@ void input_ParsePES( input_thread_t * p_input, es_descriptor_t * p_es ) ...@@ -270,7 +270,7 @@ void input_ParsePES( input_thread_t * p_input, es_descriptor_t * p_es )
return; return;
} }
} }
if( i_pes_header_size == 22 ) if( i_pes_header_size == 23 )
{ {
intf_ErrMsg( "Too much MPEG-1 stuffing" ); intf_ErrMsg( "Too much MPEG-1 stuffing" );
p_input->pf_delete_pes( p_input->p_method_data, p_pes ); p_input->pf_delete_pes( p_input->p_method_data, p_pes );
...@@ -818,9 +818,8 @@ void input_DemuxPS( input_thread_t * p_input, data_packet_t * p_data ) ...@@ -818,9 +818,8 @@ void input_DemuxPS( input_thread_t * p_input, data_packet_t * p_data )
>> 11); >> 11);
/* mux_rate */ /* mux_rate */
i_mux_rate = (( ((u32)U16_AT(p_header + 10) << 16) i_mux_rate = ((u32)U16_AT(p_header + 10) << 6)
| (u32)U16_AT(p_header + 12) ) & 0xFFFFFC00) | (p_header[12] >> 2);
>> 11;
} }
else else
{ {
...@@ -842,7 +841,7 @@ void input_DemuxPS( input_thread_t * p_input, data_packet_t * p_data ) ...@@ -842,7 +841,7 @@ void input_DemuxPS( input_thread_t * p_input, data_packet_t * p_data )
((mtime_t)p_header[8] >> 1); ((mtime_t)p_header[8] >> 1);
/* mux_rate */ /* mux_rate */
i_mux_rate = (U32_AT(p_header + 8) & 0x8FFFFE) >> 11; i_mux_rate = (U32_AT(p_header + 8) & 0x7FFFFE) >> 1;
} }
/* Call the pace control. */ /* Call the pace control. */
input_ClockManageRef( p_input, p_input->stream.pp_programs[0], input_ClockManageRef( p_input, p_input->stream.pp_programs[0],
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment