gst_plugins_symbian/gst/devsound/gstdevsoundsrc.c
author hgs
Fri, 06 Aug 2010 16:36:50 -0500
changeset 26 69c7080681bf
parent 22 8d4f92b9230e
child 28 4ed5253bb6ba
permissions -rw-r--r--
201031
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/* GStreamer
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
 * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
 *               2000,2005 Wim Taymans <wim@fluendo.com>
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
 *
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
 * gstdevsoundsrc.c:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
 *
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
 * This library is free software; you can redistribute it and/or
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
 * modify it under the terms of the GNU Library General Public
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
 * License as published by the Free Software Foundation; either
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
 * version 2 of the License, or (at your option) any later version.
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
 *
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
 * This library is distributed in the hope that it will be useful,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
 * Library General Public License for more details.
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
 *
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
 * You should have received a copy of the GNU Library General Public
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
 * License along with this library; if not, write to the
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
 * Boston, MA 02111-1307, USA.
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
 */
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#ifdef HAVE_CONFIG_H
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include "config.h"
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#endif
26
hgs
parents: 22
diff changeset
    26
#include <gst/gst.h>
hgs
parents: 22
diff changeset
    27
#include <e32err.h> 
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
#include <gqueue.h>
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
#include "common.h"
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
#include "gstdevsoundsrc.h"
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
#include <glib_global.h>
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
#include "gstg711encoderinterface.h"
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
#include "gstspeechencoderconfig.h"
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
#include "gstg729encoderinterface.h"
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
#include "gstilbcencoderinterface.h"
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    37
#include "string.h"
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
GST_DEBUG_CATEGORY_EXTERN (devsoundsrc_debug);
20
hgs
parents: 14
diff changeset
    40
#ifdef GST_CAT_DEFAULT
hgs
parents: 14
diff changeset
    41
#undef GST_CAT_DEFAULT
hgs
parents: 14
diff changeset
    42
#endif
hgs
parents: 14
diff changeset
    43
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
#define GST_CAT_DEFAULT devsoundsrc_debug
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
/* elementfactory information */
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
static const GstElementDetails gst_devsound_src_details=
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
GST_ELEMENT_DETAILS ("Audio Src (DEVSOUND)",
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
        "Src/Audio",
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
        "Record via Devsound",
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
        " "
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
static void gst_devsound_src_base_init(gpointer g_class);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
static void gst_devsound_src_class_init(GstDevsoundSrcClass * klass);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
static void gst_devsound_src_init(GstDevsoundSrc * devsoundsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
static void gst_devsound_src_dispose(GObject * object);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
static void gst_devsound_src_get_property(GObject * object, guint prop_id,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    61
        GValue * value, GParamSpec * pspec);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    62
static void gst_devsound_src_set_property(GObject * object, guint prop_id,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
        const GValue * value, GParamSpec * pspec);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    65
static GstCaps *gst_devsound_src_getcaps(GstBaseSrc * bsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
static gboolean gst_devsound_src_setcaps(GstBaseSrc *bsrc, GstCaps *caps);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
static gboolean gst_devsound_src_start(GstBaseSrc * bsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
static gboolean gst_devsound_src_stop(GstBaseSrc * bsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
static gboolean gst_devsound_src_unlock(GstBaseSrc * bsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
static gboolean gst_devsound_src_unlock_stop(GstBaseSrc * bsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
static gboolean gst_devsound_src_is_seekable(GstBaseSrc * bsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
static gboolean gst_devsound_src_get_size(GstBaseSrc * src, guint64 * size);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    74
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    75
static GstFlowReturn gst_devsound_src_create(GstBaseSrc *src, guint64 offset,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
        guint size, GstBuffer **buf);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    77
static void *StartDevSoundThread(void *threadid);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
14
hgs
parents: 0
diff changeset
    79
static gboolean gst_devsound_src_event(GstBaseSrc * asrc, GstEvent * event);
hgs
parents: 0
diff changeset
    80
hgs
parents: 0
diff changeset
    81
static GstStateChangeReturn gst_devsound_src_change_state (GstElement * element,
hgs
parents: 0
diff changeset
    82
    GstStateChange transition);
hgs
parents: 0
diff changeset
    83
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
/*********************************
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    85
 * Speech Encoder Config Interface
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
 * ******************************/
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    87
static void gst_speech_encoder_config_handler_init(gpointer g_iface,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    88
        gpointer iface_data);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    89
static gint gst_get_speech_encoder_bit_rate(guint* aBitrate);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    90
static gint gst_get_speech_encoder_supported_bit_rates(
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    91
        GList** aSupportedBitrates);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    92
static gint gst_get_speech_encoder_vad_mode(gboolean* aVadMode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
static gint gst_set_speech_encoder_bit_rate(guint aBitrate);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
static gint gst_set_speech_encoder_vad_mode(gboolean aVadMode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
static void gst_Apply_SpeechEncoder_Update(GstDevsoundSrc *devsoundsrc );
26
hgs
parents: 22
diff changeset
    96
static void gst_update_devsound_speech_bitrate(GstDevsoundSrc *devsoundsrc );
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    97
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
/*************************
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
 * G711 Encoder Interface
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
 * ***********************/
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
static void gst_g711_encoder_handler_init(gpointer g_iface,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
        gpointer iface_data);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
static gint gst_get_g711_encoder_vad_mode(gboolean* aVadMode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
static gint gst_set_g711_encoder_mode(enum TG711EncodeMode aEncodeMode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
static gint gst_set_g711_vad_mode(gboolean aVadMode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
static void gst_Apply_G711Encoder_Update(GstDevsoundSrc *devsoundsrc );
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   107
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
/*************************
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
 * 729 Encoder Interface
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
 * ***********************/
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   112
static void gst_g729_encoder_handler_init(gpointer g_iface,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
        gpointer iface_data);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
static gint gst_set_g729_vad_mode(TBool aVadMode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
static gint gst_get_g729_vad_mode(TBool* aVadMode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
static void gst_Apply_G729Encoder_Update(GstDevsoundSrc *devsoundsrc );
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
/*************************
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
 * ilbc Encoder Interface
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
 * ***********************/
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
static void gst_ilbc_encoder_handler_init(gpointer g_iface,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
        gpointer iface_data);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   124
static gint gst_set_ilbc_encoder_mode(enum TIlbcEncodeMode aEncodeMode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   125
static gint gst_set_ilbc_vad_mode(gboolean aVadMode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
static gint gst_get_ilbc_vad_mode(gboolean* aVadMode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   127
static void gst_Apply_IlbcEncoder_Update(GstDevsoundSrc *devsoundsrc );
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
static gint gst_devsound_src_get_rate(gint rate);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   131
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   132
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   133
typedef struct _GstCustomIfaceUpdate GstCustomIfaceUpdate;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   134
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   135
struct _GstCustomIfaceUpdate{
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   136
gboolean  speechbitrateupdate;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   137
gboolean  speechvadmodeupdate;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   138
gboolean  g711encodermodeupdate;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
gboolean  g711vadmodeupdate;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
gboolean  g729vadmodeupdate;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   141
gboolean  ilbcencodermodeupdate;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   142
gboolean  ilbcvadmodeupdate;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   143
};
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   144
GstCustomIfaceUpdate customInfaceUpdate = {0,0,0,0,0,0,0};
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
guint speechbitrate;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   147
gboolean speechvadmode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   148
enum TG711EncodeMode g711encodemode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   149
gboolean g711vadmode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   150
GList* supportedbitrates;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
gint numofbitrates;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
gboolean g729vadmode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   153
enum TIlbcEncodeMode ilbcencodemode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   154
gboolean ilbcvadmode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   155
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   156
pthread_t ds_thread;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   157
pthread_mutex_t create_mutex1;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   158
pthread_cond_t create_condition1;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   159
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   160
enum consumer_thread_state_enum {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   161
   CONSUMER_THREAD_UNINITIALIZED,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   162
   CONSUMER_THREAD_INITIALIZING,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   163
   CONSUMER_THREAD_INITIALIZED
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   164
};
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   165
enum consumer_thread_state_enum consumer_thread_state;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   166
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   167
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
GQueue* dataqueue= NULL;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   170
GstBuffer* popBuffer= NULL;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   171
int dataleft = 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   172
int dataCopied = 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   173
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   174
enum command_to_consumer_thread_enum
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   175
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   176
    OPEN = 2,
14
hgs
parents: 0
diff changeset
   177
    RECORDING,
hgs
parents: 0
diff changeset
   178
    PAUSE,
hgs
parents: 0
diff changeset
   179
    RESUME,
hgs
parents: 0
diff changeset
   180
    STOP,
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   181
    /*UPDATE,*/
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   182
    CLOSE
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   183
    };
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   184
enum command_to_consumer_thread_enum cmd;
26
hgs
parents: 22
diff changeset
   185
int return_error;
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   186
enum
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   187
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   188
    LAST_SIGNAL
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   189
    };
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   190
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
#define DEFAULT_DEVICE  "default"
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   193
enum
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   195
    PROP_0,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   196
    PROP_DEVICE,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
    GAIN,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
    MAXGAIN,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   199
    CHANNELS,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   200
    LEFTBALANCE,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   201
    RIGHTBALANCE,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   202
    RATE,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
    PRIORITY,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
    PREFERENCE,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
    SAMPLESRECORDED
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   206
    };
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   207
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   208
static GstStaticPadTemplate devsound_src_factory=
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   209
    GST_STATIC_PAD_TEMPLATE ("src",
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   210
        GST_PAD_SRC,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   211
        GST_PAD_ALWAYS,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   212
        GST_STATIC_CAPS ("audio/x-raw-int, "
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   213
                "endianness = (int) { " G_STRINGIFY (G_BYTE_ORDER) " }, "
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   214
                "signed = (boolean) TRUE, "
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   215
                "width = (int) 16, "
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   216
                "depth = (int) 16, "
26
hgs
parents: 22
diff changeset
   217
                "rate = (int) { 8000, 16000, 24000, 32000, 48000 },"
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   218
                "channels = (int) [ 1, 2 ]; "
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   219
                "audio/amr, "
26
hgs
parents: 22
diff changeset
   220
                "rate = (int) 8000, "
hgs
parents: 22
diff changeset
   221
                "channels = (int) [ 1, 2 ]; ")
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   222
                );
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   223
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   224
static GstElementClass *parent_class= NULL;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   225
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   226
static void gst_devsound_src_base_init(gpointer g_class)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   227
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
    GstElementClass *element_class= GST_ELEMENT_CLASS (g_class);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   229
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
    gst_element_class_set_details(element_class, &gst_devsound_src_details);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   231
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
    gst_element_class_add_pad_template(element_class,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
            gst_static_pad_template_get(&devsound_src_factory));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   234
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   236
GType gst_devsound_src_get_type(void)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   237
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   238
    static GType devsoundsrc_type = 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   239
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   240
    if (!devsoundsrc_type)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   241
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   242
        static const GTypeInfo devsoundsrc_info =
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   243
            {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   244
            sizeof(GstDevsoundSrcClass), gst_devsound_src_base_init, NULL,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   245
                    (GClassInitFunc) gst_devsound_src_class_init, NULL, NULL,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   246
                    sizeof(GstDevsoundSrc), 0,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   247
                    (GInstanceInitFunc) gst_devsound_src_init
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   248
,        };
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   249
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   250
    static const GInterfaceInfo speech_encoder_config_info =
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   251
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   252
        gst_speech_encoder_config_handler_init,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   253
        NULL,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   254
        NULL
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   255
        };
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   256
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   257
    static const GInterfaceInfo g711_encoder_info =
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   258
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   259
        gst_g711_encoder_handler_init,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   260
        NULL,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
        NULL
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   262
        };
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   263
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   264
    static const GInterfaceInfo g729_encoder_info =
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   265
         {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   266
         gst_g729_encoder_handler_init,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   267
         NULL,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   268
         NULL
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   269
         };
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   270
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   271
    static const GInterfaceInfo ilbc_encoder_info =
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   272
         {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   273
         gst_ilbc_encoder_handler_init,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   274
         NULL,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   275
         NULL
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   276
         };
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   277
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   278
    devsoundsrc_type =
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   279
    g_type_register_static (GST_TYPE_PUSH_SRC, "GstDevsoundSrc",
20
hgs
parents: 14
diff changeset
   280
            &devsoundsrc_info, (GTypeFlags)0);
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   281
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   282
    g_type_add_interface_static (devsoundsrc_type, GST_TYPE_SPEECH_ENCODER_CONFIG,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   283
            &speech_encoder_config_info);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   284
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   285
    g_type_add_interface_static (devsoundsrc_type, GST_TYPE_G711_ENCODER,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   286
            &g711_encoder_info);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   287
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   288
    g_type_add_interface_static (devsoundsrc_type, GST_TYPE_G729_ENCODER,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   289
              &g729_encoder_info);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   290
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   291
    g_type_add_interface_static (devsoundsrc_type, GST_TYPE_ILBC_ENCODER,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   292
              &ilbc_encoder_info);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   293
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   294
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   295
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   296
return devsoundsrc_type;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   297
}
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   298
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   299
static void gst_devsound_src_dispose(GObject * object)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   300
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   301
    GstDevsoundSrc *devsoundsrc= GST_DEVSOUND_SRC (object);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   302
    G_OBJECT_CLASS (parent_class)->dispose (object);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   303
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   304
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   305
static void gst_devsound_src_class_init(GstDevsoundSrcClass * klass)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   306
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   307
    GObjectClass *gobject_class;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   308
    GstElementClass *gstelement_class;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   309
    GstBaseSrcClass *gstbasesrc_class;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   310
    GstPushSrcClass *gstpushsrc_class;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   311
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   312
    gobject_class = (GObjectClass *) klass;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   313
    gstelement_class = (GstElementClass *) klass;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   314
    gstbasesrc_class = (GstBaseSrcClass *) klass;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   315
    gstpushsrc_class = (GstPushSrcClass *) klass;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   316
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   317
    parent_class = g_type_class_peek_parent(klass);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   318
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   319
    gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_devsound_src_dispose);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   320
    gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_devsound_src_get_property);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   321
    gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_devsound_src_set_property);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   322
14
hgs
parents: 0
diff changeset
   323
    gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_devsound_src_change_state);
hgs
parents: 0
diff changeset
   324
    
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   325
    g_object_class_install_property(gobject_class, PROP_DEVICE,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   326
            g_param_spec_string("device", "Device", "Devsound device ",
20
hgs
parents: 14
diff changeset
   327
                    DEFAULT_DEVICE, (GParamFlags)G_PARAM_READWRITE));
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   328
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   329
    g_object_class_install_property(gobject_class, GAIN, g_param_spec_int(
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   330
            "gain", "Gain", "Devsound src gain", -1, G_MAXINT, -1,
20
hgs
parents: 14
diff changeset
   331
            (GParamFlags)G_PARAM_READWRITE));
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   332
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   333
    g_object_class_install_property(gobject_class, MAXGAIN, g_param_spec_int(
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   334
            "maxgain", "MaxGain", "Devsound src max gain", -1, G_MAXINT, -1,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   335
            G_PARAM_READABLE));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   336
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   337
    g_object_class_install_property(gobject_class, LEFTBALANCE,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   338
            g_param_spec_int("leftbalance", "Left Balance", "Left Balance",
20
hgs
parents: 14
diff changeset
   339
                    -1, G_MAXINT, -1, (GParamFlags)G_PARAM_READWRITE));
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   340
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   341
    g_object_class_install_property(gobject_class, RIGHTBALANCE,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   342
            g_param_spec_int("rightbalance", "Right Balance",
20
hgs
parents: 14
diff changeset
   343
                    "Right Balance", -1, G_MAXINT, -1, (GParamFlags)G_PARAM_READWRITE));
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   344
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   345
    g_object_class_install_property(gobject_class, SAMPLESRECORDED,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   346
            g_param_spec_int("samplesrecorded", "Samples Recorded",
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   347
                    "Samples Recorded", -1, G_MAXINT, -1, G_PARAM_READABLE));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   348
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   349
    g_object_class_install_property(gobject_class, PRIORITY,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   350
            g_param_spec_int("priority", "Priority", "Priority ", -1,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   351
            G_MAXINT, -1,
20
hgs
parents: 14
diff changeset
   352
            (GParamFlags)G_PARAM_READWRITE));
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   353
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   354
    g_object_class_install_property(gobject_class, PREFERENCE,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   355
            g_param_spec_int("preference", "Preference", "Preference ", -1,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   356
            G_MAXINT, -1,
20
hgs
parents: 14
diff changeset
   357
            (GParamFlags)G_PARAM_READWRITE));
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   358
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   359
    g_object_class_install_property(gobject_class, RATE,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   360
            g_param_spec_int("rate", "Rate", "Rate ", -1,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   361
                    G_MAXINT, -1,
20
hgs
parents: 14
diff changeset
   362
                    (GParamFlags)G_PARAM_READWRITE));
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   363
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   364
    g_object_class_install_property(gobject_class, CHANNELS,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   365
            g_param_spec_int("channels", "Channels", "Channels ", -1,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   366
                    G_MAXINT, -1,
20
hgs
parents: 14
diff changeset
   367
                    (GParamFlags)G_PARAM_READWRITE));
14
hgs
parents: 0
diff changeset
   368
    
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   369
    gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_devsound_src_start);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   370
    gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_devsound_src_stop);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   371
    gstbasesrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_devsound_src_getcaps);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   372
    gstbasesrc_class->set_caps = GST_DEBUG_FUNCPTR (gst_devsound_src_setcaps);
14
hgs
parents: 0
diff changeset
   373
    gstbasesrc_class->event = GST_DEBUG_FUNCPTR (gst_devsound_src_event);
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   374
    gstbasesrc_class->create = GST_DEBUG_FUNCPTR (gst_devsound_src_create);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   375
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   376
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   377
static void gst_devsound_src_init(GstDevsoundSrc * devsoundsrc)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   378
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   379
    GST_DEBUG_OBJECT(devsoundsrc, "initializing devsoundsrc");
14
hgs
parents: 0
diff changeset
   380
    gst_base_src_set_live(GST_BASE_SRC(devsoundsrc), TRUE);
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   381
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "gst_devsound_src_init ENTER ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   382
    devsoundsrc->device = g_strdup(DEFAULT_DEVICE);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   383
    devsoundsrc->handle=NULL;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   384
    devsoundsrc->preference = 0; //default=>EMdaPriorityPreferenceNone;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   385
    devsoundsrc->priority = 0;   //default=>EMdaPriorityNormal;
22
hgs
parents: 20
diff changeset
   386
    devsoundsrc->firstTimeInit = kUnInitialized;
20
hgs
parents: 14
diff changeset
   387
//    pthread_mutex_init(&create_mutex1, NULL);
hgs
parents: 14
diff changeset
   388
//    pthread_cond_init(&create_condition1, NULL);
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   389
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "gst_devsound_src_init EXIT ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   390
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   391
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   392
static void *StartDevSoundThread(void *threadarg)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   393
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   394
    GstDevsoundSrc *devsoundsrc= GST_DEVSOUND_SRC (threadarg);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   395
    int buffersize;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   396
    TUint8* gBuffer;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   397
    GstBuffer* pushBuffer= NULL;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   398
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "StartDevSoundThread ",NULL);
26
hgs
parents: 22
diff changeset
   399
    int ret = open_devsound(&(devsoundsrc->handle));
hgs
parents: 22
diff changeset
   400
    
hgs
parents: 22
diff changeset
   401
    if( 0 != ret )
hgs
parents: 22
diff changeset
   402
        {
hgs
parents: 22
diff changeset
   403
        pthread_mutex_lock(&(create_mutex1));
hgs
parents: 22
diff changeset
   404
        return_error = ret;
hgs
parents: 22
diff changeset
   405
        pthread_cond_signal(&(create_condition1));
hgs
parents: 22
diff changeset
   406
        pthread_mutex_unlock(&(create_mutex1));    
hgs
parents: 22
diff changeset
   407
        //return_error = ret;
hgs
parents: 22
diff changeset
   408
        pthread_exit(NULL);
hgs
parents: 22
diff changeset
   409
        }
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   410
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   411
    getsupporteddatatypes(devsoundsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   412
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   413
// TODO obtain mutex to update variable here???
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   414
    consumer_thread_state = CONSUMER_THREAD_INITIALIZED;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   415
	
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   416
    //pre_init_setconf(devsoundsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   417
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   418
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "After Record Init ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   419
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   420
    pthread_mutex_lock(&(create_mutex1));
26
hgs
parents: 22
diff changeset
   421
    return_error = ret;
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   422
    pthread_cond_signal(&(create_condition1));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   423
    pthread_mutex_unlock(&(create_mutex1));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   424
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   425
    // Wait until we receive a command from the main thread
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   426
    // TODO obtain mutex to read variable here???
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   427
    while ( cmd == OPEN )
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   428
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   429
        pthread_mutex_lock(&create_mutex1);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   430
        pthread_cond_wait(&create_condition1, &create_mutex1);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   431
        pthread_mutex_unlock(&create_mutex1);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   432
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   433
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   434
    // This could happen if client creates sink and deletes it
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   435
    // without putting it to play state
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   436
    if ( cmd != CLOSE )
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   437
        {
26
hgs
parents: 22
diff changeset
   438
        gst_update_devsound_speech_bitrate(devsoundsrc);
hgs
parents: 22
diff changeset
   439
        ret = initialize_devsound(devsoundsrc);
hgs
parents: 22
diff changeset
   440
        if( 0 == ret )
hgs
parents: 22
diff changeset
   441
            {
hgs
parents: 22
diff changeset
   442
                ret = recordinit(devsoundsrc->handle);
hgs
parents: 22
diff changeset
   443
                if( 0 == ret )
hgs
parents: 22
diff changeset
   444
                    initproperties(devsoundsrc);
hgs
parents: 22
diff changeset
   445
        
hgs
parents: 22
diff changeset
   446
            }
hgs
parents: 22
diff changeset
   447
        /// if initialization of devsound failed, return error,
hgs
parents: 22
diff changeset
   448
        /// on return other thread will send CLOSE cmd to exit from thread.
hgs
parents: 22
diff changeset
   449
        if( ret )
hgs
parents: 22
diff changeset
   450
            {
hgs
parents: 22
diff changeset
   451
            pthread_mutex_lock(&(create_mutex1));
hgs
parents: 22
diff changeset
   452
            return_error = ret;
hgs
parents: 22
diff changeset
   453
            pthread_cond_signal(&(create_condition1));
hgs
parents: 22
diff changeset
   454
            pthread_mutex_unlock(&(create_mutex1));
hgs
parents: 22
diff changeset
   455
            
hgs
parents: 22
diff changeset
   456
            pthread_mutex_lock(&create_mutex1);
hgs
parents: 22
diff changeset
   457
            pthread_cond_wait(&create_condition1, &create_mutex1);
hgs
parents: 22
diff changeset
   458
            pthread_mutex_unlock(&create_mutex1);
hgs
parents: 22
diff changeset
   459
            }
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   460
        }
14
hgs
parents: 0
diff changeset
   461
hgs
parents: 0
diff changeset
   462
    while (TRUE)
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   463
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   464
        switch (cmd)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   465
            {
14
hgs
parents: 0
diff changeset
   466
            case PAUSE:
hgs
parents: 0
diff changeset
   467
                pause_devsound(devsoundsrc);
hgs
parents: 0
diff changeset
   468
                break;
hgs
parents: 0
diff changeset
   469
                
hgs
parents: 0
diff changeset
   470
            case RESUME:
hgs
parents: 0
diff changeset
   471
                resume_devsound(devsoundsrc);
hgs
parents: 0
diff changeset
   472
                break;
hgs
parents: 0
diff changeset
   473
            
hgs
parents: 0
diff changeset
   474
            case STOP:
hgs
parents: 0
diff changeset
   475
                stop_devsound(devsoundsrc);
hgs
parents: 0
diff changeset
   476
                break;
hgs
parents: 0
diff changeset
   477
                
hgs
parents: 0
diff changeset
   478
            case RECORDING:
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   479
                {
14
hgs
parents: 0
diff changeset
   480
                pre_init_setconf(devsoundsrc);
26
hgs
parents: 22
diff changeset
   481
//                gst_Apply_SpeechEncoder_Update(devsoundsrc);
14
hgs
parents: 0
diff changeset
   482
                gst_Apply_G711Encoder_Update(devsoundsrc);
hgs
parents: 0
diff changeset
   483
                gst_Apply_G729Encoder_Update(devsoundsrc );
hgs
parents: 0
diff changeset
   484
                gst_Apply_IlbcEncoder_Update(devsoundsrc );
hgs
parents: 0
diff changeset
   485
hgs
parents: 0
diff changeset
   486
                populateproperties(devsoundsrc);
hgs
parents: 0
diff changeset
   487
hgs
parents: 0
diff changeset
   488
                supportedbitrates = devsoundsrc->supportedbitrates;
hgs
parents: 0
diff changeset
   489
                //numofbitrates = devsoundsrc->numofbitrates;
hgs
parents: 0
diff changeset
   490
                speechbitrate = devsoundsrc->speechbitrate;
hgs
parents: 0
diff changeset
   491
                speechvadmode = devsoundsrc->speechvadmode;
hgs
parents: 0
diff changeset
   492
                g711vadmode = devsoundsrc->g711vadmode;
hgs
parents: 0
diff changeset
   493
                g729vadmode  = devsoundsrc->g729vadmode;
hgs
parents: 0
diff changeset
   494
                ilbcvadmode = devsoundsrc->ilbcvadmode;
hgs
parents: 0
diff changeset
   495
hgs
parents: 0
diff changeset
   496
                buffersize = get_databuffer_size(devsoundsrc->handle);
hgs
parents: 0
diff changeset
   497
                get_databuffer(devsoundsrc->handle, &gBuffer);
hgs
parents: 0
diff changeset
   498
                pushBuffer = gst_buffer_new_and_alloc(buffersize);
hgs
parents: 0
diff changeset
   499
                memcpy(GST_BUFFER_DATA(pushBuffer),gBuffer,buffersize);
hgs
parents: 0
diff changeset
   500
                
hgs
parents: 0
diff changeset
   501
                GST_OBJECT_LOCK(devsoundsrc);
hgs
parents: 0
diff changeset
   502
                g_queue_push_head (dataqueue,pushBuffer);
hgs
parents: 0
diff changeset
   503
                GST_OBJECT_UNLOCK(devsoundsrc);
hgs
parents: 0
diff changeset
   504
                
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   505
                record_data(devsoundsrc->handle);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   506
                }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   507
                break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   508
            case CLOSE:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   509
                {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   510
                //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "Before Close DevSound ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   511
                close_devsound(devsoundsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   512
                //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "After Close DevSound ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   513
                devsoundsrc->handle= NULL;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   514
                //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "After handle NULL ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   515
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   516
                pthread_mutex_lock(&(create_mutex1));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   517
                pthread_cond_signal(&(create_condition1));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   518
                pthread_mutex_unlock(&(create_mutex1));
14
hgs
parents: 0
diff changeset
   519
                // TODO obtain mutex here
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   520
                consumer_thread_state = CONSUMER_THREAD_UNINITIALIZED;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   521
                pthread_exit(NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   522
                }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   523
                break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   524
            default:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   525
                // TODO obtain mutex here
14
hgs
parents: 0
diff changeset
   526
                consumer_thread_state = CONSUMER_THREAD_UNINITIALIZED;          
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   527
                pthread_exit(NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   528
                break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   529
            }
14
hgs
parents: 0
diff changeset
   530
        pthread_mutex_lock(&(create_mutex1));
26
hgs
parents: 22
diff changeset
   531
        return_error = call_back_error(devsoundsrc->handle);
14
hgs
parents: 0
diff changeset
   532
        pthread_cond_signal(&(create_condition1));
hgs
parents: 0
diff changeset
   533
        pthread_mutex_unlock(&(create_mutex1));
hgs
parents: 0
diff changeset
   534
        
hgs
parents: 0
diff changeset
   535
        pthread_mutex_lock(&create_mutex1);
hgs
parents: 0
diff changeset
   536
        pthread_cond_wait(&create_condition1, &create_mutex1);
hgs
parents: 0
diff changeset
   537
        pthread_mutex_unlock(&create_mutex1);
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   538
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   539
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   540
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   541
static void gst_devsound_src_set_property(GObject * object, guint prop_id,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   542
        const GValue * value, GParamSpec * pspec)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   543
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   544
    GstDevsoundSrc *src;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   545
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   546
    src = GST_DEVSOUND_SRC (object);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   547
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   548
    switch (prop_id)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   549
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   550
        case PROP_DEVICE:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   551
            if (src->device)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   552
                g_free(src->device);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   553
            src->device = g_value_dup_string(value);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   554
            if (src->probed_caps)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   555
                {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   556
                gst_caps_unref(src->probed_caps);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   557
                src->probed_caps = NULL;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   558
                }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   559
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   560
        case CHANNELS:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   561
            src->channels = g_value_get_int(value);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   562
            src->pending.channelsupdate = TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   563
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   564
        case RATE:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   565
            src->rate = g_value_get_int(value);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   566
            //Convert rate to something devsound understands
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   567
            src->rate = gst_devsound_src_get_rate(src->rate);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   568
            src->pending.rateupdate = TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   569
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   570
        case GAIN:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   571
            src->gain = g_value_get_int(value);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   572
            src->pending.gainupdate = TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   573
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   574
        case LEFTBALANCE:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   575
            src->leftbalance = g_value_get_int(value);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   576
            src->pending.leftbalanceupdate = TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   577
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   578
        case RIGHTBALANCE:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   579
            src->rightbalance = g_value_get_int(value);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   580
            src->pending.rightbalanceupdate = TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   581
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   582
        case PRIORITY:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   583
            src->priority = g_value_get_int(value);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   584
            src->pending.priorityupdate = TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   585
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   586
        case PREFERENCE:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   587
            src->preference = g_value_get_int(value);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   588
            src->pending.preferenceupdate = TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   589
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   590
        default:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   591
            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   592
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   593
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   594
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   595
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   596
static void gst_devsound_src_get_property(GObject * object, guint prop_id,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   597
        GValue * value, GParamSpec * pspec)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   598
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   599
    GstDevsoundSrc *src;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   600
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   601
    src = GST_DEVSOUND_SRC (object);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   602
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   603
    switch (prop_id)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   604
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   605
        case PROP_DEVICE:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   606
            g_value_set_string(value, src->device);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   607
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   608
        case CHANNELS:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   609
            g_value_set_int(value, src->channels);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   610
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   611
        case RATE:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   612
            g_value_set_int(value, src->rate);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   613
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   614
        case GAIN:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   615
            g_value_set_int(value, src->gain);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   616
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   617
        case MAXGAIN:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   618
            g_value_set_int(value, src->maxgain);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   619
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   620
        case SAMPLESRECORDED:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   621
            g_value_set_int(value, src->samplesrecorded);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   622
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   623
        default:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   624
            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   625
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   626
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   627
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   628
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   629
static gboolean gst_devsound_src_setcaps(GstBaseSrc *bsrc, GstCaps *caps)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   630
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   631
    GstDevsoundSrc *devsoundsrc;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   632
    GstStructure *structure;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   633
    const gchar *mimetype;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   634
    int rate;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   635
    int channel;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   636
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   637
    devsoundsrc = GST_DEVSOUND_SRC (bsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   638
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "gst_devsound_src_setcaps ENTER ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   639
    structure = gst_caps_get_structure(caps, 0);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   640
    mimetype = gst_structure_get_name(structure);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   641
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   642
    gst_structure_get_int(structure, "rate", &rate);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   643
    gst_structure_get_int(structure, "channels", &channel);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   644
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   645
    devsoundsrc->rate = gst_devsound_src_get_rate(rate);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   646
    devsoundsrc->channels = channel;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   647
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   648
    set_channels(devsoundsrc->handle, devsoundsrc->channels);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   649
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   650
    set_rate(devsoundsrc->handle, devsoundsrc->rate);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   651
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   652
    if (!strncmp(mimetype, "audio/x-raw-int", 15))
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   653
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   654
        devsoundsrc->fourcc = 0x36315020; //KMMFFourCCCodePCM16
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   655
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   656
    else if (!strncmp(mimetype, "audio/amr", 9))
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   657
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   658
        devsoundsrc->fourcc = 0x524d4120; //KMMFFourCCCodeAMR
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   659
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   660
    else if (!strncmp(mimetype, "audio/x-mulaw", 13)||
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   661
             !strncmp(mimetype,"audio/x-alaw", 12))
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   662
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   663
        devsoundsrc->fourcc = 0x31313747; //KMccFourCCIdG711
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   664
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   665
    else if (!strncmp(mimetype, "audio/ilbc", 10))
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   666
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   667
        devsoundsrc->fourcc = 0x43424c49; //KMccFourCCIdILBC
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   668
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   669
    else if (!strncmp(mimetype, "audio/g729", 10))
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   670
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   671
        devsoundsrc->fourcc = 0x39323747; //KMccFourCCIdG729
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   672
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   673
    else
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   674
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   675
        devsoundsrc->fourcc = 0x36315020; //KMMFFourCCCodePCM16
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   676
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   677
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   678
    set_fourcc(devsoundsrc->handle, devsoundsrc->fourcc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   679
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "Before Signal DevSound from STOP",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   680
    pthread_mutex_lock(&(create_mutex1));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   681
    pthread_cond_signal(&(create_condition1));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   682
    pthread_mutex_unlock(&(create_mutex1));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   683
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "After Signal DevSound from STOP ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   684
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) devsoundsrc, "gst_devsound_src_setcaps EXIT ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   685
    return TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   686
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   687
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   688
static GstCaps * gst_devsound_src_getcaps(GstBaseSrc * bsrc)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   689
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   690
    GstDevsoundSrc *devsoundsrc;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   691
    GstCaps *caps;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   692
    GstPadTemplate *pad_template;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   693
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   694
    devsoundsrc = GST_DEVSOUND_SRC (bsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   695
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   696
    GST_DEBUG_OBJECT(devsoundsrc, "getcaps called");
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   697
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   698
    pad_template = gst_static_pad_template_get(&devsound_src_factory);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   699
    caps = gst_caps_copy(gst_pad_template_get_caps(pad_template));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   700
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   701
    gst_object_unref(pad_template);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   702
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   703
    return caps;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   704
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   705
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   706
static gboolean gst_devsound_src_start(GstBaseSrc * bsrc)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   707
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   708
    GstBuffer *tmp_gstbuffer=NULL;	
26
hgs
parents: 22
diff changeset
   709
    gboolean ret = TRUE;
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   710
    GstDevsoundSrc *src= GST_DEVSOUND_SRC(bsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   711
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "gst_devsound_src_start ENTER ",NULL);
20
hgs
parents: 14
diff changeset
   712
    pthread_mutex_init(&create_mutex1, NULL);
hgs
parents: 14
diff changeset
   713
    pthread_cond_init(&create_condition1, NULL);
hgs
parents: 14
diff changeset
   714
    
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   715
    if(dataqueue)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   716
        {
14
hgs
parents: 0
diff changeset
   717
        while (g_queue_get_length(dataqueue))
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   718
            {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   719
            tmp_gstbuffer = (GstBuffer*)g_queue_pop_tail(dataqueue);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   720
            gst_buffer_unref(tmp_gstbuffer);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   721
            }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   722
        g_queue_free(dataqueue);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   723
        dataqueue = NULL;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   724
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   725
    
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   726
    if(dataqueue == NULL)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   727
          {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   728
          dataqueue = g_queue_new();
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   729
          }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   730
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   731
    consumer_thread_state = CONSUMER_THREAD_INITIALIZING;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   732
    cmd = OPEN;
26
hgs
parents: 22
diff changeset
   733
    return_error = 0;
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   734
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "Before Thread Create ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   735
    pthread_create(&ds_thread, NULL, StartDevSoundThread, (void *)src);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   736
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "After Thread Create ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   737
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "Before Mutex Wait in START ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   738
    if (consumer_thread_state == CONSUMER_THREAD_INITIALIZING)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   739
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   740
        pthread_mutex_lock(&create_mutex1);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   741
        pthread_cond_wait(&create_condition1, &create_mutex1);
26
hgs
parents: 22
diff changeset
   742
        ret = !return_error; // should be TRUE on no Error, and FALSE at ERROR.
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   743
        pthread_mutex_unlock(&create_mutex1);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   744
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   745
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "AFter Mutex Wait in START ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   746
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "gst_devsound_src_start EXIT ",NULL);
26
hgs
parents: 22
diff changeset
   747
        return ret;
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   748
    /* ERRORS */
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   749
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   750
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   751
static gboolean gst_devsound_src_stop(GstBaseSrc * bsrc)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   752
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   753
	
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   754
    GstDevsoundSrc *src= GST_DEVSOUND_SRC(bsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   755
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "gst_devsound_src_stop ENTER ");
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   756
    cmd = CLOSE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   757
14
hgs
parents: 0
diff changeset
   758
    pthread_mutex_lock(&(create_mutex1));
hgs
parents: 0
diff changeset
   759
    pthread_cond_signal(&(create_condition1));
hgs
parents: 0
diff changeset
   760
    pthread_mutex_unlock(&(create_mutex1));
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   761
    //GST_OBJECT_LOCK (src);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   762
    pthread_mutex_lock(&(create_mutex1));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   763
    pthread_cond_wait(&(create_condition1), &(create_mutex1));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   764
    pthread_mutex_unlock(&(create_mutex1));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   765
    //GST_OBJECT_UNLOCK (src);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   766
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   767
    if (popBuffer)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   768
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   769
        gst_buffer_unref(popBuffer);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   770
        popBuffer = NULL;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   771
        dataleft = 0;   //Arun'S changes
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   772
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   773
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "Before QUEUE Lock in STOP ");
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   774
    GST_OBJECT_LOCK(src);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   775
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "After QUEUE Lock in STOP ");
14
hgs
parents: 0
diff changeset
   776
    while (g_queue_get_length(dataqueue))
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   777
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   778
        //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "Removing DATAQUEUE elements ENTER ");
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   779
        popBuffer = (GstBuffer*)g_queue_pop_tail(dataqueue);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   780
        gst_buffer_unref(popBuffer);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   781
        popBuffer = NULL;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   782
        dataleft = 0; //Arun'S changes
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   783
        //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "Removing DATAQUEUE elements EXIT ");
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   784
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   785
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "Before Queue FREE ");
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   786
    g_queue_free(dataqueue);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   787
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "After Queue FREE ");
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   788
    dataqueue = NULL;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   789
    GST_OBJECT_UNLOCK(src);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   790
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   791
    pthread_mutex_destroy(&create_mutex1);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   792
    pthread_cond_destroy(&(create_condition1));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   793
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   794
    g_free(src->device);
20
hgs
parents: 14
diff changeset
   795
    src->device = NULL;
22
hgs
parents: 20
diff changeset
   796
    src->firstTimeInit = kUnInitialized;
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   797
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) src, "gst_devsound_src_stop EXIT ");
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   798
    return TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   799
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   800
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   801
static gboolean gst_devsound_src_unlock(GstBaseSrc * bsrc)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   802
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   803
    GstDevsoundSrc *src= GST_DEVSOUND_SRC(bsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   804
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   805
    GST_LOG_OBJECT(src, "Flushing");
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   806
    GST_OBJECT_LOCK (src);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   807
    GST_OBJECT_UNLOCK (src);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   808
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   809
    return TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   810
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   811
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   812
static gboolean gst_devsound_src_unlock_stop(GstBaseSrc * bsrc)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   813
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   814
    GstDevsoundSrc *src= GST_DEVSOUND_SRC(bsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   815
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   816
    GST_LOG_OBJECT(src, "No longer flushing");
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   817
    return TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   818
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   819
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   820
static GstFlowReturn gst_devsound_src_create(GstBaseSrc *src, guint64 offset,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   821
        guint size, GstBuffer **buf)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   822
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   823
    GstDevsoundSrc *dsrc= GST_DEVSOUND_SRC(src);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   824
    int bufferpos=0;
26
hgs
parents: 22
diff changeset
   825
    int ret = 0;
14
hgs
parents: 0
diff changeset
   826
    
hgs
parents: 0
diff changeset
   827
    if(!g_queue_get_length(dataqueue) && (dsrc->eosreceived == TRUE))
hgs
parents: 0
diff changeset
   828
        {
hgs
parents: 0
diff changeset
   829
        pthread_mutex_lock(&(create_mutex1));
hgs
parents: 0
diff changeset
   830
        pthread_cond_signal(&(create_condition1));
hgs
parents: 0
diff changeset
   831
        pthread_mutex_unlock(&(create_mutex1));
hgs
parents: 0
diff changeset
   832
        
hgs
parents: 0
diff changeset
   833
        return GST_FLOW_UNEXPECTED;
hgs
parents: 0
diff changeset
   834
        }
hgs
parents: 0
diff changeset
   835
    
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   836
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "gst_devsound_src_create ENTER ");
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   837
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   838
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "Before Buffer Alloc in CREATE ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   839
    *buf = gst_buffer_try_new_and_alloc(size);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   840
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "AFter Buffer Alloc in CREATE ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   841
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   842
    while (size > 0)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   843
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   844
        if (dataleft >= size)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   845
            {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   846
            // if there is some data left in the popped buffer previously whose size
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   847
            // is more then the buffer which is incoming fresh to get filled, fill it
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   848
            //here. and if the data left in the popped buffer is 0, then unref it
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   849
            //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "dataleft >=size in CREATE ", NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   850
            memcpy(GST_BUFFER_DATA(*buf)+bufferpos,GST_BUFFER_DATA(popBuffer)+dataCopied,size);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   851
            bufferpos+=size;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   852
            dataCopied += size;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   853
            dataleft = GST_BUFFER_SIZE(popBuffer) - dataCopied;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   854
            size = 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   855
            if (dataleft == 0)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   856
                {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   857
                dataCopied = 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   858
                gst_buffer_unref(popBuffer);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   859
                popBuffer = NULL;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   860
                }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   861
            }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   862
        else
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   863
            {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   864
            // if the dataleft in the popped buffer is greater then 0 and  less then
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   865
            // the size of data needed for the fresh buffer. copy the remaining data
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   866
            // from the popped buffer and then unref it.
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   867
            if (dataleft > 0)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   868
                {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   869
                //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "dataleft >0 in CREATE ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   870
                memcpy(GST_BUFFER_DATA(*buf)+bufferpos,GST_BUFFER_DATA(popBuffer)+dataCopied,dataleft);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   871
                size -= dataleft;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   872
                bufferpos += dataleft;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   873
                dataCopied = 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   874
                dataleft = 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   875
                gst_buffer_unref(popBuffer);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   876
                popBuffer = NULL;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   877
                }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   878
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   879
            // we wait here if the dataqueue length is 0 and we need data
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   880
            // to be filled in the queue from the DevSound Thread
14
hgs
parents: 0
diff changeset
   881
            if (!g_queue_get_length(dataqueue))
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   882
                {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   883
                //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "Before WAIT in CREATE ",NULL);
14
hgs
parents: 0
diff changeset
   884
                if(dsrc->eosreceived == TRUE)
hgs
parents: 0
diff changeset
   885
                    {
hgs
parents: 0
diff changeset
   886
                    return GST_FLOW_UNEXPECTED;
hgs
parents: 0
diff changeset
   887
                    }
hgs
parents: 0
diff changeset
   888
                else
hgs
parents: 0
diff changeset
   889
                    {
hgs
parents: 0
diff changeset
   890
                    cmd = RECORDING;
26
hgs
parents: 22
diff changeset
   891
                    return_error = 0;
14
hgs
parents: 0
diff changeset
   892
                    pthread_mutex_lock(&(create_mutex1));
hgs
parents: 0
diff changeset
   893
                    pthread_cond_signal(&(create_condition1));
hgs
parents: 0
diff changeset
   894
                    pthread_mutex_unlock(&(create_mutex1));
hgs
parents: 0
diff changeset
   895
                    
hgs
parents: 0
diff changeset
   896
                    pthread_mutex_lock(&(create_mutex1));
hgs
parents: 0
diff changeset
   897
                    pthread_cond_wait(&(create_condition1), &(create_mutex1));
26
hgs
parents: 22
diff changeset
   898
                    ret = return_error;
14
hgs
parents: 0
diff changeset
   899
                    pthread_mutex_unlock(&(create_mutex1));
hgs
parents: 0
diff changeset
   900
                    }
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   901
                //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "AFTER WAIT in CREATE ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   902
                }
26
hgs
parents: 22
diff changeset
   903
            if( KErrInUse == ret || KErrDied  == ret || KErrAccessDenied == ret )
hgs
parents: 22
diff changeset
   904
            {
hgs
parents: 22
diff changeset
   905
                // post error as pre-emption
hgs
parents: 22
diff changeset
   906
                GST_ELEMENT_ERROR (src, RESOURCE, BUSY,
hgs
parents: 22
diff changeset
   907
                    (("Pre-emption error.")),
hgs
parents: 22
diff changeset
   908
                    ("streaming paused because higher priority app requested resource, Err(%d)", ret));
hgs
parents: 22
diff changeset
   909
                
hgs
parents: 22
diff changeset
   910
                return GST_FLOW_UNEXPECTED;
hgs
parents: 22
diff changeset
   911
            }     
hgs
parents: 22
diff changeset
   912
            else if( KErrNone != ret )
hgs
parents: 22
diff changeset
   913
            {
hgs
parents: 22
diff changeset
   914
                // no need to post error as base src will post error. 
hgs
parents: 22
diff changeset
   915
                return GST_FLOW_ERROR;
hgs
parents: 22
diff changeset
   916
            }
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   917
            //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "Before POP in CREATE ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   918
            GST_OBJECT_LOCK(dsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   919
            popBuffer = (GstBuffer*)g_queue_pop_tail(dataqueue);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   920
            GST_OBJECT_UNLOCK(dsrc);
26
hgs
parents: 22
diff changeset
   921
           
hgs
parents: 22
diff changeset
   922
            if(!popBuffer )
hgs
parents: 22
diff changeset
   923
            {
hgs
parents: 22
diff changeset
   924
               return GST_FLOW_UNEXPECTED;
hgs
parents: 22
diff changeset
   925
            }
22
hgs
parents: 20
diff changeset
   926
            if(dsrc->firstTimeInit != kPlayed)
hgs
parents: 20
diff changeset
   927
                {        
hgs
parents: 20
diff changeset
   928
                dsrc->prevbuffersize = gst_base_src_get_blocksize(src);
hgs
parents: 20
diff changeset
   929
                gst_base_src_set_blocksize (src, GST_BUFFER_SIZE(popBuffer));
hgs
parents: 20
diff changeset
   930
                (*buf)->size = GST_BUFFER_SIZE(popBuffer);
14
hgs
parents: 0
diff changeset
   931
                }
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   932
            // copy the data from the popped buffer based on how much of the incoming
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   933
            //buffer size is left to fill. we might have filled the fresh buffer somewhat
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   934
            // where the size of the fresh buffer is more then the data remaining in the
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   935
            // popped buffer.
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   936
            if (size < GST_BUFFER_SIZE(popBuffer))
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   937
                {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   938
                //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "SIZE < POPBUFFER CREATE ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   939
                memcpy(GST_BUFFER_DATA(*buf)+ bufferpos,GST_BUFFER_DATA(popBuffer),size);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   940
                bufferpos+=size;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   941
                dataCopied = size;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   942
                dataleft = GST_BUFFER_SIZE(popBuffer) - dataCopied;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   943
                size = 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   944
                }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   945
            else
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   946
                {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   947
                //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "SIZE >= POPBUFFER CREATE ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   948
                memcpy(GST_BUFFER_DATA(*buf)+ bufferpos,GST_BUFFER_DATA(popBuffer),GST_BUFFER_SIZE(popBuffer));
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   949
                bufferpos+=GST_BUFFER_SIZE(popBuffer);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   950
                dataCopied = 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   951
                dataleft = 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   952
                size = size - GST_BUFFER_SIZE(popBuffer);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   953
                }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   954
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   955
            if (!dataleft)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   956
                {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   957
                gst_buffer_unref(popBuffer);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   958
                popBuffer = NULL;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   959
                }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   960
            }
22
hgs
parents: 20
diff changeset
   961
        if (dsrc->firstTimeInit == kPlayBufferPreRoll)
hgs
parents: 20
diff changeset
   962
            {
hgs
parents: 20
diff changeset
   963
            gst_base_src_set_blocksize (src, dsrc->prevbuffersize);
hgs
parents: 20
diff changeset
   964
            dsrc->firstTimeInit = kPlayed;
hgs
parents: 20
diff changeset
   965
            return GST_FLOW_OK;
20
hgs
parents: 14
diff changeset
   966
            }
22
hgs
parents: 20
diff changeset
   967
        
hgs
parents: 20
diff changeset
   968
        if (dsrc->firstTimeInit == kPausedToPlaying)
hgs
parents: 20
diff changeset
   969
            {
hgs
parents: 20
diff changeset
   970
            dsrc->firstTimeInit = kPlayBufferPreRoll;
hgs
parents: 20
diff changeset
   971
            return GST_FLOW_OK;
hgs
parents: 20
diff changeset
   972
            }
hgs
parents: 20
diff changeset
   973
       }
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   974
    //gst_debug_log(devsound_debug, GST_LEVEL_LOG, "", "", 0, (GObject *) dsrc, "gst_devsound_src_create EXIT ",NULL);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   975
    return GST_FLOW_OK;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   976
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   977
14
hgs
parents: 0
diff changeset
   978
hgs
parents: 0
diff changeset
   979
static GstStateChangeReturn gst_devsound_src_change_state (GstElement * element,
hgs
parents: 0
diff changeset
   980
    GstStateChange transition)
hgs
parents: 0
diff changeset
   981
    {
hgs
parents: 0
diff changeset
   982
    GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
hgs
parents: 0
diff changeset
   983
    GstDevsoundSrc *src= GST_DEVSOUND_SRC (element);
22
hgs
parents: 20
diff changeset
   984
 
14
hgs
parents: 0
diff changeset
   985
    switch (transition) {
hgs
parents: 0
diff changeset
   986
        
hgs
parents: 0
diff changeset
   987
        case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
22
hgs
parents: 20
diff changeset
   988
            if (src->firstTimeInit != kPlayed)
hgs
parents: 20
diff changeset
   989
            src->firstTimeInit = kPausedToPlaying;
14
hgs
parents: 0
diff changeset
   990
            if(cmd == PAUSE)
hgs
parents: 0
diff changeset
   991
                {
hgs
parents: 0
diff changeset
   992
                cmd = RESUME;
26
hgs
parents: 22
diff changeset
   993
                return_error = 0;
14
hgs
parents: 0
diff changeset
   994
                pthread_mutex_lock(&create_mutex1);
hgs
parents: 0
diff changeset
   995
                pthread_cond_signal(&create_condition1);
hgs
parents: 0
diff changeset
   996
                pthread_mutex_unlock(&create_mutex1);
hgs
parents: 0
diff changeset
   997
                
hgs
parents: 0
diff changeset
   998
                pthread_mutex_lock(&create_mutex1);
hgs
parents: 0
diff changeset
   999
                pthread_cond_wait(&create_condition1, &create_mutex1);
26
hgs
parents: 22
diff changeset
  1000
                if( return_error )
hgs
parents: 22
diff changeset
  1001
                    ret = GST_STATE_CHANGE_FAILURE;
14
hgs
parents: 0
diff changeset
  1002
                pthread_mutex_unlock(&create_mutex1);
hgs
parents: 0
diff changeset
  1003
                }
hgs
parents: 0
diff changeset
  1004
            break;
hgs
parents: 0
diff changeset
  1005
        default:
hgs
parents: 0
diff changeset
  1006
            break;
hgs
parents: 0
diff changeset
  1007
        }
hgs
parents: 0
diff changeset
  1008
hgs
parents: 0
diff changeset
  1009
    ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
hgs
parents: 0
diff changeset
  1010
      if (G_UNLIKELY (ret == GST_STATE_CHANGE_FAILURE))
hgs
parents: 0
diff changeset
  1011
        goto activate_failed;
hgs
parents: 0
diff changeset
  1012
hgs
parents: 0
diff changeset
  1013
      switch (transition) {
hgs
parents: 0
diff changeset
  1014
          
hgs
parents: 0
diff changeset
  1015
          case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
hgs
parents: 0
diff changeset
  1016
              cmd = PAUSE;
26
hgs
parents: 22
diff changeset
  1017
              return_error = 0;
14
hgs
parents: 0
diff changeset
  1018
              pthread_mutex_lock(&create_mutex1);
hgs
parents: 0
diff changeset
  1019
              pthread_cond_signal(&create_condition1);
hgs
parents: 0
diff changeset
  1020
              pthread_mutex_unlock(&create_mutex1);
hgs
parents: 0
diff changeset
  1021
              
hgs
parents: 0
diff changeset
  1022
              pthread_mutex_lock(&create_mutex1);
hgs
parents: 0
diff changeset
  1023
              pthread_cond_wait(&create_condition1, &create_mutex1);
26
hgs
parents: 22
diff changeset
  1024
              if( return_error )
hgs
parents: 22
diff changeset
  1025
                  ret = GST_STATE_CHANGE_FAILURE;              
14
hgs
parents: 0
diff changeset
  1026
              pthread_mutex_unlock(&create_mutex1);
hgs
parents: 0
diff changeset
  1027
              break;
hgs
parents: 0
diff changeset
  1028
          default:
hgs
parents: 0
diff changeset
  1029
              break;
hgs
parents: 0
diff changeset
  1030
          }
hgs
parents: 0
diff changeset
  1031
      
hgs
parents: 0
diff changeset
  1032
      return ret;
hgs
parents: 0
diff changeset
  1033
    
hgs
parents: 0
diff changeset
  1034
    activate_failed:
hgs
parents: 0
diff changeset
  1035
      {
hgs
parents: 0
diff changeset
  1036
        GST_DEBUG_OBJECT (src,
hgs
parents: 0
diff changeset
  1037
            "element failed to change states -- activation problem?");
hgs
parents: 0
diff changeset
  1038
        return GST_STATE_CHANGE_FAILURE;
hgs
parents: 0
diff changeset
  1039
      }    
hgs
parents: 0
diff changeset
  1040
    }
hgs
parents: 0
diff changeset
  1041
hgs
parents: 0
diff changeset
  1042
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1043
static gboolean gst_devsound_src_is_seekable(GstBaseSrc * bsrc)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1044
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1045
    GstDevsoundSrc *src= GST_DEVSOUND_SRC(bsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1046
    return FALSE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1047
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1048
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1049
static gboolean gst_devsound_src_get_size(GstBaseSrc * bsrc, guint64 * size)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1050
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1051
    GstDevsoundSrc *src= GST_DEVSOUND_SRC(bsrc);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1052
    return TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1053
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1054
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1055
static void gst_speech_encoder_config_handler_init(gpointer g_iface,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1056
        gpointer iface_data)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1057
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1058
    GstSpeechEncoderConfigIntfc *iface =
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1059
            (GstSpeechEncoderConfigIntfc *) g_iface;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1060
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1061
    iface->GetBitrate = gst_get_speech_encoder_bit_rate;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1062
    iface->GetSupportedBitrates = gst_get_speech_encoder_supported_bit_rates;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1063
    iface->GetVadMode = gst_get_speech_encoder_vad_mode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1064
    iface->SetBitrate = gst_set_speech_encoder_bit_rate;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1065
    iface->SetVadMode = gst_set_speech_encoder_vad_mode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1066
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1067
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1068
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1069
static gint gst_get_speech_encoder_bit_rate(guint* aBitrate)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1070
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1071
    *aBitrate = speechbitrate;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1072
    return 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1073
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1074
static gint gst_get_speech_encoder_supported_bit_rates(
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1075
        GList** aSupportedBitrate)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1076
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1077
    *aSupportedBitrate = supportedbitrates;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1078
    return 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1079
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1080
static gint gst_get_speech_encoder_vad_mode(gboolean* aVadMode)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1081
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1082
    *aVadMode = speechvadmode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1083
    return 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1084
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1085
static gint gst_set_speech_encoder_bit_rate(guint aBitrate)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1086
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1087
    speechbitrate = aBitrate;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1088
    customInfaceUpdate.speechbitrateupdate = TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1089
    return 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1090
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1091
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1092
static gint gst_set_speech_encoder_vad_mode(gboolean aVadMode)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1093
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1094
    speechvadmode = aVadMode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1095
    customInfaceUpdate.speechvadmodeupdate = TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1096
    return 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1097
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1098
26
hgs
parents: 22
diff changeset
  1099
static void gst_update_devsound_speech_bitrate(GstDevsoundSrc *devsoundsrc )
hgs
parents: 22
diff changeset
  1100
    {
hgs
parents: 22
diff changeset
  1101
    if(customInfaceUpdate.speechbitrateupdate == TRUE)
hgs
parents: 22
diff changeset
  1102
        {
hgs
parents: 22
diff changeset
  1103
        update_devsound_speech_bitrate(devsoundsrc->handle,speechbitrate);
hgs
parents: 22
diff changeset
  1104
        customInfaceUpdate.speechbitrateupdate = FALSE;
hgs
parents: 22
diff changeset
  1105
        }
hgs
parents: 22
diff changeset
  1106
    }
0
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1107
static void gst_Apply_SpeechEncoder_Update(GstDevsoundSrc *devsoundsrc )
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1108
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1109
    if(customInfaceUpdate.speechbitrateupdate == TRUE)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1110
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1111
        set_speech_encoder_bit_rate(devsoundsrc->handle,speechbitrate);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1112
        customInfaceUpdate.speechbitrateupdate = FALSE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1113
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1114
    if(customInfaceUpdate.speechvadmodeupdate == TRUE)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1115
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1116
        set_speech_encoder_vad_mode(devsoundsrc->handle,speechvadmode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1117
        customInfaceUpdate.speechvadmodeupdate = FALSE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1118
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1119
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1120
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1121
static void gst_g711_encoder_handler_init(gpointer g_iface,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1122
        gpointer iface_data)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1123
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1124
    GstG711EncoderIntfc *iface = (GstG711EncoderIntfc *) g_iface;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1125
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1126
    iface->GetVadMode = gst_get_g711_encoder_vad_mode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1127
    iface->SetEncoderMode = gst_set_g711_encoder_mode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1128
    iface->SetVadMode = gst_set_g711_vad_mode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1129
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1130
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1131
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1132
static gint gst_get_g711_encoder_vad_mode(gboolean* aVadMode)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1133
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1134
    *aVadMode = g711vadmode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1135
    return 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1136
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1137
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1138
static gint gst_set_g711_encoder_mode(enum TG711EncodeMode aEncodeMode)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1139
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1140
    g711encodemode = aEncodeMode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1141
    customInfaceUpdate.g711encodermodeupdate = TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1142
    return 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1143
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1144
static gint gst_set_g711_vad_mode(gboolean aVadMode)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1145
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1146
    g711vadmode = aVadMode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1147
    customInfaceUpdate.g711vadmodeupdate = TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1148
    return 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1149
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1150
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1151
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1152
static void gst_Apply_G711Encoder_Update(GstDevsoundSrc *devsoundsrc )
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1153
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1154
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1155
    if(customInfaceUpdate.g711encodermodeupdate == TRUE)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1156
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1157
        set_g711_encoder_mode(devsoundsrc->handle,g711encodemode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1158
        customInfaceUpdate.g711encodermodeupdate = FALSE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1159
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1160
    if(customInfaceUpdate.g711vadmodeupdate == TRUE)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1161
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1162
        set_g711_vad_mode(devsoundsrc->handle,g711vadmode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1163
        customInfaceUpdate.g711vadmodeupdate = FALSE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1164
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1165
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1166
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1167
static void gst_g729_encoder_handler_init(gpointer g_iface,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1168
        gpointer iface_data)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1169
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1170
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1171
    GstG729EncoderIntfc *iface = (GstG729EncoderIntfc *) g_iface;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1172
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1173
    iface->GetVadMode = gst_get_g729_vad_mode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1174
    iface->SetVadMode = gst_set_g729_vad_mode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1175
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1176
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1177
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1178
static gint gst_set_g729_vad_mode(TBool aVadMode)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1179
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1180
    g729vadmode = aVadMode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1181
    customInfaceUpdate.g729vadmodeupdate = TRUE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1182
    return 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1183
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1184
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1185
static gint gst_get_g729_vad_mode(TBool* aVadMode)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1186
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1187
    *aVadMode = g729vadmode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1188
    return 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1189
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1190
static void gst_Apply_G729Encoder_Update(GstDevsoundSrc *devsoundsrc )
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1191
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1192
    if(customInfaceUpdate.g729vadmodeupdate)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1193
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1194
        set_g729_vad_mode(devsoundsrc->handle,g729vadmode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1195
        customInfaceUpdate.g729vadmodeupdate = FALSE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1196
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1197
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1198
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1199
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1200
static void gst_ilbc_encoder_handler_init(gpointer g_iface,
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1201
        gpointer iface_data)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1202
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1203
    GstIlbcEncoderIntfc *iface = (GstIlbcEncoderIntfc *) g_iface;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1204
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1205
    iface->GetVadMode = gst_get_ilbc_vad_mode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1206
    iface->SetEncoderMode = gst_set_ilbc_encoder_mode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1207
    iface->SetVadMode = gst_set_ilbc_vad_mode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1208
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1209
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1210
static gint gst_set_ilbc_encoder_mode(enum TIlbcEncodeMode aEncodeMode)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1211
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1212
    ilbcencodemode = aEncodeMode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1213
    return 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1214
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1215
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1216
static gint gst_set_ilbc_vad_mode(gboolean aVadMode)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1217
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1218
    ilbcvadmode = aVadMode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1219
    return 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1220
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1221
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1222
static gint gst_get_ilbc_vad_mode(gboolean* aVadMode)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1223
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1224
    *aVadMode = ilbcvadmode;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1225
    return 0;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1226
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1227
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1228
static void gst_Apply_IlbcEncoder_Update(GstDevsoundSrc *devsoundsrc )
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1229
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1230
    if(customInfaceUpdate.ilbcencodermodeupdate)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1231
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1232
        set_ilbc_encoder_mode(devsoundsrc->handle,ilbcencodemode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1233
        customInfaceUpdate.ilbcencodermodeupdate = FALSE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1234
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1235
    if(customInfaceUpdate.ilbcvadmodeupdate)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1236
         {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1237
         set_ilbc_vad_mode(devsoundsrc->handle,ilbcvadmode);
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1238
         customInfaceUpdate.ilbcvadmodeupdate = FALSE;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1239
         }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1240
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1241
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1242
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1243
static gint gst_devsound_src_get_rate(gint rate)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1244
    {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1245
    gint result;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1246
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1247
    switch (rate)
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1248
        {
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1249
        case 8000:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1250
            result=0x00000001;//EMMFSampleRate8000Hz;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1251
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1252
        case 11025:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1253
            result=0x00000002;//EMMFSampleRate11025Hz;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1254
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1255
        case 16000:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1256
            result=0x00000004;//EMMFSampleRate16000Hz;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1257
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1258
        case 22050:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1259
            result=0x00000008;//EMMFSampleRate22050Hz;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1260
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1261
        case 32000:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1262
            result=0x00000010;//EMMFSampleRate32000Hz;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1263
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1264
        case 44100:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1265
            result=0x00000020;//EMMFSampleRate44100Hz;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1266
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1267
        case 48000:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1268
            result=0x00000040;//EMMFSampleRate48000Hz;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1269
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1270
        case 88200:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1271
            result=0x00000080;//EMMFSampleRate88200Hz;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1272
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1273
        case 96000:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1274
            result= 0x00000100;//EMMFSampleRate96000Hz;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1275
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1276
        case 12000:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1277
            result=0x00000200;//EMMFSampleRate12000Hz;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1278
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1279
        case 24000:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1280
            result=0x00000400;//EMMFSampleRate24000Hz;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1281
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1282
        case 64000:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1283
            result=0x00000800; //EMMFSampleRate64000Hz;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1284
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1285
        default:
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1286
            result=0x00000001;//EMMFSampleRate8000Hz;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1287
            break;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1288
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1289
        }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1290
    return result;
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1291
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1292
    }
0e761a78d257 Revision: 200949
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1293
14
hgs
parents: 0
diff changeset
  1294
static gboolean gst_devsound_src_event(GstBaseSrc *asrc, GstEvent *event)
hgs
parents: 0
diff changeset
  1295
    {
hgs
parents: 0
diff changeset
  1296
    int retValue = FALSE;
hgs
parents: 0
diff changeset
  1297
    GstDevsoundSrc *src = GST_DEVSOUND_SRC(asrc);
hgs
parents: 0
diff changeset
  1298
    switch (GST_EVENT_TYPE (event))
hgs
parents: 0
diff changeset
  1299
        {
hgs
parents: 0
diff changeset
  1300
        case GST_EVENT_EOS:
hgs
parents: 0
diff changeset
  1301
            // end-of-stream, we should close down all stream leftovers here
hgs
parents: 0
diff changeset
  1302
            //reset_devsound(sink->handle);
hgs
parents: 0
diff changeset
  1303
            src->eosreceived = TRUE;
hgs
parents: 0
diff changeset
  1304
            cmd = STOP;
26
hgs
parents: 22
diff changeset
  1305
            return_error = 0;
14
hgs
parents: 0
diff changeset
  1306
            pthread_mutex_lock(&create_mutex1);
hgs
parents: 0
diff changeset
  1307
            pthread_cond_signal(&create_condition1);
hgs
parents: 0
diff changeset
  1308
            pthread_mutex_unlock(&create_mutex1);
hgs
parents: 0
diff changeset
  1309
            
hgs
parents: 0
diff changeset
  1310
            pthread_mutex_lock(&create_mutex1);
hgs
parents: 0
diff changeset
  1311
            pthread_cond_wait(&create_condition1, &create_mutex1);
hgs
parents: 0
diff changeset
  1312
            pthread_mutex_unlock(&create_mutex1);
hgs
parents: 0
diff changeset
  1313
            
hgs
parents: 0
diff changeset
  1314
            if(g_queue_get_length(dataqueue))
hgs
parents: 0
diff changeset
  1315
                {
hgs
parents: 0
diff changeset
  1316
                pthread_mutex_lock(&create_mutex1);
hgs
parents: 0
diff changeset
  1317
                pthread_cond_wait(&create_condition1, &create_mutex1);
hgs
parents: 0
diff changeset
  1318
                pthread_mutex_unlock(&create_mutex1);
hgs
parents: 0
diff changeset
  1319
                }
hgs
parents: 0
diff changeset
  1320
            
hgs
parents: 0
diff changeset
  1321
            gst_pad_push_event (asrc->srcpad, gst_event_new_eos ());
hgs
parents: 0
diff changeset
  1322
            retValue = TRUE;
hgs
parents: 0
diff changeset
  1323
            break;
hgs
parents: 0
diff changeset
  1324
        default:
hgs
parents: 0
diff changeset
  1325
            retValue = FALSE;
hgs
parents: 0
diff changeset
  1326
            break;
hgs
parents: 0
diff changeset
  1327
        }
hgs
parents: 0
diff changeset
  1328
    
hgs
parents: 0
diff changeset
  1329
    return retValue;
hgs
parents: 0
diff changeset
  1330
    }
hgs
parents: 0
diff changeset
  1331