From: Matthias Dahl Date: Mon, 16 Nov 2009 16:21:16 +0000 (+0100) Subject: fix A/52 spdif output regression X-Git-Tag: 1.1.0-ff~2393 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=baa1ec0106aea6a196238f8747ef751894e26579;p=vlc fix A/52 spdif output regression A/52 spdif output was broken by the switch over to the new filter API. * a52tofloat32 should only take control if there is _no_ spdif output requested otherwise the decoded stream ends up on the spdif device * a52tospdif has to set a pts/dts value otherwise the frames get (wrongfully) discarded as too late because a wrong pts/dts value got evaluated by aout_OutputNextBuffer() Signed-off-by: RĂ©mi Denis-Courmont --- diff --git a/modules/audio_filter/converter/a52tofloat32.c b/modules/audio_filter/converter/a52tofloat32.c index 368931e689..d2342d7a2a 100644 --- a/modules/audio_filter/converter/a52tofloat32.c +++ b/modules/audio_filter/converter/a52tofloat32.c @@ -353,7 +353,9 @@ static int OpenFilter( vlc_object_t *p_this ) filter_sys_t *p_sys; int i_ret; - if( p_filter->fmt_in.i_codec != VLC_CODEC_A52 ) + if( p_filter->fmt_in.i_codec != VLC_CODEC_A52 || + p_filter->fmt_out.audio.i_format == VLC_CODEC_SPDIFB || + p_filter->fmt_out.audio.i_format == VLC_CODEC_SPDIFL ) { return VLC_EGENERIC; } diff --git a/modules/audio_filter/converter/a52tospdif.c b/modules/audio_filter/converter/a52tospdif.c index 89d2a25a2e..8ee261cebb 100644 --- a/modules/audio_filter/converter/a52tospdif.c +++ b/modules/audio_filter/converter/a52tospdif.c @@ -111,6 +111,8 @@ static block_t *DoWork( filter_t * p_filter, block_t *p_in_buf ) vlc_memset( p_out + 8 + i_frame_size * 2, 0, AOUT_SPDIF_SIZE - i_frame_size * 2 - 8 ); + p_out_buf->i_dts = p_in_buf->i_dts; + p_out_buf->i_pts = p_in_buf->i_pts; p_out_buf->i_nb_samples = p_in_buf->i_nb_samples; p_out_buf->i_buffer = AOUT_SPDIF_SIZE; out: