X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fplaybackconfig.C;fp=cinelerra-5.1%2Fcinelerra%2Fplaybackconfig.C;h=84cee18e66548c4e77ad24c63e44b6a0decb113c;hb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;hp=0000000000000000000000000000000000000000;hpb=52fcc46226f9df46f9ce9d0566dc568455a7db0b;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/playbackconfig.C b/cinelerra-5.1/cinelerra/playbackconfig.C new file mode 100644 index 00000000..84cee18e --- /dev/null +++ b/cinelerra-5.1/cinelerra/playbackconfig.C @@ -0,0 +1,466 @@ + +/* + * CINELERRA + * Copyright (C) 2008 Adam Williams + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "clip.h" +#include "bchash.h" +#include "playbackconfig.h" +#include "videodevice.inc" +#include + +AudioOutConfig::AudioOutConfig() +{ + fragment_size = 16384; +#ifdef HAVE_ALSA + driver = AUDIO_ALSA; +#else + driver = AUDIO_OSS; +#endif + + audio_offset = 0.0; + map51_2 = 0; + play_gain = 1.0; + + oss_out_bits = 16; + for(int i = 0; i < MAXDEVICES; i++) + { + oss_enable[i] = (i == 0); + sprintf(oss_out_device[i], "/dev/dsp"); + } + + esound_out_server[0] = 0; + esound_out_port = 0; + + sprintf(alsa_out_device, "default"); + alsa_out_bits = 16; + interrupt_workaround = 0; + + firewire_channel = 63; + firewire_port = 0; + strcpy(firewire_path, "/dev/video1394"); + firewire_syt = 30000; + + dv1394_channel = 63; + dv1394_port = 0; + strcpy(dv1394_path, "/dev/dv1394"); + dv1394_syt = 30000; +} + +AudioOutConfig::~AudioOutConfig() +{ +} + + + +int AudioOutConfig::operator!=(AudioOutConfig &that) +{ + return !(*this == that); +} + +int AudioOutConfig::operator==(AudioOutConfig &that) +{ + return + fragment_size == that.fragment_size && + driver == that.driver && + EQUIV(audio_offset, that.audio_offset) && + play_gain == that.play_gain && + + !strcmp(oss_out_device[0], that.oss_out_device[0]) && + (oss_out_bits == that.oss_out_bits) && + + + + !strcmp(esound_out_server, that.esound_out_server) && + (esound_out_port == that.esound_out_port) && + + + + !strcmp(alsa_out_device, that.alsa_out_device) && + (alsa_out_bits == that.alsa_out_bits) && + (interrupt_workaround == that.interrupt_workaround) && + + firewire_channel == that.firewire_channel && + firewire_port == that.firewire_port && + firewire_syt == that.firewire_syt && + !strcmp(firewire_path, that.firewire_path) && + + dv1394_channel == that.dv1394_channel && + dv1394_port == that.dv1394_port && + dv1394_syt == that.dv1394_syt && + !strcmp(dv1394_path, that.dv1394_path); +} + + + +AudioOutConfig& AudioOutConfig::operator=(AudioOutConfig &that) +{ + copy_from(&that); + return *this; +} + +void AudioOutConfig::copy_from(AudioOutConfig *src) +{ + if( this == src ) return; + fragment_size = src->fragment_size; + driver = src->driver; + audio_offset = src->audio_offset; + map51_2 = src->map51_2; + play_gain = src->play_gain; + + strcpy(esound_out_server, src->esound_out_server); + esound_out_port = src->esound_out_port; + for(int i = 0; i < MAXDEVICES; i++) + { + oss_enable[i] = src->oss_enable[i]; + strcpy(oss_out_device[i], src->oss_out_device[i]); + } + oss_out_bits = src->oss_out_bits; + + strcpy(alsa_out_device, src->alsa_out_device); + alsa_out_bits = src->alsa_out_bits; + interrupt_workaround = src->interrupt_workaround; + + firewire_channel = src->firewire_channel; + firewire_port = src->firewire_port; + firewire_syt = src->firewire_syt; + strcpy(firewire_path, src->firewire_path); + + dv1394_channel = src->dv1394_channel; + dv1394_port = src->dv1394_port; + dv1394_syt = src->dv1394_syt; + strcpy(dv1394_path, src->dv1394_path); +} + +int AudioOutConfig::load_defaults(BC_Hash *defaults, int active_config) +{ + char prefix[BCTEXTLEN]; + sprintf(prefix, "%c_", 'A'+active_config); + + fragment_size = defaults->getf(fragment_size, "%sFRAGMENT_SIZE", prefix); + audio_offset = defaults->getf(audio_offset, "%sAUDIO_OFFSET", prefix); + map51_2 = defaults->getf(map51_2, "%sAUDIO_OUT_MAP51_2", prefix); + play_gain = defaults->getf(play_gain, "%sAUDIO_OUT_GAIN", prefix); + driver = defaults->getf(driver, "%sAUDIO_OUT_DRIVER", prefix); + + for(int i = 0; i < MAXDEVICES; i++) + { + oss_enable[i] = defaults->getf(oss_enable[i], "%sOSS_ENABLE_%d", prefix, i); + defaults->getf(oss_out_device[i], "%sOSS_OUT_DEVICE_%d", prefix, i); + } + oss_out_bits = defaults->getf(oss_out_bits, "%sOSS_OUT_BITS", prefix); + + defaults->getf(alsa_out_device, "%sALSA_OUT_DEVICE", prefix); + alsa_out_bits = defaults->getf(alsa_out_bits, "%sALSA_OUT_BITS", prefix); + interrupt_workaround = defaults->getf(interrupt_workaround, "%sALSA_INTERRUPT_WORKAROUND", prefix); + + defaults->getf(esound_out_server, "%sESOUND_OUT_SERVER", prefix); + esound_out_port = defaults->getf(esound_out_port, "%sESOUND_OUT_PORT", prefix); + + firewire_channel = defaults->getf(firewire_channel, "%sAFIREWIRE_OUT_CHANNEL", prefix); + firewire_port = defaults->getf(firewire_port, "%sAFIREWIRE_OUT_PORT", prefix); + defaults->getf(firewire_path, "%sAFIREWIRE_OUT_PATH", prefix); + firewire_syt = defaults->getf(firewire_syt, "%sAFIREWIRE_OUT_SYT", prefix); + + dv1394_channel = defaults->getf(dv1394_channel, "%sADV1394_OUT_CHANNEL", prefix); + dv1394_port = defaults->getf(dv1394_port, "%sADV1394_OUT_PORT", prefix); + defaults->getf(dv1394_path, "%sADV1394_OUT_PATH", prefix); + dv1394_syt = defaults->getf(dv1394_syt, "%sADV1394_OUT_SYT", prefix); + + return 0; +} + +int AudioOutConfig::save_defaults(BC_Hash *defaults, int active_config) +{ + char prefix[BCTEXTLEN]; + sprintf(prefix, "%c_", 'A'+active_config); + + defaults->updatef(fragment_size, "%sFRAGMENT_SIZE", prefix); + defaults->updatef(audio_offset, "%sAUDIO_OFFSET", prefix); + defaults->updatef(map51_2, "%sAUDIO_OUT_MAP51_2", prefix); + defaults->updatef(play_gain, "%sAUDIO_OUT_GAIN", prefix); + + defaults->updatef(driver, "%sAUDIO_OUT_DRIVER", prefix); + + for(int i = 0; i < MAXDEVICES; i++) + { + defaults->updatef(oss_enable[i], "%sOSS_ENABLE_%d", prefix, i); + defaults->updatef(oss_out_device[i], "%sOSS_OUT_DEVICE_%d", prefix, i); + } + defaults->updatef(oss_out_bits, "%sOSS_OUT_BITS", prefix); + + + defaults->updatef(alsa_out_device, "%sALSA_OUT_DEVICE", prefix); + defaults->updatef(alsa_out_bits, "%sALSA_OUT_BITS", prefix); + defaults->updatef(interrupt_workaround, "%sALSA_INTERRUPT_WORKAROUND", prefix); + + defaults->updatef(esound_out_server, "%sESOUND_OUT_SERVER", prefix); + defaults->updatef(esound_out_port, "%sESOUND_OUT_PORT", prefix); + + defaults->updatef(firewire_channel, "%sAFIREWIRE_OUT_CHANNEL", prefix); + defaults->updatef(firewire_port, "%sAFIREWIRE_OUT_PORT", prefix); + defaults->updatef(firewire_path, "%sAFIREWIRE_OUT_PATH", prefix); + defaults->updatef(firewire_syt, "%sAFIREWIRE_OUT_SYT", prefix); + + + defaults->updatef(dv1394_channel, "%sADV1394_OUT_CHANNEL", prefix); + defaults->updatef(dv1394_port, "%sADV1394_OUT_PORT", prefix); + defaults->updatef(dv1394_path, "%sADV1394_OUT_PATH", prefix); + defaults->updatef(dv1394_syt, "%sADV1394_OUT_SYT", prefix); + + return 0; +} + + + + + + + + + + +VideoOutConfig::VideoOutConfig() +{ + sprintf(lml_out_device, "/dev/mvideo/stream"); + sprintf(buz_out_device, "/dev/video0"); + driver = PLAYBACK_X11_XV; + buz_out_channel = 0; + buz_swap_fields = 0; + x11_host[0] = 0; + x11_use_fields = USE_NO_FIELDS; + + firewire_channel = 63; + firewire_port = 0; + strcpy(firewire_path, "/dev/video1394"); + firewire_syt = 30000; + + dv1394_channel = 63; + dv1394_port = 0; + strcpy(dv1394_path, "/dev/dv1394"); + dv1394_syt = 30000; + + brightness = 32768; + hue = 32768; + color = 32768; + contrast = 32768; + whiteness = 32768; +} + +VideoOutConfig::~VideoOutConfig() +{ +} + + +int VideoOutConfig::operator!=(VideoOutConfig &that) +{ + return !(*this == that); +} + +int VideoOutConfig::operator==(VideoOutConfig &that) +{ + return (driver == that.driver) && + !strcmp(lml_out_device, that.lml_out_device) && + !strcmp(buz_out_device, that.buz_out_device) && + (buz_out_channel == that.buz_out_channel) && + (buz_swap_fields == that.buz_swap_fields) && + !strcmp(x11_host, that.x11_host) && + (x11_use_fields == that.x11_use_fields) && + (brightness == that.brightness) && + (hue == that.hue) && + (color == that.color) && + (contrast == that.contrast) && + (whiteness == that.whiteness) && + + (firewire_channel == that.firewire_channel) && + (firewire_port == that.firewire_port) && + !strcmp(firewire_path, that.firewire_path) && + (firewire_syt == that.firewire_syt) && + + (dv1394_channel == that.dv1394_channel) && + (dv1394_port == that.dv1394_port) && + !strcmp(dv1394_path, that.dv1394_path) && + (dv1394_syt == that.dv1394_syt); +} + + + + + + +VideoOutConfig& VideoOutConfig::operator=(VideoOutConfig &that) +{ + copy_from(&that); + return *this; +} + +void VideoOutConfig::copy_from(VideoOutConfig *src) +{ + this->driver = src->driver; + strcpy(this->lml_out_device, src->lml_out_device); + strcpy(this->buz_out_device, src->buz_out_device); + this->buz_out_channel = src->buz_out_channel; + this->buz_swap_fields = src->buz_swap_fields; + strcpy(this->x11_host, src->x11_host); + this->x11_use_fields = src->x11_use_fields; + + firewire_channel = src->firewire_channel; + firewire_port = src->firewire_port; + strcpy(firewire_path, src->firewire_path); + firewire_syt = src->firewire_syt; + + dv1394_channel = src->dv1394_channel; + dv1394_port = src->dv1394_port; + strcpy(dv1394_path, src->dv1394_path); + dv1394_syt = src->dv1394_syt; +} + +char* VideoOutConfig::get_path() +{ + switch(driver) + { + case PLAYBACK_BUZ: + return buz_out_device; + break; + case PLAYBACK_X11: + case PLAYBACK_X11_XV: + return x11_host; + break; + case PLAYBACK_DV1394: + return dv1394_path; + break; + case PLAYBACK_FIREWIRE: + return firewire_path; + break; + }; + return buz_out_device; +} + +int VideoOutConfig::load_defaults(BC_Hash *defaults, int active_config) +{ + char prefix[BCTEXTLEN]; + sprintf(prefix, "%c_", 'A'+active_config); + + driver = defaults->getf(driver, "%sVIDEO_OUT_DRIVER", prefix); + defaults->getf(lml_out_device, "%sLML_OUT_DEVICE", prefix); + defaults->getf(buz_out_device, "%sBUZ_OUT_DEVICE", prefix); + buz_out_channel = defaults->getf(buz_out_channel, "%sBUZ_OUT_CHANNEL", prefix); + buz_swap_fields = defaults->getf(buz_swap_fields, "%sBUZ_SWAP_FIELDS", prefix); + defaults->getf(x11_host, "%sX11_OUT_DEVICE", prefix); + x11_use_fields = defaults->getf(x11_use_fields, "%sX11_USE_FIELDS", prefix); + + + + firewire_channel = defaults->getf(firewire_channel, "%sVFIREWIRE_OUT_CHANNEL", prefix); + firewire_port = defaults->getf(firewire_port, "%sVFIREWIRE_OUT_PORT", prefix); + defaults->getf(firewire_path, "%sVFIREWIRE_OUT_PATH", prefix); + firewire_syt = defaults->getf(firewire_syt, "%sVFIREWIRE_OUT_SYT", prefix); + + dv1394_channel = defaults->getf(dv1394_channel, "%sVDV1394_OUT_CHANNEL", prefix); + dv1394_port = defaults->getf(dv1394_port, "%sVDV1394_OUT_PORT", prefix); + defaults->getf(dv1394_path, "%sVDV1394_OUT_PATH", prefix); + dv1394_syt = defaults->getf(dv1394_syt, "%sVDV1394_OUT_SYT", prefix); + return 0; +} + +int VideoOutConfig::save_defaults(BC_Hash *defaults, int active_config) +{ + char prefix[BCTEXTLEN]; + sprintf(prefix, "%c_", 'A'+active_config); + + defaults->updatef(driver, "%sVIDEO_OUT_DRIVER", prefix); + defaults->updatef(lml_out_device, "%sLML_OUT_DEVICE", prefix); + defaults->updatef(buz_out_device, "%sBUZ_OUT_DEVICE", prefix); + defaults->updatef(buz_out_channel, "%sBUZ_OUT_CHANNEL", prefix); + defaults->updatef(buz_swap_fields, "%sBUZ_SWAP_FIELDS", prefix); + defaults->updatef(x11_host, "%sX11_OUT_DEVICE", prefix); + defaults->updatef(x11_use_fields, "%sX11_USE_FIELDS", prefix); + + defaults->updatef(firewire_channel, "%sVFIREWIRE_OUT_CHANNEL", prefix); + defaults->updatef(firewire_port, "%sVFIREWIRE_OUT_PORT", prefix); + defaults->updatef(firewire_path, "%sVFIREWIRE_OUT_PATH", prefix); + defaults->updatef(firewire_syt, "%sVFIREWIRE_OUT_SYT", prefix); + + defaults->updatef(dv1394_channel, "%sVDV1394_OUT_CHANNEL", prefix); + defaults->updatef(dv1394_port, "%sVDV1394_OUT_PORT", prefix); + defaults->updatef(dv1394_path, "%sVDV1394_OUT_PATH", prefix); + defaults->updatef(dv1394_syt, "%sVDV1394_OUT_SYT", prefix); + return 0; +} + + + + + + + + + +PlaybackConfig::PlaybackConfig() +{ + aconfig = new AudioOutConfig; + vconfig = new VideoOutConfig; + sprintf(hostname, "localhost"); + active_config = 0; + port = 23456; +} + +PlaybackConfig::~PlaybackConfig() +{ + delete aconfig; + delete vconfig; +} + +PlaybackConfig& PlaybackConfig::operator=(PlaybackConfig &that) +{ + copy_from(&that); + return *this; +} + +void PlaybackConfig::copy_from(PlaybackConfig *src) +{ + active_config = src->active_config; + aconfig->copy_from(src->aconfig); + vconfig->copy_from(src->vconfig); + strncpy(hostname, src->hostname, sizeof(hostname)); + port = src->port; +} + +int PlaybackConfig::load_defaults(BC_Hash *defaults, int load_config) +{ + active_config = load_config >= 0 ? load_config : + defaults->get("PLAYBACK_ACTIVE_CONFIG", active_config); + aconfig->load_defaults(defaults, active_config); + vconfig->load_defaults(defaults, active_config); + defaults->get("PLAYBACK_HOSTNAME", hostname); + port = defaults->get("PLAYBACK_PORT", port); + return 0; +} + +int PlaybackConfig::save_defaults(BC_Hash *defaults) +{ + defaults->update("PLAYBACK_ACTIVE_CONFIG", active_config); + aconfig->save_defaults(defaults, active_config); + vconfig->save_defaults(defaults, active_config); + defaults->update("PLAYBACK_HOSTNAME", hostname); + defaults->update("PLAYBACK_PORT", port); + return 0; +} + +