3 #include "audioconfig.h"
4 #include "audiodevice.h"
5 #include "device1394input.h"
6 #include "device1394output.h"
8 #include "preferences.h"
9 #include "recordconfig.h"
10 #include "vdevice1394.h"
12 #include "playbackconfig.h"
13 #include "videodevice.h"
25 VDevice1394::VDevice1394(VideoDevice *device)
31 VDevice1394::~VDevice1394()
36 int VDevice1394::initialize()
43 int VDevice1394::open_input()
45 //printf("VDevice1394::open_input 1\n");
46 // Share audio driver. The audio driver does the capturing in this case
47 // and fills video frames for us.
50 (device->adevice->in_config->driver == AUDIO_1394 ||
51 device->adevice->in_config->driver == AUDIO_DV1394))
53 Audio1394 *low_level = (Audio1394*)device->adevice->get_lowlevel_in();
54 input_thread = low_level->input_thread;
60 input_thread = new Device1394Input;
61 result = input_thread->open(device->in_config->firewire_port,
62 device->in_config->firewire_channel,
63 device->in_config->capture_length,
68 device->in_config->h);
78 int VDevice1394::open_output()
80 // Share audio driver. The audio driver takes DV frames from us and
83 (device->adevice->out_config->driver == AUDIO_1394 ||
84 device->adevice->out_config->driver == AUDIO_DV1394))
86 Audio1394 *low_level = (Audio1394*)device->adevice->get_lowlevel_out();
87 output_thread = low_level->output_thread;
93 output_thread = new Device1394Output(device);
94 if(device->out_config->driver == PLAYBACK_DV1394)
96 output_thread->open(device->out_config->dv1394_path,
97 device->out_config->dv1394_port,
98 device->out_config->dv1394_channel,
103 device->out_config->dv1394_syt);
107 output_thread->open(device->out_config->firewire_path,
108 device->out_config->firewire_port,
109 device->out_config->firewire_channel,
114 device->out_config->firewire_syt);
121 int VDevice1394::close_all()
138 delete output_thread;
142 if(user_frame) delete user_frame;
148 int VDevice1394::read_buffer(VFrame *frame)
153 if(!input_thread) return 1;
155 input_thread->read_video(frame);
161 void VDevice1394::new_output_buffer(VFrame **outputs,
166 if(colormodel != user_frame->get_color_model())
178 user_frame = new VFrame;
181 user_frame = new VFrame(0,
189 user_frame->set_shm_offset(0);
190 outputs[0] = user_frame;
193 int VDevice1394::write_buffer(VFrame **frame, EDL *edl)
195 output_thread->write_frame(frame[0]);
202 int VDevice1394::can_copy_from(Asset *asset, int output_w, int output_h)
217 #endif // HAVE_FIREWIRE