| Index: content/browser/renderer_host/media/audio_renderer_host.cc
|
| diff --git a/content/browser/renderer_host/media/audio_renderer_host.cc b/content/browser/renderer_host/media/audio_renderer_host.cc
|
| index c77c84bab3a56c96ae1fd6413802a5413b23caf4..f4a0cc0fb38ebb96226eb5611aee32583fb884e8 100644
|
| --- a/content/browser/renderer_host/media/audio_renderer_host.cc
|
| +++ b/content/browser/renderer_host/media/audio_renderer_host.cc
|
| @@ -21,7 +21,6 @@ using content::BrowserThread;
|
|
|
| AudioRendererHost::AudioEntry::AudioEntry()
|
| : stream_id(0),
|
| - pending_buffer_request(false),
|
| pending_close(false) {
|
| }
|
|
|
| @@ -91,16 +90,6 @@ void AudioRendererHost::OnError(media::AudioOutputController* controller,
|
| this, make_scoped_refptr(controller), error_code));
|
| }
|
|
|
| -void AudioRendererHost::OnMoreData(media::AudioOutputController* controller,
|
| - AudioBuffersState buffers_state) {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::IO,
|
| - FROM_HERE,
|
| - base::Bind(&AudioRendererHost::DoRequestMoreData,
|
| - this, make_scoped_refptr(controller),
|
| - buffers_state));
|
| -}
|
| -
|
| void AudioRendererHost::DoCompleteCreation(
|
| media::AudioOutputController* controller) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| @@ -126,37 +115,28 @@ void AudioRendererHost::DoCompleteCreation(
|
| return;
|
| }
|
|
|
| - if (entry->controller->LowLatencyMode()) {
|
| - AudioSyncReader* reader =
|
| - static_cast<AudioSyncReader*>(entry->reader.get());
|
| + AudioSyncReader* reader =
|
| + static_cast<AudioSyncReader*>(entry->reader.get());
|
|
|
| #if defined(OS_WIN)
|
| - base::SyncSocket::Handle foreign_socket_handle;
|
| + base::SyncSocket::Handle foreign_socket_handle;
|
| #else
|
| - base::FileDescriptor foreign_socket_handle;
|
| + base::FileDescriptor foreign_socket_handle;
|
| #endif
|
|
|
| - // If we failed to prepare the sync socket for the renderer then we fail
|
| - // the construction of audio stream.
|
| - if (!reader->PrepareForeignSocketHandle(peer_handle(),
|
| - &foreign_socket_handle)) {
|
| - DeleteEntryOnError(entry);
|
| - return;
|
| - }
|
| -
|
| - Send(new AudioMsg_NotifyLowLatencyStreamCreated(
|
| - entry->stream_id,
|
| - foreign_memory_handle,
|
| - foreign_socket_handle,
|
| - media::PacketSizeSizeInBytes(entry->shared_memory.created_size())));
|
| + // If we failed to prepare the sync socket for the renderer then we fail
|
| + // the construction of audio stream.
|
| + if (!reader->PrepareForeignSocketHandle(peer_handle(),
|
| + &foreign_socket_handle)) {
|
| + DeleteEntryOnError(entry);
|
| return;
|
| }
|
|
|
| - // The normal audio stream has created, send a message to the renderer
|
| - // process.
|
| Send(new AudioMsg_NotifyStreamCreated(
|
| - entry->stream_id, foreign_memory_handle,
|
| - entry->shared_memory.created_size()));
|
| + entry->stream_id,
|
| + foreign_memory_handle,
|
| + foreign_socket_handle,
|
| + media::PacketSizeSizeInBytes(entry->shared_memory.created_size())));
|
| }
|
|
|
| void AudioRendererHost::DoSendPlayingMessage(
|
| @@ -183,22 +163,6 @@ void AudioRendererHost::DoSendPausedMessage(
|
| entry->stream_id, kAudioStreamPaused));
|
| }
|
|
|
| -void AudioRendererHost::DoRequestMoreData(
|
| - media::AudioOutputController* controller,
|
| - AudioBuffersState buffers_state) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| -
|
| - // If we already have a pending request then return.
|
| - AudioEntry* entry = LookupByController(controller);
|
| - if (!entry || entry->pending_buffer_request)
|
| - return;
|
| -
|
| - DCHECK(!entry->controller->LowLatencyMode());
|
| - entry->pending_buffer_request = true;
|
| - Send(new AudioMsg_RequestPacket(
|
| - entry->stream_id, buffers_state));
|
| -}
|
| -
|
| void AudioRendererHost::DoHandleError(media::AudioOutputController* controller,
|
| int error_code) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| @@ -221,8 +185,6 @@ bool AudioRendererHost::OnMessageReceived(const IPC::Message& message,
|
| IPC_MESSAGE_HANDLER(AudioHostMsg_PauseStream, OnPauseStream)
|
| IPC_MESSAGE_HANDLER(AudioHostMsg_FlushStream, OnFlushStream)
|
| IPC_MESSAGE_HANDLER(AudioHostMsg_CloseStream, OnCloseStream)
|
| - IPC_MESSAGE_HANDLER(AudioHostMsg_NotifyPacketReady, OnNotifyPacketReady)
|
| - IPC_MESSAGE_HANDLER(AudioHostMsg_GetVolume, OnGetVolume)
|
| IPC_MESSAGE_HANDLER(AudioHostMsg_SetVolume, OnSetVolume)
|
| IPC_MESSAGE_UNHANDLED(handled = false)
|
| IPC_END_MESSAGE_MAP_EX()
|
| @@ -231,7 +193,7 @@ bool AudioRendererHost::OnMessageReceived(const IPC::Message& message,
|
| }
|
|
|
| void AudioRendererHost::OnCreateStream(
|
| - int stream_id, const AudioParameters& params, bool low_latency) {
|
| + int stream_id, const AudioParameters& params) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| DCHECK(LookupById(stream_id) == NULL);
|
|
|
| @@ -244,50 +206,38 @@ void AudioRendererHost::OnCreateStream(
|
| uint32 packet_size = audio_params.GetPacketSize();
|
|
|
| scoped_ptr<AudioEntry> entry(new AudioEntry());
|
| +
|
| // Create the shared memory and share with the renderer process.
|
| - uint32 shared_memory_size = packet_size;
|
| - if (low_latency) {
|
| - shared_memory_size =
|
| - media::TotalSharedMemorySizeInBytes(shared_memory_size);
|
| - }
|
| + uint32 shared_memory_size =
|
| + media::TotalSharedMemorySizeInBytes(packet_size);
|
| if (!entry->shared_memory.CreateAndMapAnonymous(shared_memory_size)) {
|
| // If creation of shared memory failed then send an error message.
|
| SendErrorMessage(stream_id);
|
| return;
|
| }
|
|
|
| - if (low_latency) {
|
| - // If this is the low latency mode, we need to construct a SyncReader first.
|
| - scoped_ptr<AudioSyncReader> reader(
|
| - new AudioSyncReader(&entry->shared_memory));
|
| -
|
| - // Then try to initialize the sync reader.
|
| - if (!reader->Init()) {
|
| - SendErrorMessage(stream_id);
|
| - return;
|
| - }
|
| -
|
| - // If we have successfully created the SyncReader then assign it to the
|
| - // entry and construct an AudioOutputController.
|
| - entry->reader.reset(reader.release());
|
| - entry->controller =
|
| - media::AudioOutputController::CreateLowLatency(
|
| - resource_context_->audio_manager(), this, audio_params,
|
| - entry->reader.get());
|
| - } else {
|
| - // The choice of buffer capacity is based on experiment.
|
| - entry->controller =
|
| - media::AudioOutputController::Create(
|
| - resource_context_->audio_manager(), this, audio_params,
|
| - 3 * packet_size);
|
| + // Create sync reader and try to initialize it.
|
| + scoped_ptr<AudioSyncReader> reader(
|
| + new AudioSyncReader(&entry->shared_memory));
|
| +
|
| + if (!reader->Init()) {
|
| + SendErrorMessage(stream_id);
|
| + return;
|
| }
|
|
|
| + // If we have successfully created the SyncReader then assign it to the
|
| + // entry and construct an AudioOutputController.
|
| + entry->reader.reset(reader.release());
|
| + entry->controller = media::AudioOutputController::Create(
|
| + resource_context_->audio_manager(), this, audio_params,
|
| + entry->reader.get());
|
| +
|
| if (!entry->controller) {
|
| SendErrorMessage(stream_id);
|
| return;
|
| }
|
|
|
| - // If we have created the controller successfully create a entry and add it
|
| + // If we have created the controller successfully, create an entry and add it
|
| // to the map.
|
| entry->stream_id = stream_id;
|
| audio_entries_.insert(std::make_pair(stream_id, entry.release()));
|
| @@ -360,34 +310,6 @@ void AudioRendererHost::OnSetVolume(int stream_id, double volume) {
|
| media_observer()->OnSetAudioStreamVolume(this, stream_id, volume);
|
| }
|
|
|
| -void AudioRendererHost::OnGetVolume(int stream_id) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| - NOTREACHED() << "This message shouldn't be received";
|
| -}
|
| -
|
| -void AudioRendererHost::OnNotifyPacketReady(int stream_id, uint32 packet_size) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| -
|
| - AudioEntry* entry = LookupById(stream_id);
|
| - if (!entry) {
|
| - SendErrorMessage(stream_id);
|
| - return;
|
| - }
|
| -
|
| - DCHECK(!entry->controller->LowLatencyMode());
|
| - CHECK(packet_size <= entry->shared_memory.created_size());
|
| -
|
| - if (!entry->pending_buffer_request) {
|
| - NOTREACHED() << "Buffer received but no such pending request";
|
| - }
|
| - entry->pending_buffer_request = false;
|
| -
|
| - // Enqueue the data to media::AudioOutputController.
|
| - entry->controller->EnqueueData(
|
| - reinterpret_cast<uint8*>(entry->shared_memory.memory()),
|
| - packet_size);
|
| -}
|
| -
|
| void AudioRendererHost::SendErrorMessage(int32 stream_id) {
|
| Send(new AudioMsg_NotifyStreamStateChanged(stream_id, kAudioStreamError));
|
| }
|
|
|