]> git.sesse.net Git - vlc/blobdiff - modules/stream_out/transcode.c
svg module: fix memleak.
[vlc] / modules / stream_out / transcode.c
index 1d008b80199d197720980acf8932f2ccf961ca14..eceda3bd81e10c9df0a1be2ddbbd03aa867534f1 100644 (file)
@@ -1146,7 +1146,7 @@ static int transcode_audio_new( sout_stream_t *p_stream,
                     id->p_decoder->fmt_out.i_codec );
     id->p_encoder->fmt_in.audio.i_format = id->p_decoder->fmt_out.i_codec;
 
-    id->p_encoder->fmt_in.audio.i_rate = fmt_last.audio.i_rate;//id->p_encoder->fmt_out.audio.i_rate;
+    id->p_encoder->fmt_in.audio.i_rate = id->p_encoder->fmt_out.audio.i_rate;
     id->p_encoder->fmt_in.audio.i_physical_channels =
         id->p_encoder->fmt_out.audio.i_physical_channels;
     id->p_encoder->fmt_in.audio.i_original_channels =
@@ -1676,9 +1676,6 @@ static void transcode_video_encoder_init( sout_stream_t *p_stream,
      id->p_encoder->fmt_in.video.i_height =
      id->p_encoder->fmt_in.video.i_visible_height = i_dst_height;
 
-     id->p_encoder->fmt_in.video.i_width = i_dst_width;
-     id->p_encoder->fmt_in.video.i_height = i_dst_height;
-
      msg_Dbg( p_stream, "source %ix%i, destination %ix%i",
          i_src_width, i_src_height,
          i_dst_width, i_dst_height
@@ -1983,7 +1980,10 @@ static int transcode_video_process( sout_stream_t *p_stream,
                 }
             }
 
-            fmt = filter_chain_GetFmtOut( id->p_f_chain )->video;
+            if( filter_chain_GetLength( id->p_f_chain ) > 0 )
+                fmt = filter_chain_GetFmtOut( id->p_f_chain )->video;
+            else
+                fmt = id->p_decoder->fmt_out.video;
 
             /* FIXME (shouldn't have to be done here) */
             fmt.i_sar_num = fmt.i_aspect * fmt.i_height / fmt.i_width;
@@ -2083,7 +2083,7 @@ static int EncoderThread( sout_stream_sys_t *p_sys )
     sout_stream_id_t *id = p_sys->id_video;
     picture_t *p_pic;
 
-    while( !p_sys->b_die && !p_sys->b_error )
+    while( vlc_object_alive (p_sys) && !p_sys->b_error )
     {
         block_t *p_block;
 
@@ -2091,9 +2091,9 @@ static int EncoderThread( sout_stream_sys_t *p_sys )
         while( p_sys->i_last_pic == p_sys->i_first_pic )
         {
             vlc_cond_wait( &p_sys->cond, &p_sys->lock_out );
-            if( p_sys->b_die || p_sys->b_error ) break;
+            if( !vlc_object_alive (p_sys) || p_sys->b_error ) break;
         }
-        if( p_sys->b_die || p_sys->b_error )
+        if( !vlc_object_alive (p_sys) || p_sys->b_error )
         {
             vlc_mutex_unlock( &p_sys->lock_out );
             break;