gst_plugins_symbian/gst/devsound/devsoundsrcwrapper.cpp
branchRCL_3
changeset 30 7e817e7e631c
parent 29 567bb019e3e3
--- a/gst_plugins_symbian/gst/devsound/devsoundsrcwrapper.cpp	Tue Aug 31 15:30:33 2010 +0300
+++ b/gst_plugins_symbian/gst/devsound/devsoundsrcwrapper.cpp	Wed Sep 01 12:16:41 2010 +0100
@@ -27,11 +27,10 @@
 
 DevSoundWrapperSrc::DevSoundWrapperSrc()
     {
-    //init_complete = 0;
+    init_complete = 0;
     dev_sound = NULL;
     buffersize = 0;
     dev_count = 0;
-    speechbitrate = 0;
     caps.iRate = EMMFSampleRate8000Hz;
     caps.iEncoding = EMMFSoundEncoding16BitPCM;
     caps.iChannels = EMMFMono;
@@ -49,7 +48,15 @@
     TRACE_PRN_FN_ENT;
     TRequestStatus* stat = &(AL->iStatus);
 
-    iCallbackError = aError;
+    if (aError == KErrNone)
+        {
+        init_complete = 1;
+        }
+    else
+        {
+        init_complete = 0;
+        }
+
     User::RequestComplete(stat, aError);
     TRACE_PRN_FN_EXT;
     }
@@ -67,7 +74,7 @@
 
 void DevSoundWrapperSrc::BufferToBeEmptied(CMMFBuffer* aBuffer)
     {
-    TRACE_PRN_FN_ENT;
+//    TRACE_PRN_FN_ENT;
 
     buffer = aBuffer;
     bufferreadpos = 0;
@@ -86,7 +93,7 @@
         User::RequestComplete(stat, KErrNotFound);
         iCallbackError = KErrNotFound;
         }
-    TRACE_PRN_FN_EXT;
+//    TRACE_PRN_FN_EXT;
     }
 /********************************************************/
 
@@ -95,16 +102,6 @@
     TRACE_PRN_FN_ENT;
     TRACE_PRN_N1(_L("DevSoundWrapperSrc::RecordError %d"),aError);
     iCallbackError = aError;
-    TRequestStatus* stat = &(AL->iStatus);
-    /// need to check this, error can occure before and after calling 
-    /// the StartActiveScheduler and might and might not be waiting for 
-    /// completing the request
-    if( AL->IsActive() )
-        {
-    /// need to complete the request for coming out from blocking call.
-        User::RequestComplete(stat, aError);
-        iCallbackError = aError;    
-        }
     TRACE_PRN_FN_EXT;
     }
 /**********************************************************/
@@ -179,74 +176,45 @@
 int initialize_devsound(GstDevsoundSrc* ds)
     {
     TRACE_PRN_FN_ENT;
+    int ret = 0;
     DevSoundWrapperSrc* handle = (DevSoundWrapperSrc*) ds->handle;
 
     handle->AL->InitialiseActiveListener();
 
-        TRAP(handle->iCallbackError, handle->dev_sound->InitializeL(*handle, handle->fourcc, EMMFStateRecording));
+        TRAP(ret, handle->dev_sound->InitializeL(*handle, handle->fourcc, EMMFStateRecording));
 
-    if ( handle->iCallbackError )
+    if (ret)
         {
         TRACE_PRN_FN_EXT;
-        return handle->iCallbackError;
+        return ret;
         }
 
     handle->AL->StartActiveScheduler();
 
-    if (KErrNone == handle->iCallbackError )
+    if (handle->init_complete == 1)
         {
         TMMFPrioritySettings temp;
         temp.iPref = (TMdaPriorityPreference) ds->preference;
         temp.iPriority = ds->priority;
         handle->dev_sound->SetPrioritySettings(temp);
 
-        handle->iCallbackError = SetConfigurations(handle);
+        SetConfigurations(handle);
+        ret = KErrNone;
+        }
+    else
+        {
+        ret = KErrNotFound;
         }
 
-    TRACE_PRN_IF_ERR(handle->iCallbackError);
+    TRACE_PRN_IF_ERR(ret);
     TRACE_PRN_FN_EXT;
-    return handle->iCallbackError;
+    return ret;
     }
 /*********************************************************/
 
-int stop_devsound(GstDevsoundSrc *ds)
-    {
-    TRACE_PRN_FN_ENT;
-    DevSoundWrapperSrc* handle = (DevSoundWrapperSrc*) ds->handle;
-    handle->dev_sound->Stop();
-    TRACE_PRN_FN_EXT;
-    return 0;
-    }
-
-int pause_devsound(GstDevsoundSrc *ds)
-    {
-    TRACE_PRN_FN_ENT;
-    DevSoundWrapperSrc* handle = (DevSoundWrapperSrc*) ds->handle;
-    handle->dev_sound->Pause();
-    TRACE_PRN_FN_EXT;
-    return 0;
-    }
-
-int resume_devsound(GstDevsoundSrc *ds)
-    {
-    TRACE_PRN_FN_ENT;
-    DevSoundWrapperSrc* handle = (DevSoundWrapperSrc*) ds->handle;
-    if(handle->dev_sound->IsResumeSupported())
-        {
-        handle->iCallbackError = handle->dev_sound->Resume();
-        }
-    else
-        {
-        if( KErrNone == recordinit(handle) )
-            initproperties(ds);
-        }
-    TRACE_PRN_FN_EXT;
-    return 0;
-    }
-
 int open_device(DevSoundWrapperSrc **handle)
     {
-    (*handle)->iCallbackError = KErrNone;
+    int retcode = KErrNone;
     TRACE_PRN_FN_ENT;
 
     (*handle)->dev_count++;
@@ -265,26 +233,17 @@
     (*handle)->AL = new CActiveListener;
     ((*handle)->AL)->asw = new CActiveSchedulerWait();
 
-        TRAP( (*handle)->iCallbackError,(*handle)->dev_sound = CMMFDevSound::NewL() );
+        TRAP( retcode,(*handle)->dev_sound = CMMFDevSound::NewL() );
 
     if (!(*handle)->AL || !((*handle)->AL)->asw || !(*handle)->dev_sound
             || !(*handle)->as)
         {
-        return KErrNoMemory;
+        retcode = KErrNoMemory;
         }
-    
-    TRAP((*handle)->iCallbackError ,(*handle)->iAudoInputRecord = CAudioInput::NewL(*(*handle)->dev_sound));
-    if ( KErrNone == (*handle)->iCallbackError )
-	{
-	RArray<CAudioInput::TAudioInputPreference> inputArray;
-    inputArray.Append( CAudioInput::EDefaultMic );
-    // Set Audio Input
-    (*handle)->iAudoInputRecord->SetAudioInputL( inputArray.Array( ) );
-    inputArray.Close();
-	}
+
     TRACE_PRN_FN_EXT;
 
-    return (*handle)->iCallbackError;
+    return retcode;
     }
 
 /*********************************************************/
@@ -292,27 +251,18 @@
 int close_devsound(GstDevsoundSrc *ds)
     {
     TRACE_PRN_FN_ENT;
-    CMMFDevSound    *dev_sound= 0;
-    dev_sound = (STATIC_CAST(DevSoundWrapperSrc*, ds->handle))->dev_sound;
-    dev_sound->Stop();
+    (STATIC_CAST(DevSoundWrapperSrc*, ds->handle))->dev_sound->Stop();
     g_list_foreach(ds->supportedbitrates, (GFunc) g_free, NULL);
     g_list_free(ds->supportedbitrates);
 
     g_list_foreach(ds->fmt, (GFunc) g_free, NULL);
     g_list_free(ds->fmt);
-    ds->fmt = NULL;
-    delete (STATIC_CAST(DevSoundWrapperSrc*, ds->handle))->iAudoInputRecord;
-    delete dev_sound;
+
     delete ds->handle;
     TRACE_PRN_FN_EXT;
     return 0;
     }
 /************************************************************/
-void update_devsound_speech_bitrate(DevSoundWrapperSrc *handle, TUint bitrate)
-    {
-    handle->speechbitrate = bitrate;
-    }
-/************************************************************/
 
 int SetConfigurations(DevSoundWrapperSrc *handle)
     {
@@ -325,7 +275,15 @@
     handle->gain = (handle->dev_sound)->MaxGain();
     (handle->dev_sound)->SetGain(handle->gain);
     handle->caps.iBufferSize = temp_caps.iBufferSize;
-    
+
+        TRAP(ret, (handle->dev_sound)->SetConfigL(handle->caps) );
+    if (ret)
+        {
+        return ret;
+        }
+
+    (handle->caps) = (handle->dev_sound)->Config();
+
     switch (handle->fourcc)
         {
         case KMccFourCCIdG711:
@@ -364,33 +322,13 @@
             }
         }
 
-    if (ret)
-        return ret;
-    
     if (!handle->iSpeechEncoderConfig && handle->fourcc
             != KMMFFourCCCodePCM16)
         {
 
             TRAP(ret, handle->iSpeechEncoderConfig
                     = CSpeechEncoderConfig::NewL(*handle->dev_sound));
-        if (ret)
-            return ret;
-        
-        if(handle->speechbitrate > 0)
-            {
-            ret = set_speech_encoder_bit_rate(handle,handle->speechbitrate);
-            if(ret)
-                return ret;
-            }
         }
-    
-     TRAP(ret, (handle->dev_sound)->SetConfigL(handle->caps) );
-     if (ret)
-         {
-         return ret;
-         }
-
-     (handle->caps) = (handle->dev_sound)->Config();
 
     TRACE_PRN_FN_EXT;
     return ret;
@@ -600,13 +538,11 @@
 void set_rate(DevSoundWrapperSrc *handle, int rate)
     {
     handle->caps.iRate = rate;
-    TRACE_PRN_N1(_L("set_rate %d"),rate);
     }
 /******************************************************************/
 void set_channels(DevSoundWrapperSrc *handle, int channels)
     {
     handle->caps.iChannels = channels;
-    TRACE_PRN_N1(_L("set_channels %d"),channels);
     }
 /****************************************************************/
 void set_encoding(DevSoundWrapperSrc *handle, int encoding)
@@ -621,10 +557,7 @@
 /*****************************************************************/
 void set_fourcc(DevSoundWrapperSrc *handle, int fourcc)
     {
-    TRACE_PRN_FN_ENT;
     handle->fourcc = fourcc;
-    TRACE_PRN_N1(_L("set_fourcc %d"),fourcc);
-    TRACE_PRN_FN_EXT;
     }
 
 /*******************************************************************/
@@ -632,18 +565,27 @@
 int recordinit(DevSoundWrapperSrc *handle)
     {
     TRACE_PRN_FN_ENT;
+    int ret = 0;
     ((handle)->AL)->InitialiseActiveListener();
     handle->iCallbackError = KErrNone;
 
-        TRAP(handle->iCallbackError, (handle->dev_sound)->RecordInitL() );
+        TRAP(ret, (handle->dev_sound)->RecordInitL() );
 
-    if (!handle->iCallbackError)
+    if (ret)
         {
-        ((handle)->AL)->StartActiveScheduler();
+        TRACE_PRN_FN_EXT;
+        return ret;
         }
+    ((handle)->AL)->StartActiveScheduler();
 
+    if ((handle->iCallbackError) != KErrNone)
+        {
+        TRACE_PRN_FN_EXT;
+        return (handle->iCallbackError);
+        }
     TRACE_PRN_FN_EXT;
-    return handle->iCallbackError;
+    return KErrNone;
+
     }
 
 /*******************************************************************/
@@ -664,9 +606,9 @@
 int pre_init_setconf(GstDevsoundSrc *ds)
     {
     TRACE_PRN_FN_ENT;
-    
+    int ret = 0;
     DevSoundWrapperSrc* dsPtr = STATIC_CAST(DevSoundWrapperSrc*, ds->handle);
-    dsPtr->iCallbackError = KErrNone;
+
     // NOTE: it is too late for setting prio/pref here
     if (ds->pending.preferenceupdate == 1 || ds->pending.priorityupdate == 1)
         {
@@ -683,13 +625,13 @@
             == 1)
         {
 
-            TRAP( dsPtr->iCallbackError, (dsPtr->dev_sound)->SetRecordBalanceL(ds->leftbalance,
+            TRAP( ret, (dsPtr->dev_sound)->SetRecordBalanceL(ds->leftbalance,
                             ds->rightbalance) );
         ds->pending.leftbalanceupdate = FALSE;
         ds->pending.rightbalanceupdate = FALSE;
         }
     TRACE_PRN_FN_EXT;
-    return dsPtr->iCallbackError;
+    return ret;
     }
 /*********************************************************/
 void getsupporteddatatypes(GstDevsoundSrc *ds)
@@ -747,10 +689,3 @@
     TRACE_PRN_FN_EXT;
     }
 
-int call_back_error(DevSoundWrapperSrc* dsPtr)
-    {
-    TRACE_PRN_FN_ENT;
-    return dsPtr->iCallbackError;
-    TRACE_PRN_FN_EXT;
-    }
-