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( |