X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fdemux%2Fty.c;h=a0c826af095fde2f763e81cd198018648a5f2b4a;hb=1cfd777352fa66c3d2ce317c4b26c844f73cc022;hp=0c93a351e891dd84bbd3c1536174afa9372ce380;hpb=78d87996ccb92d1dc91c9987685f976ed3be08a6;p=vlc diff --git a/modules/demux/ty.c b/modules/demux/ty.c index 0c93a351e8..a0c826af09 100644 --- a/modules/demux/ty.c +++ b/modules/demux/ty.c @@ -42,9 +42,9 @@ #include #include #include -#include "vlc_codec.h" -#include "vlc_meta.h" -#include "vlc_input.h" +#include +#include +#include #include "../codec/cc.h" #include @@ -66,8 +66,7 @@ vlc_module_begin () * Something must be wrong. */ set_callbacks( Open, Close ) - add_shortcut("ty") - add_shortcut("tivo") + add_shortcut("ty", "tivo") vlc_module_end () /***************************************************************************** @@ -331,6 +330,8 @@ static int Open(vlc_object_t *p_this) p_sys->b_first_chunk = true; p_sys->b_have_master = (U32_AT(p_peek) == TIVO_PES_FILEID); p_sys->firstAudioPTS = -1; + p_sys->lastAudioPTS = VLC_TS_INVALID; + p_sys->lastVideoPTS = VLC_TS_INVALID; p_sys->i_stream_size = stream_Size(p_demux->s); p_sys->tivo_type = TIVO_TYPE_UNKNOWN; p_sys->audio_type = TIVO_AUDIO_UNKNOWN; @@ -441,7 +442,7 @@ static int Demux( demux_t *p_demux ) /* set these as 'unknown' for now */ p_block_in->i_pts = - p_block_in->i_dts = 0; + p_block_in->i_dts = VLC_TS_INVALID; } /*else { @@ -607,7 +608,7 @@ static int check_sync_pes( demux_t *p_demux, block_t *p_block, if( offset < 0 ) { /* no header found, fake some 00's (this works, believe me) */ - memset( p_sys->pes_buffer, 4, 0 ); + memset( p_sys->pes_buffer, 0, 4 ); p_sys->i_pes_buf_cnt = 4; if( rec_len > 4 ) msg_Err( p_demux, "PES header not found in record of %d bytes!", @@ -628,8 +629,8 @@ static int check_sync_pes( demux_t *p_demux, block_t *p_block, return -1; /* partial PES, no audio data */ } /* full PES header present, extract PTS */ - p_sys->lastAudioPTS = get_pts( &p_block->p_buffer[ offset + - p_sys->i_Pts_Offset ] ); + p_sys->lastAudioPTS = VLC_TS_0 + get_pts( &p_block->p_buffer[ offset + + p_sys->i_Pts_Offset ] ); if (p_sys->firstAudioPTS < 0) p_sys->firstAudioPTS = p_sys->lastAudioPTS; p_block->i_pts = p_sys->lastAudioPTS; @@ -691,7 +692,7 @@ static int DemuxRecVideo( demux_t *p_demux, ty_rec_hdr_t *rec_hdr, block_t *p_bl { //msg_Dbg(p_demux, "Video PES hdr in pkt type 0x%02x at offset %d", //subrec_type, esOffset1); - p_sys->lastVideoPTS = get_pts( + p_sys->lastVideoPTS = VLC_TS_0 + get_pts( &p_block_in->p_buffer[ esOffset1 + VIDEO_PTS_OFFSET ] ); /*msg_Dbg(p_demux, "Video rec %d PTS %"PRId64, p_sys->i_cur_rec, p_sys->lastVideoPTS );*/ @@ -748,13 +749,13 @@ static int DemuxRecVideo( demux_t *p_demux, ty_rec_hdr_t *rec_hdr, block_t *p_bl //p_sys->l_last_ty_pts += 33366667; } /* set PTS for this block before we send */ - if (p_sys->lastVideoPTS > 0) + if (p_sys->lastVideoPTS > VLC_TS_INVALID) { p_block_in->i_pts = p_sys->lastVideoPTS; /* PTS gets used ONCE. * Any subsequent frames we get BEFORE next PES * header will have their PTS computed in the codec */ - p_sys->lastVideoPTS = 0; + p_sys->lastVideoPTS = VLC_TS_INVALID; } } @@ -787,7 +788,7 @@ static int DemuxRecVideo( demux_t *p_demux, ty_rec_hdr_t *rec_hdr, block_t *p_bl } /* Send the CC data */ - if( p_block_in->i_pts > 0 && p_sys->cc.i_data > 0 ) + if( p_block_in->i_pts > VLC_TS_INVALID && p_sys->cc.i_data > 0 ) { for( i = 0; i < 4; i++ ) { @@ -871,7 +872,7 @@ static int DemuxRecAudio( demux_t *p_demux, ty_rec_hdr_t *rec_hdr, block_t *p_bl } else { - p_sys->lastAudioPTS = get_pts( + p_sys->lastAudioPTS = VLC_TS_0 + get_pts( &p_sys->pes_buffer[ esOffset1 + p_sys->i_Pts_Offset ] ); p_block_in->i_pts = p_sys->lastAudioPTS; } @@ -910,7 +911,7 @@ static int DemuxRecAudio( demux_t *p_demux, ty_rec_hdr_t *rec_hdr, block_t *p_bl /* ================================================ */ if ( ( esOffset1 == 0 ) && ( l_rec_size == 16 ) ) { - p_sys->lastAudioPTS = get_pts( &p_block_in->p_buffer[ + p_sys->lastAudioPTS = VLC_TS_0 + get_pts( &p_block_in->p_buffer[ SA_PTS_OFFSET ] ); if (p_sys->firstAudioPTS < 0) p_sys->firstAudioPTS = p_sys->lastAudioPTS; @@ -953,7 +954,7 @@ static int DemuxRecAudio( demux_t *p_demux, ty_rec_hdr_t *rec_hdr, block_t *p_bl /*msg_Dbg(p_demux, "Adding SA Audio Packet Size %ld", l_rec_size ); */ - if (p_sys->lastAudioPTS > 0) + if (p_sys->lastAudioPTS > VLC_TS_INVALID ) p_block_in->i_pts = p_sys->lastAudioPTS; } else if( subrec_type == 0x09 ) @@ -1004,7 +1005,7 @@ static int DemuxRecAudio( demux_t *p_demux, ty_rec_hdr_t *rec_hdr, block_t *p_bl } /* set PCR before we send (if PTS found) */ - if( p_block_in->i_pts > 0 ) + if( p_block_in->i_pts > VLC_TS_INVALID ) es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_block_in->i_pts ); /* Send data */ @@ -1089,7 +1090,7 @@ static int ty_stream_seek_pct(demux_t *p_demux, double seek_pct) (p_sys->i_num_recs * 16) + l_skip_amt + 4); /* to hell with syncing any audio or video, just start reading records... :) */ - /*p_sys->lastAudioPTS = p_sys->lastVideoPTS = 0;*/ + /*p_sys->lastAudioPTS = p_sys->lastVideoPTS = VLC_TS_INVALID;*/ return VLC_SUCCESS; }