diff mbox series

[FFmpeg-devel,1/2] ffmpeg: Allocate (In|Out)putStream.filter_frame early

Message ID 20211115115525.1414-1-jamrial@gmail.com
State Accepted
Commit ee3d6a20f6e11be23f3b75924d8a853b1af241f6
Headers show
Series [FFmpeg-devel,1/2] ffmpeg: Allocate (In|Out)putStream.filter_frame early
Related show

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished

Commit Message

James Almer Nov. 15, 2021, 11:55 a.m. UTC
Based on a commit by Andreas Rheinhardt.

Signed-off-by: James Almer <jamrial@gmail.com>
---
 fftools/ffmpeg.c     | 7 -------
 fftools/ffmpeg_opt.c | 8 ++++++++
 2 files changed, 8 insertions(+), 7 deletions(-)
diff mbox series

Patch

diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index d141f34df9..f6ab33a614 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -1533,9 +1533,6 @@  static int reap_filters(int flush)
         if (av_buffersink_get_type(filter) == AVMEDIA_TYPE_AUDIO)
             init_output_stream_wrapper(ost, NULL, 1);
 
-        if (!ost->filtered_frame && !(ost->filtered_frame = av_frame_alloc())) {
-            return AVERROR(ENOMEM);
-        }
         filtered_frame = ost->filtered_frame;
 
         while (1) {
@@ -2342,8 +2339,6 @@  static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output,
 
     if (!ist->decoded_frame && !(ist->decoded_frame = av_frame_alloc()))
         return AVERROR(ENOMEM);
-    if (!ist->filter_frame && !(ist->filter_frame = av_frame_alloc()))
-        return AVERROR(ENOMEM);
     decoded_frame = ist->decoded_frame;
 
     update_benchmark(NULL);
@@ -2410,8 +2405,6 @@  static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output, int64_
 
     if (!ist->decoded_frame && !(ist->decoded_frame = av_frame_alloc()))
         return AVERROR(ENOMEM);
-    if (!ist->filter_frame && !(ist->filter_frame = av_frame_alloc()))
-        return AVERROR(ENOMEM);
     decoded_frame = ist->decoded_frame;
     if (ist->dts != AV_NOPTS_VALUE)
         dts = av_rescale_q(ist->dts, AV_TIME_BASE_Q, ist->st->time_base);
diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
index ab4c63a362..278cab39bf 100644
--- a/fftools/ffmpeg_opt.c
+++ b/fftools/ffmpeg_opt.c
@@ -888,6 +888,10 @@  static void add_input_streams(OptionsContext *o, AVFormatContext *ic)
             exit_program(1);
         }
 
+        ist->filter_frame = av_frame_alloc();
+        if (!ist->filter_frame)
+            exit_program(1);
+
         ist->pkt = av_packet_alloc();
         if (!ist->pkt)
             exit_program(1);
@@ -1520,6 +1524,10 @@  static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e
         exit_program(1);
     }
 
+    ost->filtered_frame = av_frame_alloc();
+    if (!ost->filtered_frame)
+        exit_program(1);
+
     ost->pkt = av_packet_alloc();
     if (!ost->pkt)
         exit_program(1);