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

Unified Diff: content/renderer/media/webrtc_audio_renderer.cc

Issue 15907005: Adds proper 44.1 support to WebRTC (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/media/webrtc_audio_device_impl.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/webrtc_audio_renderer.cc
===================================================================
--- content/renderer/media/webrtc_audio_renderer.cc (revision 202522)
+++ content/renderer/media/webrtc_audio_renderer.cc (working copy)
@@ -46,7 +46,7 @@
enum AudioFramesPerBuffer {
k160,
k320,
- k440, // WebRTC works internally with 440 audio frames at 44.1kHz.
+ k440,
k480,
k640,
k880,
@@ -58,11 +58,14 @@
// Helper method to convert integral values to their respective enum values
// above, or kUnexpectedAudioBufferSize if no match exists.
+// We map 441 to k440 to avoid changes in the XML part for histograms.
+// It is still possible to map the histogram result to the actual buffer size.
+// See http://crbug.com/243450 for details.
AudioFramesPerBuffer AsAudioFramesPerBuffer(int frames_per_buffer) {
switch (frames_per_buffer) {
case 160: return k160;
case 320: return k320;
- case 440: return k440;
+ case 441: return k440;
case 480: return k480;
case 640: return k640;
case 880: return k880;
@@ -147,24 +150,13 @@
}
// Set up audio parameters for the source, i.e., the WebRTC client.
+
// The WebRTC client only supports multiples of 10ms as buffer size where
// 10ms is preferred for lowest possible delay.
-
media::AudioParameters source_params;
- int buffer_size = 0;
+ int buffer_size = (sample_rate / 100);
+ DVLOG(1) << "Using WebRTC output buffer size: " << buffer_size;
- if (sample_rate % 8000 == 0) {
ajm 2013/05/28 15:13:05 Since webrtc needs 10 ms buffers it only supports
henrika (OOO until Aug 14) 2013/05/28 16:40:30 You will catch that in the lines above where we en
ajm 2013/05/28 16:43:22 Sounds good, thanks.
- buffer_size = (sample_rate / 100);
- } else if (sample_rate == 44100) {
- // The resampler in WebRTC does not support 441 as input. We hard code
- // the size to 440 (~0.9977ms) instead and rely on the internal jitter
- // buffer in WebRTC to deal with the resulting drift.
- // TODO(henrika): ensure that WebRTC supports 44100Hz and use 441 instead.
- buffer_size = 440;
- } else {
- return false;
- }
-
int channels = ChannelLayoutToChannelCount(channel_layout);
source_params.Reset(media::AudioParameters::AUDIO_PCM_LOW_LATENCY,
channel_layout, channels, 0,
« no previous file with comments | « content/renderer/media/webrtc_audio_device_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698