35 throw Err(
"This AudioDevice is not associated with any AudioManager");
37 return *mAudioManager;
42 if (mAudioManager==0) mAudioManager = am;
43 else if (mAudioManager!=am)
45 throw Err(
"An AudioDevice can only be associated with one AudioManager");
52 for (i=0; i<
mInputs.size(); i++)
53 if (dynamic_cast<const AudioIOConfig&>(
mInputs[i]->GetConfig()).GetChannelID() ==
69 if (dynamic_cast<const AudioIOConfig&>(
mOutputs[i]->GetConfig()).GetChannelID() ==
83 if (in.mpDevice !=
this)
85 throw(
Err(
"AudioDevice::Unregister(): I am not this AudioIn object's device."));
87 std::vector<AudioIn*>::iterator it = std::find(
mInputs.begin(),
mInputs.end(),&in);
90 throw(
Err(
"AudioDevice::Unregister(): AudioIn object not registered in this device."));
98 if (out.mpDevice !=
this)
100 throw(
Err(
"AudioDevice::Unregister(): I am not this AudioOut object's device."));
102 std::vector<AudioOut*>::iterator it = std::find(
mOutputs.begin(),
mOutputs.end(),&out);
105 throw(
Err(
"AudioDevice::Unregister(): AudioOut object not registered in this device."));
127 if (sr == 0) sr =
mInputs[i]->mConfig.GetSampleRate();
128 else if (
mInputs[i]->mConfig.GetSampleRate() &&
129 mInputs[i]->mConfig.GetSampleRate() != sr)
131 throw Err(
"AudioDevice::Register():"
132 "all audio ports need the same samplerate");
137 if (sr == 0) sr =
mOutputs[i]->mConfig.GetSampleRate();
138 else if (
mOutputs[i]->mConfig.GetSampleRate() &&
139 mOutputs[i]->mConfig.GetSampleRate() != sr )
141 throw Err(
"AudioDevice::Register():"
142 "all audio ports need the same samplerate");
151 mInputs[i]->mConfig.SetSampleRate(sr);
155 mOutputs[i]->mConfig.SetSampleRate(sr);
163 return _AudioManager().
Latency();