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

Unified Diff: content/browser/renderer_host/render_process_host_impl.cc

Issue 1272223003: Implement writing mic audio input data to file for debugging purposes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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/browser/renderer_host/render_process_host_impl.cc
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index daa26b2415fbe01b6974057d3062fb3f29e6a370..8a9a97aaf1ce1554a1fb9af1d2d4a1954328ca97 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -207,6 +207,12 @@
#include "content/common/media/media_stream_messages.h"
#endif
+#if defined(OS_WIN)
+#define IntToStringType base::IntToString16
+#else
+#define IntToStringType base::IntToString
+#endif
+
extern bool g_exited_main_message_loop;
namespace content {
@@ -214,6 +220,8 @@ namespace {
const char kSiteProcessMapKeyName[] = "content_site_process_map";
+const char kAecDumpFileNameAddition[] = "aec_dump";
+
void CacheShaderInfo(int32 id, base::FilePath path) {
ShaderCacheFactory::GetInstance()->SetCacheInfo(id, path);
}
@@ -777,14 +785,16 @@ void RenderProcessHostImpl::CreateMessageFilters() {
AddFilter(resource_message_filter);
MediaStreamManager* media_stream_manager =
BrowserMainLoop::GetInstance()->media_stream_manager();
- AddFilter(new AudioInputRendererHost(
+ // The AudioInputRendererHost and AudioRendererHost needs to be available for
+ // lookup, so it's stashed in a member variable.
+ audio_input_renderer_host_ = new AudioInputRendererHost(
GetID(),
+ this,
audio_manager,
media_stream_manager,
AudioMirroringManager::GetInstance(),
- BrowserMainLoop::GetInstance()->user_input_monitor()));
- // The AudioRendererHost needs to be available for lookup, so it's
- // stashed in a member variable.
+ BrowserMainLoop::GetInstance()->user_input_monitor());
+ AddFilter(audio_input_renderer_host_.get());
audio_renderer_host_ = new AudioRendererHost(
GetID(),
audio_manager,
@@ -1739,17 +1749,28 @@ void RenderProcessHostImpl::FilterURL(bool empty_allowed, GURL* url) {
}
#if defined(ENABLE_WEBRTC)
-void RenderProcessHostImpl::EnableAecDump(const base::FilePath& file) {
+void RenderProcessHostImpl::EnableAudioDebugRecordings(
+ const base::FilePath& file) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
// Enable AEC dump for each registered consumer.
+ base::FilePath file_with_extensions = GetAecDumpFilePathWithExtensions(file);
for (std::vector<int>::iterator it = aec_dump_consumers_.begin();
it != aec_dump_consumers_.end(); ++it) {
- EnableAecDumpForId(file, *it);
+ EnableAecDumpForId(file_with_extensions, *it);
}
+
+ // Enable mic input recording.
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&AudioInputRendererHost::EnableDebugRecording,
+ audio_input_renderer_host_,
+ file));
}
-void RenderProcessHostImpl::DisableAecDump() {
+void RenderProcessHostImpl::DisableAudioDebugRecordings() {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
+
// Posting on the FILE thread and then replying back on the UI thread is only
// for avoiding races between enable and disable. Nothing is done on the FILE
// thread.
@@ -1758,6 +1779,11 @@ void RenderProcessHostImpl::DisableAecDump() {
base::Bind(&DisableAecDumpOnFileThread),
base::Bind(&RenderProcessHostImpl::SendDisableAecDumpToRenderer,
weak_factory_.GetWeakPtr()));
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(
+ &AudioInputRendererHost::DisableDebugRecording,
+ audio_input_renderer_host_));
}
void RenderProcessHostImpl::SetWebRtcLogMessageCallback(
@@ -2361,8 +2387,10 @@ void RenderProcessHostImpl::OnProcessLaunched() {
tracked_objects::ScopedTracker tracking_profile7(
FROM_HERE_WITH_EXPLICIT_FUNCTION(
"465841 RenderProcessHostImpl::OnProcessLaunched::EnableAec"));
- if (WebRTCInternals::GetInstance()->aec_dump_enabled())
- EnableAecDump(WebRTCInternals::GetInstance()->aec_dump_file_path());
+ if (WebRTCInternals::GetInstance()->audio_debug_recordings_enabled()) {
+ EnableAudioDebugRecordings(
+ WebRTCInternals::GetInstance()->audio_debug_recordings_file_path());
+ }
#endif
}
@@ -2441,9 +2469,11 @@ void RenderProcessHostImpl::OnUnregisterAecDumpConsumer(int id) {
void RenderProcessHostImpl::RegisterAecDumpConsumerOnUIThread(int id) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
aec_dump_consumers_.push_back(id);
- if (WebRTCInternals::GetInstance()->aec_dump_enabled()) {
- EnableAecDumpForId(WebRTCInternals::GetInstance()->aec_dump_file_path(),
- id);
+ if (WebRTCInternals::GetInstance()->audio_debug_recordings_enabled()) {
+ EnableAecDumpForId(
+ GetAecDumpFilePathWithExtensions(
+ WebRTCInternals::GetInstance()->audio_debug_recordings_file_path()),
+ id);
}
}
@@ -2458,28 +2488,19 @@ void RenderProcessHostImpl::UnregisterAecDumpConsumerOnUIThread(int id) {
}
}
-#if defined(OS_WIN)
-#define IntToStringType base::IntToString16
-#else
-#define IntToStringType base::IntToString
-#endif
-
void RenderProcessHostImpl::EnableAecDumpForId(const base::FilePath& file,
int id) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
- base::FilePath unique_file =
- file.AddExtension(IntToStringType(base::GetProcId(GetHandle())))
- .AddExtension(IntToStringType(id));
BrowserThread::PostTaskAndReplyWithResult(
BrowserThread::FILE, FROM_HERE,
- base::Bind(&CreateAecDumpFileForProcess, unique_file, GetHandle()),
+ base::Bind(&CreateAecDumpFileForProcess,
+ file.AddExtension(IntToStringType(id)),
+ GetHandle()),
base::Bind(&RenderProcessHostImpl::SendAecDumpFileToRenderer,
weak_factory_.GetWeakPtr(),
id));
}
-#undef IntToStringType
-
void RenderProcessHostImpl::SendAecDumpFileToRenderer(
int id,
IPC::PlatformFileForTransit file_for_transit) {
@@ -2491,6 +2512,12 @@ void RenderProcessHostImpl::SendAecDumpFileToRenderer(
void RenderProcessHostImpl::SendDisableAecDumpToRenderer() {
Send(new AecDumpMsg_DisableAecDump());
}
+
+base::FilePath RenderProcessHostImpl::GetAecDumpFilePathWithExtensions(
+ const base::FilePath& file) {
+ return file.AddExtension(kAecDumpFileNameAddition)
+ .AddExtension(IntToStringType(base::GetProcId(GetHandle())));
+}
#endif
void RenderProcessHostImpl::IncrementWorkerRefCount() {

Powered by Google App Engine
This is Rietveld 408576698