模块路径:
moudlues > audio_device:
文件所属工程:
audio_device_module_from_input and_and_output:
audio_device_factory(文件夹>include)
namespace webrtc {
rtc::scoped_refptr<AudioDeviceModule> CreateWindowsCoreAudioAudioDeviceModule(TaskQueueFactory* task_queue_factory,
bool automatic_restart) {
return CreateWindowsCoreAudioAudioDeviceModuleForTest(task_queue_factory,
automatic_restart);
}
rtc::scoped_refptr<AudioDeviceModuleForTest>
CreateWindowsCoreAudioAudioDeviceModuleForTest(
TaskQueueFactory* task_queue_factory,
bool automatic_restart) {
//...
return CreateWindowsCoreAudioAudioDeviceModuleFromInputAndOutput(
std::make_unique<webrtc_win::CoreAudioInput>(automatic_restart),
std::make_unique<webrtc_win::CoreAudioOutput>(automatic_restart),
task_queue_factory);
}
} // namespace webrtc
audio_device_module_win.cc(文件夹>win)
namespace webrtc{
namespace webrtc_win{
namespace{
class WindowsAudioDeviceModule : public AudioDeviceModuleForTest{
//...
int32_t InitRecording() override {
//...
return input_->InitRecording();
}
int32_t StartRecording() override {
//...
return input_->StartRecording();
}
//...
private:
const std::unique_ptr<AudioInput> input_;
const std::unique_ptr<AudioOutput> output_;
//...
};
}//namespace
rtc::scoped_refptr<AudioDeviceModuleForTest>
CreateWindowsCoreAudioAudioDeviceModuleFromInputAndOutput(
std::unique_ptr<AudioInput> audio_input,
std::unique_ptr<AudioOutput> audio_output,
TaskQueueFactory* task_queue_factory) {
return new rtc::RefCountedObject<WindowsAudioDeviceModule>(
std::move(audio_input), std::move(audio_output), task_queue_factory);
}
}//namespace webrtc_win
}//namespace webrtc
audio_device_module_win.h(文件夹>win)
class AudioInput {
};
class AudioOutput {
};
rtc::scoped_refptr<AudioDeviceModuleForTest>
CreateWindowsCoreAudioAudioDeviceModuleFromInputAndOutput(
std::unique_ptr<AudioInput> audio_input,
std::unique_ptr<AudioOutput> audio_output,
TaskQueueFactory* task_queue_factory);
工程 audio_device_api
audio_device(文件夹>include)
class AudioDeviceModuleForTest;
class AudioDeviceModule : public rtc::RefCountInterface {
};
class AudioDeviceModuleForTest : public AudioDeviceModule {
public:
// Triggers internal restart sequences of audio streaming. Can be used by
// tests to emulate events corresponding to e.g. removal of an active audio
// device or other actions which causes the stream to be disconnected.
virtual int RestartPlayoutInternally() = 0;
virtual int RestartRecordingInternally() = 0;
virtual int SetPlayoutSampleRate(uint32_t sample_rate) = 0;
virtual int SetRecordingSampleRate(uint32_t sample_rate) = 0;
};
文件所属工程:
audio_device_module_from_input and_and_output:
namespace webrtc {
class AudioDeviceBuffer;
class FineAudioBuffer;
namespace webrtc_win {
class CoreAudioInput final : public CoreAudioBase, public AudioInput {
public:
CoreAudioInput(bool automatic_restart);
~CoreAudioInput() override;
// AudioInput implementation.
int Init() override;
int Terminate() override;
int NumDevices() const override;
int SetDevice(int index) override;
int SetDevice(AudioDeviceModule::WindowsDeviceType device) override;
int DeviceName(int index, std::string* name, std::string* guid) override;
void AttachAudioBuffer(AudioDeviceBuffer* audio_buffer) override;
bool RecordingIsInitialized() const override;
int InitRecording() override;
int StartRecording() override;
int StopRecording() override;
bool Recording() override;
int VolumeIsAvailable(bool* available) override;
int RestartRecording() override;
bool Restarting() const override;
};
} // namespace webrtc_win
} // namespace webrtc
core_audio_base_win
core_audio_utility_win