]> git.sesse.net Git - vlc/commitdiff
Patch by xxcv: Don't change fmt_last.audio.i_rate when FOURCC is mp4a
authorJean-Paul Saman <jpsaman@videolan.org>
Wed, 28 Feb 2007 19:38:02 +0000 (19:38 +0000)
committerJean-Paul Saman <jpsaman@videolan.org>
Wed, 28 Feb 2007 19:38:02 +0000 (19:38 +0000)
modules/stream_out/transcode.c

index 74c9fc1e0fce9d711d60c638d5788da3ecab0bf6..131015e7c362a298759b04617e6749115da719d7 100644 (file)
@@ -1305,8 +1305,11 @@ static int transcode_audio_new( sout_stream_t *p_stream,
     id->p_decoder->fmt_out.audio.i_bitspersample = 
         audio_BitsPerSample( id->p_decoder->fmt_out.i_codec );
     fmt_last = id->p_decoder->fmt_out;
-    /* FIX decoders so we don't have to do this */
-    fmt_last.audio.i_rate = id->p_decoder->fmt_in.audio.i_rate;
+    /* Fix AAC SBR changing number of channels and sampling rate */
+    if( !(id->p_decoder->fmt_in.i_codec == VLC_FOURCC('m','p','4','a') &&
+        fmt_last.audio.i_rate != id->p_encoder->fmt_in.audio.i_rate &&
+        fmt_last.audio.i_channels != id->p_encoder->fmt_in.audio.i_channels) )
+        fmt_last.audio.i_rate = id->p_decoder->fmt_in.audio.i_rate;
 
     /*
      * Open encoder
@@ -1345,6 +1348,15 @@ static int transcode_audio_new( sout_stream_t *p_stream,
     id->p_encoder->fmt_in.audio.i_bitspersample =
         audio_BitsPerSample( id->p_encoder->fmt_in.i_codec );
 
+    /* Fix AAC SBR changing number of channels and sampling rate */
+    if( id->p_decoder->fmt_in.i_codec == VLC_FOURCC('m','p','4','a') &&
+        fmt_last.audio.i_rate != id->p_encoder->fmt_in.audio.i_rate &&
+        fmt_last.audio.i_channels != id->p_encoder->fmt_in.audio.i_channels )
+    {
+      id->p_encoder->fmt_in.audio.i_rate = fmt_last.audio.i_rate;
+      id->p_encoder->fmt_out.audio.i_rate = fmt_last.audio.i_rate;
+    }
+
     /* Load conversion filters */
     if( fmt_last.audio.i_channels != id->p_encoder->fmt_in.audio.i_channels ||
         fmt_last.audio.i_rate != id->p_encoder->fmt_in.audio.i_rate )