diff mbox series

[FFmpeg-devel,03/11] fftools/ffmpeg_enc: stop configuring filter inputs from encoder flush

Message ID 20230505090723.24872-3-anton@khirnov.net
State Accepted
Commit 48d8d3549a1b97d6f811b7d0bed8b0fdb6a0dc6d
Headers show
Series [FFmpeg-devel,01/11] fftools/ffmpeg: merge choose_output() and got_eagain() | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished

Commit Message

Anton Khirnov May 5, 2023, 9:07 a.m. UTC
When no frames are ever seen by an encoder, encoder flush will do a
last-ditch attempt to configure its source filtergraph in order to at
least get the stream parameters. This involves extracting demuxer
parameters from filtergraph source inputs, which is
* a bad layering violation
* probably unreachable, because decoders are flushed before encoders,
  which should call ifilter_send_eof(), which will also set these
  parameters; however due to complex control flow it is hard to be
  entirely sure this code can never be triggered

Even if this code can actually be reached, it is probably better to
return an error as the comment above it says.
---
 fftools/ffmpeg_enc.c | 10 ----------
 1 file changed, 10 deletions(-)
diff mbox series

Patch

diff --git a/fftools/ffmpeg_enc.c b/fftools/ffmpeg_enc.c
index 5707199ac5..06a1cbc95f 100644
--- a/fftools/ffmpeg_enc.c
+++ b/fftools/ffmpeg_enc.c
@@ -1137,16 +1137,6 @@  void enc_flush(void)
                    "Finishing stream without any data written to it.\n");
 
             if (ost->filter && !fg->graph) {
-                int x;
-                for (x = 0; x < fg->nb_inputs; x++) {
-                    InputFilter *ifilter = fg->inputs[x];
-                    if (ifilter->format < 0 &&
-                        ifilter_parameters_from_codecpar(ifilter, ifilter->ist->par) < 0) {
-                        av_log(ost, AV_LOG_ERROR, "Error copying paramerets from input stream\n");
-                        exit_program(1);
-                    }
-                }
-
                 if (!ifilter_has_all_input_formats(fg))
                     continue;