vlc | branch: master | Steve Lhomme <[email protected]> | Thu Jun 7 11:30:04 2018 +0200| [120e2cb800da292077e80dc790f323b901a13ff2] | committer: Steve Lhomme
demux:asf: fix the i_preroll_start substracting milliseconds from an mtime store the preroll in vlc_tick_t instead of milliseconds Divide all uses by 1000 for now SeekIndex was using the value in milliseconds substracted from the vlc_tick_t date. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=120e2cb800da292077e80dc790f323b901a13ff2 --- modules/demux/asf/asf.c | 12 ++++++------ modules/demux/asf/asfpacket.c | 6 +++--- modules/demux/asf/asfpacket.h | 2 +- modules/demux/asf/libasf.c | 4 ++-- modules/demux/asf/libasf.h | 2 +- modules/demux/mp4/mp4.c | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/modules/demux/asf/asf.c b/modules/demux/asf/asf.c index 89f1ae671c..f9cc4ce28e 100644 --- a/modules/demux/asf/asf.c +++ b/modules/demux/asf/asf.c @@ -213,8 +213,8 @@ static int Demux( demux_t *p_demux ) } while( !p_sys->b_eos && ( p_sys->i_sendtime - p_sys->i_time - CHUNK < 0 || - ( p_sys->i_sendtime - p_sys->i_time - CHUNK ) / - UINT64_C( 1000 ) < p_sys->p_fp->i_preroll ) ) + ( p_sys->i_sendtime - p_sys->i_time - CHUNK ) < + p_sys->p_fp->i_preroll ) ) { /* Read and demux a packet */ if( DemuxASFPacket( &p_sys->packet_sys, @@ -242,8 +242,8 @@ static int Demux( demux_t *p_demux ) } if( p_sys->b_eos || ( p_sys->i_sendtime - p_sys->i_time - CHUNK >= 0 && - ( p_sys->i_sendtime - p_sys->i_time - CHUNK ) / - UINT64_C( 1000 ) >= p_sys->p_fp->i_preroll ) ) + ( p_sys->i_sendtime - p_sys->i_time - CHUNK ) >= + p_sys->p_fp->i_preroll ) ) { bool b_data = Block_Dequeue( p_demux, p_sys->i_time + CHUNK ); @@ -358,7 +358,7 @@ static int SeekIndex( demux_t *p_demux, vlc_tick_t i_date, float f_pos ) if( i_date < 0 ) i_date = p_sys->i_length * f_pos; - p_sys->i_preroll_start = i_date - (int64_t) p_sys->p_fp->i_preroll; + p_sys->i_preroll_start = i_date - p_sys->p_fp->i_preroll; if ( p_sys->i_preroll_start < 0 ) p_sys->i_preroll_start = 0; p_index = ASF_FindObject( p_sys->p_root, &asf_object_simple_index_guid, 0 ); @@ -1237,7 +1237,7 @@ static int DemuxInit( demux_t *p_demux ) /* calculate the time duration in micro-s */ p_sys->i_length = VLC_TICK_FROM_MSFTIME(p_sys->p_fp->i_play_duration) * (vlc_tick_t)i_count / - (vlc_tick_t)p_sys->p_fp->i_data_packets_count - p_sys->p_fp->i_preroll * 1000; + (vlc_tick_t)p_sys->p_fp->i_data_packets_count - p_sys->p_fp->i_preroll; if( p_sys->i_length < 0 ) p_sys->i_length = 0; diff --git a/modules/demux/asf/asfpacket.c b/modules/demux/asf/asfpacket.c index 21c4250067..e99cb6b68a 100644 --- a/modules/demux/asf/asfpacket.c +++ b/modules/demux/asf/asfpacket.c @@ -237,7 +237,7 @@ static int DemuxPayload(asf_packet_sys_t *p_packetsys, asf_packet_t *pkt, int i_ &pkt->p_peek[pkt->i_skip + 8], i_replicated_data_length - 8, &b_packet_keyframe ); - i_pkt_time -= *p_packetsys->pi_preroll; + i_pkt_time -= MS_FROM_VLC_TICK(*p_packetsys->pi_preroll); pkt->i_skip += i_replicated_data_length; } else if ( i_replicated_data_length == 0 ) @@ -253,7 +253,7 @@ static int DemuxPayload(asf_packet_sys_t *p_packetsys, asf_packet_t *pkt, int i_ i_pkt_time_delta = VLC_TICK_FROM_MS(pkt->p_peek[pkt->i_skip]); b_ignore_pts = false; i_pkt_time = (vlc_tick_t)i_media_object_offset; - i_pkt_time -= *p_packetsys->pi_preroll; + i_pkt_time -= MS_FROM_VLC_TICK(*p_packetsys->pi_preroll); pkt->i_skip++; i_media_object_offset = 0; } @@ -271,7 +271,7 @@ static int DemuxPayload(asf_packet_sys_t *p_packetsys, asf_packet_t *pkt, int i_ if( ! pkt->left || pkt->i_skip >= pkt->left ) return -1; - bool b_preroll_done = ( pkt->send_time/1000 > (*p_packetsys->pi_preroll_start/1000 + *p_packetsys->pi_preroll) ); + bool b_preroll_done = ( pkt->send_time > (*p_packetsys->pi_preroll_start + *p_packetsys->pi_preroll) ); if (i_pkt_time < 0) i_pkt_time = 0; // FIXME? i_pkt_time *= 1000; diff --git a/modules/demux/asf/asfpacket.h b/modules/demux/asf/asfpacket.h index 3d4c1a5b22..9a5af1aa66 100644 --- a/modules/demux/asf/asfpacket.h +++ b/modules/demux/asf/asfpacket.h @@ -43,7 +43,7 @@ struct asf_packet_sys_s demux_t *p_demux; /* global stream info */ - uint64_t *pi_preroll; + vlc_tick_t *pi_preroll; vlc_tick_t *pi_preroll_start; /* callbacks */ diff --git a/modules/demux/asf/libasf.c b/modules/demux/asf/libasf.c index 119ef4d0e3..027478a0c8 100644 --- a/modules/demux/asf/libasf.c +++ b/modules/demux/asf/libasf.c @@ -317,7 +317,7 @@ static int ASF_ReadObject_file_properties( stream_t *s, asf_object_t *p_obj ) p_fp->i_data_packets_count = GetQWLE( p_peek + 56 ); p_fp->i_play_duration = GetQWLE( p_peek + 64 ); p_fp->i_send_duration = GetQWLE( p_peek + 72 ); - p_fp->i_preroll = GetQWLE( p_peek + 80 ); + p_fp->i_preroll = VLC_TICK_FROM_MS(GetQWLE( p_peek + 80 )); p_fp->i_flags = GetDWLE( p_peek + 88 ); p_fp->i_min_data_packet_size = __MAX( GetDWLE( p_peek + 92 ), (uint32_t) 1 ); p_fp->i_max_data_packet_size = __MAX( GetDWLE( p_peek + 96 ), (uint32_t) 1 ); @@ -333,7 +333,7 @@ static int ASF_ReadObject_file_properties( stream_t *s, asf_object_t *p_obj ) GUID_PRINT( p_fp->i_file_id ), p_fp->i_file_size, p_fp->i_creation_date, p_fp->i_data_packets_count, p_fp->i_play_duration, p_fp->i_send_duration, - p_fp->i_preroll, p_fp->i_flags, + MS_FROM_VLC_TICK(p_fp->i_preroll), p_fp->i_flags, p_fp->i_min_data_packet_size, p_fp->i_max_data_packet_size, p_fp->i_max_bitrate ); #endif diff --git a/modules/demux/asf/libasf.h b/modules/demux/asf/libasf.h index 9f2cb9f356..90f46d12c3 100644 --- a/modules/demux/asf/libasf.h +++ b/modules/demux/asf/libasf.h @@ -106,7 +106,7 @@ typedef struct uint64_t i_data_packets_count; msftime_t i_play_duration; msftime_t i_send_duration; - uint64_t i_preroll; + vlc_tick_t i_preroll; uint32_t i_flags; uint32_t i_min_data_packet_size; uint32_t i_max_data_packet_size; diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c index 7c904a89d0..37883281fc 100644 --- a/modules/demux/mp4/mp4.c +++ b/modules/demux/mp4/mp4.c @@ -132,7 +132,7 @@ typedef struct /* ASF in MP4 */ asf_packet_sys_t asfpacketsys; - uint64_t i_preroll; /* foobar */ + vlc_tick_t i_preroll; /* foobar */ vlc_tick_t i_preroll_start; struct _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
