X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fcodec%2Flpcm.c;h=5980e9dd0b44db8aa45ecc026467ae91481b6048;hb=6e7990245b66b55fd2ec44054ac3d66840af6e81;hp=fa7a1afffe40608087b567a1d67c790fb8aaf048;hpb=b8813031072aa91c046f25f3937dc573066e183b;p=vlc diff --git a/modules/codec/lpcm.c b/modules/codec/lpcm.c index fa7a1afffe..5980e9dd0b 100644 --- a/modules/codec/lpcm.c +++ b/modules/codec/lpcm.c @@ -268,7 +268,7 @@ static void *DecodeFrame( decoder_t *p_dec, block_t **pp_block ) *pp_block = NULL; /* So the packet doesn't get re-sent */ /* Date management */ - if( p_block->i_pts > 0 && + if( p_block->i_pts > VLC_TS_INVALID && p_block->i_pts != date_Get( &p_sys->end_date ) ) { date_Set( &p_sys->end_date, p_block->i_pts ); @@ -289,12 +289,11 @@ static void *DecodeFrame( decoder_t *p_dec, block_t **pp_block ) } int i_ret; - unsigned i_padding; + unsigned i_padding = 0; aob_group_t p_aob_group[2]; switch( p_sys->i_type ) { case LPCM_VOB: - i_padding = 0; i_ret = VobHeader( &i_rate, &i_channels, &i_original_channels, &i_bits, p_block->p_buffer ); break; @@ -303,13 +302,12 @@ static void *DecodeFrame( decoder_t *p_dec, block_t **pp_block ) p_aob_group, p_block->p_buffer ); break; - default: - assert(0); case LPCM_BD: - i_padding = 0; i_ret = BdHeader( &i_rate, &i_channels, &i_original_channels, &i_bits, p_block->p_buffer ); break; + default: + abort(); } if( i_ret || p_block->i_buffer <= p_sys->i_header_size + i_padding ) @@ -362,9 +360,10 @@ static void *DecodeFrame( decoder_t *p_dec, block_t **pp_block ) if( !p_aout_buffer ) return NULL; - p_aout_buffer->start_date = date_Get( &p_sys->end_date ); - p_aout_buffer->end_date = - date_Increment( &p_sys->end_date, i_frame_length ); + p_aout_buffer->i_pts = date_Get( &p_sys->end_date ); + p_aout_buffer->i_length = + date_Increment( &p_sys->end_date, i_frame_length ) + - p_aout_buffer->i_pts; p_block->p_buffer += p_sys->i_header_size + i_padding; p_block->i_buffer -= p_sys->i_header_size + i_padding; @@ -599,7 +598,7 @@ static int AobHeader( unsigned *pi_rate, *pi_layout = i_layout1 | ( b_group2_used ? i_layout2 : 0 ); /* */ - for( int i = 0; i < 2; i++ ) + for( unsigned i = 0; i < 2; i++ ) { const unsigned *p_aob = i == 0 ? p_aob_group1[i_assignment] : p_aob_group2[i_assignment]; @@ -609,7 +608,7 @@ static int AobHeader( unsigned *pi_rate, g[i].b_used = i == 0 || b_group2_used; if( !g[i].b_used ) continue; - for( int j = 0; j < g[i].i_channels; j++ ) + for( unsigned j = 0; j < g[i].i_channels; j++ ) { g[i].pi_position[j] = 0; for( int k = 0; pi_vlc_chan_order_wg4[k] != 0; k++ ) @@ -792,16 +791,16 @@ static void AobExtract( aout_buffer_t *p_aout_buffer, for( int i = 0; i < 2; i++ ) { const aob_group_t *g = &p_group[1-i]; - const int i_group_size = 2 * g->i_channels * i_bits / 8; + const unsigned int i_group_size = 2 * g->i_channels * i_bits / 8; if( p_block->i_buffer < i_group_size ) { p_block->i_buffer = 0; break; } - for( int n = 0; n < 2; n++ ) + for( unsigned n = 0; n < 2; n++ ) { - for( int j = 0; j < g->i_channels && g->b_used; j++ ) + for( unsigned j = 0; j < g->i_channels && g->b_used; j++ ) { const int i_src = n * g->i_channels + j; const int i_dst = n * i_channels + g->pi_position[j];