[vlc-devel] commit: Improved bitrate estimation in mpga demuxer. (Laurent Aimar )
git version control
git at videolan.org
Fri Sep 12 22:07:01 CEST 2008
vlc | branch: master | Laurent Aimar <fenrir at videolan.org> | Fri Sep 12 01:40:46 2008 +0200| [72483c9d5ace07dabd6e631f630c7108aec2e8f5] | committer: Laurent Aimar
Improved bitrate estimation in mpga demuxer.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=72483c9d5ace07dabd6e631f630c7108aec2e8f5
---
modules/demux/mpeg/mpga.c | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/modules/demux/mpeg/mpga.c b/modules/demux/mpeg/mpga.c
index 8a281ef..dcc1750 100644
--- a/modules/demux/mpeg/mpga.c
+++ b/modules/demux/mpeg/mpga.c
@@ -71,7 +71,9 @@ struct demux_sys_t
mtime_t i_pts;
mtime_t i_time_offset;
+ int64_t i_bytes;
+ bool b_estimate_bitrate;
int i_bitrate_avg; /* extracted from Xing header */
bool b_initial_sync_failed;
@@ -113,6 +115,7 @@ static int Open( vlc_object_t * p_this )
p_sys->p_es = NULL;
p_sys->b_start = true;
p_sys->i_stream_offset = i_offset;
+ p_sys->b_estimate_bitrate = true;
p_sys->i_bitrate_avg = 0;
if( stream_Seek( p_demux->s, p_sys->i_stream_offset ) )
@@ -172,14 +175,22 @@ static int Demux( demux_t *p_demux )
p_sys->i_bitrate_avg = p_sys->xing.i_bytes * INT64_C(8) *
p_sys->p_packetizer->fmt_out.audio.i_rate /
p_sys->xing.i_frames / p_sys->xing.i_frame_samples;
+
+ if( p_sys->i_bitrate_avg > 0 )
+ p_sys->b_estimate_bitrate = false;
}
- /* Use the bitrate */
- if( p_sys->i_bitrate_avg <= 0 )
+ /* Use the bitrate as initual value */
+ if( p_sys->b_estimate_bitrate )
p_sys->i_bitrate_avg = p_sys->p_packetizer->fmt_out.i_bitrate;
}
p_sys->i_pts = p_block_out->i_pts;
+ /* Re-estimate bitrate */
+ if( p_sys->b_estimate_bitrate && p_sys->i_pts > 1 + INT64_C(500000) )
+ p_sys->i_bitrate_avg = 8*INT64_C(1000000)*p_sys->i_bytes/(p_sys->i_pts-1);
+ p_sys->i_bytes += p_block_out->i_buffer;
+
/* Correct timestamp */
p_block_out->i_pts += p_sys->i_time_offset;
p_block_out->i_dts += p_sys->i_time_offset;
More information about the vlc-devel
mailing list