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

Side by Side Diff: ppapi/shared_impl/ppb_audio_config_shared.cc

Issue 174213003: PPAPI: Use clang-format on ppapi/shared_impl (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: remove DEPS Created 6 years, 10 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
« no previous file with comments | « ppapi/shared_impl/ppb_audio_config_shared.h ('k') | ppapi/shared_impl/ppb_audio_shared.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "build/build_config.h" 5 #include "build/build_config.h"
6 #include "ppapi/shared_impl/ppb_audio_config_shared.h" 6 #include "ppapi/shared_impl/ppb_audio_config_shared.h"
7 #include "ppapi/thunk/enter.h" 7 #include "ppapi/thunk/enter.h"
8 #include "ppapi/thunk/ppb_instance_api.h" 8 #include "ppapi/thunk/ppb_instance_api.h"
9 9
10 namespace ppapi { 10 namespace ppapi {
11 11
12 // Rounds up requested_size to the nearest multiple of minimum_size. 12 // Rounds up requested_size to the nearest multiple of minimum_size.
13 static uint32_t CalculateMultipleOfSampleFrameCount(uint32_t minimum_size, 13 static uint32_t CalculateMultipleOfSampleFrameCount(uint32_t minimum_size,
14 uint32_t requested_size) { 14 uint32_t requested_size) {
15 const uint32_t multiple = (requested_size + minimum_size - 1) / minimum_size; 15 const uint32_t multiple = (requested_size + minimum_size - 1) / minimum_size;
16 return std::min(minimum_size * multiple, 16 return std::min(minimum_size * multiple,
17 static_cast<uint32_t>(PP_AUDIOMAXSAMPLEFRAMECOUNT)); 17 static_cast<uint32_t>(PP_AUDIOMAXSAMPLEFRAMECOUNT));
18 } 18 }
19 19
20 PPB_AudioConfig_Shared::PPB_AudioConfig_Shared(ResourceObjectType type, 20 PPB_AudioConfig_Shared::PPB_AudioConfig_Shared(ResourceObjectType type,
21 PP_Instance instance) 21 PP_Instance instance)
22 : Resource(type, instance), 22 : Resource(type, instance),
23 sample_rate_(PP_AUDIOSAMPLERATE_NONE), 23 sample_rate_(PP_AUDIOSAMPLERATE_NONE),
24 sample_frame_count_(0) { 24 sample_frame_count_(0) {}
25 }
26 25
27 PPB_AudioConfig_Shared::~PPB_AudioConfig_Shared() { 26 PPB_AudioConfig_Shared::~PPB_AudioConfig_Shared() {}
28 }
29 27
30 PP_Resource PPB_AudioConfig_Shared::Create( 28 PP_Resource PPB_AudioConfig_Shared::Create(ResourceObjectType type,
31 ResourceObjectType type, 29 PP_Instance instance,
32 PP_Instance instance, 30 PP_AudioSampleRate sample_rate,
33 PP_AudioSampleRate sample_rate, 31 uint32_t sample_frame_count) {
34 uint32_t sample_frame_count) {
35 scoped_refptr<PPB_AudioConfig_Shared> object( 32 scoped_refptr<PPB_AudioConfig_Shared> object(
36 new PPB_AudioConfig_Shared(type, instance)); 33 new PPB_AudioConfig_Shared(type, instance));
37 if (!object->Init(sample_rate, sample_frame_count)) 34 if (!object->Init(sample_rate, sample_frame_count))
38 return 0; 35 return 0;
39 return object->GetReference(); 36 return object->GetReference();
40 } 37 }
41 38
42 // static 39 // static
43 uint32_t PPB_AudioConfig_Shared::RecommendSampleFrameCount_1_0( 40 uint32_t PPB_AudioConfig_Shared::RecommendSampleFrameCount_1_0(
44 PP_AudioSampleRate sample_rate, 41 PP_AudioSampleRate sample_rate,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 // Adobe Flash is affected but not HTML5, WebRTC and WebAudio (they are using 87 // Adobe Flash is affected but not HTML5, WebRTC and WebAudio (they are using
91 // real time threads). 88 // real time threads).
92 const bool kHighLatencyDevice = true; 89 const bool kHighLatencyDevice = true;
93 #else 90 #else
94 const bool kHighLatencyDevice = false; 91 const bool kHighLatencyDevice = false;
95 #endif 92 #endif
96 93
97 // If client is using same sample rate as audio hardware, then recommend a 94 // If client is using same sample rate as audio hardware, then recommend a
98 // multiple of the audio hardware's sample frame count. 95 // multiple of the audio hardware's sample frame count.
99 if (!kHighLatencyDevice && hardware_sample_rate == sample_rate) { 96 if (!kHighLatencyDevice && hardware_sample_rate == sample_rate) {
100 return CalculateMultipleOfSampleFrameCount( 97 return CalculateMultipleOfSampleFrameCount(hardware_sample_frame_count,
101 hardware_sample_frame_count, sample_frame_count); 98 sample_frame_count);
102 } 99 }
103 100
104 // If the hardware requires a high latency buffer or we're at a low sample 101 // If the hardware requires a high latency buffer or we're at a low sample
105 // rate w/ a buffer that's larger than 10ms, choose the nearest multiple of 102 // rate w/ a buffer that's larger than 10ms, choose the nearest multiple of
106 // the high latency sample frame count. An example of too low and too large 103 // the high latency sample frame count. An example of too low and too large
107 // is 16kHz and a sample frame count greater than 160 frames. 104 // is 16kHz and a sample frame count greater than 160 frames.
108 if (kHighLatencyDevice || 105 if (kHighLatencyDevice ||
109 hardware_sample_frame_count >= kHighLatencySampleFrameCount || 106 hardware_sample_frame_count >= kHighLatencySampleFrameCount ||
110 (hardware_sample_rate < 44100 && 107 (hardware_sample_rate < 44100 &&
111 hardware_sample_frame_count > hardware_sample_rate / 100u)) { 108 hardware_sample_frame_count > hardware_sample_rate / 100u)) {
112 return CalculateMultipleOfSampleFrameCount( 109 return CalculateMultipleOfSampleFrameCount(
113 sample_frame_count, 110 sample_frame_count,
114 std::max(kHighLatencySampleFrameCount, hardware_sample_frame_count)); 111 std::max(kHighLatencySampleFrameCount, hardware_sample_frame_count));
115 } 112 }
116 113
117 // All low latency clients should be able to handle a 512 frame buffer with 114 // All low latency clients should be able to handle a 512 frame buffer with
118 // resampling from 44.1kHz and 48kHz to higher sample rates. 115 // resampling from 44.1kHz and 48kHz to higher sample rates.
119 // TODO(dalecurtis): We may need to investigate making the callback thread 116 // TODO(dalecurtis): We may need to investigate making the callback thread
120 // high priority to handle buffers at the absolute minimum w/o glitching. 117 // high priority to handle buffers at the absolute minimum w/o glitching.
121 const uint32_t kLowLatencySampleFrameCount = 512; 118 const uint32_t kLowLatencySampleFrameCount = 512;
122 119
123 // Special case for 48kHz -> 44.1kHz and buffer sizes greater than 10ms. In 120 // Special case for 48kHz -> 44.1kHz and buffer sizes greater than 10ms. In
124 // testing most buffer sizes > 10ms led to glitching, so we choose a size we 121 // testing most buffer sizes > 10ms led to glitching, so we choose a size we
125 // know won't cause jitter. 122 // know won't cause jitter.
126 int min_sample_frame_count = kLowLatencySampleFrameCount; 123 int min_sample_frame_count = kLowLatencySampleFrameCount;
127 if (hardware_sample_rate == 44100 && sample_rate == 48000 && 124 if (hardware_sample_rate == 44100 && sample_rate == 48000 &&
128 hardware_sample_frame_count > hardware_sample_rate / 100u) { 125 hardware_sample_frame_count > hardware_sample_rate / 100u) {
129 min_sample_frame_count = std::max( 126 min_sample_frame_count =
130 2 * kLowLatencySampleFrameCount, hardware_sample_frame_count); 127 std::max(2 * kLowLatencySampleFrameCount, hardware_sample_frame_count);
131 } 128 }
132 129
133 return CalculateMultipleOfSampleFrameCount( 130 return CalculateMultipleOfSampleFrameCount(min_sample_frame_count,
134 min_sample_frame_count, sample_frame_count); 131 sample_frame_count);
135 } 132 }
136 133
137 // static 134 // static
138 PP_AudioSampleRate PPB_AudioConfig_Shared::RecommendSampleRate( 135 PP_AudioSampleRate PPB_AudioConfig_Shared::RecommendSampleRate(
139 PP_Instance instance) { 136 PP_Instance instance) {
140 thunk::EnterInstanceNoLock enter(instance); 137 thunk::EnterInstanceNoLock enter(instance);
141 if (enter.failed()) 138 if (enter.failed())
142 return PP_AUDIOSAMPLERATE_NONE; 139 return PP_AUDIOSAMPLERATE_NONE;
143 PP_AudioSampleRate hardware_sample_rate = static_cast<PP_AudioSampleRate>( 140 PP_AudioSampleRate hardware_sample_rate = static_cast<PP_AudioSampleRate>(
144 enter.functions()->GetAudioHardwareOutputSampleRate(instance)); 141 enter.functions()->GetAudioHardwareOutputSampleRate(instance));
145 return hardware_sample_rate; 142 return hardware_sample_rate;
146 } 143 }
147 144
148 thunk::PPB_AudioConfig_API* PPB_AudioConfig_Shared::AsPPB_AudioConfig_API() { 145 thunk::PPB_AudioConfig_API* PPB_AudioConfig_Shared::AsPPB_AudioConfig_API() {
149 return this; 146 return this;
150 } 147 }
151 148
152 PP_AudioSampleRate PPB_AudioConfig_Shared::GetSampleRate() { 149 PP_AudioSampleRate PPB_AudioConfig_Shared::GetSampleRate() {
153 return sample_rate_; 150 return sample_rate_;
154 } 151 }
(...skipping 17 matching lines...) Expand all
172 if (sample_frame_count > PP_AUDIOMAXSAMPLEFRAMECOUNT || 169 if (sample_frame_count > PP_AUDIOMAXSAMPLEFRAMECOUNT ||
173 sample_frame_count < PP_AUDIOMINSAMPLEFRAMECOUNT) 170 sample_frame_count < PP_AUDIOMINSAMPLEFRAMECOUNT)
174 return false; 171 return false;
175 172
176 sample_rate_ = sample_rate; 173 sample_rate_ = sample_rate;
177 sample_frame_count_ = sample_frame_count; 174 sample_frame_count_ = sample_frame_count;
178 return true; 175 return true;
179 } 176 }
180 177
181 } // namespace ppapi 178 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/shared_impl/ppb_audio_config_shared.h ('k') | ppapi/shared_impl/ppb_audio_shared.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698