[vlc-devel] commit: Encoders are allowed to change the input format. Hence we need to check that our second attempt to spawn an encoder didn' t do so. (Antoine Cellerier )

git version control git at videolan.org
Tue Sep 2 15:34:10 CEST 2008


vlc | branch: master | Antoine Cellerier <dionoea at videolan.org> | Tue Sep  2 15:35:44 2008 +0200| [674559b27503f59bc320a00199ee42ae7a9166db] | committer: Antoine Cellerier 

Encoders are allowed to change the input format. Hence we need to check that our second attempt to spawn an encoder didn't do so.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=674559b27503f59bc320a00199ee42ae7a9166db
---

 modules/stream_out/transcode.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/modules/stream_out/transcode.c b/modules/stream_out/transcode.c
index 9a6490d..ea7527b 100644
--- a/modules/stream_out/transcode.c
+++ b/modules/stream_out/transcode.c
@@ -1261,8 +1261,15 @@ static int transcode_audio_new( sout_stream_t *p_stream,
         id->p_encoder->p_cfg = p_stream->p_sys->p_audio_cfg;
         id->p_encoder->p_module =
             module_Need( id->p_encoder, "encoder", p_sys->psz_aenc, true );
-        if( !id->p_encoder->p_module )
+        if( !id->p_encoder->p_module ||
+            fmt_last.audio.i_channels != id->p_encoder->fmt_in.audio.i_channels  ||
+            fmt_last.i_codec != id->p_encoder->fmt_in.i_codec )
         {
+            if( id->p_encoder->p_module )
+            {
+                module_Unneed( id->p_encoder, id->p_encoder->p_module );
+                id->p_encoder->p_module = NULL;
+            }
             msg_Err( p_stream, "cannot find audio encoder (module:%s fourcc:%4.4s)",
                      p_sys->psz_aenc ? p_sys->psz_aenc : "any",
                      (char *)&p_sys->i_acodec );




More information about the vlc-devel mailing list