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

Side by Side Diff: media/audio/mac/audio_low_latency_input_mac.cc

Issue 15563004: Improved AGC update scheme for the audio backend in Chrome (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: tommi@ review 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 unified diff | Download patch | Annotate | Revision Log
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 "media/audio/mac/audio_low_latency_input_mac.h" 5 #include "media/audio/mac/audio_low_latency_input_mac.h"
6 6
7 #include <CoreServices/CoreServices.h> 7 #include <CoreServices/CoreServices.h>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 audio_input->audio_buffer_list(), 476 audio_input->audio_buffer_list(),
477 time_stamp); 477 time_stamp);
478 } 478 }
479 479
480 OSStatus AUAudioInputStream::Provide(UInt32 number_of_frames, 480 OSStatus AUAudioInputStream::Provide(UInt32 number_of_frames,
481 AudioBufferList* io_data, 481 AudioBufferList* io_data,
482 const AudioTimeStamp* time_stamp) { 482 const AudioTimeStamp* time_stamp) {
483 // Update the capture latency. 483 // Update the capture latency.
484 double capture_latency_frames = GetCaptureLatency(time_stamp); 484 double capture_latency_frames = GetCaptureLatency(time_stamp);
485 485
486 // Update the AGC volume level once every second. Note that, |volume| is 486 // The AGC volume level is updated once every second on a separate thread.
487 // also updated each time SetVolume() is called through IPC by the 487 // Note that, |volume| is also updated each time SetVolume() is called
488 // render-side AGC. 488 // through IPC by the render-side AGC.
489 double normalized_volume = 0.0; 489 double normalized_volume = 0.0;
490 QueryAgcVolume(&normalized_volume); 490 GetAgcVolume(&normalized_volume);
491 491
492 AudioBuffer& buffer = io_data->mBuffers[0]; 492 AudioBuffer& buffer = io_data->mBuffers[0];
493 uint8* audio_data = reinterpret_cast<uint8*>(buffer.mData); 493 uint8* audio_data = reinterpret_cast<uint8*>(buffer.mData);
494 uint32 capture_delay_bytes = static_cast<uint32> 494 uint32 capture_delay_bytes = static_cast<uint32>
495 ((capture_latency_frames + 0.5) * format_.mBytesPerFrame); 495 ((capture_latency_frames + 0.5) * format_.mBytesPerFrame);
496 DCHECK(audio_data); 496 DCHECK(audio_data);
497 if (!audio_data) 497 if (!audio_data)
498 return kAudioUnitErr_InvalidElement; 498 return kAudioUnitErr_InvalidElement;
499 499
500 // Accumulate captured audio in FIFO until we can match the output size 500 // Accumulate captured audio in FIFO until we can match the output size
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 kAudioDevicePropertyScopeInput, 650 kAudioDevicePropertyScopeInput,
651 static_cast<UInt32>(channel) 651 static_cast<UInt32>(channel)
652 }; 652 };
653 OSStatus result = AudioObjectIsPropertySettable(input_device_id_, 653 OSStatus result = AudioObjectIsPropertySettable(input_device_id_,
654 &property_address, 654 &property_address,
655 &is_settable); 655 &is_settable);
656 return (result == noErr) ? is_settable : false; 656 return (result == noErr) ? is_settable : false;
657 } 657 }
658 658
659 } // namespace media 659 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698