~akirad/cinecutie/trunk

« back to all changes in this revision

Viewing changes to cinecutie/audioconfig.C

  • Committer: Paolo Rampino
  • Date: 2010-02-17 19:46:21 UTC
  • Revision ID: git-v1:c39ff77ffa6ae08441c12e7d7f54e3897ddde7f1
Initial Merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
/*
 
3
 * CINELERRA
 
4
 * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
 
5
 * 
 
6
 * This program is free software; you can redistribute it and/or modify
 
7
 * it under the terms of the GNU General Public License as published by
 
8
 * the Free Software Foundation; either version 2 of the License, or
 
9
 * (at your option) any later version.
 
10
 * 
 
11
 * This program is distributed in the hope that it will be useful,
 
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
 * GNU General Public License for more details.
 
15
 * 
 
16
 * You should have received a copy of the GNU General Public License
 
17
 * along with this program; if not, write to the Free Software
 
18
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
19
 * 
 
20
 */
 
21
 
 
22
#include "audioconfig.h"
 
23
#include "audiodevice.inc"
 
24
#include "bchash.h"
 
25
#include "maxchannels.h"
 
26
#include <string.h>
 
27
#include <string.h>
 
28
 
 
29
#define CLAMP(x, y, z) (x) = ((x) < (y) ? (y) : ((x) > (z) ? (z) : (x)))
 
30
 
 
31
AudioConfig::AudioConfig()
 
32
{
 
33
}
 
34
 
 
35
AudioConfig::~AudioConfig()
 
36
{
 
37
}
 
38
 
 
39
AudioConfig& AudioConfig::operator=(AudioConfig &that)
 
40
{
 
41
// Input
 
42
        audio_in_driver = that.audio_in_driver;
 
43
        afirewire_in_port = that.afirewire_in_port;
 
44
        afirewire_in_channel = that.afirewire_in_channel;
 
45
        strcpy(esound_in_server, that.esound_in_server);
 
46
        esound_in_port = that.esound_in_port;
 
47
        strcpy(oss_in_device, that.oss_in_device);
 
48
        oss_in_channels = that.oss_in_channels;
 
49
        oss_in_bits = that.oss_in_bits;
 
50
 
 
51
// Output
 
52
        audio_out_driver = that.audio_out_driver;
 
53
        strcpy(oss_out_device, that.oss_out_device);
 
54
        strcpy(esound_out_server, that.esound_out_server);
 
55
        esound_out_port = that.esound_out_port;
 
56
        oss_out_channels = that.oss_out_channels;
 
57
        oss_out_bits = that.oss_out_bits;
 
58
 
 
59
// Duplex
 
60
        audio_duplex_driver = that.audio_duplex_driver;
 
61
        strcpy(oss_duplex_device, that.oss_duplex_device);
 
62
        strcpy(esound_duplex_server, that.esound_duplex_server);
 
63
        esound_duplex_port = that.esound_duplex_port;
 
64
        oss_duplex_channels = that.oss_duplex_channels;
 
65
        oss_duplex_bits = that.oss_duplex_bits;
 
66
        CLAMP(oss_in_channels, 1, MAXCHANNELS);
 
67
        CLAMP(oss_in_bits, 8, 32);
 
68
        CLAMP(oss_duplex_channels, 1, MAXCHANNELS);
 
69
        CLAMP(oss_duplex_bits, 8, 32);
 
70
        return *this;
 
71
}
 
72
 
 
73
int AudioConfig::load_defaults(BC_Hash *defaults)
 
74
{
 
75
        audio_in_driver =             defaults->get("AUDIOINDRIVER", AUDIO_OSS);
 
76
        afirewire_in_port =           defaults->get("AFIREWIRE_IN_PORT", 0);
 
77
        afirewire_in_channel =        defaults->get("AFIREWIRE_IN_CHANNEL", 63);
 
78
        sprintf(oss_in_device, "/dev/dsp");
 
79
                                      defaults->get("OSS_IN_DEVICE", oss_in_device);
 
80
        oss_in_channels =             defaults->get("OSS_IN_CHANNELS", 2);
 
81
        oss_in_bits =                 defaults->get("OSS_IN_BITS", 16);
 
82
        sprintf(esound_in_server, "");
 
83
                                      defaults->get("ESOUND_IN_SERVER", esound_in_server);
 
84
        esound_in_port =              defaults->get("ESOUND_IN_PORT", 0);
 
85
 
 
86
        audio_out_driver =                defaults->get("AUDIO_OUT_DRIVER", AUDIO_OSS);
 
87
        audio_duplex_driver =             defaults->get("AUDIO_DUPLEX_DRIVER", AUDIO_OSS);
 
88
        sprintf(oss_out_device, "/dev/dsp");
 
89
                                      defaults->get("OSS_OUT_DEVICE", oss_out_device);
 
90
        oss_out_channels =                defaults->get("OUT_CHANNELS", 2);
 
91
        oss_out_bits =                defaults->get("OUT_BITS", 16);
 
92
        sprintf(esound_out_server, "");
 
93
                                      defaults->get("ESOUND_OUT_SERVER", esound_out_server);
 
94
        esound_out_port =             defaults->get("ESOUND_OUT_PORT", 0);
 
95
 
 
96
        audio_duplex_driver =         defaults->get("AUDIO_DUPLEX_DRIVER", AUDIO_OSS);
 
97
        sprintf(oss_duplex_device, "/dev/dsp");
 
98
                                      defaults->get("OSS_DUPLEX_DEVICE", oss_duplex_device);
 
99
        oss_duplex_channels =         defaults->get("DUPLEX_CHANNELS", 2);
 
100
        oss_duplex_bits =             defaults->get("DUPLEX_BITS", 16);
 
101
        sprintf(esound_duplex_server, "");
 
102
                                      defaults->get("ESOUND_DUPLEX_SERVER", esound_duplex_server);
 
103
        esound_duplex_port =          defaults->get("ESOUND_DUPLEX_PORT", 0);
 
104
        return 0;
 
105
}
 
106
 
 
107
int AudioConfig::save_defaults(BC_Hash *defaults)
 
108
{
 
109
        defaults->update("AUDIOINDRIVER", audio_in_driver);
 
110
        defaults->update("AFIREWIRE_IN_PORT", afirewire_in_port);
 
111
        defaults->update("AFIREWIRE_IN_CHANNEL", afirewire_in_channel);
 
112
        defaults->update("OSS_IN_DEVICE", oss_in_device);
 
113
        defaults->update("OSS_IN_CHANNELS", oss_in_channels);
 
114
        defaults->update("OSS_IN_BITS", oss_in_bits);
 
115
        defaults->update("ESOUND_IN_SERVER", esound_in_server);
 
116
        defaults->update("ESOUND_IN_PORT", esound_in_port);
 
117
 
 
118
        defaults->update("AUDIO_OUT_DRIVER", audio_out_driver);
 
119
        defaults->update("AUDIO_DUPLEX_DRIVER", audio_duplex_driver);
 
120
        defaults->update("OSS_OUT_DEVICE", oss_out_device);
 
121
        defaults->update("OUT_CHANNELS", oss_out_channels);
 
122
        defaults->update("OUT_BITS", oss_out_bits);
 
123
        defaults->update("ESOUND_OUT_SERVER", esound_out_server);
 
124
        defaults->update("ESOUND_OUT_PORT", esound_out_port);
 
125
 
 
126
        defaults->update("AUDIO_DUPLEX_DRIVER", audio_duplex_driver);
 
127
        defaults->update("OSS_DUPLEX_DEVICE", oss_duplex_device);
 
128
        defaults->update("OSS_DUPLEX_CHANNELS", oss_duplex_channels);
 
129
        defaults->update("OSS_DUPLEX_BITS", oss_duplex_bits);
 
130
        defaults->update("ESOUND_DUPLEX_SERVER", esound_duplex_server);
 
131
        defaults->update("ESOUND_DUPLEX_PORT", esound_duplex_port);
 
132
        return 0;
 
133
}