3 #include "playbackconfig.h"
4 #include "videodevice.inc"
7 AudioOutConfig::AudioOutConfig(int duplex)
11 fragment_size = 16384;
17 for(int i = 0; i < MAXDEVICES; i++)
19 oss_enable[i] = (i == 0);
20 sprintf(oss_out_device[i], "/dev/dsp");
21 oss_out_channels[i] = 2;
24 sprintf(esound_out_server, "");
27 sprintf(alsa_out_device, "default");
28 alsa_out_channels = 2;
30 interrupt_workaround = 0;
32 firewire_channels = 2;
33 firewire_channel = 63;
35 strcpy(firewire_path, "/dev/video1394");
41 strcpy(dv1394_path, "/dev/dv1394");
44 bzero(do_channel, sizeof(int) * MAX_CHANNELS);
47 AudioOutConfig::~AudioOutConfig()
53 int AudioOutConfig::operator!=(AudioOutConfig &that)
55 return !(*this == that);
58 int AudioOutConfig::operator==(AudioOutConfig &that)
61 fragment_size == that.fragment_size &&
62 driver == that.driver &&
63 EQUIV(audio_offset, that.audio_offset) &&
66 !strcmp(oss_out_device[0], that.oss_out_device[0]) &&
67 (oss_out_channels[0] == that.oss_out_channels[0]) &&
68 (oss_out_bits == that.oss_out_bits) &&
72 !strcmp(esound_out_server, that.esound_out_server) &&
73 (esound_out_port == that.esound_out_port) &&
77 !strcmp(alsa_out_device, that.alsa_out_device) &&
78 (alsa_out_channels == that.alsa_out_channels) &&
79 (alsa_out_bits == that.alsa_out_bits) &&
80 (interrupt_workaround == that.interrupt_workaround) &&
82 firewire_channels == that.firewire_channels &&
83 firewire_channel == that.firewire_channel &&
84 firewire_port == that.firewire_port &&
85 firewire_syt == that.firewire_syt &&
86 !strcmp(firewire_path, that.firewire_path) &&
88 dv1394_channels == that.dv1394_channels &&
89 dv1394_channel == that.dv1394_channel &&
90 dv1394_port == that.dv1394_port &&
91 dv1394_syt == that.dv1394_syt &&
92 !strcmp(dv1394_path, that.dv1394_path);
97 AudioOutConfig& AudioOutConfig::operator=(AudioOutConfig &that)
103 void AudioOutConfig::copy_from(AudioOutConfig *src)
105 fragment_size = src->fragment_size;
106 driver = src->driver;
107 audio_offset = src->audio_offset;
109 strcpy(esound_out_server, src->esound_out_server);
110 esound_out_port = src->esound_out_port;
111 for(int i = 0; i < MAXDEVICES; i++)
113 oss_enable[i] = src->oss_enable[i];
114 strcpy(oss_out_device[i], src->oss_out_device[i]);
115 oss_out_channels[i] = src->oss_out_channels[i];
117 oss_out_bits = src->oss_out_bits;
119 strcpy(alsa_out_device, src->alsa_out_device);
120 alsa_out_channels = src->alsa_out_channels;
121 alsa_out_bits = src->alsa_out_bits;
122 interrupt_workaround = src->interrupt_workaround;
124 firewire_channels = src->firewire_channels;
125 firewire_channel = src->firewire_channel;
126 firewire_port = src->firewire_port;
127 firewire_syt = src->firewire_syt;
128 strcpy(firewire_path, src->firewire_path);
130 dv1394_channels = src->dv1394_channels;
131 dv1394_channel = src->dv1394_channel;
132 dv1394_port = src->dv1394_port;
133 dv1394_syt = src->dv1394_syt;
134 strcpy(dv1394_path, src->dv1394_path);
136 for(int i = 0; i < MAXCHANNELS; i++)
137 do_channel[i] = src->do_channel[i];
140 int AudioOutConfig::load_defaults(Defaults *defaults)
142 char string[BCTEXTLEN];
144 fragment_size = defaults->get("FRAGMENT_SIZE", fragment_size);
145 audio_offset = defaults->get("AUDIO_OFFSET", audio_offset);
146 sprintf(string, "AUDIO_OUT_DRIVER_%d", duplex);
147 driver = defaults->get(string, driver);
149 for(int i = 0; i < MAXDEVICES; i++)
151 sprintf(string, "OSS_ENABLE_%d_%d", i, duplex);
152 oss_enable[i] = defaults->get(string, oss_enable[i]);
153 sprintf(string, "OSS_OUT_DEVICE_%d_%d", i, duplex);
154 defaults->get(string, oss_out_device[i]);
155 sprintf(string, "OSS_OUT_CHANNELS_%d_%d", i, duplex);
156 oss_out_channels[i] = defaults->get(string, oss_out_channels[i]);
158 sprintf(string, "OSS_OUT_BITS_%d", duplex);
159 oss_out_bits = defaults->get(string, oss_out_bits);
161 defaults->get("ALSA_OUT_DEVICE", alsa_out_device);
162 alsa_out_channels = defaults->get("ALSA_OUT_CHANNELS", alsa_out_channels);
163 alsa_out_bits = defaults->get("ALSA_OUT_BITS", alsa_out_bits);
164 interrupt_workaround = defaults->get("ALSA_INTERRUPT_WORKAROUND", interrupt_workaround);
166 sprintf(string, "ESOUND_OUT_SERVER_%d", duplex);
167 defaults->get(string, esound_out_server);
168 sprintf(string, "ESOUND_OUT_PORT_%d", duplex);
169 esound_out_port = defaults->get(string, esound_out_port);
171 sprintf(string, "AFIREWIRE_OUT_CHANNELS");
172 firewire_channels = defaults->get(string, firewire_channels);
173 sprintf(string, "AFIREWIRE_OUT_CHANNEL");
174 firewire_channel = defaults->get(string, firewire_channel);
175 sprintf(string, "AFIREWIRE_OUT_PORT");
176 firewire_port = defaults->get(string, firewire_port);
177 sprintf(string, "AFIREWIRE_OUT_PATH");
178 defaults->get(string, firewire_path);
179 sprintf(string, "AFIREWIRE_OUT_SYT");
180 firewire_syt = defaults->get(string, firewire_syt);
182 sprintf(string, "ADV1394_OUT_CHANNELS");
183 dv1394_channels = defaults->get(string, dv1394_channels);
184 sprintf(string, "ADV1394_OUT_CHANNEL");
185 dv1394_channel = defaults->get(string, dv1394_channel);
186 sprintf(string, "ADV1394_OUT_PORT");
187 dv1394_port = defaults->get(string, dv1394_port);
188 sprintf(string, "ADV1394_OUT_PATH");
189 defaults->get(string, dv1394_path);
190 sprintf(string, "ADV1394_OUT_SYT");
191 dv1394_syt = defaults->get(string, dv1394_syt);
196 int AudioOutConfig::save_defaults(Defaults *defaults)
198 char string[BCTEXTLEN];
200 defaults->update("FRAGMENT_SIZE", fragment_size);
201 defaults->update("AUDIO_OFFSET", audio_offset);
203 sprintf(string, "AUDIO_OUT_DRIVER_%d", duplex);
204 defaults->update(string, driver);
206 for(int i = 0; i < MAXDEVICES; i++)
208 sprintf(string, "OSS_ENABLE_%d_%d", i, duplex);
209 defaults->update(string, oss_enable[i]);
210 sprintf(string, "OSS_OUT_DEVICE_%d_%d", i, duplex);
211 defaults->update(string, oss_out_device[i]);
212 sprintf(string, "OSS_OUT_CHANNELS_%d_%d", i, duplex);
213 defaults->update(string, oss_out_channels[i]);
215 sprintf(string, "OSS_OUT_BITS_%d", duplex);
216 defaults->update(string, oss_out_bits);
219 defaults->update("ALSA_OUT_DEVICE", alsa_out_device);
220 defaults->update("ALSA_OUT_CHANNELS", alsa_out_channels);
221 defaults->update("ALSA_OUT_BITS", alsa_out_bits);
222 defaults->update("ALSA_INTERRUPT_WORKAROUND", interrupt_workaround);
224 sprintf(string, "ESOUND_OUT_SERVER_%d", duplex);
225 defaults->update(string, esound_out_server);
226 sprintf(string, "ESOUND_OUT_PORT_%d", duplex);
227 defaults->update(string, esound_out_port);
229 sprintf(string, "AFIREWIRE_OUT_CHANNELS");
230 defaults->update(string, firewire_channels);
231 sprintf(string, "AFIREWIRE_OUT_CHANNEL");
232 defaults->update(string, firewire_channel);
233 sprintf(string, "AFIREWIRE_OUT_PORT");
234 defaults->update(string, firewire_port);
235 sprintf(string, "AFIREWIRE_OUT_PATH");
236 defaults->update(string, firewire_path);
237 sprintf(string, "AFIREWIRE_OUT_SYT");
238 defaults->update(string, firewire_syt);
241 sprintf(string, "ADV1394_OUT_CHANNELS");
242 defaults->update(string, dv1394_channels);
243 sprintf(string, "ADV1394_OUT_CHANNEL");
244 defaults->update(string, dv1394_channel);
245 sprintf(string, "ADV1394_OUT_PORT");
246 defaults->update(string, dv1394_port);
247 sprintf(string, "ADV1394_OUT_PATH");
248 defaults->update(string, dv1394_path);
249 sprintf(string, "ADV1394_OUT_SYT");
250 defaults->update(string, dv1394_syt);
255 int AudioOutConfig::total_output_channels()
260 case AUDIO_OSS_ENVY24:
263 for(int i = 0; i < MAXDEVICES; i++)
265 if(oss_enable[i]) total += oss_out_channels[i];
272 return alsa_out_channels;
278 return firewire_channels;
282 return dv1394_channels;
296 int AudioOutConfig::total_playable_channels()
299 for(int i = 0; i < MAXCHANNELS; i++)
300 if(do_channel[i]) result++;
304 int AudioOutConfig::playable_channel_number(int number)
306 for(int i = 0; i < MAXCHANNELS; i++)
311 if(number < 0) return i;
325 VideoOutConfig::VideoOutConfig()
327 sprintf(lml_out_device, "/dev/mvideo/stream");
328 sprintf(buz_out_device, "/dev/video0");
329 driver = PLAYBACK_X11_XV;
330 for(int i = 0; i < MAX_CHANNELS; i++) do_channel[i] = 0;
333 sprintf(x11_host, "");
334 x11_use_fields = USE_NO_FIELDS;
336 firewire_channel = 63;
338 strcpy(firewire_path, "/dev/video1394");
339 firewire_syt = 30000;
343 strcpy(dv1394_path, "/dev/dv1394");
353 VideoOutConfig::~VideoOutConfig()
358 int VideoOutConfig::operator!=(VideoOutConfig &that)
360 return !(*this == that);
363 int VideoOutConfig::operator==(VideoOutConfig &that)
365 return (driver == that.driver) &&
366 !strcmp(lml_out_device, that.lml_out_device) &&
367 !strcmp(buz_out_device, that.buz_out_device) &&
368 (buz_out_channel == that.buz_out_channel) &&
369 (buz_swap_fields == that.buz_swap_fields) &&
370 !strcmp(x11_host, that.x11_host) &&
371 (x11_use_fields == that.x11_use_fields) &&
372 (brightness == that.brightness) &&
374 (color == that.color) &&
375 (contrast == that.contrast) &&
376 (whiteness == that.whiteness) &&
378 (firewire_channel == that.firewire_channel) &&
379 (firewire_port == that.firewire_port) &&
380 !strcmp(firewire_path, that.firewire_path) &&
381 (firewire_syt == that.firewire_syt) &&
383 (dv1394_channel == that.dv1394_channel) &&
384 (dv1394_port == that.dv1394_port) &&
385 !strcmp(dv1394_path, that.dv1394_path) &&
386 (dv1394_syt == that.dv1394_syt);
394 VideoOutConfig& VideoOutConfig::operator=(VideoOutConfig &that)
400 void VideoOutConfig::copy_from(VideoOutConfig *src)
402 this->driver = src->driver;
403 strcpy(this->lml_out_device, src->lml_out_device);
404 strcpy(this->buz_out_device, src->buz_out_device);
405 this->buz_out_channel = src->buz_out_channel;
406 this->buz_swap_fields = src->buz_swap_fields;
407 strcpy(this->x11_host, src->x11_host);
408 this->x11_use_fields = src->x11_use_fields;
409 for(int i = 0; i < MAX_CHANNELS; i++)
410 this->do_channel[i] = src->do_channel[i];
412 firewire_channel = src->firewire_channel;
413 firewire_port = src->firewire_port;
414 strcpy(firewire_path, src->firewire_path);
415 firewire_syt = src->firewire_syt;
417 dv1394_channel = src->dv1394_channel;
418 dv1394_port = src->dv1394_port;
419 strcpy(dv1394_path, src->dv1394_path);
420 dv1394_syt = src->dv1394_syt;
423 char* VideoOutConfig::get_path()
428 return buz_out_device;
431 case PLAYBACK_X11_XV:
434 case PLAYBACK_DV1394:
437 case PLAYBACK_FIREWIRE:
438 return firewire_path;
441 return buz_out_device;
444 int VideoOutConfig::load_defaults(Defaults *defaults)
446 char string[BCTEXTLEN];
447 sprintf(string, "VIDEO_OUT_DRIVER");
448 driver = defaults->get(string, driver);
449 sprintf(string, "LML_OUT_DEVICE");
450 defaults->get(string, lml_out_device);
451 sprintf(string, "BUZ_OUT_DEVICE");
452 defaults->get(string, buz_out_device);
453 sprintf(string, "BUZ_OUT_CHANNEL");
454 buz_out_channel = defaults->get(string, buz_out_channel);
455 sprintf(string, "BUZ_SWAP_FIELDS");
456 buz_swap_fields = defaults->get(string, buz_swap_fields);
457 sprintf(string, "X11_OUT_DEVICE");
458 defaults->get(string, x11_host);
459 x11_use_fields = defaults->get("X11_USE_FIELDS", x11_use_fields);
463 sprintf(string, "VFIREWIRE_OUT_CHANNEL");
464 firewire_channel = defaults->get(string, firewire_channel);
465 sprintf(string, "VFIREWIRE_OUT_PORT");
466 firewire_port = defaults->get(string, firewire_port);
467 sprintf(string, "VFIREWIRE_OUT_PATH");
468 defaults->get(string, firewire_path);
469 sprintf(string, "VFIREWIRE_OUT_SYT");
470 firewire_syt = defaults->get(string, firewire_syt);
472 sprintf(string, "VDV1394_OUT_CHANNEL");
473 dv1394_channel = defaults->get(string, dv1394_channel);
474 sprintf(string, "VDV1394_OUT_PORT");
475 dv1394_port = defaults->get(string, dv1394_port);
476 sprintf(string, "VDV1394_OUT_PATH");
477 defaults->get(string, dv1394_path);
478 sprintf(string, "VDV1394_OUT_SYT");
479 dv1394_syt = defaults->get(string, dv1394_syt);
483 int VideoOutConfig::save_defaults(Defaults *defaults)
485 char string[BCTEXTLEN];
486 sprintf(string, "VIDEO_OUT_DRIVER");
487 defaults->update(string, driver);
488 sprintf(string, "LML_OUT_DEVICE");
489 defaults->update(string, lml_out_device);
490 sprintf(string, "BUZ_OUT_DEVICE");
491 defaults->update(string, buz_out_device);
492 sprintf(string, "BUZ_OUT_CHANNEL");
493 defaults->update(string, buz_out_channel);
494 sprintf(string, "BUZ_SWAP_FIELDS");
495 defaults->update(string, buz_swap_fields);
496 sprintf(string, "X11_OUT_DEVICE");
497 defaults->update(string, x11_host);
498 defaults->update("X11_USE_FIELDS", x11_use_fields);
500 sprintf(string, "VFIREWIRE_OUT_CHANNEL");
501 defaults->update(string, firewire_channel);
502 sprintf(string, "VFIREWIRE_OUT_PORT");
503 defaults->update(string, firewire_port);
504 sprintf(string, "VFIREWIRE_OUT_PATH");
505 defaults->update(string, firewire_path);
506 sprintf(string, "VFIREWIRE_OUT_SYT");
507 defaults->update(string, firewire_syt);
509 sprintf(string, "VDV1394_OUT_CHANNEL");
510 defaults->update(string, dv1394_channel);
511 sprintf(string, "VDV1394_OUT_PORT");
512 defaults->update(string, dv1394_port);
513 sprintf(string, "VDV1394_OUT_PATH");
514 defaults->update(string, dv1394_path);
515 sprintf(string, "VDV1394_OUT_SYT");
516 defaults->update(string, dv1394_syt);
520 int VideoOutConfig::total_playable_channels()
523 for(int i = 0; i < MAXCHANNELS; i++)
524 if(do_channel[i]) result++;
536 PlaybackConfig::PlaybackConfig()
538 aconfig = new AudioOutConfig(0);
539 vconfig = new VideoOutConfig;
540 sprintf(hostname, "localhost");
544 PlaybackConfig::~PlaybackConfig()
550 PlaybackConfig& PlaybackConfig::operator=(PlaybackConfig &that)
556 void PlaybackConfig::copy_from(PlaybackConfig *src)
558 aconfig->copy_from(src->aconfig);
559 vconfig->copy_from(src->vconfig);
560 strcpy(hostname, src->hostname);
564 int PlaybackConfig::load_defaults(Defaults *defaults)
567 sprintf(string, "PLAYBACK_HOSTNAME");
568 defaults->get(string, hostname);
569 sprintf(string, "PLAYBACK_PORT");
570 port = defaults->get(string, port);
571 aconfig->load_defaults(defaults);
572 vconfig->load_defaults(defaults);
576 int PlaybackConfig::save_defaults(Defaults *defaults)
579 sprintf(string, "PLAYBACK_HOSTNAME");
580 defaults->update(string, hostname);
581 sprintf(string, "PLAYBACK_PORT");
582 defaults->update(string, port);
583 aconfig->save_defaults(defaults);
584 vconfig->save_defaults(defaults);