X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fffmpeg.h;h=9e17d8b9024fda0a7b135175d78c6eb41f532c8c;hb=cdb8b00f2f7ecf0b4910a40e1d90a87540d2891d;hp=9bfd268adb7bd624f2473dfda6047ec467b44474;hpb=1d4f5d708de0d8ec19300b417354a3374d00ed47;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/ffmpeg.h b/cinelerra-5.1/cinelerra/ffmpeg.h index 9bfd268a..9e17d8b9 100644 --- a/cinelerra-5.1/cinelerra/ffmpeg.h +++ b/cinelerra-5.1/cinelerra/ffmpeg.h @@ -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 +{ +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;