audio_manager_android.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// found in the LICENSE file. 403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "media/audio/android/audio_manager_android.h" 603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "base/logging.h" 803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "media/audio/android/opensles_input.h" 903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "media/audio/android/opensles_output.h" 1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "media/audio/audio_manager.h" 1103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "media/audio/fake_audio_input_stream.h" 1203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 1303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace media { 1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 1503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Maximum number of output streams that can be open simultaneously. 1603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)static const int kMaxOutputStreams = 10; 1703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 1803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)AudioManager* CreateAudioManager() { 1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) return new AudioManagerAndroid(); 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAudioManagerAndroid::AudioManagerAndroid() { 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci SetMaxOutputStreamsAllowed(kMaxOutputStreams); 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAudioManagerAndroid::~AudioManagerAndroid() { 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Shutdown(); 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool AudioManagerAndroid::HasAudioOutputDevices() { 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return true; 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool AudioManagerAndroid::HasAudioInputDevices() { 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return false; 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciAudioOutputStream* AudioManagerAndroid::MakeLinearOutputStream( 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const AudioParameters& params) { 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return new OpenSLESOutputStream(this, params); 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 4403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)AudioOutputStream* AudioManagerAndroid::MakeLowLatencyOutputStream( 45 const AudioParameters& params) { 46 DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); 47 return new OpenSLESOutputStream(this, params); 48} 49 50AudioInputStream* AudioManagerAndroid::MakeLinearInputStream( 51 const AudioParameters& params, const std::string& device_id) { 52 DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); 53 return new OpenSLESInputStream(this, params); 54} 55 56AudioInputStream* AudioManagerAndroid::MakeLowLatencyInputStream( 57 const AudioParameters& params, const std::string& device_id) { 58 DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); 59 return new OpenSLESInputStream(this, params); 60} 61 62} // namespace media 63