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

Unified Diff: chrome/browser/renderer_host/audio_renderer_host.cc

Issue 661386: Add a parameter to CreateAudioStream to choose between standard and low-latency mode. (Closed)
Patch Set: . Created 10 years, 9 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
Index: chrome/browser/renderer_host/audio_renderer_host.cc
diff --git a/chrome/browser/renderer_host/audio_renderer_host.cc b/chrome/browser/renderer_host/audio_renderer_host.cc
index 4e9c4db447891de9537ca10ac7a73bf7759f1ea1..032978cb7db6ef422915fb9afa4f015ba798dce9 100644
--- a/chrome/browser/renderer_host/audio_renderer_host.cc
+++ b/chrome/browser/renderer_host/audio_renderer_host.cc
@@ -95,7 +95,8 @@ AudioRendererHost::IPCAudioSource::CreateIPCAudioSource(
int sample_rate,
char bits_per_sample,
uint32 decoded_packet_size,
- uint32 buffer_capacity) {
+ uint32 buffer_capacity,
+ bool low_latency) {
// Perform come preliminary checks on the parameters.
// Make sure the renderer didn't ask for too much memory.
if (buffer_capacity > kMaxBufferCapacity ||
@@ -153,16 +154,7 @@ AudioRendererHost::IPCAudioSource::CreateIPCAudioSource(
source->shared_memory_.Map(decoded_packet_size) &&
source->shared_memory_.ShareToProcess(process_handle,
&foreign_memory_handle)) {
- // TODO(cpu): better define what triggers the low latency mode.
- if (decoded_packet_size > kLowLatencyPacketThreshold) {
- // Regular latency mode.
- host->Send(new ViewMsg_NotifyAudioStreamCreated(
- route_id, stream_id, foreign_memory_handle, decoded_packet_size));
-
- // Also request the first packet to kick start the pre-rolling.
- source->StartBuffering();
- return source;
- } else {
+ if (low_latency) {
// Low latency mode. We use SyncSocket to signal.
base::SyncSocket* sockets[2] = {0};
if (base::SyncSocket::CreatePair(sockets)) {
@@ -186,6 +178,14 @@ AudioRendererHost::IPCAudioSource::CreateIPCAudioSource(
return source;
}
}
+ } else {
+ // Regular latency mode.
+ host->Send(new ViewMsg_NotifyAudioStreamCreated(
+ route_id, stream_id, foreign_memory_handle, decoded_packet_size));
+
+ // Also request the first packet to kick start the pre-rolling.
+ source->StartBuffering();
+ return source;
}
}
// Failure. Close and free acquired resources.
@@ -462,7 +462,7 @@ bool AudioRendererHost::IsAudioRendererHostMessage(
void AudioRendererHost::OnCreateStream(
const IPC::Message& msg, int stream_id,
- const ViewHostMsg_Audio_CreateStream_Params& params) {
+ const ViewHostMsg_Audio_CreateStream_Params& params, bool low_latency) {
DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO));
DCHECK(Lookup(msg.routing_id(), stream_id) == NULL);
@@ -477,7 +477,8 @@ void AudioRendererHost::OnCreateStream(
params.sample_rate,
params.bits_per_sample,
params.packet_size,
- params.buffer_capacity);
+ params.buffer_capacity,
+ low_latency);
// If we have created the source successfully, adds it to the map.
if (source) {
« no previous file with comments | « chrome/browser/renderer_host/audio_renderer_host.h ('k') | chrome/browser/renderer_host/audio_renderer_host_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698