X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Ffileffmpeg.h;h=ed95ee9460740e2b12c98f6d6999ab9b38ca6bcc;hb=a3a59f63fdfbcf94c561595f515951fdfd4bea30;hp=db46e696370fe133d360929569492877b1c53f29;hpb=2d99bb8ce591f05a31464b517d85dc2bc35b2abe;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/fileffmpeg.h b/cinelerra-5.0/cinelerra/fileffmpeg.h index db46e696..ed95ee94 100644 --- a/cinelerra-5.0/cinelerra/fileffmpeg.h +++ b/cinelerra-5.0/cinelerra/fileffmpeg.h @@ -3,11 +3,12 @@ #include "asset.inc" #include "bcwindowbase.inc" +#include "bcprogressbox.inc" #include "bitspopup.inc" #include "filebase.h" #include "fileffmpeg.inc" -#include "mwindow.inc" #include "mutex.h" +#include "thread.h" #include "vframe.inc" #include @@ -16,6 +17,20 @@ #include #include +class FileFFMPEG; +class FFMpegConfigNum; +class FFMpegAudioNum; +class FFMpegVideoNum; +class FFOkButton; +class FFOptions; +class FFMPEGConfigAudio; +class FFAudioOptions; +class FFMPEGConfigAudioPopup; +class FFMPEGConfigAudioToggle; +class FFMPEGConfigVideo; +class FFVideoOptions; +class FFMPEGConfigVideoPopup; +class FFMPEGConfigVideoToggle; class FileFFMPEG : public FileBase { @@ -33,8 +48,9 @@ public: 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); - static void get_info(char *path,char *text); + static void get_info(char *path,char *text,int len); int open_file(int rd,int wr); + int get_index(char *index_filename); int close_file(void); int set_video_position(int64_t pos); int set_audio_position(int64_t pos); @@ -49,6 +65,63 @@ public: int select_audio_stream(Asset *asset, int astream); }; +class FFMpegConfigNum : public BC_TumbleTextBox +{ +public: + FFMpegConfigNum(BC_Window *window, int x, int y, + char *title_text, int *output); + ~FFMpegConfigNum(); + + void create_objects(); + int handle_event(); + int *output; + BC_Window *window; + BC_Title *title; + char *title_text; + int x, y; +}; + +class FFMpegAudioNum : public FFMpegConfigNum +{ +public: + FFMpegAudioNum(BC_Window *window, int x, int y, char *title_text, int *output); + ~FFMpegAudioNum() {} + + FFMPEGConfigAudio *window() { return (FFMPEGConfigAudio *)FFMpegConfigNum::window; } +}; + +class FFMpegAudioBitrate : public FFMpegAudioNum +{ +public: + FFMpegAudioBitrate(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: + FFMpegVideoNum(BC_Window *window, int x, int y, char *title_text, int *output); + ~FFMpegVideoNum() {} + + FFMPEGConfigVideo *window() { return (FFMPEGConfigVideo *)FFMpegConfigNum::window; } +}; + +class FFMpegVideoBitrate : public FFMpegVideoNum +{ +public: + FFMpegVideoBitrate(BC_Window *window, int x, int y, char *title_text, int *output) + : FFMpegVideoNum(window, x, y, title_text, output) {} + int handle_event(); +}; + +class FFMpegVideoQuality : public FFMpegVideoNum +{ +public: + FFMpegVideoQuality(BC_Window *window, int x, int y, char *title_text, int *output) + : FFMpegVideoNum(window, x, y, title_text, output) {} + int handle_event(); +}; class FFMPEGConfigAudio : public BC_Window { @@ -61,10 +134,22 @@ public: ArrayList presets; FFMPEGConfigAudioPopup *preset_popup; + FFMpegAudioBitrate *bitrate; + FFAudioOptions *audio_options; BC_WindowBase *parent_window; Asset *asset; }; +class FFAudioOptions : public BC_TextBox +{ +public: + FFAudioOptions(FFMPEGConfigAudio *audio_popup, + int x, int y, int w, int rows, int size, char *text); + int handle_event(); + + FFMPEGConfigAudio *audio_popup; +}; + class FFMPEGConfigAudioPopup : public BC_PopupTextBox { @@ -97,9 +182,22 @@ public: ArrayList presets; FFMPEGConfigVideoPopup *preset_popup; BC_WindowBase *parent_window; + FFMpegVideoBitrate *bitrate; + FFMpegVideoQuality *quality; + FFVideoOptions *video_options; Asset *asset; }; +class FFVideoOptions : public BC_TextBox +{ +public: + FFVideoOptions(FFMPEGConfigVideo *video_popup, + int x, int y, int w, int rows, int size, char *text); + int handle_event(); + + FFMPEGConfigVideo *video_popup; +}; + class FFMPEGConfigVideoPopup : public BC_PopupTextBox { public: @@ -118,4 +216,17 @@ public: FFMPEGConfigVideo *popup; }; +class FFMPEGScanProgress : public Thread +{ +public: + char progress_title[BCTEXTLEN]; + BC_ProgressBox *progress; + int64_t length, *position; + int done, *canceled; + + FFMPEGScanProgress(const char *title, int64_t length, int64_t *position, int *canceled); + ~FFMPEGScanProgress(); + void run(); +}; + #endif