OSDN Git Service

ffmpeg: call pre_process_video_frame() only if decoding is needed
authorStefano Sabatini <stefano.sabatini-lala@poste.it>
Wed, 20 Apr 2011 11:13:09 +0000 (13:13 +0200)
committerAnton Khirnov <anton@khirnov.net>
Wed, 11 May 2011 05:32:37 +0000 (07:32 +0200)
In output_packet(), move the pre_process_video_frame() call inside the
if (ist->decoding_needed) { } block. This way
pre_process_video_frame() is not called when stream-copy has been
selected.

Also simplify.

Signed-off-by: Stefano Sabatini <stefano.sabatini-lala@poste.it>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
ffmpeg.c

index 738fb7b..5ab3c7a 100644 (file)
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -1428,7 +1428,7 @@ static int output_packet(AVInputStream *ist, int ist_index,
     int ret, i;
     int got_output;
     AVFrame picture;
-    void *buffer_to_free;
+    void *buffer_to_free = NULL;
     static unsigned int samples_size= 0;
     AVSubtitle subtitle, *subtitle_to_free;
     int64_t pkt_pts = AV_NOPTS_VALUE;
@@ -1530,6 +1530,8 @@ static int output_packet(AVInputStream *ist, int ist_index,
                             ist->st->codec->time_base.den;
                     }
                     avpkt.size = 0;
+                    buffer_to_free = NULL;
+                    pre_process_video_frame(ist, (AVPicture *)&picture, &buffer_to_free);
                     break;
             case AVMEDIA_TYPE_SUBTITLE:
                 ret = avcodec_decode_subtitle2(ist->st->codec,
@@ -1564,12 +1566,6 @@ static int output_packet(AVInputStream *ist, int ist_index,
             avpkt.size = 0;
         }
 
-        buffer_to_free = NULL;
-        if (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
-            pre_process_video_frame(ist, (AVPicture *)&picture,
-                                    &buffer_to_free);
-        }
-
 #if CONFIG_AVFILTER
         if (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO && ist->input_video_filter) {
             AVRational sar;