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

Unified Diff: media/audio/android/opensles_input.cc

Issue 12806009: Add OpenSL configurations (Closed) Base URL: https://src.chromium.org/svn/trunk/src/
Patch Set: add opensles_outtput.h Created 7 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: media/audio/android/opensles_input.cc
===================================================================
--- media/audio/android/opensles_input.cc (revision 189519)
+++ media/audio/android/opensles_input.cc (working copy)
@@ -84,9 +84,9 @@
// Start the recording by setting the state to |SL_RECORDSTATE_RECORDING|.
err = (*recorder_)->SetRecordState(recorder_, SL_RECORDSTATE_RECORDING);
- DCHECK_EQ(SL_RESULT_SUCCESS, err);
- if (SL_RESULT_SUCCESS != err)
+ if (SL_RESULT_SUCCESS != err) {
Ami GONE FROM CHROMIUM 2013/03/22 16:24:41 I hope you can make a pass (in a different CL) cle
Ami GONE FROM CHROMIUM 2013/03/22 16:24:41 What's the deal with the removal of the DCHECKs ev
leozwang1 2013/03/22 21:37:09 sure I will.
leozwang1 2013/03/22 21:37:09 Both Tommi and Qinmin suggested to remove DCHECK a
leozwang1 2013/03/23 07:00:39 Done.
leozwang1 2013/03/23 07:00:39 Done.
HandleError(err);
+ }
Ami GONE FROM CHROMIUM 2013/03/22 16:24:41 FYI braces are optional in the C++ style guide for
}
void OpenSLESInputStream::Stop() {
@@ -160,23 +160,26 @@
0,
NULL,
NULL);
- DCHECK_EQ(SL_RESULT_SUCCESS, err);
- if (SL_RESULT_SUCCESS != err)
+ if (SL_RESULT_SUCCESS != err) {
+ DLOG(ERROR) << "CreateAudioRecorder slCreateEngine: " << err;
return false;
+ }
// Realize the SL engine object in synchronous mode.
err = engine_object_->Realize(engine_object_.Get(), SL_BOOLEAN_FALSE);
- DCHECK_EQ(SL_RESULT_SUCCESS, err);
- if (SL_RESULT_SUCCESS != err)
+ if (SL_RESULT_SUCCESS != err) {
+ DLOG(ERROR) << "CreateAudioRecorder Realize: " << err;
return false;
+ }
// Get the SL engine interface which is implicit.
SLEngineItf engine;
err = engine_object_->GetInterface(
engine_object_.Get(), SL_IID_ENGINE, &engine);
- DCHECK_EQ(SL_RESULT_SUCCESS, err);
- if (SL_RESULT_SUCCESS != err)
+ if (SL_RESULT_SUCCESS != err) {
+ DLOG(ERROR) << "GetInterface(SL_IID_ENGINE): " << err;
return false;
+ }
// Audio source configuration.
SLDataLocator_IODevice mic_locator = {
@@ -193,11 +196,13 @@
SLDataSink audio_sink = { &buffer_queue, &format_ };
// Create an audio recorder.
- const SLuint32 number_of_interfaces = 1;
- const SLInterfaceID interface_id[number_of_interfaces] = {
- SL_IID_ANDROIDSIMPLEBUFFERQUEUE
+ const SLInterfaceID interface_id[] = {
+ SL_IID_ANDROIDSIMPLEBUFFERQUEUE,
+ SL_IID_ANDROIDCONFIGURATION
};
+ const SLuint32 number_of_interfaces = arraysize(interface_id);
Ami GONE FROM CHROMIUM 2013/03/22 16:24:41 can inline into the CreateAudioRecorder call.
leozwang1 2013/03/22 21:37:09 Done.
const SLboolean interface_required[number_of_interfaces] = {
Ami GONE FROM CHROMIUM 2013/03/22 16:24:41 number_of_interface is unnecessary.
leozwang1 2013/03/22 21:37:09 Done.
+ SL_BOOLEAN_TRUE,
SL_BOOLEAN_TRUE
};
err = (*engine)->CreateAudioRecorder(engine,
@@ -207,15 +212,35 @@
number_of_interfaces,
interface_id,
interface_required);
- DCHECK_EQ(SL_RESULT_SUCCESS, err);
if (SL_RESULT_SUCCESS != err) {
DLOG(ERROR) << "CreateAudioRecorder failed with error code " << err;
return false;
}
+ // Create AudioRecorder and specify SL_IID_ANDROIDCONFIGURATION.
Ami GONE FROM CHROMIUM 2013/03/22 16:24:41 "Create AudioRecorder" comment is a bit late here,
leozwang1 2013/03/22 21:37:09 Done.
+ SLAndroidConfigurationItf recorder_config;
+ err = recorder_object_->GetInterface(recorder_object_.Get(),
+ SL_IID_ANDROIDCONFIGURATION,
+ &recorder_config);
+ if (SL_RESULT_SUCCESS != err) {
+ DLOG(ERROR) << "GetInterface(SL_IID_ANDROIDCONFIGURATION): " << err;
+ return false;
+ }
+
+ SLint32 stream_type = SL_ANDROID_RECORDING_PRESET_VOICE_COMMUNICATION;
Ami GONE FROM CHROMIUM 2013/03/22 16:24:41 this variable is obscuring what the call below act
+ err = (*recorder_config)->SetConfiguration(
+ recorder_config,
+ SL_ANDROID_KEY_RECORDING_PRESET,
+ &stream_type, sizeof(SLint32));
+ if (SL_RESULT_SUCCESS != err) {
+ DLOG(ERROR)
+ << "SetConfiguration(SL_ANDROID_RECORDING_PRESET_VOICE_COMMUNICATION): "
+ << err;
+ return false;
+ }
+
// Realize the recorder object in synchronous mode.
err = recorder_object_->Realize(recorder_object_.Get(), SL_BOOLEAN_FALSE);
- DCHECK_EQ(SL_RESULT_SUCCESS, err);
if (SL_RESULT_SUCCESS != err) {
DLOG(ERROR) << "Recprder Realize() failed with error code " << err;
return false;
@@ -225,26 +250,31 @@
err = recorder_object_->GetInterface(recorder_object_.Get(),
SL_IID_RECORD,
&recorder_);
- DCHECK_EQ(SL_RESULT_SUCCESS, err);
- if (SL_RESULT_SUCCESS != err)
+ if (SL_RESULT_SUCCESS != err) {
+ DLOG(ERROR) << "GetInterface(SL_IID_RECORD): " << err;
return false;
+ }
// Get the simple buffer queue interface.
err = recorder_object_->GetInterface(recorder_object_.Get(),
SL_IID_ANDROIDSIMPLEBUFFERQUEUE,
&simple_buffer_queue_);
- DCHECK_EQ(SL_RESULT_SUCCESS, err);
- if (SL_RESULT_SUCCESS != err)
+ if (SL_RESULT_SUCCESS != err) {
+ DLOG(ERROR) << "GetInterface(SL_IID_ANDROIDSIMPLEBUFFERQUEUE): " << err;
return false;
+ }
// Register the input callback for the simple buffer queue.
// This callback will be called when receiving new data from the device.
err = (*simple_buffer_queue_)->RegisterCallback(simple_buffer_queue_,
SimpleBufferQueueCallback,
this);
- DCHECK_EQ(SL_RESULT_SUCCESS, err);
+ if (SL_RESULT_SUCCESS != err) {
+ DLOG(ERROR) << "AudioRecorder RegisterCallback: " << err;
+ return false;
+ }
- return (SL_RESULT_SUCCESS == err);
+ return true;
}
void OpenSLESInputStream::SimpleBufferQueueCallback(

Powered by Google App Engine
This is Rietveld 408576698