Changeset View
Changeset View
Standalone View
Standalone View
www/qt5-webengine/files/audio_manager_openbsd.cc
// Copyright (c) 2012 The Chromium Authors. All rights reserved. | // Copyright (c) 2012 The Chromium Authors. All rights reserved. | ||||
// Use of this source code is governed by a BSD-style license that can be | // Use of this source code is governed by a BSD-style license that can be | ||||
// found in the LICENSE file. | // found in the LICENSE file. | ||||
#include "base/metrics/histogram_macros.h" | #include "base/metrics/histogram_macros.h" | ||||
#include "base/memory/ptr_util.h" | |||||
#include "media/audio/openbsd/audio_manager_openbsd.h" | #include "media/audio/openbsd/audio_manager_openbsd.h" | ||||
#include "media/audio/audio_device_description.h" | #include "media/audio/audio_device_description.h" | ||||
#include "media/audio/audio_output_dispatcher.h" | #include "media/audio/audio_output_dispatcher.h" | ||||
#if defined(USE_PULSEAUDIO) | |||||
#include "media/audio/pulse/audio_manager_pulse.h" | |||||
#endif | |||||
#if defined(USE_SNDIO) | #if defined(USE_SNDIO) | ||||
#include "media/audio/sndio/sndio_input.h" | #include "media/audio/sndio/sndio_input.h" | ||||
#include "media/audio/sndio/sndio_output.h" | #include "media/audio/sndio/sndio_output.h" | ||||
#else | #else | ||||
#include "media/audio/fake_audio_manager.h" | #include "media/audio/fake_audio_manager.h" | ||||
#endif | #endif | ||||
#include "media/base/limits.h" | #include "media/base/limits.h" | ||||
#include "media/base/media_switches.h" | #include "media/base/media_switches.h" | ||||
Show All 21 Lines | |||||
bool AudioManagerOpenBSD::HasAudioOutputDevices() { | bool AudioManagerOpenBSD::HasAudioOutputDevices() { | ||||
return true; | return true; | ||||
} | } | ||||
bool AudioManagerOpenBSD::HasAudioInputDevices() { | bool AudioManagerOpenBSD::HasAudioInputDevices() { | ||||
return true; | return true; | ||||
} | } | ||||
void AudioManagerOpenBSD::ShowAudioInputSettings() { | |||||
NOTIMPLEMENTED(); | |||||
} | |||||
void AudioManagerOpenBSD::GetAudioInputDeviceNames( | void AudioManagerOpenBSD::GetAudioInputDeviceNames( | ||||
AudioDeviceNames* device_names) { | AudioDeviceNames* device_names) { | ||||
DCHECK(device_names->empty()); | DCHECK(device_names->empty()); | ||||
AddDefaultDevice(device_names); | AddDefaultDevice(device_names); | ||||
} | } | ||||
void AudioManagerOpenBSD::GetAudioOutputDeviceNames( | void AudioManagerOpenBSD::GetAudioOutputDeviceNames( | ||||
AudioDeviceNames* device_names) { | AudioDeviceNames* device_names) { | ||||
AddDefaultDevice(device_names); | AddDefaultDevice(device_names); | ||||
} | } | ||||
#if defined(USE_SNDIO) | |||||
const char* AudioManagerOpenBSD::GetName() { | |||||
return "SNDIO"; | |||||
} | |||||
#endif | |||||
AudioParameters AudioManagerOpenBSD::GetInputStreamParameters( | AudioParameters AudioManagerOpenBSD::GetInputStreamParameters( | ||||
const std::string& device_id) { | const std::string& device_id) { | ||||
static const int kDefaultInputBufferSize = 1024; | static const int kDefaultInputBufferSize = 1024; | ||||
int user_buffer_size = GetUserBufferSize(); | int user_buffer_size = GetUserBufferSize(); | ||||
int buffer_size = user_buffer_size ? | int buffer_size = user_buffer_size ? | ||||
user_buffer_size : kDefaultInputBufferSize; | user_buffer_size : kDefaultInputBufferSize; | ||||
return AudioParameters( | return AudioParameters( | ||||
AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, | AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, | ||||
kDefaultSampleRate, 16, buffer_size); | kDefaultSampleRate, buffer_size); | ||||
} | } | ||||
AudioManagerOpenBSD::AudioManagerOpenBSD( | AudioManagerOpenBSD::AudioManagerOpenBSD(std::unique_ptr<AudioThread> audio_thread, | ||||
scoped_refptr<base::SingleThreadTaskRunner> task_runner, | |||||
scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner, | |||||
AudioLogFactory* audio_log_factory) | AudioLogFactory* audio_log_factory) | ||||
: AudioManagerBase(std::move(task_runner), | : AudioManagerBase(std::move(audio_thread), | ||||
std::move(worker_task_runner), | |||||
audio_log_factory) { | audio_log_factory) { | ||||
DLOG(WARNING) << "AudioManagerOpenBSD"; | DLOG(WARNING) << "AudioManagerOpenBSD"; | ||||
SetMaxOutputStreamsAllowed(kMaxOutputStreams); | SetMaxOutputStreamsAllowed(kMaxOutputStreams); | ||||
} | } | ||||
AudioManagerOpenBSD::~AudioManagerOpenBSD() { | AudioManagerOpenBSD::~AudioManagerOpenBSD() { | ||||
Shutdown(); | Shutdown(); | ||||
} | } | ||||
Show All 35 Lines | AudioParameters AudioManagerOpenBSD::GetPreferredOutputStreamParameters( | ||||
const AudioParameters& input_params) { | const AudioParameters& input_params) { | ||||
// TODO(tommi): Support |output_device_id|. | // TODO(tommi): Support |output_device_id|. | ||||
DLOG_IF(ERROR, !output_device_id.empty()) << "Not implemented!"; | DLOG_IF(ERROR, !output_device_id.empty()) << "Not implemented!"; | ||||
static const int kDefaultOutputBufferSize = 2048; | static const int kDefaultOutputBufferSize = 2048; | ||||
ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; | ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; | ||||
int sample_rate = kDefaultSampleRate; | int sample_rate = kDefaultSampleRate; | ||||
int buffer_size = kDefaultOutputBufferSize; | int buffer_size = kDefaultOutputBufferSize; | ||||
int bits_per_sample = 16; | |||||
if (input_params.IsValid()) { | if (input_params.IsValid()) { | ||||
sample_rate = input_params.sample_rate(); | sample_rate = input_params.sample_rate(); | ||||
bits_per_sample = input_params.bits_per_sample(); | |||||
channel_layout = input_params.channel_layout(); | channel_layout = input_params.channel_layout(); | ||||
buffer_size = std::min(buffer_size, input_params.frames_per_buffer()); | buffer_size = std::min(buffer_size, input_params.frames_per_buffer()); | ||||
} | } | ||||
int user_buffer_size = GetUserBufferSize(); | int user_buffer_size = GetUserBufferSize(); | ||||
if (user_buffer_size) | if (user_buffer_size) | ||||
buffer_size = user_buffer_size; | buffer_size = user_buffer_size; | ||||
return AudioParameters( | return AudioParameters( | ||||
AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, | AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, | ||||
sample_rate, bits_per_sample, buffer_size); | sample_rate, buffer_size); | ||||
} | } | ||||
AudioInputStream* AudioManagerOpenBSD::MakeInputStream( | AudioInputStream* AudioManagerOpenBSD::MakeInputStream( | ||||
const AudioParameters& params) { | const AudioParameters& params) { | ||||
DLOG(WARNING) << "MakeInputStream"; | DLOG(WARNING) << "MakeInputStream"; | ||||
return new SndioAudioInputStream(this, | return new SndioAudioInputStream(this, | ||||
AudioDeviceDescription::kDefaultDeviceId, params); | AudioDeviceDescription::kDefaultDeviceId, params); | ||||
} | } | ||||
AudioOutputStream* AudioManagerOpenBSD::MakeOutputStream( | AudioOutputStream* AudioManagerOpenBSD::MakeOutputStream( | ||||
const AudioParameters& params) { | const AudioParameters& params) { | ||||
DLOG(WARNING) << "MakeOutputStream"; | DLOG(WARNING) << "MakeOutputStream"; | ||||
return new SndioAudioOutputStream(params, this); | return new SndioAudioOutputStream(params, this); | ||||
} | } | ||||
#endif | #endif | ||||
ScopedAudioManagerPtr CreateAudioManager( | std::unique_ptr<media::AudioManager> CreateAudioManager( | ||||
scoped_refptr<base::SingleThreadTaskRunner> task_runner, | std::unique_ptr<AudioThread> audio_thread, | ||||
scoped_refptr<base::SingleThreadTaskRunner> worker_task_runner, | |||||
AudioLogFactory* audio_log_factory) { | AudioLogFactory* audio_log_factory) { | ||||
DLOG(WARNING) << "CreateAudioManager"; | DLOG(WARNING) << "CreateAudioManager"; | ||||
#if defined(USE_PULSEAUDIO) | |||||
// Do not move task runners when creating AudioManagerPulse. | |||||
// If the creation fails, we need to use the task runners to create other | |||||
// AudioManager implementations. | |||||
std::unique_ptr<AudioManagerPulse, AudioManagerDeleter> manager( | |||||
new AudioManagerPulse(task_runner, worker_task_runner, | |||||
audio_log_factory)); | |||||
if (manager->Init()) { | |||||
UMA_HISTOGRAM_ENUMERATION("Media.OpenBSDAudioIO", kPulse, kAudioIOMax + 1); | |||||
return std::move(manager); | |||||
} | |||||
DVLOG(1) << "PulseAudio is not available on the OS"; | |||||
#endif | |||||
#if defined(USE_SNDIO) | #if defined(USE_SNDIO) | ||||
UMA_HISTOGRAM_ENUMERATION("Media.OpenBSDAudioIO", kSndio, kAudioIOMax + 1); | UMA_HISTOGRAM_ENUMERATION("Media.OpenBSDAudioIO", kSndio, kAudioIOMax + 1); | ||||
return ScopedAudioManagerPtr( | return std::make_unique<AudioManagerOpenBSD>(std::move(audio_thread), | ||||
new AudioManagerOpenBSD(std::move(task_runner), | audio_log_factory); | ||||
std::move(worker_task_runner),audio_log_factory)); | |||||
#else | #else | ||||
return ScopedAudioManagerPtr( | return std::make_unique<FakeAudioManager>(std::move(audio_thread), | ||||
new FakeAudioManager(std::move(task_runner), | audio_log_factory); | ||||
std::move(worker_task_runner), audio_log_factory)); | |||||
#endif | #endif | ||||
} | } | ||||
} // namespace media | } // namespace media |