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

Side by Side Diff: content/renderer/media/webrtc_audio_renderer.cc

Issue 646033007: Use the optimal buffer size for the local audio renderer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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
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 "content/renderer/media/webrtc_audio_renderer.h" 5 #include "content/renderer/media/webrtc_audio_renderer.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/metrics/histogram.h" 8 #include "base/metrics/histogram.h"
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 RenderFrameImpl::FromRoutingID(render_frame_id); 133 RenderFrameImpl::FromRoutingID(render_frame_id);
134 MediaStreamDispatcher* const dispatcher = frame ? 134 MediaStreamDispatcher* const dispatcher = frame ?
135 frame->GetMediaStreamDispatcher() : NULL; 135 frame->GetMediaStreamDispatcher() : NULL;
136 if (dispatcher && dispatcher->IsAudioDuckingActive()) { 136 if (dispatcher && dispatcher->IsAudioDuckingActive()) {
137 return media::AudioParameters::DUCKING; 137 return media::AudioParameters::DUCKING;
138 } 138 }
139 139
140 return media::AudioParameters::NO_EFFECTS; 140 return media::AudioParameters::NO_EFFECTS;
141 } 141 }
142 142
143 // Helper method to get platform specific optimal buffer size. 143 } // namespace
144 int GetOptimalBufferSize(int sample_rate, int hardware_buffer_size) { 144
145 int WebRtcAudioRenderer::GetOptimalBufferSize(int sample_rate,
146 int hardware_buffer_size) {
145 // Use native hardware buffer size as default. On Windows, we strive to open 147 // Use native hardware buffer size as default. On Windows, we strive to open
146 // up using this native hardware buffer size to achieve best 148 // up using this native hardware buffer size to achieve best
147 // possible performance and to ensure that no FIFO is needed on the browser 149 // possible performance and to ensure that no FIFO is needed on the browser
148 // side to match the client request. That is why there is no #if case for 150 // side to match the client request. That is why there is no #if case for
149 // Windows below. 151 // Windows below.
150 int frames_per_buffer = hardware_buffer_size; 152 int frames_per_buffer = hardware_buffer_size;
151 153
152 #if defined(OS_LINUX) || defined(OS_MACOSX) 154 #if defined(OS_LINUX) || defined(OS_MACOSX)
153 // On Linux and MacOS, the low level IO implementations on the browser side 155 // On Linux and MacOS, the low level IO implementations on the browser side
154 // supports all buffer size the clients want. We use the native peer 156 // supports all buffer size the clients want. We use the native peer
(...skipping 11 matching lines...) Expand all
166 // Galaxy Nexus: 144 => 2*441 = 882 168 // Galaxy Nexus: 144 => 2*441 = 882
167 frames_per_buffer = 2 * frames_per_10ms; 169 frames_per_buffer = 2 * frames_per_10ms;
168 DVLOG(1) << "Low-latency output detected on Android"; 170 DVLOG(1) << "Low-latency output detected on Android";
169 } 171 }
170 #endif 172 #endif
171 173
172 DVLOG(1) << "Using sink output buffer size: " << frames_per_buffer; 174 DVLOG(1) << "Using sink output buffer size: " << frames_per_buffer;
173 return frames_per_buffer; 175 return frames_per_buffer;
174 } 176 }
175 177
176 } // namespace
177
178 WebRtcAudioRenderer::WebRtcAudioRenderer( 178 WebRtcAudioRenderer::WebRtcAudioRenderer(
179 const scoped_refptr<webrtc::MediaStreamInterface>& media_stream, 179 const scoped_refptr<webrtc::MediaStreamInterface>& media_stream,
180 int source_render_view_id, 180 int source_render_view_id,
181 int source_render_frame_id, 181 int source_render_frame_id,
182 int session_id, 182 int session_id,
183 int sample_rate, 183 int sample_rate,
184 int frames_per_buffer) 184 int frames_per_buffer)
185 : state_(UNINITIALIZED), 185 : state_(UNINITIALIZED),
186 source_render_view_id_(source_render_view_id), 186 source_render_view_id_(source_render_view_id),
187 source_render_frame_id_(source_render_frame_id), 187 source_render_frame_id_(source_render_frame_id),
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 if (RemovePlayingState(source, state)) 552 if (RemovePlayingState(source, state))
553 EnterPauseState(); 553 EnterPauseState();
554 } else if (AddPlayingState(source, state)) { 554 } else if (AddPlayingState(source, state)) {
555 EnterPlayState(); 555 EnterPlayState();
556 } 556 }
557 UpdateSourceVolume(source); 557 UpdateSourceVolume(source);
558 } 558 }
559 } 559 }
560 560
561 } // namespace content 561 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/webrtc_audio_renderer.h ('k') | content/renderer/media/webrtc_local_audio_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698