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

Unified Diff: content/renderer/pepper_plugin_delegate_impl.cc

Issue 9129007: Work on improving PpbAudioConfig:RecommendSampleFrameCount (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 10 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: content/renderer/pepper_plugin_delegate_impl.cc
===================================================================
--- content/renderer/pepper_plugin_delegate_impl.cc (revision 122585)
+++ content/renderer/pepper_plugin_delegate_impl.cc (working copy)
@@ -34,6 +34,7 @@
#include "content/public/common/context_menu_params.h"
#include "content/public/renderer/content_renderer_client.h"
#include "content/renderer/gamepad_shared_memory_reader.h"
+#include "content/renderer/media/audio_hardware.h"
#include "content/renderer/media/audio_input_message_filter.h"
#include "content/renderer/media/audio_message_filter.h"
#include "content/renderer/media/media_stream_dispatcher.h"
@@ -222,7 +223,6 @@
bool PlatformAudioImpl::Initialize(
uint32_t sample_rate, uint32_t sample_count,
webkit::ppapi::PluginDelegate::PlatformAudioCommonClient* client) {
-
DCHECK(client);
// Make sure we don't call init more than once.
DCHECK_EQ(0, stream_id_);
@@ -230,7 +230,15 @@
client_ = client;
AudioParameters params;
- params.format = AudioParameters::AUDIO_PCM_LINEAR;
+ const uint32_t kMaxSampleCountForLowLatency = 2048;
+ // Use the low latency back end if the client request is compatible, and
+ // the sample count is low enough to justify using AUDIO_PCM_LOW_LATENCY.
+ if (sample_rate == audio_hardware::GetOutputSampleRate() &&
+ sample_count <= kMaxSampleCountForLowLatency &&
+ sample_count % audio_hardware::GetOutputBufferSize() == 0)
+ params.format = AudioParameters::AUDIO_PCM_LOW_LATENCY;
+ else
+ params.format = AudioParameters::AUDIO_PCM_LINEAR;
params.channels = 2;
params.sample_rate = sample_rate;
params.bits_per_sample = 16;
@@ -1358,6 +1366,14 @@
identifier, index + 1, WebKit::WebRect());
}
+uint32_t PepperPluginDelegateImpl::GetAudioHardwareOutputSampleRate() {
+ return static_cast<uint32_t>(audio_hardware::GetOutputSampleRate());
+}
+
+uint32_t PepperPluginDelegateImpl::GetAudioHardwareOutputBufferSize() {
+ return static_cast<uint32_t>(audio_hardware::GetOutputBufferSize());
+}
+
webkit::ppapi::PluginDelegate::PlatformAudio*
PepperPluginDelegateImpl::CreateAudio(
uint32_t sample_rate,

Powered by Google App Engine
This is Rietveld 408576698