r885: Don't delete a borrowed frame.
[cinelerra_cv/ct.git] / cinelerra / vdevicebase.h
blobb7764fb51adf5baaf8f8985745a473c65a4b6caa
1 #ifndef VDEVICEBASE_H
2 #define VDEVICEBASE_H
4 #include "asset.inc"
5 #include "assets.inc"
6 #include "channel.inc"
7 #include "edl.inc"
8 #include "guicast.h"
9 #include "picture.inc"
10 #include "videodevice.inc"
12 class VDeviceBase
14 public:
15 VDeviceBase(VideoDevice *device);
16 virtual ~VDeviceBase();
18 virtual int open_input() { return 1; };
19 virtual int close_all() { return 1; };
20 virtual int has_signal() { return 0; };
21 virtual int read_buffer(VFrame *frame) { return 1; };
22 virtual int write_buffer(VFrame *output, EDL *edl) { return 1; };
23 virtual void new_output_buffer(VFrame **output, int colormodel) {};
24 virtual ArrayList<int>* get_render_strategies() { return 0; };
25 virtual int get_shared_data(unsigned char *data, long size) { return 0; };
26 virtual int stop_sharing() { return 0; };
27 virtual int interrupt_crash() { return 0; };
28 // Extra work must sometimes be done in here to set up the device.
29 virtual int get_best_colormodel(Asset *asset);
30 virtual int set_channel(Channel *channel) { return 0; };
31 virtual int set_picture(PictureConfig *picture) { return 0; };
33 virtual int open_output() { return 1; };
34 virtual int output_visible() { return 0; };
35 virtual int start_playback() { return 1; };
36 virtual int stop_playback() { return 1; };
37 virtual BC_Bitmap* get_bitmap() { return 0; };
38 // Most Linux video drivers don't work.
39 // Called by KeepaliveThread when the device appears to be stuck.
40 // Should restart the device if that's what it takes to get it to work.
41 virtual void goose_input() {};
43 // Called by Record::run to fix compression for certain devices.
44 // Not saved as default asset.
45 virtual void fix_asset(Asset *asset) {};
47 VideoDevice *device;
50 #endif