X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fffmpeg.h;h=91ad65a6488f9ceb15435be04e63197c3e226247;hb=d487c455c679829f94dee4ea8276ad3116f76de9;hp=d9ca7836bbe0a2eb1776a3fbc4dda042805b2c3b;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/ffmpeg.h b/cinelerra-5.1/cinelerra/ffmpeg.h index d9ca7836..91ad65a6 100644 --- a/cinelerra-5.1/cinelerra/ffmpeg.h +++ b/cinelerra-5.1/cinelerra/ffmpeg.h @@ -40,12 +40,14 @@ extern "C" { class FFPacket { AVPacket pkt; public: - FFPacket(); - ~FFPacket(); - void init(); operator AVPacket*() { return &pkt; } operator AVPacket&() { return pkt; } AVPacket *operator ->() { return &pkt; } + + void init(); + void finit(); + FFPacket() { init(); } + ~FFPacket() { finit(); } }; class FFrame : public ListItem { @@ -93,6 +95,7 @@ public: virtual int create_filter(const char *filter_spec, AVCodecContext *src_ctx, AVCodecContext *sink_ctx) = 0; virtual void load_markers() = 0; + virtual IndexMarks *get_markers() = 0; int create_filter(const char *filter_spec); int load_filter(AVFrame *frame); int read_filter(AVFrame *frame); @@ -130,7 +133,6 @@ public: int frm_count; List frms; Mutex *frm_lock; - IndexMarks *index_markers; int64_t nudge; int64_t seek_pos, curr_pos; @@ -171,6 +173,7 @@ public: int create_filter(const char *filter_spec, AVCodecContext *src_ctx, AVCodecContext *sink_ctx); void load_markers(); + IndexMarks *get_markers(); int encode_activate(); int nb_samples(); @@ -206,18 +209,14 @@ public: static AVPixelFormat color_model_to_pix_fmt(int color_model); static int pix_fmt_to_color_model(AVPixelFormat pix_fmt); - int convert_picture_vframe(VFrame *frame, - AVFrame *ip, AVPixelFormat ifmt, int iw, int ih); - int convert_cmodel(VFrame *frame_out, - AVFrame *ip, AVPixelFormat ifmt, int iw, int ih); - int transfer_cmodel(VFrame *frame_in, //defaults->metadata - AVFrame *ifp, AVPixelFormat ifmt, int iw, int ih); - int convert_vframe_picture(VFrame *frame, - AVFrame *op, AVPixelFormat ofmt, int ow, int oh); - int convert_pixfmt(VFrame *frame_in, - AVFrame *op, AVPixelFormat ofmt, int ow, int oh); - int transfer_pixfmt(VFrame *frame_in, //metadata->defaults - AVFrame *ofp, AVPixelFormat ofmt, int ow, int oh); + int convert_picture_vframe(VFrame *frame, AVFrame *ip); + int convert_picture_vframe(VFrame *frame, AVFrame *ip, AVFrame *ipic); + int convert_cmodel(VFrame *frame, AVFrame *ip); + int transfer_cmodel(VFrame *frame, AVFrame *ifp); + int convert_vframe_picture(VFrame *frame, AVFrame *op); + int convert_vframe_picture(VFrame *frame, AVFrame *op, AVFrame *opic); + int convert_pixfmt(VFrame *frame, AVFrame *op); + int transfer_pixfmt(VFrame *frame, AVFrame *ofp); }; class FFVideoStream : public FFStream, public FFVideoConvert { @@ -231,6 +230,7 @@ public: int create_filter(const char *filter_spec, AVCodecContext *src_ctx, AVCodecContext *sink_ctx); void load_markers(); + IndexMarks *get_markers(); int init_frame(AVFrame *picture); int load(VFrame *vframe, int64_t pos); @@ -261,8 +261,12 @@ public: static void set_option_path(char *path, const char *fmt, ...); static void get_option_path(char *path, const char *type, const char *spec); - static int get_format(char *format, const char *path, char *spec); + static int get_format(char *format, const char *path, const char *spec); + static int get_codec(char *codec, const char *path, const char *spec); static int scan_option_line(char *cp,char *tag,char *val); + static int load_defaults(const char *path, const char *type, + char *codec, char *codec_options, int len); + static void set_asset_format(Asset *asset, const char *text); int get_file_format(); int get_encoder(const char *options, char *format, char *codec, char *bsfilter, char *bsargs); @@ -321,7 +325,7 @@ public: Condition *mux_lock; Condition *flow_lock; int done, flow; - + void start_muxer(); void stop_muxer(); void flow_off();