vlc | branch: master | Francois Cartegnie <[email protected]> | Fri May 4 19:33:51 2018 +0200| [68fcf13842229e17c3db26ed62f457219484ff77] | committer: Francois Cartegnie
demux: ts: typedef timestamps > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=68fcf13842229e17c3db26ed62f457219484ff77 --- modules/demux/mpeg/pes.h | 30 ++++----- modules/demux/mpeg/timestamps.h | 6 +- modules/demux/mpeg/ts.c | 108 ++++++++++++++++---------------- modules/demux/mpeg/ts.h | 2 +- modules/demux/mpeg/ts_arib.c | 1 + modules/demux/mpeg/ts_hotfixes.c | 2 +- modules/demux/mpeg/ts_pid.c | 1 + modules/demux/mpeg/ts_psip.c | 1 + modules/demux/mpeg/ts_scte.c | 2 +- modules/demux/mpeg/ts_streams.c | 2 +- modules/demux/mpeg/ts_streams_private.h | 11 ++-- 11 files changed, 86 insertions(+), 80 deletions(-) diff --git a/modules/demux/mpeg/pes.h b/modules/demux/mpeg/pes.h index b5bc18fdd6..5511afb281 100644 --- a/modules/demux/mpeg/pes.h +++ b/modules/demux/mpeg/pes.h @@ -20,7 +20,7 @@ #ifndef VLC_MPEG_PES_H #define VLC_MPEG_PES_H -static inline bool ExtractPESTimestamp( const uint8_t *p_data, uint8_t i_flags, mtime_t *ret ) +static inline bool ExtractPESTimestamp( const uint8_t *p_data, uint8_t i_flags, int64_t *ret ) { /* !warn broken muxers set incorrect flags. see #17773 and #19140 */ /* check marker bits, and i_flags = b 0010, 0011 or 0001 */ @@ -32,29 +32,29 @@ static inline bool ExtractPESTimestamp( const uint8_t *p_data, uint8_t i_flags, return false; - *ret = ((mtime_t)(p_data[ 0]&0x0e ) << 29)| - (mtime_t)(p_data[1] << 22)| - ((mtime_t)(p_data[2]&0xfe) << 14)| - (mtime_t)(p_data[3] << 7)| - (mtime_t)(p_data[4] >> 1); + *ret = ((int64_t)(p_data[ 0]&0x0e ) << 29)| + (int64_t)(p_data[1] << 22)| + ((int64_t)(p_data[2]&0xfe) << 14)| + (int64_t)(p_data[3] << 7)| + (int64_t)(p_data[4] >> 1); return true; } /* PS SCR timestamp as defined in H222 2.5.3.2 */ -static inline mtime_t ExtractPackHeaderTimestamp( const uint8_t *p_data ) +static inline int64_t ExtractPackHeaderTimestamp( const uint8_t *p_data ) { - return ((mtime_t)(p_data[ 0]&0x38 ) << 27)| - ((mtime_t)(p_data[0]&0x03 ) << 28)| - (mtime_t)(p_data[1] << 20)| - ((mtime_t)(p_data[2]&0xf8 ) << 12)| - ((mtime_t)(p_data[2]&0x03 ) << 13)| - (mtime_t)(p_data[3] << 5) | - (mtime_t)(p_data[4] >> 3); + return ((int64_t)(p_data[ 0]&0x38 ) << 27)| + ((int64_t)(p_data[0]&0x03 ) << 28)| + (int64_t)(p_data[1] << 20)| + ((int64_t)(p_data[2]&0xf8 ) << 12)| + ((int64_t)(p_data[2]&0x03 ) << 13)| + (int64_t)(p_data[3] << 5) | + (int64_t)(p_data[4] >> 3); } inline static int ParsePESHeader( vlc_object_t *p_object, const uint8_t *p_header, size_t i_header, - unsigned *pi_skip, mtime_t *pi_dts, mtime_t *pi_pts, + unsigned *pi_skip, int64_t *pi_dts, int64_t *pi_pts, uint8_t *pi_stream_id, bool *pb_pes_scambling ) { unsigned i_skip; diff --git a/modules/demux/mpeg/timestamps.h b/modules/demux/mpeg/timestamps.h index 57f4fb0802..cf805627df 100644 --- a/modules/demux/mpeg/timestamps.h +++ b/modules/demux/mpeg/timestamps.h @@ -25,9 +25,11 @@ #define FROM_SCALE(x) (VLC_TS_0 + FROM_SCALE_NZ(x)) #define TO_SCALE(x) TO_SCALE_NZ((x) - VLC_TS_0) -static inline int64_t TimeStampWrapAround( int64_t i_first_pcr, int64_t i_time ) +typedef int64_t stime_t; + +static inline stime_t TimeStampWrapAround( stime_t i_first_pcr, stime_t i_time ) { - int64_t i_adjust = 0; + stime_t i_adjust = 0; if( i_first_pcr > 0x0FFFFFFFF && i_time < 0x0FFFFFFFF ) i_adjust = 0x1FFFFFFFF; diff --git a/modules/demux/mpeg/ts.c b/modules/demux/mpeg/ts.c index bd9505bfdf..35a21aa6a7 100644 --- a/modules/demux/mpeg/ts.c +++ b/modules/demux/mpeg/ts.c @@ -178,17 +178,17 @@ static inline int PIDGet( block_t *p ) { return ( (p->p_buffer[1]&0x1f)<<8 )|p->p_buffer[2]; } -static mtime_t GetPCR( const block_t * ); +static stime_t GetPCR( const block_t * ); static block_t * ProcessTSPacket( demux_t *p_demux, ts_pid_t *pid, block_t *p_pkt, int * ); static bool GatherPESData( demux_t *p_demux, ts_pid_t *pid, block_t *p_bk, size_t ); static bool GatherSectionsData( demux_t *p_demux, ts_pid_t *, block_t *, size_t ); -static void ProgramSetPCR( demux_t *p_demux, ts_pmt_t *p_prg, mtime_t i_pcr ); +static void ProgramSetPCR( demux_t *p_demux, ts_pmt_t *p_prg, stime_t i_pcr ); static block_t* ReadTSPacket( demux_t *p_demux ); -static int SeekToTime( demux_t *p_demux, const ts_pmt_t *, int64_t time ); +static int SeekToTime( demux_t *p_demux, const ts_pmt_t *, stime_t time ); static void ReadyQueuesPostSeek( demux_t *p_demux ); -static void PCRHandle( demux_t *p_demux, ts_pid_t *, mtime_t ); +static void PCRHandle( demux_t *p_demux, ts_pid_t *, stime_t ); static void PCRFixHandle( demux_t *, ts_pmt_t *, block_t * ); #define TS_PACKET_SIZE_188 188 @@ -679,8 +679,8 @@ static int Demux( demux_t *p_demux ) } /* Adaptation field cannot be scrambled */ - mtime_t i_pcr = GetPCR( p_pkt ); - if( i_pcr != VLC_TS_INVALID ) + stime_t i_pcr = GetPCR( p_pkt ); + if( i_pcr >= 0 ) PCRHandle( p_demux, p_pid, i_pcr ); /* Probe streams to build PAT/PMT after MIN_PAT_INTERVAL in case we don't see any PAT */ @@ -975,8 +975,8 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) p_pmt->pcr.i_first > -1 && p_pmt->i_last_dts != VLC_TS_INVALID && p_pmt->pcr.i_current > -1 ) { - int64_t i_length = TimeStampWrapAround( p_pmt->pcr.i_first, - p_pmt->i_last_dts ) - p_pmt->pcr.i_first; + stime_t i_length = TimeStampWrapAround( p_pmt->pcr.i_first, + p_pmt->i_last_dts ) - p_pmt->pcr.i_first; i64 = p_pmt->pcr.i_first + (int64_t)(i_length * f); if( i64 <= p_pmt->i_last_dts ) { @@ -1026,7 +1026,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) if( p_pmt && p_pmt->pcr.i_current > -1 && p_pmt->pcr.i_first > -1 ) { - int64_t i_pcr = TimeStampWrapAround( p_pmt->pcr.i_first, p_pmt->pcr.i_current ); + stime_t i_pcr = TimeStampWrapAround( p_pmt->pcr.i_first, p_pmt->pcr.i_current ); *pi64 = FROM_SCALE(i_pcr - p_pmt->pcr.i_first); return VLC_SUCCESS; } @@ -1047,12 +1047,12 @@ static int Control( demux_t *p_demux, int i_query, va_list args ) if( !p_sys->b_ignore_time_for_positions && p_pmt && - ( p_pmt->pcr.i_first > -1 || p_pmt->pcr.i_first_dts != VLC_TS_INVALID ) && + ( p_pmt->pcr.i_first > -1 || p_pmt->pcr.i_first_dts != -1 ) && p_pmt->i_last_dts > 0 ) { - int64_t i_start = (p_pmt->pcr.i_first > -1) ? p_pmt->pcr.i_first : - TO_SCALE(p_pmt->pcr.i_first_dts); - int64_t i_last = TimeStampWrapAround( p_pmt->pcr.i_first, p_pmt->i_last_dts ); + stime_t i_start = (p_pmt->pcr.i_first > -1) ? p_pmt->pcr.i_first : + p_pmt->pcr.i_first_dts; + stime_t i_last = TimeStampWrapAround( p_pmt->pcr.i_first, p_pmt->i_last_dts ); i_last += p_pmt->pcr.i_pcroffset; *pi64 = FROM_SCALE(i_last - i_start); return VLC_SUCCESS; @@ -1354,7 +1354,7 @@ static block_t * ConvertPESBlock( demux_t *p_demux, ts_es_t *p_es, { /* Teletext may have missing PTS (ETSI EN 300 472 Annexe A) * In this case use the last PCR + 40ms */ - mtime_t i_pcr = p_es->p_program->pcr.i_current; + stime_t i_pcr = p_es->p_program->pcr.i_current; if( i_pcr != VLC_TS_INVALID ) p_block->i_pts = FROM_SCALE(i_pcr) + 40000; } @@ -1463,8 +1463,8 @@ static void ParsePESDataChain( demux_t *p_demux, ts_pid_t *pid, block_t *p_pes ) uint8_t header[34]; unsigned i_pes_size = 0; unsigned i_skip = 0; - mtime_t i_dts = -1; - mtime_t i_pts = -1; + stime_t i_dts = -1; + stime_t i_pts = -1; mtime_t i_length = 0; uint8_t i_stream_id; bool b_pes_scrambling = false; @@ -1621,9 +1621,9 @@ static void ParsePESDataChain( demux_t *p_demux, ts_pid_t *pid, block_t *p_pes ) p_pmt->pcr.i_current != VLC_TS_INVALID && (p_es->fmt.i_cat == VIDEO_ES || p_es->fmt.i_cat == AUDIO_ES) ) { - int64_t i_dts27 = TO_SCALE(p_block->i_dts); + stime_t i_dts27 = TO_SCALE(p_block->i_dts); i_dts27 = TimeStampWrapAround( p_pmt->pcr.i_first, i_dts27 ); - int64_t i_pcr = TimeStampWrapAround( p_pmt->pcr.i_first, p_pmt->pcr.i_current ); + stime_t i_pcr = TimeStampWrapAround( p_pmt->pcr.i_first, p_pmt->pcr.i_current ); if( i_dts27 < i_pcr ) { p_pmt->pcr.i_pcroffset = i_pcr - i_dts27 + 80000; @@ -1798,11 +1798,11 @@ static block_t* ReadTSPacket( demux_t *p_demux ) return p_pkt; } -static mtime_t GetPCR( const block_t *p_pkt ) +static stime_t GetPCR( const block_t *p_pkt ) { const uint8_t *p = p_pkt->p_buffer; - mtime_t i_pcr = -1; + stime_t i_pcr = -1; if( likely(p_pkt->i_buffer > 11) && ( p[3]&0x20 ) && /* adaptation */ @@ -1810,11 +1810,11 @@ static mtime_t GetPCR( const block_t *p_pkt ) ( p[4] >= 7 ) ) { /* PCR is 33 bits */ - i_pcr = ( (mtime_t)p[6] << 25 ) | - ( (mtime_t)p[7] << 17 ) | - ( (mtime_t)p[8] << 9 ) | - ( (mtime_t)p[9] << 1 ) | - ( (mtime_t)p[10] >> 7 ); + i_pcr = ( (stime_t)p[6] << 25 ) | + ( (stime_t)p[7] << 17 ) | + ( (stime_t)p[8] << 9 ) | + ( (stime_t)p[9] << 1 ) | + ( (stime_t)p[10] >> 7 ); } return i_pcr; } @@ -1898,7 +1898,7 @@ static void ReadyQueuesPostSeek( demux_t *p_demux ) } } -static int SeekToTime( demux_t *p_demux, const ts_pmt_t *p_pmt, int64_t i_scaledtime ) +static int SeekToTime( demux_t *p_demux, const ts_pmt_t *p_pmt, stime_t i_scaledtime ) { demux_sys_t *p_sys = p_demux->p_sys; @@ -1932,7 +1932,7 @@ static int SeekToTime( demux_t *p_demux, const ts_pmt_t *p_pmt, int64_t i_scaled uint64_t i_pos = i_splitpos; while( i_pos < i_tail_pos ) { - int64_t i_pcr = -1; + stime_t i_pcr = -1; block_t *p_pkt = ReadTSPacket( p_demux ); if( !p_pkt ) { @@ -1963,8 +1963,8 @@ static int SeekToTime( demux_t *p_demux, const ts_pmt_t *p_pmt, int64_t i_scaled if( i_pcr == -1 ) { - mtime_t i_dts = -1; - mtime_t i_pts = -1; + stime_t i_dts = -1; + stime_t i_pts = -1; uint8_t i_stream_id; if ( VLC_SUCCESS == ParsePESHeader( VLC_OBJECT(p_demux), &p_pkt->p_buffer[i_skip], p_pkt->i_buffer - i_skip, &i_skip, @@ -1979,7 +1979,7 @@ static int SeekToTime( demux_t *p_demux, const ts_pmt_t *p_pmt, int64_t i_scaled if( i_pcr != -1 ) { - int64_t i_diff = i_scaledtime - TimeStampWrapAround( p_pmt->pcr.i_first, i_pcr ); + stime_t i_diff = i_scaledtime - TimeStampWrapAround( p_pmt->pcr.i_first, i_pcr ); if ( i_diff < 0 ) i_tail_pos = (i_splitpos >= p_sys->i_packet_size) ? i_splitpos - p_sys->i_packet_size : 0; else if( i_diff < TO_SCALE(VLC_TS_0 + CLOCK_FREQ / 2) ) // 500ms @@ -2003,7 +2003,7 @@ static int SeekToTime( demux_t *p_demux, const ts_pmt_t *p_pmt, int64_t i_scaled return VLC_SUCCESS; } -static int ProbeChunk( demux_t *p_demux, int i_program, bool b_end, int64_t *pi_pcr, bool *pb_found ) +static int ProbeChunk( demux_t *p_demux, int i_program, bool b_end, stime_t *pi_pcr, bool *pb_found ) { demux_sys_t *p_sys = p_demux->p_sys; int i_count = 0; @@ -2046,8 +2046,8 @@ static int ProbeChunk( demux_t *p_demux, int i_program, bool b_end, int64_t *pi_ ) { b_pcrresult = false; - mtime_t i_dts = -1; - mtime_t i_pts = -1; + stime_t i_dts = -1; + stime_t i_pts = -1; uint8_t i_stream_id; unsigned i_skip = 4; if ( b_adaptfield ) // adaptation field @@ -2085,9 +2085,9 @@ static int ProbeChunk( demux_t *p_demux, int i_program, bool b_end, int64_t *pi_ { p_pmt->pcr.i_first = *pi_pcr; } - else if( p_pmt->pcr.i_first_dts < VLC_TS_0 ) + else if( p_pmt->pcr.i_first_dts == -1 ) { - p_pmt->pcr.i_first_dts = FROM_SCALE(*pi_pcr); + p_pmt->pcr.i_first_dts = *pi_pcr; } if( i_program == 0 || i_program == p_pmt->i_number ) @@ -2111,7 +2111,7 @@ int ProbeStart( demux_t *p_demux, int i_program ) int i_probe_count = 0; int64_t i_pos; - mtime_t i_pcr = -1; + stime_t i_pcr = -1; bool b_found = false; do @@ -2143,7 +2143,7 @@ int ProbeEnd( demux_t *p_demux, int i_program ) int i_probe_count = PROBE_CHUNK_COUNT; int64_t i_pos; - mtime_t i_pcr = -1; + stime_t i_pcr = -1; bool b_found = false; do @@ -2167,7 +2167,7 @@ int ProbeEnd( demux_t *p_demux, int i_program ) return (b_found) ? VLC_SUCCESS : VLC_EGENERIC; } -static void ProgramSetPCR( demux_t *p_demux, ts_pmt_t *p_pmt, mtime_t i_pcr ) +static void ProgramSetPCR( demux_t *p_demux, ts_pmt_t *p_pmt, stime_t i_pcr ) { demux_sys_t *p_sys = p_demux->p_sys; @@ -2175,7 +2175,7 @@ static void ProgramSetPCR( demux_t *p_demux, ts_pmt_t *p_pmt, mtime_t i_pcr ) PCR barrier, and then adapt pcr so they have valid PCR when dequeuing */ if( p_pmt->pcr.i_current == -1 && p_pmt->pcr.b_fix_done ) { - mtime_t i_mindts = -1; + mtime_t i_mindts = VLC_TS_INVALID; ts_pat_t *p_pat = GetPID(p_sys, 0)->u.p_pat; for( int i=0; i< p_pat->programs.i_size; i++ ) @@ -2188,7 +2188,7 @@ static void ProgramSetPCR( demux_t *p_demux, ts_pmt_t *p_pmt, mtime_t i_pcr ) while( p_block && p_block->i_dts == VLC_TS_INVALID ) p_block = p_block->p_next; - if( p_block && ( i_mindts == -1 || p_block->i_dts < i_mindts ) ) + if( p_block && ( i_mindts == VLC_TS_INVALID || p_block->i_dts < i_mindts ) ) i_mindts = p_block->i_dts; } } @@ -2247,7 +2247,7 @@ static int IsVideoEnd( ts_pid_t *p_pid ) ( tail[ i_tail - 1 ] == 0xb7 || tail[ i_tail - 1 ] == 0x0a ) ); } -static void PCRCheckDTS( demux_t *p_demux, ts_pmt_t *p_pmt, mtime_t i_pcr) +static void PCRCheckDTS( demux_t *p_demux, ts_pmt_t *p_pmt, stime_t i_pcr) { for( int i=0; i<p_pmt->e_streams.i_size; i++ ) { @@ -2277,8 +2277,8 @@ static void PCRCheckDTS( demux_t *p_demux, ts_pmt_t *p_pmt, mtime_t i_pcr) continue; unsigned i_skip = 0; - mtime_t i_dts = -1; - mtime_t i_pts = -1; + stime_t i_dts = -1; + stime_t i_pts = -1; uint8_t i_stream_id; if( ParsePESHeader( VLC_OBJECT(p_demux), (uint8_t*)&header, i_max, &i_skip, @@ -2286,31 +2286,31 @@ static void PCRCheckDTS( demux_t *p_demux, ts_pmt_t *p_pmt, mtime_t i_pcr) continue; if (p_pmt->pcr.i_pcroffset > 0) { - if( i_dts != VLC_TS_INVALID ) + if( i_dts != -1 ) i_dts += p_pmt->pcr.i_pcroffset; - if( i_pts != VLC_TS_INVALID ) + if( i_pts != -1 ) i_pts += p_pmt->pcr.i_pcroffset; } - if( i_dts != VLC_TS_INVALID ) + if( i_dts != -1 ) i_dts = TimeStampWrapAround( i_pcr, i_dts ); - if( i_pts != VLC_TS_INVALID ) + if( i_pts != -1 ) i_pts = TimeStampWrapAround( i_pcr, i_pts ); - if(( i_dts != VLC_TS_INVALID && i_dts <= i_pcr ) || - ( i_pts != VLC_TS_INVALID && i_pts <= i_pcr )) + if(( i_dts != -1 && i_dts <= i_pcr ) || + ( i_pts != -1 && i_pts <= i_pcr )) { if( IsVideoEnd( p_pid ) ) { msg_Warn( p_demux, "send queued data for pid %d: TS %"PRId64" <= PCR %"PRId64"\n", - p_pid->i_pid, i_dts != VLC_TS_INVALID ? i_dts : i_pts, i_pcr); + p_pid->i_pid, i_dts != -1 ? i_dts : i_pts, i_pcr); PushPESBlock( p_demux, p_pid, NULL, true ); /* Flush */ } } } } -static void PCRHandle( demux_t *p_demux, ts_pid_t *pid, mtime_t i_pcr ) +static void PCRHandle( demux_t *p_demux, ts_pid_t *pid, stime_t i_pcr ) { demux_sys_t *p_sys = p_demux->p_sys; @@ -2329,7 +2329,7 @@ static void PCRHandle( demux_t *p_demux, ts_pid_t *pid, mtime_t i_pcr ) ts_pmt_t *p_pmt = p_pat->programs.p_elems[i]->u.p_pmt; if( p_pmt->pcr.b_disable ) continue; - mtime_t i_program_pcr = TimeStampWrapAround( p_pmt->pcr.i_first, i_pcr ); + stime_t i_program_pcr = TimeStampWrapAround( p_pmt->pcr.i_first, i_pcr ); if( p_pmt->i_pid_pcr == 0x1FFF ) /* That program has no dedicated PCR pid ISO/IEC 13818-1 2.4.4.9 */ { @@ -2403,9 +2403,9 @@ static void PCRFixHandle( demux_t *p_demux, ts_pmt_t *p_pmt, block_t *p_block ) /* Record the first data packet timestamp in case there wont be any PCR */ else if( !p_pmt->pcr.i_first_dts ) { - p_pmt->pcr.i_first_dts = p_block->i_dts; + p_pmt->pcr.i_first_dts = TO_SCALE(p_block->i_dts); } - else if( p_block->i_dts - p_pmt->pcr.i_first_dts > CLOCK_FREQ / 2 ) /* "PCR repeat rate shall not exceed 100ms" */ + else if( p_block->i_dts - FROM_SCALE(p_pmt->pcr.i_first_dts) > CLOCK_FREQ / 2 ) /* "PCR repeat rate shall not exceed 100ms" */ { if( p_pmt->pcr.i_current < 0 && GetPID( p_sys, p_pmt->i_pid_pcr )->probed.i_pcr_count == 0 ) diff --git a/modules/demux/mpeg/ts.h b/modules/demux/mpeg/ts.h index 389bf465e3..a867db5686 100644 --- a/modules/demux/mpeg/ts.h +++ b/modules/demux/mpeg/ts.h @@ -122,7 +122,7 @@ struct demux_sys_t struct { - mtime_t i_first_dts; /* first dts encountered for the stream */ + stime_t i_first_dts; /* first dts encountered for the stream */ int i_timesourcepid; /* which pid we saved the dts from */ enum { PAT_WAITING = 0, PAT_MISSING, PAT_FIXTRIED } status; /* set if we haven't seen PAT within MIN_PAT_INTERVAL */ } patfix; diff --git a/modules/demux/mpeg/ts_arib.c b/modules/demux/mpeg/ts_arib.c index 432c31a6d0..afd0798f81 100644 --- a/modules/demux/mpeg/ts_arib.c +++ b/modules/demux/mpeg/ts_arib.c @@ -23,6 +23,7 @@ #include <vlc_common.h> #include <vlc_demux.h> +#include "timestamps.h" #include "ts_pid.h" #include "ts.h" diff --git a/modules/demux/mpeg/ts_hotfixes.c b/modules/demux/mpeg/ts_hotfixes.c index 206537470f..15d7cb15d8 100644 --- a/modules/demux/mpeg/ts_hotfixes.c +++ b/modules/demux/mpeg/ts_hotfixes.c @@ -82,7 +82,7 @@ void ProbePES( demux_t *p_demux, ts_pid_t *pid, const uint8_t *p_pesstart, size_ return; size_t i_pesextoffset = 8; - mtime_t i_dts = -1; + stime_t i_dts = -1; if( p_pes[7] & 0x80 ) // PTS { i_pesextoffset += 5; diff --git a/modules/demux/mpeg/ts_pid.c b/modules/demux/mpeg/ts_pid.c index df12dcae97..326a5d5790 100644 --- a/modules/demux/mpeg/ts_pid.c +++ b/modules/demux/mpeg/ts_pid.c @@ -25,6 +25,7 @@ #include "ts_pid.h" #include "ts_streams.h" +#include "timestamps.h" #include "ts.h" diff --git a/modules/demux/mpeg/ts_psip.c b/modules/demux/mpeg/ts_psip.c index 057a64eac3..a41e6bc13a 100644 --- a/modules/demux/mpeg/ts_psip.c +++ b/modules/demux/mpeg/ts_psip.c @@ -43,6 +43,7 @@ #include "ts_decoders.h" #include "ts_psip_dvbpsi_fixes.h" +#include "timestamps.h" #include "ts_pid.h" #include "ts.h" #include "ts_streams_private.h" diff --git a/modules/demux/mpeg/ts_scte.c b/modules/demux/mpeg/ts_scte.c index 1ea0b569a1..ed854bde5c 100644 --- a/modules/demux/mpeg/ts_scte.c +++ b/modules/demux/mpeg/ts_scte.c @@ -61,7 +61,7 @@ void SCTE18_Section_Callback( dvbpsi_t *p_handle, const dvbpsi_psi_section_t* p_ continue; const ts_pmt_t *p_pmt = p_es->p_program; - const mtime_t i_date = TimeStampWrapAround( p_pmt->pcr.i_first, p_pmt->pcr.i_current ); + const stime_t i_date = TimeStampWrapAround( p_pmt->pcr.i_first, p_pmt->pcr.i_current ); block_t *p_block = block_Alloc( p_section->p_payload_end - p_section->p_payload_start ); memcpy( p_block->p_buffer, p_section->p_payload_start, i_payload ); p_block->i_dts = p_block->i_pts = FROM_SCALE( i_date ); diff --git a/modules/demux/mpeg/ts_streams.c b/modules/demux/mpeg/ts_streams.c index f3ff180240..755a451d4a 100644 --- a/modules/demux/mpeg/ts_streams.c +++ b/modules/demux/mpeg/ts_streams.c @@ -131,7 +131,7 @@ ts_pmt_t *ts_pmt_New( demux_t *p_demux ) pmt->pcr.i_current = -1; pmt->pcr.i_first = -1; pmt->pcr.b_disable = false; - pmt->pcr.i_first_dts = VLC_TS_INVALID; + pmt->pcr.i_first_dts = -1; pmt->pcr.i_pcroffset = -1; pmt->pcr.b_fix_done = false; diff --git a/modules/demux/mpeg/ts_streams_private.h b/modules/demux/mpeg/ts_streams_private.h index 478ffb4057..0b02911123 100644 --- a/modules/demux/mpeg/ts_streams_private.h +++ b/modules/demux/mpeg/ts_streams_private.h @@ -23,6 +23,7 @@ typedef struct dvbpsi_s dvbpsi_t; typedef struct ts_sections_processor_t ts_sections_processor_t; #include "mpeg4_iod.h" +#include "timestamps.h" #include <vlc_common.h> #include <vlc_es.h> @@ -57,11 +58,11 @@ struct ts_pmt_t struct { - mtime_t i_current; - mtime_t i_first; // seen <> != -1 + stime_t i_current; + stime_t i_first; // seen <> != -1 /* broken PCR handling */ - mtime_t i_first_dts; - mtime_t i_pcroffset; + stime_t i_first_dts; + stime_t i_pcroffset; bool b_disable; /* ignore PCR field, use dts */ bool b_fix_done; } pcr; @@ -72,7 +73,7 @@ struct ts_pmt_t time_t i_event_length; } eit; - mtime_t i_last_dts; + stime_t i_last_dts; uint64_t i_last_dts_byte; /* ARIB specific */ _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
