X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fffmpeg.h;h=b4867b8eb1943879499d7a6ed33515d9533ff44f;hb=134e3b2ef6322953b40f7ec2567e8b883eb42830;hp=9656bf3970914db5ab27dee24dc2d91188bec8bf;hpb=d39e86b13734da9fb9eeec852bb0759bb051965b;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/ffmpeg.h b/cinelerra-5.1/cinelerra/ffmpeg.h index 9656bf39..b4867b8e 100644 --- a/cinelerra-5.1/cinelerra/ffmpeg.h +++ b/cinelerra-5.1/cinelerra/ffmpeg.h @@ -68,6 +68,7 @@ public: int initted() { return init; } void queue(int64_t pos); void dequeue(); + void set_hw_frame(AVFrame *frame); }; class FFStream { @@ -82,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); @@ -132,7 +133,6 @@ public: int reading, writing; int seeked, eof; - const char *hw_dev; int hw_pixfmt; AVBufferRef *hw_device_ctx; @@ -235,7 +235,9 @@ 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); int create_filter(const char *filter_spec, AVCodecParameters *avpar); void load_markers(); @@ -326,6 +328,7 @@ public: double opt_duration; char *opt_video_filter; char *opt_audio_filter; + char *opt_hw_dev; char file_format[BCTEXTLEN]; int fflags; @@ -388,6 +391,7 @@ public: int ff_video_mpeg_color_range(int stream); int ff_cpus(); + const char *ff_hw_dev(); void dump_context(AVCodecContext *ctx); };