summaryrefslogtreecommitdiffstats
path: root/media/audio/audio_output_ipc.h
Commit message (Collapse)AuthorAgeFilesLines
* Allow audio system to handle synchronized low-latency audio I/Ocrogers@google.com2012-09-121-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | As an important part of WebAudio/WebRTC integration, we need to be able to process and analyse live audio. This change adds the ability to our audio system for handling synchronized audio input and output in the same callback (same thread) which is important for good performance and low-latency. As a part of this change, the audio IPC system now takes an optional |input_channels| argument in the CreateStream() message and associated browser-side code in AudioRendererHost::OnCreateStream(), etc. |input_channels| will be 0 during normal operation of audio output (and no input). But when synchronized audio I/O is needed, then a non-zero value can be passed in here. The |params| passed in represents both the input and output format, particularly the frames_per_buffer() and sample_rate(). AudioRendererSink now has an new InitializeIO() method which will allow the use of synchronized I/O with the |input_channels| argument. AudioRendererSink::RenderCallback now has a new RenderIO() which will be called instead of Render() in the case where a non-zero value is passed in for |input_channels|. BUG=none TEST=none (manual testing on early Mac OS X and Windows audio back-ends) Review URL: https://chromiumcodereview.appspot.com/10830268 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@156234 0039d316-1c4b-4281-b951-d872f2087c98
* Move AudioDevice and AudioInputDevice to media.tommi@chromium.org2012-07-271-4/+4
| | | | | | | | | | | | | | | | | This CL does the following: * Move AudioDevice, AudioInputDevice out of content, into media/audio. * ...and a couple of dependent classes: AudioDeviceThread and ScopedLoopObserver. * ...and the unit test. * Renamed AudioDevice -> AudioOutputDevice * Moved the classes into the media namespace. * Updated the unit test code as necessary. Aside from the unit test*, there are minimal code changes. Only what was required to make things build and work as before - mostly just adding or removing "media::". * The unit test changes were to add expectations for AddDelegate/RemoveDelegate since previously a mock class was inheriting from AudioMessageFilter and not the IPC interface. Review URL: https://chromiumcodereview.appspot.com/10834033 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148777 0039d316-1c4b-4281-b951-d872f2087c98
* First step towards moving AudioDevice and AudioInputDevice from content/ to ↵tommi@chromium.org2012-07-261-0/+103
media/audio. This cl introduces new IPC interface files in media/audio that have the definitions of an IPC layer for AudioDevice and AudioInputDevice. AudioMessageFilter, AudionInputMessageFilter and others have been updated to use definitions from these file but in order to keep the diffs simple, I haven't actually moved the files over to media/audio. That will be the next step (and then no code changes should be needed). TEST=There should be no functional changes here. If there are problems, they should be caught by our existing unit tests or build errors. Review URL: https://chromiumcodereview.appspot.com/10790121 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148533 0039d316-1c4b-4281-b951-d872f2087c98