OSDN Git Service

Route audio source from AuthorDriver::setAudioSource() to audio MIO.
authorDave Sparks <davidsparks@android.com>
Fri, 22 May 2009 02:08:32 +0000 (19:08 -0700)
committerDave Sparks <davidsparks@android.com>
Fri, 22 May 2009 02:13:59 +0000 (19:13 -0700)
This is a continuation of the changes needed to route the audio
source to allow developers to choose an audio source other than
the microphone.
Bug 1846343

android/author/android_audio_input.cpp
android/author/android_audio_input.h
android/author/authordriver.cpp

index e0a7823..0d43f85 100644 (file)
@@ -44,12 +44,13 @@ static const int32 AUTO_RAMP_START_MS = 300;
 static const int32 AUTO_RAMP_DURATION_MS = 300;
 
 ////////////////////////////////////////////////////////////////////////////
-AndroidAudioInput::AndroidAudioInput()
+AndroidAudioInput::AndroidAudioInput(uint32 audioSource)
     : OsclTimerObject(OsclActiveObject::EPriorityNominal, "AndroidAudioInput"),
     iCmdIdCounter(0),
     iPeer(NULL),
     iThreadLoggedOn(false),
     iAudioSamplingRate(8000),
+    iAudioSource(audioSource),
     iDataEventCounter(0),
     iWriteCompleteAO(NULL),
     iTimeStamp(0),
@@ -1007,7 +1008,7 @@ int AndroidAudioInput::audin_thread_func() {
     LOGV("create AudioRecord %p", this);
     android::AudioRecord
             * record = new android::AudioRecord(
-                    android::AudioRecord::DEFAULT_INPUT, iAudioSamplingRate,
+                    iAudioSource, iAudioSamplingRate,
                     android::AudioSystem::PCM_16_BIT, iAudioNumChannels,
                     4*kBufferSize/iAudioNumChannels/sizeof(int16), flags);
     LOGV("AudioRecord created %p, this %p", record, this);
index 664c7c2..72a7f04 100644 (file)
@@ -38,9 +38,6 @@
 #ifndef OSCL_VECTOR_H_INCLUDED
 #include "oscl_vector.h"
 #endif
-#ifndef PVLOGGER_H_INCLUDED
-#include "pvlogger.h"
-#endif
 #ifndef PVMI_MIO_CONTROL_H_INCLUDED
 #include "pvmi_mio_control.h"
 #endif
@@ -198,7 +195,7 @@ class AndroidAudioInput : public OsclTimerObject,
     public RefBase
 {
 public:
-    AndroidAudioInput();
+    AndroidAudioInput(uint32 audioSource);
     virtual ~AndroidAudioInput();
 
     // Pure virtuals from PvmiMIOControl
@@ -278,6 +275,7 @@ public:
     int maxAmplitude();
 
 private:
+    AndroidAudioInput();
     void Run();
 
     int audin_thread_func();
@@ -369,6 +367,7 @@ private:
     bool iAudioNumChannelsValid;
     int32 iAudioSamplingRate;
     bool iAudioSamplingRateValid;
+    uint32 iAudioSource;
 
     int32 iFrameSize;
     int32 iDataEventCounter;
index b797f47..fd3c357 100644 (file)
@@ -297,26 +297,14 @@ void AuthorDriver::handleSetAudioSource(set_audio_source_command *ac)
 {
     int error = 0;
 
-    switch(ac->as) {
-    case AUDIO_SOURCE_DEFAULT:
-    case AUDIO_SOURCE_MIC:
-        mAudioInputMIO = new AndroidAudioInput();
-        if(mAudioInputMIO != NULL){
-            LOGV("create mio input audio");
-            mAudioNode = PvmfMediaInputNodeFactory::Create(static_cast<PvmiMIOControl *>(mAudioInputMIO.get()));
-            if(mAudioNode){
-                break;
-            }
-            else{
-            // do nothing, let it go in default case
-            }
-        }
-        else{
-        // do nothing, let it go in default case
+    mAudioInputMIO = new AndroidAudioInput(ac->as);
+    if (mAudioInputMIO != NULL) {
+        LOGV("create mio input audio");
+        mAudioNode = PvmfMediaInputNodeFactory::Create(static_cast<PvmiMIOControl *>(mAudioInputMIO.get()));
+        if (mAudioNode == NULL) {
+            commandFailed(ac);
+            return;
         }
-    default:
-        commandFailed(ac);
-        return;
     }
 
     OSCL_TRY(error, mAuthor->AddDataSource(*mAudioNode, ac));