aout_alloc_t output_alloc;
bool b_in_place;
- bool b_continuity;
void (*pf_do_work)( aout_instance_t *, aout_filter_t *,
aout_buffer_t *, aout_buffer_t * );
date_t end_date;
- bool b_first;
bool b_filter2;
};
p_filter->fmt_in.audio.i_bytes_per_frame;
}
#endif
- p_filter->b_continuity = false;
+ p_out_buf->i_flags |= BLOCK_FLAG_DISCONTINUITY;
p_sys->i_old_wing = 0;
return;
}
- if( !p_filter->b_continuity )
+ if( p_in_buf->i_flags & BLOCK_FLAG_DISCONTINUITY )
{
/* Continuity in sound samples has been broken, we'd better reset
* everything. */
- p_filter->b_continuity = true;
+ p_out_buf->i_flags |= BLOCK_FLAG_DISCONTINUITY;
p_sys->i_remainder = 0;
date_Init( &p_sys->end_date, i_out_rate, 1 );
date_Set( &p_sys->end_date, p_in_buf->i_pts );
}
p_filter->p_sys->i_old_wing = 0;
- p_sys->b_first = true;
p_sys->b_filter2 = true;
p_filter->pf_audio_filter = Resample;
aout_filter.fmt_out.audio = p_filter->fmt_out.audio;
aout_filter.fmt_out.audio.i_bytes_per_frame = p_filter->fmt_out.audio.i_channels *
p_filter->fmt_out.audio.i_bitspersample / 8;
- aout_filter.b_continuity = !p_filter->p_sys->b_first;
- p_filter->p_sys->b_first = false;
in_buf.p_buffer = p_block->p_buffer;
in_buf.i_buffer = p_block->i_buffer;
if( p_aout->mixer_format.i_rate == p_filter->fmt_in.audio.i_rate )
{
#if 0 /* FIXME: needs audio filter2 for block_Realloc */
- if( p_filter->b_continuity )
+ if( !(p_in_buf->i_flags & BLOCK_FLAG_DISCONTINUITY) )
{
p_in_buf = block_Realloc( p_in_buf, sizeof(float) * i_nb_channels,
p_in_buf->i_buffer );
i_nb_channels * sizeof(float) );
}
#endif
- p_filter->b_continuity = false;
+ p_out_buf->i_flags |= BLOCK_FLAG_DISCONTINUITY;
return;
}
vlc_memcpy( p_in, p_in_buf->p_buffer, p_in_buf->i_buffer );
/* Take care of the previous input sample (if any) */
- if( !p_filter->b_continuity )
+ if( p_in_buf->i_flags & BLOCK_FLAG_DISCONTINUITY )
{
- p_filter->b_continuity = true;
+ p_out_buf->i_flags |= BLOCK_FLAG_DISCONTINUITY;
p_sys->i_remainder = 0;
date_Init( &p_sys->end_date, p_filter->fmt_out.audio.i_rate, 1 );
}
aout_filter.p_sys = (struct aout_filter_sys_t *)p_filter->p_sys;
aout_filter.fmt_in.audio = p_filter->fmt_in.audio;
aout_filter.fmt_out.audio = p_filter->fmt_out.audio;
- aout_filter.b_continuity = false;
in_buf.p_buffer = p_block->p_buffer;
in_buf.i_buffer = p_block->i_buffer;
return NULL;
}
- p_filter->b_continuity = false;
-
return p_filter;
}
}
/* success */
- p_filter->b_continuity = false;
p_input->pp_filters[p_input->i_nb_filters++] = p_filter;
memcpy( &chain_input_format, &p_filter->fmt_out.audio,
sizeof( audio_sample_format_t ) );
if ( p_input->i_resampling_type != AOUT_RESAMPLING_NONE )
msg_Warn( p_aout, "timing screwed, stopping resampling" );
inputResamplingStop( p_input );
+ p_buffer->i_flags |= BLOCK_FLAG_DISCONTINUITY;
start_date = 0;
}
if ( p_input->i_resampling_type != AOUT_RESAMPLING_NONE )
msg_Warn( p_aout, "timing screwed, stopping resampling" );
inputResamplingStop( p_input );
+ p_buffer->i_flags |= BLOCK_FLAG_DISCONTINUITY;
start_date = 0;
}
else if ( start_date != 0 &&
* is bad. We'd better stop the resampling right now. */
msg_Warn( p_aout, "timing screwed, stopping resampling" );
inputResamplingStop( p_input );
+ p_buffer->i_flags |= BLOCK_FLAG_DISCONTINUITY;
}
}
( p_input->pp_resamplers[0] == p_input->p_playback_rate_filter )
? INPUT_RATE_DEFAULT * p_input->input.i_rate / p_input->i_last_input_rate
: p_input->input.i_rate;
- p_input->pp_resamplers[0]->b_continuity = false;
}
}