gst_plugins_symbian/gst/devsound/gstdevsoundsrc.c
branchRCL_3
changeset 30 7e817e7e631c
parent 29 567bb019e3e3
--- a/gst_plugins_symbian/gst/devsound/gstdevsoundsrc.c	Tue Aug 31 15:30:33 2010 +0300
+++ b/gst_plugins_symbian/gst/devsound/gstdevsoundsrc.c	Wed Sep 01 12:16:41 2010 +0100
@@ -23,8 +23,7 @@
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
-#include <gst/gst.h>
-#include <e32err.h> 
+
 #include <gqueue.h>
 #include "common.h"
 #include "gstdevsoundsrc.h"
@@ -37,10 +36,6 @@
 #include "string.h"
 
 GST_DEBUG_CATEGORY_EXTERN (devsoundsrc_debug);
-#ifdef GST_CAT_DEFAULT
-#undef GST_CAT_DEFAULT
-#endif
-
 #define GST_CAT_DEFAULT devsoundsrc_debug
 
 /* elementfactory information */
@@ -76,11 +71,6 @@
         guint size, GstBuffer **buf);
 static void *StartDevSoundThread(void *threadid);
 
-static gboolean gst_devsound_src_event(GstBaseSrc * asrc, GstEvent * event);
-
-static GstStateChangeReturn gst_devsound_src_change_state (GstElement * element,
-    GstStateChange transition);
-
 /*********************************
  * Speech Encoder Config Interface
  * ******************************/
@@ -93,7 +83,7 @@
 static gint gst_set_speech_encoder_bit_rate(guint aBitrate);
 static gint gst_set_speech_encoder_vad_mode(gboolean aVadMode);
 static void gst_Apply_SpeechEncoder_Update(GstDevsoundSrc *devsoundsrc );
-static void gst_update_devsound_speech_bitrate(GstDevsoundSrc *devsoundsrc );
+
 
 /*************************
  * G711 Encoder Interface
@@ -129,7 +119,6 @@
 
 static gint gst_devsound_src_get_rate(gint rate);
 
-static void post_symbian_error ( GstBaseSrc* element, int symbian_error );
 
 typedef struct _GstCustomIfaceUpdate GstCustomIfaceUpdate;
 
@@ -175,15 +164,12 @@
 enum command_to_consumer_thread_enum
     {
     OPEN = 2,
-    RECORDING,
-    PAUSE,
-    RESUME,
-    STOP,
+    READDATA,
     /*UPDATE,*/
     CLOSE
     };
 enum command_to_consumer_thread_enum cmd;
-int return_error;
+
 enum
     {
     LAST_SIGNAL
@@ -215,11 +201,23 @@
                 "signed = (boolean) TRUE, "
                 "width = (int) 16, "
                 "depth = (int) 16, "
-                "rate = (int) { 8000, 16000, 24000, 32000, 48000 },"
+                "rate = (int) [ 8000, 48000 ],"
                 "channels = (int) [ 1, 2 ]; "
                 "audio/amr, "
-                "rate = (int) 8000, "
-                "channels = (int) [ 1, 2 ]; ")
+                "rate = (int) [ 8000, 48000 ], "
+                "channels = (int) [ 1, 2 ]; "
+                "audio/x-alaw, "
+                "rate = (int) [ 8000, 48000 ], "
+                "channels = (int) [ 1, 2 ]; "
+                "audio/g729, "
+                "rate = (int) [ 8000, 48000 ], "
+                "channels = (int) [ 1, 2 ]; "
+                "audio/ilbc, "
+                "rate = (int) [ 8000, 48000 ], "
+                "channels = (int) [ 1, 2 ]; "
+                "audio/x-mulaw, "
+                "rate = (int) [ 8000, 48000 ], "
+                "channels = (int) [ 1, 2 ]")
                 );
 
 static GstElementClass *parent_class= NULL;
@@ -278,7 +276,7 @@
 
     devsoundsrc_type =
     g_type_register_static (GST_TYPE_PUSH_SRC, "GstDevsoundSrc",
-            &devsoundsrc_info, (GTypeFlags)0);
+            &devsoundsrc_info, 0);
 
     g_type_add_interface_static (devsoundsrc_type, GST_TYPE_SPEECH_ENCODER_CONFIG,
             &speech_encoder_config_info);
@@ -321,15 +319,13 @@
     gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_devsound_src_get_property);
     gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_devsound_src_set_property);
 
-    gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_devsound_src_change_state);
-    
     g_object_class_install_property(gobject_class, PROP_DEVICE,
             g_param_spec_string("device", "Device", "Devsound device ",
-                    DEFAULT_DEVICE, (GParamFlags)G_PARAM_READWRITE));
+                    DEFAULT_DEVICE, G_PARAM_READWRITE));
 
     g_object_class_install_property(gobject_class, GAIN, g_param_spec_int(
             "gain", "Gain", "Devsound src gain", -1, G_MAXINT, -1,
-            (GParamFlags)G_PARAM_READWRITE));
+            G_PARAM_READWRITE));
 
     g_object_class_install_property(gobject_class, MAXGAIN, g_param_spec_int(
             "maxgain", "MaxGain", "Devsound src max gain", -1, G_MAXINT, -1,
@@ -337,11 +333,11 @@
 
     g_object_class_install_property(gobject_class, LEFTBALANCE,
             g_param_spec_int("leftbalance", "Left Balance", "Left Balance",
-                    -1, G_MAXINT, -1, (GParamFlags)G_PARAM_READWRITE));
+                    -1, G_MAXINT, -1, G_PARAM_READWRITE));
 
     g_object_class_install_property(gobject_class, RIGHTBALANCE,
             g_param_spec_int("rightbalance", "Right Balance",
-                    "Right Balance", -1, G_MAXINT, -1, (GParamFlags)G_PARAM_READWRITE));
+                    "Right Balance", -1, G_MAXINT, -1, G_PARAM_READWRITE));
 
     g_object_class_install_property(gobject_class, SAMPLESRECORDED,
             g_param_spec_int("samplesrecorded", "Samples Recorded",
@@ -350,43 +346,40 @@
     g_object_class_install_property(gobject_class, PRIORITY,
             g_param_spec_int("priority", "Priority", "Priority ", -1,
             G_MAXINT, -1,
-            (GParamFlags)G_PARAM_READWRITE));
+            G_PARAM_READWRITE));
 
     g_object_class_install_property(gobject_class, PREFERENCE,
             g_param_spec_int("preference", "Preference", "Preference ", -1,
             G_MAXINT, -1,
-            (GParamFlags)G_PARAM_READWRITE));
+            G_PARAM_READWRITE));
 
     g_object_class_install_property(gobject_class, RATE,
             g_param_spec_int("rate", "Rate", "Rate ", -1,
                     G_MAXINT, -1,
-                    (GParamFlags)G_PARAM_READWRITE));
+                    G_PARAM_READWRITE));
 
     g_object_class_install_property(gobject_class, CHANNELS,
             g_param_spec_int("channels", "Channels", "Channels ", -1,
                     G_MAXINT, -1,
-                    (GParamFlags)G_PARAM_READWRITE));
-    
+                    G_PARAM_READWRITE));
     gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_devsound_src_start);
     gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_devsound_src_stop);
     gstbasesrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_devsound_src_getcaps);
     gstbasesrc_class->set_caps = GST_DEBUG_FUNCPTR (gst_devsound_src_setcaps);
-    gstbasesrc_class->event = GST_DEBUG_FUNCPTR (gst_devsound_src_event);
+
     gstbasesrc_class->create = GST_DEBUG_FUNCPTR (gst_devsound_src_create);
     }
 
 static void gst_devsound_src_init(GstDevsoundSrc * devsoundsrc)
     {
     GST_DEBUG_OBJECT(devsoundsrc, "initializing devsoundsrc");
-    gst_base_src_set_live(GST_BASE_SRC(devsoundsrc), TRUE);
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "gst_devsound_src_init ENTER ",NULL);
     devsoundsrc->device = g_strdup(DEFAULT_DEVICE);
     devsoundsrc->handle=NULL;
     devsoundsrc->preference = 0; //default=>EMdaPriorityPreferenceNone;
     devsoundsrc->priority = 0;   //default=>EMdaPriorityNormal;
-    devsoundsrc->firstTimeInit = kUnInitialized;
-//    pthread_mutex_init(&create_mutex1, NULL);
-//    pthread_cond_init(&create_condition1, NULL);
+    pthread_mutex_init(&create_mutex1, NULL);
+    pthread_cond_init(&create_condition1, NULL);
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "gst_devsound_src_init EXIT ",NULL);
     }
 
@@ -397,16 +390,7 @@
     TUint8* gBuffer;
     GstBuffer* pushBuffer= NULL;
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "StartDevSoundThread ",NULL);
-    int ret = open_devsound(&(devsoundsrc->handle));
-    
-    if( KErrNone != ret )
-        {
-        pthread_mutex_lock(&(create_mutex1));
-        return_error = ret;
-        pthread_cond_signal(&(create_condition1));
-        pthread_mutex_unlock(&(create_mutex1));
-        pthread_exit(NULL);
-        }
+    open_devsound(&(devsoundsrc->handle));
 
     getsupporteddatatypes(devsoundsrc);
 
@@ -418,7 +402,6 @@
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "After Record Init ",NULL);
 
     pthread_mutex_lock(&(create_mutex1));
-    return_error = ret;
     pthread_cond_signal(&(create_condition1));
     pthread_mutex_unlock(&(create_mutex1));
 
@@ -435,73 +418,76 @@
     // without putting it to play state
     if ( cmd != CLOSE )
         {
-        gst_update_devsound_speech_bitrate(devsoundsrc);
-        ret = initialize_devsound(devsoundsrc);
-        if( KErrNone == ret )
-            {
-                ret = recordinit(devsoundsrc->handle);
-                if( KErrNone == ret )
-                    initproperties(devsoundsrc);
-        
-            }
-        /// if initialization of devsound failed, return error,
-        /// on return other thread will send CLOSE cmd to exit from thread.
-        if( ret )
+        initialize_devsound(devsoundsrc);
+    
+        recordinit(devsoundsrc->handle);
+        initproperties(devsoundsrc);
+        }
+    //cmd = READDATA;
+    while (1)
+        {
+        //set/get properties
+        //***************************************
+        pre_init_setconf(devsoundsrc);
+        gst_Apply_SpeechEncoder_Update(devsoundsrc);
+        gst_Apply_G711Encoder_Update(devsoundsrc);
+        gst_Apply_G729Encoder_Update(devsoundsrc );
+        gst_Apply_IlbcEncoder_Update(devsoundsrc );
+
+        populateproperties(devsoundsrc);
+
+        supportedbitrates = devsoundsrc->supportedbitrates;
+        //numofbitrates = devsoundsrc->numofbitrates;
+        speechbitrate = devsoundsrc->speechbitrate;
+        speechvadmode = devsoundsrc->speechvadmode;
+        g711vadmode = devsoundsrc->g711vadmode;
+        g729vadmode  = devsoundsrc->g729vadmode;
+        ilbcvadmode = devsoundsrc->ilbcvadmode;
+
+
+        //****************************************
+        //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "Before Buffer Alloc ",NULL);
+        buffersize = get_databuffer_size(devsoundsrc->handle);
+        get_databuffer(devsoundsrc->handle, &gBuffer);
+        pushBuffer = gst_buffer_new_and_alloc(buffersize);
+        //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "After Buffer Alloc ",NULL);
+        if (GST_BUFFER_DATA(pushBuffer))
             {
-            pthread_mutex_lock(&(create_mutex1));
-            return_error = ret;
-            pthread_cond_signal(&(create_condition1));
-            pthread_mutex_unlock(&(create_mutex1));
-            
-            pthread_mutex_lock(&create_mutex1);
-            pthread_cond_wait(&create_condition1, &create_mutex1);
-            pthread_mutex_unlock(&create_mutex1);
+            memcpy(GST_BUFFER_DATA(pushBuffer),gBuffer,buffersize);
+            }
+        else
+            {
+            //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "Push buffer alloc failed ",NULL);
             }
-        }
 
-    while (TRUE)
-        {
+        if (dataqueue)
+            {
+            GST_OBJECT_LOCK(devsoundsrc);
+            g_queue_push_head (dataqueue,pushBuffer);
+            GST_OBJECT_UNLOCK(devsoundsrc);
+            //signalmutex_create(devsoundsrc->handle);
+            if(dataqueue->length == 1 && (cmd != CLOSE))
+                {
+                //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "Before signal in DevSoundt ",NULL);
+                pthread_mutex_lock(&(create_mutex1));
+                pthread_cond_signal(&(create_condition1));
+                pthread_mutex_unlock(&(create_mutex1));
+                //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "After signal in DevSoundt ",NULL);
+                }
+            //cmd = READDATA;
+            //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "Before DevSnd Wait ",NULL);
+            //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "After DevSnd Wait ",NULL);
+           }
+        else
+            {
+            //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "dataqueue is NULL, CLOSE now ",NULL);
+            cmd = CLOSE;
+            }
+
         switch (cmd)
             {
-            case PAUSE:
-                pause_devsound(devsoundsrc);
-                break;
-                
-            case RESUME:
-                resume_devsound(devsoundsrc);
-                break;
-            
-            case STOP:
-                stop_devsound(devsoundsrc);
-                break;
-                
-            case RECORDING:
+            case READDATA:
                 {
-                pre_init_setconf(devsoundsrc);
-//                gst_Apply_SpeechEncoder_Update(devsoundsrc);
-                gst_Apply_G711Encoder_Update(devsoundsrc);
-                gst_Apply_G729Encoder_Update(devsoundsrc );
-                gst_Apply_IlbcEncoder_Update(devsoundsrc );
-
-                populateproperties(devsoundsrc);
-
-                supportedbitrates = devsoundsrc->supportedbitrates;
-                //numofbitrates = devsoundsrc->numofbitrates;
-                speechbitrate = devsoundsrc->speechbitrate;
-                speechvadmode = devsoundsrc->speechvadmode;
-                g711vadmode = devsoundsrc->g711vadmode;
-                g729vadmode  = devsoundsrc->g729vadmode;
-                ilbcvadmode = devsoundsrc->ilbcvadmode;
-
-                buffersize = get_databuffer_size(devsoundsrc->handle);
-                get_databuffer(devsoundsrc->handle, &gBuffer);
-                pushBuffer = gst_buffer_new_and_alloc(buffersize);
-                memcpy(GST_BUFFER_DATA(pushBuffer),gBuffer,buffersize);
-                
-                GST_OBJECT_LOCK(devsoundsrc);
-                g_queue_push_head (dataqueue,pushBuffer);
-                GST_OBJECT_UNLOCK(devsoundsrc);
-                
                 record_data(devsoundsrc->handle);
                 }
                 break;
@@ -516,26 +502,21 @@
                 pthread_mutex_lock(&(create_mutex1));
                 pthread_cond_signal(&(create_condition1));
                 pthread_mutex_unlock(&(create_mutex1));
-                // TODO obtain mutex here
+				// TODO obtain mutex here
                 consumer_thread_state = CONSUMER_THREAD_UNINITIALIZED;
                 pthread_exit(NULL);
                 }
                 break;
             default:
                 // TODO obtain mutex here
-                consumer_thread_state = CONSUMER_THREAD_UNINITIALIZED;          
+                consumer_thread_state = CONSUMER_THREAD_UNINITIALIZED;			
                 pthread_exit(NULL);
                 break;
             }
-        pthread_mutex_lock(&(create_mutex1));
-        return_error = call_back_error(devsoundsrc->handle);
-        pthread_cond_signal(&(create_condition1));
-        pthread_mutex_unlock(&(create_mutex1));
-        
-        pthread_mutex_lock(&create_mutex1);
-        pthread_cond_wait(&create_condition1, &create_mutex1);
-        pthread_mutex_unlock(&create_mutex1);
         }
+    // TODO obtain mutex here
+    consumer_thread_state = CONSUMER_THREAD_UNINITIALIZED;
+    pthread_exit(NULL);
     }
 
 static void gst_devsound_src_set_property(GObject * object, guint prop_id,
@@ -706,15 +687,12 @@
 static gboolean gst_devsound_src_start(GstBaseSrc * bsrc)
     {
     GstBuffer *tmp_gstbuffer=NULL;	
-    gboolean ret = TRUE;
     GstDevsoundSrc *src= GST_DEVSOUND_SRC(bsrc);
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "gst_devsound_src_start ENTER ",NULL);
-    pthread_mutex_init(&create_mutex1, NULL);
-    pthread_cond_init(&create_condition1, NULL);
-    
+
     if(dataqueue)
         {
-        while (g_queue_get_length(dataqueue))
+        while (dataqueue->length)
             {
             tmp_gstbuffer = (GstBuffer*)g_queue_pop_tail(dataqueue);
             gst_buffer_unref(tmp_gstbuffer);
@@ -730,7 +708,6 @@
 
     consumer_thread_state = CONSUMER_THREAD_INITIALIZING;
     cmd = OPEN;
-    return_error = KErrNone;
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "Before Thread Create ",NULL);
     pthread_create(&ds_thread, NULL, StartDevSoundThread, (void *)src);
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "After Thread Create ",NULL);
@@ -739,14 +716,11 @@
         {
         pthread_mutex_lock(&create_mutex1);
         pthread_cond_wait(&create_condition1, &create_mutex1);
-        ret = !return_error; // should be TRUE on no Error, and FALSE at ERROR.
         pthread_mutex_unlock(&create_mutex1);
         }
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "AFter Mutex Wait in START ",NULL);
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "gst_devsound_src_start EXIT ",NULL);
-    if ( return_error )
-        post_symbian_error( bsrc,return_error );
-    return ret;
+    return TRUE;
     /* ERRORS */
     }
 
@@ -756,9 +730,7 @@
     GstDevsoundSrc *src= GST_DEVSOUND_SRC(bsrc);
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "gst_devsound_src_stop ENTER ");
     cmd = CLOSE;
-    pthread_mutex_lock(&(create_mutex1));
-    pthread_cond_signal(&(create_condition1));
-    pthread_mutex_unlock(&(create_mutex1));
+
     //GST_OBJECT_LOCK (src);
     pthread_mutex_lock(&(create_mutex1));
     pthread_cond_wait(&(create_condition1), &(create_mutex1));
@@ -774,7 +746,7 @@
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "Before QUEUE Lock in STOP ");
     GST_OBJECT_LOCK(src);
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "After QUEUE Lock in STOP ");
-    while (g_queue_get_length(dataqueue))
+    while (dataqueue->length)
         {
         //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "Removing DATAQUEUE elements ENTER ");
         popBuffer = (GstBuffer*)g_queue_pop_tail(dataqueue);
@@ -792,9 +764,8 @@
     pthread_mutex_destroy(&create_mutex1);
     pthread_cond_destroy(&(create_condition1));
 
+
     g_free(src->device);
-    src->device = NULL;
-    src->firstTimeInit = kUnInitialized;
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "gst_devsound_src_stop EXIT ");
     return TRUE;
     }
@@ -823,28 +794,12 @@
     {
     GstDevsoundSrc *dsrc= GST_DEVSOUND_SRC(src);
     int bufferpos=0;
-    int ret = KErrNone;
-    
-    if(!g_queue_get_length(dataqueue) && (dsrc->eosreceived == TRUE))
-        {
-        pthread_mutex_lock(&(create_mutex1));
-        pthread_cond_signal(&(create_condition1));
-        pthread_mutex_unlock(&(create_mutex1));
-        post_symbian_error( src,KErrCancel );
-        return GST_FLOW_UNEXPECTED;
-        }
-    
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "gst_devsound_src_create ENTER ");
 
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "Before Buffer Alloc in CREATE ",NULL);
     *buf = gst_buffer_try_new_and_alloc(size);
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "AFter Buffer Alloc in CREATE ",NULL);
-    if(*buf == NULL)
-    {
-        post_symbian_error( src,KErrNoMemory );
-        return GST_FLOW_UNEXPECTED;
-    }        
-    
+
     while (size > 0)
         {
         if (dataleft >= size)
@@ -884,50 +839,26 @@
 
             // we wait here if the dataqueue length is 0 and we need data
             // to be filled in the queue from the DevSound Thread
-            if (!g_queue_get_length(dataqueue))
+            if (!dataqueue->length)
                 {
                 //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "Before WAIT in CREATE ",NULL);
-                if(dsrc->eosreceived == TRUE)
-                    {
-                    post_symbian_error( src,KErrCancel );
-                    return GST_FLOW_UNEXPECTED;
-                    }
-                else
-                    {
-                    cmd = RECORDING;
-                    return_error = KErrNone;
-                    pthread_mutex_lock(&(create_mutex1));
-                    pthread_cond_signal(&(create_condition1));
-                    pthread_mutex_unlock(&(create_mutex1));
-                    
-                    pthread_mutex_lock(&(create_mutex1));
-                    pthread_cond_wait(&(create_condition1), &(create_mutex1));
-                    ret = return_error;
-                    pthread_mutex_unlock(&(create_mutex1));
-                    }
+                cmd = READDATA;
+                pthread_mutex_lock(&(create_mutex1));
+                pthread_cond_signal(&(create_condition1));
+                pthread_mutex_unlock(&(create_mutex1));
+                
+                pthread_mutex_lock(&(create_mutex1));
+                pthread_cond_wait(&(create_condition1), &(create_mutex1));
+                pthread_mutex_unlock(&(create_mutex1));
                 //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "AFTER WAIT in CREATE ",NULL);
                 }
-            if( ret )
-            { 
-                post_symbian_error( src,ret );
-                return GST_FLOW_UNEXPECTED;
-            }
+
             //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "Before POP in CREATE ",NULL);
             GST_OBJECT_LOCK(dsrc);
             popBuffer = (GstBuffer*)g_queue_pop_tail(dataqueue);
             GST_OBJECT_UNLOCK(dsrc);
-           
-            if(!popBuffer )
-            {
-                post_symbian_error( src,KErrNoMemory );
-                return GST_FLOW_UNEXPECTED;
-            }
-            if(dsrc->firstTimeInit != kPlayed)
-                {        
-                dsrc->prevbuffersize = gst_base_src_get_blocksize(src);
-                gst_base_src_set_blocksize (src, GST_BUFFER_SIZE(popBuffer));
-                (*buf)->size = GST_BUFFER_SIZE(popBuffer);
-                }
+            //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "AFTER POP in CREATE ",NULL);
+
             // copy the data from the popped buffer based on how much of the incoming
             //buffer size is left to fill. we might have filled the fresh buffer somewhat
             // where the size of the fresh buffer is more then the data remaining in the
@@ -957,94 +888,11 @@
                 popBuffer = NULL;
                 }
             }
-        if (dsrc->firstTimeInit == kPlayBufferPreRoll)
-            {
-            gst_base_src_set_blocksize (src, dsrc->prevbuffersize);
-            dsrc->firstTimeInit = kPlayed;
-            return GST_FLOW_OK;
-            }
-        
-        if (dsrc->firstTimeInit == kPausedToPlaying)
-            {
-            dsrc->firstTimeInit = kPlayBufferPreRoll;
-            return GST_FLOW_OK;
-            }
-       }
+        }
     //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "gst_devsound_src_create EXIT ",NULL);
     return GST_FLOW_OK;
     }
 
-
-static GstStateChangeReturn gst_devsound_src_change_state (GstElement * element,
-    GstStateChange transition)
-    {
-    GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
-    GstDevsoundSrc *src= GST_DEVSOUND_SRC (element);
- 
-    switch (transition) {
-        
-        case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
-            if (src->firstTimeInit != kPlayed)
-            src->firstTimeInit = kPausedToPlaying;
-            if(cmd == PAUSE)
-                {
-                cmd = RESUME;
-                return_error = KErrNone;
-                pthread_mutex_lock(&create_mutex1);
-                pthread_cond_signal(&create_condition1);
-                pthread_mutex_unlock(&create_mutex1);
-                
-                pthread_mutex_lock(&create_mutex1);
-                pthread_cond_wait(&create_condition1, &create_mutex1);
-                if( return_error )
-                    {
-                    post_symbian_error( GST_BASE_SRC(element),return_error );
-                    ret = GST_STATE_CHANGE_FAILURE;
-                    }
-                pthread_mutex_unlock(&create_mutex1);
-                }
-            break;
-        default:
-            break;
-        }
-
-    ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-      if (G_UNLIKELY (ret == GST_STATE_CHANGE_FAILURE))
-        goto activate_failed;
-
-      switch (transition) {
-          
-          case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
-              cmd = PAUSE;
-              return_error = KErrNone;
-              pthread_mutex_lock(&create_mutex1);
-              pthread_cond_signal(&create_condition1);
-              pthread_mutex_unlock(&create_mutex1);
-              
-              pthread_mutex_lock(&create_mutex1);
-              pthread_cond_wait(&create_condition1, &create_mutex1);
-              if( return_error )
-                  {
-                  post_symbian_error( GST_BASE_SRC(element),return_error );
-                  ret = GST_STATE_CHANGE_FAILURE;
-                  }            
-              pthread_mutex_unlock(&create_mutex1);
-              break;
-          default:
-              break;
-          }
-      
-      return ret;
-    
-    activate_failed:
-      {
-        GST_DEBUG_OBJECT (src,
-            "element failed to change states -- activation problem?");
-        return GST_STATE_CHANGE_FAILURE;
-      }    
-    }
-
-
 static gboolean gst_devsound_src_is_seekable(GstBaseSrc * bsrc)
     {
     GstDevsoundSrc *src= GST_DEVSOUND_SRC(bsrc);
@@ -1101,14 +949,7 @@
     return 0;
     }
 
-static void gst_update_devsound_speech_bitrate(GstDevsoundSrc *devsoundsrc )
-    {
-    if(customInfaceUpdate.speechbitrateupdate == TRUE)
-        {
-        update_devsound_speech_bitrate(devsoundsrc->handle,speechbitrate);
-        customInfaceUpdate.speechbitrateupdate = FALSE;
-        }
-    }
+
 static void gst_Apply_SpeechEncoder_Update(GstDevsoundSrc *devsoundsrc )
     {
     if(customInfaceUpdate.speechbitrateupdate == TRUE)
@@ -1296,131 +1137,3 @@
 
     }
 
-static gboolean gst_devsound_src_event(GstBaseSrc *asrc, GstEvent *event)
-    {
-    int retValue = FALSE;
-    GstDevsoundSrc *src = GST_DEVSOUND_SRC(asrc);
-    switch (GST_EVENT_TYPE (event))
-        {
-        case GST_EVENT_EOS:
-            // end-of-stream, we should close down all stream leftovers here
-            //reset_devsound(sink->handle);
-            src->eosreceived = TRUE;
-            cmd = STOP;
-            return_error = KErrNone;
-            pthread_mutex_lock(&create_mutex1);
-            pthread_cond_signal(&create_condition1);
-            pthread_mutex_unlock(&create_mutex1);
-            
-            pthread_mutex_lock(&create_mutex1);
-            pthread_cond_wait(&create_condition1, &create_mutex1);
-            pthread_mutex_unlock(&create_mutex1);
-            
-            if(g_queue_get_length(dataqueue))
-                {
-                pthread_mutex_lock(&create_mutex1);
-                pthread_cond_wait(&create_condition1, &create_mutex1);
-                pthread_mutex_unlock(&create_mutex1);
-                }
-            
-            gst_pad_push_event (asrc->srcpad, gst_event_new_eos ());
-            retValue = TRUE;
-            break;
-        default:
-            retValue = FALSE;
-            break;
-        }
-    
-    return retValue;
-    }
-
-static void 
-post_symbian_error ( GstBaseSrc* element, int symbian_error )
-{
-    switch (symbian_error)
-    {
-
-        case KErrNone:
-            break;
-        case KErrNotFound:
-            GST_ELEMENT_ERROR (element, RESOURCE, NOT_FOUND,
-                (("resource not found error.")),
-                ("streaming paused because resource not found, Err(%d)", symbian_error));               
-            break;
-        case KErrCancel:
-            GST_ELEMENT_ERROR (element, RESOURCE, CLOSE,
-                (("resource request canceled.")),
-                ("streaming paused because resource request canceled, Err(%d)", symbian_error));               
-            break;
-        case KErrNoMemory:
-            GST_ELEMENT_ERROR (element, RESOURCE, NO_SPACE_LEFT,
-                (("Error out of memory")),
-                ("streaming paused because of no memory, Err(%d)", symbian_error));               
-            break;
-        case KErrNotSupported:
-            GST_ELEMENT_ERROR (element, RESOURCE, READ,
-                (("resource not supported.")),
-                ("streaming paused because resource not supported, Err(%d)", symbian_error));               
-            break;
-        case KErrNotReady:
-            GST_ELEMENT_ERROR (element, RESOURCE, TOO_LAZY,
-                (("resource is not ready for request.")),
-                ("streaming paused because resource is not ready, Err(%d)", symbian_error));               
-            break;
-        case KErrPermissionDenied:
-            GST_ELEMENT_ERROR (element, RESOURCE, READ,
-                (("Permission Denied.")),
-                ("streaming paused because permission denied, Err(%d)", symbian_error));               
-            break;
-        case KErrTimedOut:
-            GST_ELEMENT_ERROR (element, RESOURCE, TOO_LAZY,
-                (("Timed Out.")),
-                ("streaming paused because timed out, Err(%d)", symbian_error));               
-            break;
-        case KErrHardwareNotAvailable:
-            GST_ELEMENT_ERROR (element, RESOURCE, NOT_FOUND,
-                (("Hardware Not Available.")),
-                ("streaming paused because hardware not available, Err(%d)", symbian_error));               
-            break;
-        case KErrCorrupt:
-            GST_ELEMENT_ERROR (element, RESOURCE, FAILED,
-                (("Corrupted data.")),
-                ("streaming paused because of corrupted data, Err(%d)", symbian_error));               
-            break;
-        case KErrUnderflow:
-            GST_ELEMENT_ERROR (element, STREAM, FAILED,
-                (("Under flow.")),
-                ("streaming paused because of under flow, Err(%d)", symbian_error));               
-            break;
-        case KErrOverflow:
-            GST_ELEMENT_ERROR (element, STREAM, FAILED,
-                (("Over flow.")),
-                ("streaming paused because of over flow, Err(%d)", symbian_error));    
-            break;
-
-        case KErrInUse:
-            GST_ELEMENT_ERROR (element, RESOURCE, BUSY,
-                (("Resource In Use.")),
-                ("streaming paused because resource in use, Err(%d)", symbian_error));            
-            break;
-            
-        case KErrDied:
-            GST_ELEMENT_ERROR (element, RESOURCE, BUSY,
-                (("Error Resource Died.")),
-                ("streaming paused because resource died., Err(%d)", symbian_error));            
-            break;
-            
-        case KErrAccessDenied:            
-            GST_ELEMENT_ERROR (element, RESOURCE, BUSY,
-                (("Resource Access Denied.")),
-                ("streaming paused because resource access denied, Err(%d)", symbian_error));            
-            break;
-            
-        default:
-            GST_ELEMENT_ERROR (element, STREAM, FAILED,
-                (("internal data flow error.")),
-                ("streaming paused because of internal data flow error., Err(%d)", symbian_error));            
-            break;
-    }
-}
-