00001 #ifndef VDEVICEBASE_H 00002 #define VDEVICEBASE_H 00003 00004 #include "asset.inc" 00005 #include "assets.inc" 00006 #include "channel.inc" 00007 #include "edl.inc" 00008 #include "guicast.h" 00009 #include "picture.inc" 00010 #include "videodevice.inc" 00011 00012 class VDeviceBase 00013 { 00014 public: 00015 VDeviceBase(VideoDevice *device); 00016 virtual ~VDeviceBase(); 00017 00018 virtual int open_input() { return 1; }; 00019 virtual int close_all() { return 1; }; 00020 virtual int has_signal() { return 0; }; 00021 virtual int read_buffer(VFrame *frame) { return 1; }; 00022 virtual int write_buffer(VFrame *output, EDL *edl) { return 1; }; 00023 virtual void new_output_buffer(VFrame **output, int colormodel) {}; 00024 virtual ArrayList<int>* get_render_strategies() { return 0; }; 00025 virtual int get_shared_data(unsigned char *data, long size) { return 0; }; 00026 virtual int stop_sharing() { return 0; }; 00027 virtual int interrupt_crash() { return 0; }; 00028 // Extra work must sometimes be done in here to set up the device. 00029 virtual int get_best_colormodel(Asset *asset); 00030 virtual int set_channel(Channel *channel) { return 0; }; 00031 virtual int set_picture(PictureConfig *picture) { return 0; }; 00032 00033 virtual int open_output() { return 1; }; 00034 virtual int output_visible() { return 0; }; 00035 virtual int start_playback() { return 1; }; 00036 virtual int stop_playback() { return 1; }; 00037 virtual BC_Bitmap* get_bitmap() { return 0; }; 00038 // Most Linux video drivers don't work. 00039 // Called by KeepaliveThread when the device appears to be stuck. 00040 // Should restart the device if that's what it takes to get it to work. 00041 virtual void goose_input() {}; 00042 00043 // Called by Record::run to fix compression for certain devices. 00044 // Not saved as default asset. 00045 virtual void fix_asset(Asset *asset) {}; 00046 00047 VideoDevice *device; 00048 }; 00049 00050 #endif
1.5.5