8 #include "playbackconfig.h"
9 #include "device1394input.h"
10 #include "device1394output.h"
11 #include "preferences.h"
12 #include "recordconfig.h"
13 #include "videoconfig.h"
14 #include "videodevice.h"
16 #define SAMPLES_PER_FRAME 2048
18 Audio1394::Audio1394(AudioDevice *device)
19 : AudioLowLevel(device)
25 Audio1394::~Audio1394()
30 int Audio1394::initialize()
36 int Audio1394::open_input()
41 // Lock the channels for the DV format
42 device->in_channels = 2;
44 bytes_per_sample = device->in_channels * device->in_bits / 8;
47 input_thread = new Device1394Input;
48 result = input_thread->open(device->in_config->firewire_port,
49 device->in_config->firewire_channel,
52 device->in_samplerate,
66 int Audio1394::open_output()
70 // Lock the channels for the DV format
71 device->out_channels = 2;
72 device->out_bits = 16;
73 bytes_per_sample = device->out_channels * device->out_bits / 8;
75 output_thread = new Device1394Output(device);
77 if(device->driver == AUDIO_DV1394)
79 output_thread->open(device->out_config->dv1394_path,
80 device->out_config->dv1394_port,
81 device->out_config->dv1394_channel,
85 device->out_samplerate,
86 device->out_config->dv1394_syt);
90 output_thread->open(device->out_config->firewire_path,
91 device->out_config->firewire_port,
92 device->out_config->firewire_channel,
96 device->out_samplerate,
97 device->out_config->firewire_syt);
102 int Audio1394::close_all()
111 delete output_thread;
119 int Audio1394::read_buffer(char *buffer, int bytes)
123 input_thread->read_audio(buffer, bytes / bytes_per_sample);
129 int Audio1394::write_buffer(char *buffer, int bytes)
132 output_thread->write_samples(buffer, bytes / bytes_per_sample);
136 int64_t Audio1394::device_position()
139 return output_thread->get_audio_position();
145 int Audio1394::flush_device()
148 output_thread->flush();
152 int Audio1394::interrupt_playback()
155 output_thread->interrupt();