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);
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);
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;
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;