vlc | branch: master | Francois Cartegnie <fcvlc...@free.fr> | Wed Apr 15 17:48:36 2015 +0200| [055b369d8f093fa61ba9c12b574beb2b4970dd30] | committer: Francois Cartegnie
demux: mp4: remove the arbitrary QT_MAX_V0_SAMPLES Fixes alaw regression. /samples/A-codecs/aLaw/ Arbitrary limit still required for compressed format(AMR). Now max to read 25ms of samples. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=055b369d8f093fa61ba9c12b574beb2b4970dd30 --- modules/demux/mp4/mp4.c | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/modules/demux/mp4/mp4.c b/modules/demux/mp4/mp4.c index 75629da..c842252 100644 --- a/modules/demux/mp4/mp4.c +++ b/modules/demux/mp4/mp4.c @@ -3023,7 +3023,6 @@ static inline uint32_t MP4_GetFixedSampleSize( const mp4_track_t *p_track, return i_size; } -#define QT_V0_MAX_SAMPLES 1024 static uint32_t MP4_TrackGetReadSize( mp4_track_t *p_track, uint32_t *pi_nb_samples ) { uint32_t i_size = 0; @@ -3105,6 +3104,24 @@ static uint32_t MP4_TrackGetReadSize( mp4_track_t *p_track, uint32_t *pi_nb_samp } /* uncompressed v0 (qt) or... not (ISO) */ + + uint32_t i_max_v0_samples; + switch( p_track->fmt.i_codec ) + { + /* Compressed samples in V0 */ + case VLC_CODEC_AMR_NB: + case VLC_CODEC_AMR_WB: + i_max_v0_samples = 16; + break; + default: + /* Read 25ms of samples (uncompressed) */ + i_max_v0_samples = p_track->fmt.audio.i_rate / 40 * + p_track->fmt.audio.i_channels; + if( i_max_v0_samples < 1 ) + i_max_v0_samples = 1; + break; + } + *pi_nb_samples = 0; for( uint32_t i=p_track->i_sample; i<p_chunk->i_sample_first+p_chunk->i_sample_count && @@ -3124,18 +3141,8 @@ static uint32_t MP4_TrackGetReadSize( mp4_track_t *p_track, uint32_t *pi_nb_samp break; } - switch( p_track->fmt.i_codec ) - { - case VLC_CODEC_AMR_NB: - case VLC_CODEC_AMR_WB: - if ( *pi_nb_samples == 16 ) - i = UINT32_MAX; - break; - default: - if ( *pi_nb_samples == QT_V0_MAX_SAMPLES ) - i = UINT32_MAX; - break; - } + if ( *pi_nb_samples == i_max_v0_samples ) + break; } } _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits