Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(374)

Side by Side Diff: chromecast/media/audio/audio_manager.cc

Issue 1308153005: [Chromecast] Plumbs raw audio through CMA backend. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chromecast/media/audio/audio_manager.h"
6
7 #include "chromecast/base/task_runner_impl.h"
8 #include "chromecast/media/audio/audio_output_stream.h"
9 #include "chromecast/public/cast_media_shlib.h"
10 #include "chromecast/public/media/media_pipeline_backend.h"
11 #include "chromecast/public/media/media_pipeline_device_params.h"
12
13 namespace chromecast {
14 namespace media {
15
16 AudioManager::AudioManager(::media::AudioLogFactory* audio_log_factory)
17 : AudioManagerBase(audio_log_factory) {}
18
19 AudioManager::~AudioManager() {
20 Shutdown();
21 }
22
23 bool AudioManager::HasAudioOutputDevices() {
24 return true;
25 }
26
27 bool AudioManager::HasAudioInputDevices() {
28 return false;
29 }
30
31 void AudioManager::ShowAudioInputSettings() {
32 LOG(WARNING) << "No support for input audio devices";
33 }
34
35 void AudioManager::GetAudioInputDeviceNames(
36 ::media::AudioDeviceNames* device_names) {
37 DCHECK(device_names->empty());
38 LOG(WARNING) << "No support for input audio devices";
39 }
40
41 ::media::AudioParameters AudioManager::GetInputStreamParameters(
42 const std::string& device_id) {
43 LOG(WARNING) << "No support for input audio devices";
44 // Need to send a valid AudioParameters object even when it will unused.
45 return ::media::AudioParameters(
46 ::media::AudioParameters::AUDIO_PCM_LOW_LATENCY,
47 ::media::CHANNEL_LAYOUT_STEREO, 48000, 16, 1024);
48 }
49
50 scoped_ptr<MediaPipelineBackend> AudioManager::CreateMediaPipelineBackend() {
51 if (!audio_task_runner_)
52 audio_task_runner_.reset(new TaskRunnerImpl());
53
54 MediaPipelineDeviceParams device_params(
55 MediaPipelineDeviceParams::kModeIgnorePts, audio_task_runner_.get());
56 return scoped_ptr<MediaPipelineBackend>(
57 CastMediaShlib::CreateMediaPipelineBackend(device_params));
58 }
59
60 ::media::AudioOutputStream* AudioManager::MakeLinearOutputStream(
61 const ::media::AudioParameters& params) {
62 DCHECK_EQ(::media::AudioParameters::AUDIO_PCM_LINEAR, params.format());
63 return new AudioOutputStream(params, this);
64 }
65
66 ::media::AudioOutputStream* AudioManager::MakeLowLatencyOutputStream(
67 const ::media::AudioParameters& params,
68 const std::string& device_id) {
69 DCHECK_EQ(::media::AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format());
70 return new AudioOutputStream(params, this);
71 }
72
73 ::media::AudioInputStream* AudioManager::MakeLinearInputStream(
74 const ::media::AudioParameters& params,
75 const std::string& device_id) {
76 LOG(WARNING) << "No support for input audio devices";
77 return nullptr;
78 }
79
80 ::media::AudioInputStream* AudioManager::MakeLowLatencyInputStream(
81 const ::media::AudioParameters& params,
82 const std::string& device_id) {
83 LOG(WARNING) << "No support for input audio devices";
84 return nullptr;
85 }
86
87 ::media::AudioParameters AudioManager::GetPreferredOutputStreamParameters(
88 const std::string& output_device_id,
89 const ::media::AudioParameters& input_params) {
90 ::media::ChannelLayout channel_layout = ::media::CHANNEL_LAYOUT_STEREO;
91 int sample_rate = 44100;
92 int buffer_size = 2048;
93 int bits_per_sample = 16;
94 if (input_params.IsValid()) {
95 // Do not change:
96 // - the channel layout
97 // - the number of bits per sample
98 // We support stereo only with 16 bits per sample.
99 sample_rate = input_params.sample_rate();
100 }
101
102 ::media::AudioParameters output_params(
103 ::media::AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout,
104 sample_rate, bits_per_sample, buffer_size,
105 ::media::AudioParameters::NO_EFFECTS);
106 return output_params;
107 }
108
109 } // namespace media
110 } // namespace chromecast
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698