X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fcinelerra%2Fffmpeg.h;h=f665fa922a5b6afc9e0ce0cabdd168543c7d7431;hb=a4de4732339bf38b5b225c533be1bdf60748f04a;hp=d60337fb2280fae079886751a8e423c4ea9380b6;hpb=2f28632d8209ef735de1698a596bc94fa9613497;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/ffmpeg.h b/cinelerra-5.1/cinelerra/ffmpeg.h index d60337fb..f665fa92 100644 --- a/cinelerra-5.1/cinelerra/ffmpeg.h +++ b/cinelerra-5.1/cinelerra/ffmpeg.h @@ -95,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); @@ -132,7 +133,6 @@ public: int frm_count; List frms; Mutex *frm_lock; - IndexMarks *index_markers; int64_t nudge; int64_t seek_pos, curr_pos; @@ -173,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(); @@ -208,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 { @@ -233,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); @@ -245,9 +243,8 @@ public: int64_t length; float aspect_ratio; - uint8_t *pkt_bfr; - int pkt_bfr_sz; - int64_t start_pts; + int interlaced; + int top_field_first; }; class FFMPEG : public Thread { @@ -274,7 +271,7 @@ public: char *format, char *codec, char *bsfilter, char *bsargs); int get_encoder(FILE *fp, char *format, char *codec, char *bsfilter, char *bsargs); - int read_options(const char *options, AVDictionary *&opts); + int read_options(const char *options, AVDictionary *&opts, int skip=0); int scan_options(const char *options, AVDictionary *&opts, AVStream *st); int read_options(FILE *fp, const char *options, AVDictionary *&opts); int load_options(const char *options, AVDictionary *&opts); @@ -327,7 +324,7 @@ public: Condition *mux_lock; Condition *flow_lock; int done, flow; - + void start_muxer(); void stop_muxer(); void flow_off();