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

Unified Diff: content/browser/renderer_host/media/audio_input_renderer_host.cc

Issue 599443003: Activate and inactivate keyboard mic on ChromeOS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@check_kmic_set_effect
Patch Set: Code review fix. Created 6 years, 3 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
« no previous file with comments | « content/browser/renderer_host/media/audio_input_renderer_host.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/renderer_host/media/audio_input_renderer_host.cc
diff --git a/content/browser/renderer_host/media/audio_input_renderer_host.cc b/content/browser/renderer_host/media/audio_input_renderer_host.cc
index 41857bb3e4aa66fc040716699bb3f021112fe70a..b7ae57de0eeab5bcedf9a01b9ee36406a8eae228 100644
--- a/content/browser/renderer_host/media/audio_input_renderer_host.cc
+++ b/content/browser/renderer_host/media/audio_input_renderer_host.cc
@@ -56,12 +56,16 @@ struct AudioInputRendererHost::AudioEntry {
// Set to true after we called Close() for the controller.
bool pending_close;
+
+ // If this entry's layout has a keyboard mic channel.
+ bool has_keyboard_mic_;
};
AudioInputRendererHost::AudioEntry::AudioEntry()
: stream_id(0),
shared_memory_segment_count(0),
- pending_close(false) {
+ pending_close(false),
+ has_keyboard_mic_(false) {
}
AudioInputRendererHost::AudioEntry::~AudioEntry() {}
@@ -273,6 +277,32 @@ void AudioInputRendererHost::OnCreateStream(
const AudioInputHostMsg_CreateStream_Config& config) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
+#if defined(OS_CHROMEOS)
+ if (config.params.channel_layout() ==
+ media::CHANNEL_LAYOUT_STEREO_AND_KEYBOARD_MIC) {
+ media_stream_manager_->audio_input_device_manager()
+ ->RegisterKeyboardMicStream(
+ base::Bind(&AudioInputRendererHost::DoCreateStream,
+ this,
+ stream_id,
+ render_view_id,
+ session_id,
+ config));
+ } else {
+ DoCreateStream(stream_id, render_view_id, session_id, config);
+ }
+#else
+ DoCreateStream(stream_id, render_view_id, session_id, config);
+#endif
+}
+
+void AudioInputRendererHost::DoCreateStream(
+ int stream_id,
+ int render_view_id,
+ int session_id,
+ const AudioInputHostMsg_CreateStream_Config& config) {
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
+
std::ostringstream oss;
oss << "[stream_id=" << stream_id << "] "
<< "AIRH::OnCreateStream(render_view_id=" << render_view_id
@@ -282,6 +312,7 @@ void AudioInputRendererHost::OnCreateStream(
// media::AudioParameters is validated in the deserializer.
if (LookupById(stream_id) != NULL) {
SendErrorMessage(stream_id, STREAM_ALREADY_EXISTS);
+ MaybeUnregisterKeyboardMicStream(config);
return;
}
@@ -305,6 +336,7 @@ void AudioInputRendererHost::OnCreateStream(
SendErrorMessage(stream_id, PERMISSION_DENIED);
DLOG(WARNING) << "No permission has been granted to input stream with "
<< "session_id=" << session_id;
+ MaybeUnregisterKeyboardMicStream(config);
return;
}
@@ -329,6 +361,7 @@ void AudioInputRendererHost::OnCreateStream(
!entry->shared_memory.CreateAndMapAnonymous(size.ValueOrDie())) {
// If creation of shared memory failed then send an error message.
SendErrorMessage(stream_id, SHARED_MEMORY_CREATE_FAILED);
+ MaybeUnregisterKeyboardMicStream(config);
return;
}
@@ -337,6 +370,7 @@ void AudioInputRendererHost::OnCreateStream(
if (!writer->Init()) {
SendErrorMessage(stream_id, SYNC_WRITER_INIT_FAILED);
+ MaybeUnregisterKeyboardMicStream(config);
return;
}
@@ -369,6 +403,7 @@ void AudioInputRendererHost::OnCreateStream(
if (!entry->controller.get()) {
SendErrorMessage(stream_id, STREAM_CREATE_ERROR);
+ MaybeUnregisterKeyboardMicStream(config);
return;
}
@@ -461,6 +496,13 @@ void AudioInputRendererHost::DeleteEntry(AudioEntry* entry) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
LogMessage(entry->stream_id, "DeleteEntry: stream is now closed", true);
+#if defined(OS_CHROMEOS)
+ if (entry->has_keyboard_mic_) {
+ media_stream_manager_->audio_input_device_manager()
+ ->UnregisterKeyboardMicStream();
+ }
+#endif
+
// Delete the entry when this method goes out of scope.
scoped_ptr<AudioEntry> entry_deleter(entry);
@@ -502,4 +544,15 @@ AudioInputRendererHost::AudioEntry* AudioInputRendererHost::LookupByController(
return NULL;
}
+void AudioInputRendererHost::MaybeUnregisterKeyboardMicStream(
+ const AudioInputHostMsg_CreateStream_Config& config) {
+#if defined(OS_CHROMEOS)
+ if (config.params.channel_layout() ==
+ media::CHANNEL_LAYOUT_STEREO_AND_KEYBOARD_MIC) {
+ media_stream_manager_->audio_input_device_manager()
+ ->UnregisterKeyboardMicStream();
+ }
+#endif
+}
+
} // namespace content
« no previous file with comments | « content/browser/renderer_host/media/audio_input_renderer_host.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698