00001 #ifndef FILEYUV_H
00002 #define FILEYUV_H
00003
00004 #include "yuvstream.h"
00005 #include "file.inc"
00006 #include "filelist.h"
00007 #include "vframe.inc"
00008 #include "formattools.h"
00009 #include "ffmpeg.h"
00010
00011 class FileYUV : public FileBase
00012 {
00013 public:
00014 FileYUV(Asset *asset, File *file);
00015 ~FileYUV();
00016
00017 static void get_parameters(BC_WindowBase *parent_window,
00018 Asset *asset,
00019 BC_WindowBase* &format_window,
00020 int video_options,
00021 FormatTools *format);
00022
00023 int open_file(int rd, int wr);
00024 static int check_sig(Asset *asset);
00025 static int get_best_colormodel(Asset *asset, int driver);
00026 int colormodel_supported(int colormodel);
00027 int read_frame(VFrame *frame);
00028 int write_frames(VFrame ***frame, int len);
00029 int can_copy_from(Edit *edit, int64_t position);
00030 int close_file();
00031 int set_video_position(int64_t x);
00032
00033
00034 void ensure_temp(int width, int height);
00035
00036 private:
00037 VFrame *temp;
00038 YUVStream *stream;
00039 Asset *incoming_asset;
00040 FFMPEG *ffmpeg;
00041 int pipe_latency;
00042 };
00043
00044
00045 class YUVConfigVideo : public BC_Window
00046 {
00047 public:
00048 YUVConfigVideo(BC_WindowBase *parent_window, Asset *asset,
00049 FormatTools *format);
00050 ~YUVConfigVideo();
00051
00052 int create_objects();
00053 int close_event();
00054
00055 BC_WindowBase *parent_window;
00056 Asset *asset;
00057 FormatTools *format;
00058 Defaults *defaults;
00059 BC_TextBox *path_textbox;
00060 BC_RecentList *path_recent;
00061 PipeConfig *pipe_config;
00062 PipePreset *mpeg2enc;
00063 PipePreset *ffmpeg;
00064 };
00065
00066
00067 #endif