X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ffileffmpeg.h;h=5453b77ca61d0f0c692484fd4c45b11d93747170;hp=a9ce7d9cf458bd3d90efeb85a4611aeafa9ea3b0;hb=a19a685a46ddc630010788707d9e5b9d2342af46;hpb=2f28632d8209ef735de1698a596bc94fa9613497 diff --git a/cinelerra-5.1/cinelerra/fileffmpeg.h b/cinelerra-5.1/cinelerra/fileffmpeg.h index a9ce7d9c..5453b77c 100644 --- a/cinelerra-5.1/cinelerra/fileffmpeg.h +++ b/cinelerra-5.1/cinelerra/fileffmpeg.h @@ -1,10 +1,11 @@ #ifndef __FILEFFMPEG_H__ #define __FILEFFMPEG_H__ -#include "asset.inc" +#include "asset.inc" #include "bcdialog.h" #include "bcwindowbase.inc" -#include "bitspopup.inc" +#include "bitspopup.inc" +#include "edl.inc" #include "ffmpeg.h" #include "filebase.h" #include "fileffmpeg.inc" @@ -31,9 +32,12 @@ public: static void ff_lock(const char *cp=0); static void ff_unlock(); - static void get_parameters(BC_WindowBase *parent_window,Asset *asset, - BC_WindowBase *&format_window,int audio_options,int video_options); + static void set_options(char *cp, int len, const char *bp); + static void get_parameters(BC_WindowBase *parent_window, + Asset *asset, BC_WindowBase *&format_window, + int audio_options,int video_options, EDL *edl); static int check_sig(Asset *asset); + int get_best_colormodel(int driver, int vstream); int get_video_info(int track, int &pid, double &framerate, int &width, int &height, char *title=0); int get_audio_for_video(int vstream, int astream, int64_t &channel_mask); @@ -45,6 +49,7 @@ public: int write_frames(VFrame ***frames,int len); int read_samples(double *buffer,int64_t len); int read_frame(VFrame *frame); + int can_scale_input() { return 1; } int64_t get_memory_usage(void); int colormodel_supported(int colormodel); static int get_best_colormodel(Asset *asset, int driver); @@ -60,6 +65,7 @@ public: ~FFMpegConfigNum(); void create_objects(); + int update_param(const char *param, const char *opts); int handle_event(); int *output; BC_Window *window; @@ -85,6 +91,14 @@ public: int handle_event(); }; +class FFMpegAudioQuality : public FFMpegAudioNum +{ +public: + FFMpegAudioQuality(BC_Window *window, int x, int y, char *title_text, int *output) + : FFMpegAudioNum(window, x, y, title_text, output) {} + int handle_event(); +}; + class FFMpegVideoNum : public FFMpegConfigNum { public: @@ -110,22 +124,56 @@ public: int handle_event(); }; +class FFMpegPixFmtItems : public ArrayList +{ +public: + FFMpegPixFmtItems() {} + ~FFMpegPixFmtItems() { remove_all_objects(); } +}; + +class FFMpegPixelFormat : public BC_PopupTextBox +{ +public: + FFMpegPixelFormat(FFMPEGConfigVideo *vid_config, int x, int y, int w, int list_h); + + FFMPEGConfigVideo *vid_config; + FFMpegPixFmtItems pixfmts; + + int handle_event(); + void update_formats(); +}; + +class FFMpegSampleFormat : public BC_PopupTextBox +{ +public: + FFMpegSampleFormat(FFMPEGConfigAudio *aud_config, int x, int y, int w, int list_h); + + FFMPEGConfigAudio *aud_config; + ArrayList samplefmts; + + int handle_event(); + void update_formats(); +}; + class FFMPEGConfigAudio : public BC_Window { public: - FFMPEGConfigAudio(BC_WindowBase *parent_window, Asset *asset); + FFMPEGConfigAudio(BC_WindowBase *parent_window, Asset *asset, EDL *edl); ~FFMPEGConfigAudio(); void create_objects(); - void update_options(); int close_event(); + void load_options(); + FFMpegSampleFormat *sample_format; ArrayList presets; FFMPEGConfigAudioPopup *preset_popup; FFMpegAudioBitrate *bitrate; + FFMpegAudioQuality *quality; FFAudioOptions *audio_options; BC_WindowBase *parent_window; Asset *asset; + EDL *edl; FFOptionsDialog *ff_options_dialog; }; @@ -134,7 +182,6 @@ class FFAudioOptions : public BC_ScrollTextBox public: FFAudioOptions(FFMPEGConfigAudio *audio_popup, int x, int y, int w, int rows, int size, char *text); - int handle_event(); FFMPEGConfigAudio *audio_popup; }; @@ -162,13 +209,14 @@ public: class FFMPEGConfigVideo : public BC_Window { public: - FFMPEGConfigVideo(BC_WindowBase *parent_window, Asset *asset); + FFMPEGConfigVideo(BC_WindowBase *parent_window, Asset *asset, EDL *edl); ~FFMPEGConfigVideo(); void create_objects(); - void update_options(); int close_event(); + void load_options(); + FFMpegPixelFormat *pixel_format; ArrayList presets; FFMPEGConfigVideoPopup *preset_popup; BC_WindowBase *parent_window; @@ -176,6 +224,7 @@ public: FFMpegVideoQuality *quality; FFVideoOptions *video_options; Asset *asset; + EDL *edl; FFOptionsDialog *ff_options_dialog; }; @@ -184,7 +233,6 @@ class FFVideoOptions : public BC_ScrollTextBox public: FFVideoOptions(FFMPEGConfigVideo *video_popup, int x, int y, int w, int rows, int size, char *text); - int handle_event(); FFMPEGConfigVideo *video_popup; }; @@ -288,9 +336,11 @@ public: ArrayList items[2]; ArrayList &opts; ArrayList &vals; + char tip_text[BCTEXTLEN]; int selection_changed(); int update(); + void show_tip(const char *tip); }; class FFOptionsKindItem : public BC_MenuItem @@ -377,27 +427,27 @@ class FFOptionsDialog : public BC_DialogThread public: FFOptionsDialog(); ~FFOptionsDialog(); - virtual void update_options() = 0; + virtual void update_options(const char *options) = 0; - void load_options(); - void store_options(); - void start(const char *codec_name, AVCodec *codec, char *ff_options, int ff_len); + void load_options(const char *bp, int len); + void store_options(char *cp, int len); + void start(const char *format_name, const char *codec_name, + AVCodec *codec, const char *options, int len); BC_Window* new_gui(); void handle_done_event(int result); FFOptionsWindow *options_window; - const char *codec_name; + const char *format_name, *codec_name; AVCodec *codec; - char *ff_options; - int ff_len; AVDictionary *ff_opts; + int ff_len; }; class FFOptionsAudioDialog : public FFOptionsDialog { public: FFMPEGConfigAudio *aud_config; - void update_options(); + void update_options(const char *options); FFOptionsAudioDialog(FFMPEGConfigAudio *aud_config); ~FFOptionsAudioDialog(); @@ -407,7 +457,7 @@ class FFOptionsVideoDialog : public FFOptionsDialog { public: FFMPEGConfigVideo *vid_config; - void update_options(); + void update_options(const char *options); FFOptionsVideoDialog(FFMPEGConfigVideo *vid_config); ~FFOptionsVideoDialog();