add libdav1d codec, add remap_a/v_codec option keywords
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / ffmpeg.h
index 9bfd268adb7bd624f2473dfda6047ec467b44474..9e17d8b9024fda0a7b135175d78c6eb41f532c8c 100644 (file)
@@ -83,7 +83,7 @@ public:
        virtual int encode_activate();
        virtual int decode_activate();
        virtual AVHWDeviceType decode_hw_activate();
-       virtual void decode_hw_format(AVCodec *decoder, AVHWDeviceType type);
+       virtual int decode_hw_format(AVCodec *decoder, AVHWDeviceType type);
        virtual int write_packet(FFPacket &pkt);
        int read_packet();
        int seek(int64_t no, double rate);
@@ -235,7 +235,7 @@ public:
        int is_video() { return 1; }
        int decode_frame(AVFrame *frame);
        AVHWDeviceType decode_hw_activate();
-       void decode_hw_format(AVCodec *decoder, AVHWDeviceType type);
+       int decode_hw_format(AVCodec *decoder, AVHWDeviceType type);
        AVHWDeviceType encode_hw_activate(const char *hw_dev);
        int encode_hw_write(FFrame *picture);
        int encode_frame(AVFrame *frame);
@@ -259,6 +259,22 @@ public:
        int top_field_first;
 };
 
+class FFCodecRemap
+{
+public:
+       FFCodecRemap();
+       ~FFCodecRemap();
+       const char *old_codec, *new_codec;
+};
+
+class FFCodecRemaps : public ArrayList<FFCodecRemap>
+{
+public:
+       FFCodecRemaps() {}
+       int add(const char *val);
+       int update(AVCodecID &codec_id, AVCodec *&decoder);
+};
+
 class FFMPEG : public Thread {
 public:
        static Mutex fflock;
@@ -329,6 +345,10 @@ public:
        char *opt_video_filter;
        char *opt_audio_filter;
        char *opt_hw_dev;
+       char *opt_video_decoder;
+       char *opt_audio_decoder;
+       FFCodecRemaps video_codec_remaps;
+       FFCodecRemaps audio_codec_remaps;
        char file_format[BCTEXTLEN];
        int fflags;