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

Unified Diff: content/renderer/media/renderer_webaudiodevice_impl.cc

Issue 2750543003: Support AudioContextOptions latencyHint as double. (Closed)
Patch Set: Update TODO with userid and crbug. Created 3 years, 8 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/media/renderer_webaudiodevice_impl.cc
diff --git a/content/renderer/media/renderer_webaudiodevice_impl.cc b/content/renderer/media/renderer_webaudiodevice_impl.cc
index 2c4f81b185d74fe96ab0a25d677a67fd0d3d9296..247dfb21cd85a1be1a1bc1c09183d69aaee5b6d8 100644
--- a/content/renderer/media/renderer_webaudiodevice_impl.cc
+++ b/content/renderer/media/renderer_webaudiodevice_impl.cc
@@ -41,13 +41,43 @@ AudioDeviceFactory::SourceType GetLatencyHintSourceType(
case WebAudioLatencyHint::kCategoryPlayback:
return AudioDeviceFactory::kSourceWebAudioPlayback;
case WebAudioLatencyHint::kCategoryExact:
- // TODO implement CategoryExact
- return AudioDeviceFactory::kSourceWebAudioInteractive;
+ return AudioDeviceFactory::kSourceWebAudioExact;
}
NOTREACHED();
return AudioDeviceFactory::kSourceWebAudioInteractive;
}
+int GetOutputBufferSize(const blink::WebAudioLatencyHint& latency_hint,
+ const media::AudioLatency::LatencyType latency,
o1ka 2017/04/06 16:02:30 const not needed?
Andrew MacPherson 2017/04/07 06:59:03 Done.
+ const media::AudioParameters& hardware_params) {
+ // Adjust output buffer size according to the latency requirement.
+ switch (latency) {
+ case media::AudioLatency::LATENCY_INTERACTIVE:
+ return media::AudioLatency::GetInteractiveBufferSize(
+ hardware_params.frames_per_buffer());
+ break;
+ case media::AudioLatency::LATENCY_RTC:
+ return media::AudioLatency::GetRtcBufferSize(
+ hardware_params.sample_rate(), hardware_params.frames_per_buffer());
+ break;
+ case media::AudioLatency::LATENCY_PLAYBACK:
+ return media::AudioLatency::GetHighLatencyBufferSize(
+ hardware_params.sample_rate(), 0);
+ break;
+ case media::AudioLatency::LATENCY_EXACT_MS:
+ // TODO(andrew.macpherson@soundtrap.com): http://crbug.com/708917
+ return std::min(4096,
+ media::AudioLatency::GetExactBufferSize(
+ base::TimeDelta::FromSecondsD(latency_hint.seconds()),
+ hardware_params.sample_rate(),
+ hardware_params.frames_per_buffer()));
+ break;
+ default:
+ NOTREACHED();
+ }
+ return 0;
+}
+
int FrameIdFromCurrentContext() {
// Assumption: This method is being invoked within a V8 call stack. CHECKs
// will fail in the call to frameForCurrentContext() otherwise.
@@ -107,32 +137,11 @@ RendererWebAudioDeviceImpl::RendererWebAudioDeviceImpl(
media::AudioParameters hardware_params(device_params_cb.Run(
o1ka 2017/04/06 16:02:30 const?
Andrew MacPherson 2017/04/07 06:59:03 Done.
frame_id_, session_id_, std::string(), security_origin_));
- int output_buffer_size = 0;
-
media::AudioLatency::LatencyType latency =
o1ka 2017/04/06 16:02:30 const?
Andrew MacPherson 2017/04/07 06:59:03 Done.
AudioDeviceFactory::GetSourceLatencyType(
- GetLatencyHintSourceType(latency_hint_.category()));
-
- // Adjust output buffer size according to the latency requirement.
- switch (latency) {
- case media::AudioLatency::LATENCY_INTERACTIVE:
- output_buffer_size = media::AudioLatency::GetInteractiveBufferSize(
- hardware_params.frames_per_buffer());
- break;
- case media::AudioLatency::LATENCY_RTC:
- output_buffer_size = media::AudioLatency::GetRtcBufferSize(
- hardware_params.sample_rate(), hardware_params.frames_per_buffer());
- break;
- case media::AudioLatency::LATENCY_PLAYBACK:
- output_buffer_size = media::AudioLatency::GetHighLatencyBufferSize(
- hardware_params.sample_rate(), 0);
- break;
- case media::AudioLatency::LATENCY_EXACT_MS:
- // TODO(olka): add support when WebAudio requires it.
- default:
- NOTREACHED();
- }
-
+ GetLatencyHintSourceType(latency_hint.category()));
+ int output_buffer_size =
o1ka 2017/04/06 16:02:30 const?
Andrew MacPherson 2017/04/07 06:59:03 Done.
+ GetOutputBufferSize(latency_hint_, latency, hardware_params);
DCHECK_NE(output_buffer_size, 0);
o1ka 2017/04/06 16:02:30 I think usually it's DCHECK_NE(0, output_buffer_si
Andrew MacPherson 2017/04/07 06:59:03 Done.
sink_params_.Reset(media::AudioParameters::AUDIO_PCM_LOW_LATENCY, layout,

Powered by Google App Engine
This is Rietveld 408576698