00001 #ifndef FILEEXR_H
00002 #define FILEEXR_H
00003
00004
00005 #include "file.inc"
00006 #include "filelist.h"
00007 #include "vframe.inc"
00008
00009 class FileEXR : public FileList
00010 {
00011 public:
00012 FileEXR(Asset *asset, File *file);
00013 ~FileEXR();
00014
00015 static int check_sig(Asset *asset, char *test);
00016 static void get_parameters(BC_WindowBase *parent_window,
00017 Asset *asset,
00018 BC_WindowBase* &format_window,
00019 int audio_options,
00020 int video_options);
00021 static int get_best_colormodel(Asset *asset, int driver);
00022 int colormodel_supported(int colormodel);
00023 int read_frame_header(char *path);
00024 int read_frame(VFrame *frame, VFrame *data);
00025 int get_memory_usage();
00026 int write_frame(VFrame *frame, VFrame *data, FrameWriterUnit *unit);
00027 FrameWriterUnit* new_writer_unit(FrameWriter *writer);
00028
00029
00030 enum
00031 {
00032 NONE,
00033 PIZ,
00034 ZIP,
00035 ZIPS,
00036 RLE,
00037 PXR24
00038 };
00039
00040 static char* compression_to_str(int compression);
00041 static int str_to_compression(char *string);
00042 static int compression_to_exr(int compression);
00043
00044 int native_cmodel;
00045 int is_yuv;
00046 float *temp_y;
00047 float *temp_u;
00048 float *temp_v;
00049 };
00050
00051 class EXRUnit : public FrameWriterUnit
00052 {
00053 public:
00054 EXRUnit(FileEXR *file, FrameWriter *writer);
00055 ~EXRUnit();
00056
00057 FileEXR *file;
00058 VFrame *temp_frame;
00059 };
00060
00061
00062
00063 class EXRConfigVideo : public BC_Window
00064 {
00065 public:
00066 EXRConfigVideo(BC_WindowBase *parent_window, Asset *asset);
00067 ~EXRConfigVideo();
00068
00069 int create_objects();
00070 int close_event();
00071
00072 BC_WindowBase *parent_window;
00073 Asset *asset;
00074 };
00075
00076
00077 class EXRUseAlpha : public BC_CheckBox
00078 {
00079 public:
00080 EXRUseAlpha(EXRConfigVideo *gui, int x, int y);
00081 int handle_event();
00082 EXRConfigVideo *gui;
00083 };
00084
00085 class EXRCompression : public BC_PopupMenu
00086 {
00087 public:
00088 EXRCompression(EXRConfigVideo *gui, int x, int y, int w);
00089 void create_objects();
00090 int handle_event();
00091 EXRConfigVideo *gui;
00092 };
00093
00094 class EXRCompressionItem : public BC_MenuItem
00095 {
00096 public:
00097 EXRCompressionItem(EXRConfigVideo *gui, int value);
00098 int handle_event();
00099 EXRConfigVideo *gui;
00100 int value;
00101 };
00102
00103 #endif