]> git.sesse.net Git - vlc/commitdiff
fix A/52 spdif output regression
authorMatthias Dahl <khaos.dev@binary-island.eu>
Mon, 16 Nov 2009 16:21:16 +0000 (17:21 +0100)
committerRémi Denis-Courmont <remi@remlab.net>
Tue, 24 Nov 2009 20:50:11 +0000 (22:50 +0200)
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 <remi@remlab.net>
modules/audio_filter/converter/a52tofloat32.c
modules/audio_filter/converter/a52tospdif.c

index 368931e689cd79a1cccba8ea6f4b6cbebf27b9d2..d2342d7a2ab128c8af09d28c11f19d3f09a2f624 100644 (file)
@@ -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;
     }
index 89d2a25a2ec08921663f3f9510ef590773db140c..8ee261cebb28fe4ade9fb2bd9386a590c87c897f 100644 (file)
@@ -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: