move aspect ratio fixex, better get_info, fixes for ffmpeg asset detection
[goodguy/history.git] / cinelerra-5.0 / cinelerra / fileffmpeg.h
index db46e696370fe133d360929569492877b1c53f29..bde3d5d5f5f34541e8d6a0db80a0b329ee82dabd 100644 (file)
 #include <unistd.h>
 #include <string.h>
 
+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,7 +47,7 @@ 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 close_file(void);
        int set_video_position(int64_t pos);
@@ -49,6 +63,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 +132,22 @@ public:
 
        ArrayList<BC_ListBoxItem*> 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 +180,22 @@ public:
        ArrayList<BC_ListBoxItem*> 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: