diff mbox series

[FFmpeg-devel,24/31] fftools/ffmpeg_dec: pass AVCodec through DecoderOpts

Message ID 20240124081702.4759-24-anton@khirnov.net
State Accepted
Commit b3d1916ba03086d9d1e80a2ff5fdee2c915152ae
Headers show
Series [FFmpeg-devel,01/31] fftools/ffmpeg_dec: split Decoder into a private and public part | expand

Checks

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

Commit Message

Anton Khirnov Jan. 24, 2024, 8:16 a.m. UTC
Do not retrieve it from InputStream directly.

This is a step towards decoupling Decoder and InputStream.
---
 fftools/ffmpeg.h       | 2 ++
 fftools/ffmpeg_dec.c   | 2 +-
 fftools/ffmpeg_demux.c | 2 ++
 3 files changed, 5 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h
index bdfacf16b7..b169b1a323 100644
--- a/fftools/ffmpeg.h
+++ b/fftools/ffmpeg.h
@@ -297,6 +297,8 @@  typedef struct DecoderOpts {
 
     char                       *name;
 
+    const AVCodec              *codec;
+
     /* hwaccel options */
     enum HWAccelID              hwaccel_id;
     enum AVHWDeviceType         hwaccel_device_type;
diff --git a/fftools/ffmpeg_dec.c b/fftools/ffmpeg_dec.c
index ba261f4912..c64b9f5b70 100644
--- a/fftools/ffmpeg_dec.c
+++ b/fftools/ffmpeg_dec.c
@@ -951,7 +951,7 @@  int dec_open(InputStream *ist, Scheduler *sch, unsigned sch_idx,
              AVDictionary **dec_opts, const DecoderOpts *o)
 {
     DecoderPriv *dp;
-    const AVCodec *codec = ist->dec;
+    const AVCodec *codec = o->codec;
     int ret;
 
     ret = dec_alloc(&ist->decoder);
diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
index 8bc73e2bf3..f66319aafe 100644
--- a/fftools/ffmpeg_demux.c
+++ b/fftools/ffmpeg_demux.c
@@ -930,6 +930,8 @@  static int ist_use(InputStream *ist, int decoding_needed)
         snprintf(ds->dec_name, sizeof(ds->dec_name), "%d:%d", ist->file->index, ist->index);
         ds->dec_opts.name = ds->dec_name;
 
+        ds->dec_opts.codec = ist->dec;
+
         ret = dec_open(ist, d->sch, ds->sch_idx_dec,
                        &ist->decoder_opts, &ds->dec_opts);
         if (ret < 0)