X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Faudio_filter%2Fresampler%2Fbandlimited.c;h=8167271fa1801ae2e4540794f8767afd9aa7fb23;hb=b3b215771577a03077dbed7e43b9f1e89515ed77;hp=485f320150f86368c0ec538b9c6d4f7a03587ed5;hpb=4b44912ce0888ed40d35aa5d782cd17cbf7e9c6b;p=vlc diff --git a/modules/audio_filter/resampler/bandlimited.c b/modules/audio_filter/resampler/bandlimited.c index 485f320150..8167271fa1 100644 --- a/modules/audio_filter/resampler/bandlimited.c +++ b/modules/audio_filter/resampler/bandlimited.c @@ -83,7 +83,7 @@ struct filter_sys_t unsigned int i_remainder; /* remainder of previous sample */ - audio_date_t end_date; + date_t end_date; bool b_first; bool b_filter2; @@ -196,21 +196,21 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter, if( p_sys->b_filter2 ) i_out_rate = p_filter->output.i_rate; else - i_out_rate = p_aout->mixer.mixer.i_rate; + i_out_rate = p_aout->mixer_format.i_rate; /* Check if we really need to run the resampler */ if( i_out_rate == p_filter->input.i_rate ) { +#if 0 /* FIXME: needs audio filter2 to use block_Realloc */ if( /*p_filter->b_continuity && /--* What difference does it make ? :) */ - p_sys->i_old_wing && - p_in_buf->i_size >= - p_in_buf->i_nb_bytes + p_sys->i_old_wing * - p_filter->input.i_bytes_per_frame ) + p_sys->i_old_wing ) { /* output the whole thing with the samples from last time */ - memmove( ((float *)(p_in_buf->p_buffer)) + - i_nb_channels * p_sys->i_old_wing, - p_in_buf->p_buffer, p_in_buf->i_nb_bytes ); + p_in_buf = block_Realloc( p_in_buf, + p_sys->i_old_wing * p_filter->input.i_bytes_per_frame, + p_in_buf->i_buffer ); + if( !p_in_buf ) + abort(); memcpy( p_in_buf->p_buffer, p_sys->p_buf + i_nb_channels * p_sys->i_old_wing, p_sys->i_old_wing * @@ -219,14 +219,15 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter, p_out_buf->i_nb_samples = p_in_buf->i_nb_samples + p_sys->i_old_wing; - p_out_buf->start_date = aout_DateGet( &p_sys->end_date ); - p_out_buf->end_date = - aout_DateIncrement( &p_sys->end_date, - p_out_buf->i_nb_samples ); + p_out_buf->i_pts = date_Get( &p_sys->end_date ); + p_out_buf->i_length = + date_Increment( &p_sys->end_date, + p_out_buf->i_nb_samples ) - p_out_buf->i_pts; - p_out_buf->i_nb_bytes = p_out_buf->i_nb_samples * + p_out_buf->i_buffer = p_out_buf->i_nb_samples * p_filter->input.i_bytes_per_frame; } +#endif p_filter->b_continuity = false; p_sys->i_old_wing = 0; return; @@ -238,8 +239,8 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter, * everything. */ p_filter->b_continuity = true; p_sys->i_remainder = 0; - aout_DateInit( &p_sys->end_date, i_out_rate ); - aout_DateSet( &p_sys->end_date, p_in_buf->start_date ); + date_Init( &p_sys->end_date, i_out_rate, 1 ); + date_Set( &p_sys->end_date, p_in_buf->i_pts ); p_sys->i_old_rate = p_filter->input.i_rate; p_sys->d_old_factor = 1; p_sys->i_old_wing = 0; @@ -269,7 +270,7 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter, p_in_buf->i_nb_samples * p_filter->input.i_bytes_per_frame ); /* Make sure the output buffer is reset */ - memset( p_out, 0, p_out_buf->i_size ); + memset( p_out, 0, p_out_buf->i_buffer ); /* Calculate the new length of the filter wing */ d_factor = (double)i_out_rate / p_filter->input.i_rate; @@ -327,7 +328,7 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter, #endif /* Sanity check */ - if( p_out_buf->i_size/p_filter->input.i_bytes_per_frame + if( p_out_buf->i_buffer/p_filter->input.i_bytes_per_frame <= (unsigned int)i_out+1 ) { p_out += i_nb_channels; @@ -402,7 +403,7 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter, } #endif /* Sanity check */ - if( p_out_buf->i_size/p_filter->input.i_bytes_per_frame + if( p_out_buf->i_buffer/p_filter->input.i_bytes_per_frame <= (unsigned int)i_out+1 ) { p_out += i_nb_channels; @@ -448,17 +449,17 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter, } #if 0 - msg_Err( p_filter, "p_out size: %i, nb bytes out: %i", p_out_buf->i_size, + msg_Err( p_filter, "p_out size: %i, nb bytes out: %i", p_out_buf->i_buffer, i_out * p_filter->input.i_bytes_per_frame ); #endif /* Finalize aout buffer */ p_out_buf->i_nb_samples = i_out; - p_out_buf->start_date = aout_DateGet( &p_sys->end_date ); - p_out_buf->end_date = aout_DateIncrement( &p_sys->end_date, - p_out_buf->i_nb_samples ); + p_out_buf->i_pts = date_Get( &p_sys->end_date ); + p_out_buf->i_length = date_Increment( &p_sys->end_date, + p_out_buf->i_nb_samples ) - p_out_buf->i_pts; - p_out_buf->i_nb_bytes = p_out_buf->i_nb_samples * + p_out_buf->i_buffer = p_out_buf->i_nb_samples * i_nb_channels * sizeof(int32_t); } @@ -547,7 +548,7 @@ static block_t *Resample( filter_t *p_filter, block_t *p_block ) int i_out_size; int i_bytes_per_frame; - if( !p_block || !p_block->i_samples ) + if( !p_block || !p_block->i_nb_samples ) { if( p_block ) block_Release( p_block ); @@ -557,7 +558,7 @@ static block_t *Resample( filter_t *p_filter, block_t *p_block ) i_bytes_per_frame = p_filter->fmt_out.audio.i_channels * p_filter->fmt_out.audio.i_bitspersample / 8; - i_out_size = i_bytes_per_frame * ( 1 + ( p_block->i_samples * + i_out_size = i_bytes_per_frame * ( 1 + ( p_block->i_nb_samples * p_filter->fmt_out.audio.i_rate / p_filter->fmt_in.audio.i_rate) ) + p_filter->p_sys->i_buf_size; @@ -570,7 +571,7 @@ static block_t *Resample( filter_t *p_filter, block_t *p_block ) return NULL; } - p_out->i_samples = i_out_size / i_bytes_per_frame; + p_out->i_nb_samples = i_out_size / i_bytes_per_frame; p_out->i_dts = p_block->i_dts; p_out->i_pts = p_block->i_pts; p_out->i_length = p_block->i_length; @@ -586,18 +587,18 @@ static block_t *Resample( filter_t *p_filter, block_t *p_block ) p_filter->p_sys->b_first = false; in_buf.p_buffer = p_block->p_buffer; - in_buf.i_nb_bytes = in_buf.i_size = p_block->i_buffer; - in_buf.i_nb_samples = p_block->i_samples; + in_buf.i_buffer = p_block->i_buffer; + in_buf.i_nb_samples = p_block->i_nb_samples; out_buf.p_buffer = p_out->p_buffer; - out_buf.i_nb_bytes = out_buf.i_size = p_out->i_buffer; - out_buf.i_nb_samples = p_out->i_samples; + out_buf.i_buffer = p_out->i_buffer; + out_buf.i_nb_samples = p_out->i_nb_samples; DoWork( (aout_instance_t *)p_filter, &aout_filter, &in_buf, &out_buf ); block_Release( p_block ); - p_out->i_buffer = out_buf.i_nb_bytes; - p_out->i_samples = out_buf.i_nb_samples; + p_out->i_buffer = out_buf.i_buffer; + p_out->i_nb_samples = out_buf.i_nb_samples; return p_out; }