mmserv/tms/tmscallserver/src/ipcalldownlink.cpp
branchRCL_3
changeset 3 4f62049db6ac
parent 0 71ca22bcf22a
equal deleted inserted replaced
0:71ca22bcf22a 3:4f62049db6ac
    26 #include "gstg729decoderinterface.h"
    26 #include "gstg729decoderinterface.h"
    27 #include "ipcallstream.h"
    27 #include "ipcallstream.h"
    28 
    28 
    29 using namespace TMS;
    29 using namespace TMS;
    30 
    30 
    31 static TMSVoIPDownlink* iSelfDn;
    31 static TMSIPDownlink* iSelfDn;
    32 #ifdef _DEBUG
    32 #ifdef _DEBUG
    33 static TInt iHeap;
    33 static TInt iHeap;
    34 #endif //_DEBUG
    34 #endif //_DEBUG
    35 GstBuffer* gstDnlBuffer;
    35 GstBuffer* gstDnlBuffer;
    36 GstCaps* caps;
    36 GstCaps* caps;
    39 #ifdef __PLAY_WAV_FROM_FILE__
    39 #ifdef __PLAY_WAV_FROM_FILE__
    40 _LIT16(KTestFile1, "c:\\data\\sounds\\digital\\sample1.wav");
    40 _LIT16(KTestFile1, "c:\\data\\sounds\\digital\\sample1.wav");
    41 #endif
    41 #endif
    42 
    42 
    43 // -----------------------------------------------------------------------------
    43 // -----------------------------------------------------------------------------
    44 // TMSVoIPDownlink::cb_raw_playback_handoff
    44 // TMSIPDownlink::cb_raw_playback_handoff
    45 // -----------------------------------------------------------------------------
    45 // -----------------------------------------------------------------------------
    46 //
    46 //
    47 void TMSVoIPDownlink::cb_raw_playback_handoff(GstElement* /*appsrc*/,
    47 void TMSIPDownlink::cb_raw_playback_handoff(GstElement* /*appsrc*/,
    48         guint size)
    48         guint size)
    49     {
    49     {
    50     TRACE_PRN_N(_L("TMS->DNL: cb_raw_playback_handoff"));
    50     TRACE_PRN_N(_L("TMS->DNL: cb_raw_playback_handoff"));
    51 
    51 
    52     requestBufLen = size;
    52     requestBufLen = size;
    61 #endif //_DEBUG
    61 #endif //_DEBUG
    62     iSelfDn->BufferToBeFilled();
    62     iSelfDn->BufferToBeFilled();
    63     }
    63     }
    64 
    64 
    65 // -----------------------------------------------------------------------------
    65 // -----------------------------------------------------------------------------
    66 // TMSVoIPDownlink::bus_call
    66 // TMSIPDownlink::bus_call
    67 // -----------------------------------------------------------------------------
    67 // -----------------------------------------------------------------------------
    68 //
    68 //
    69 gboolean TMSVoIPDownlink::bus_call(GstBus* /*bus*/, GstMessage* msg,
    69 gboolean TMSIPDownlink::bus_call(GstBus* /*bus*/, GstMessage* msg,
    70         gpointer /*data*/)
    70         gpointer /*data*/)
    71     {
    71     {
    72     switch (GST_MESSAGE_TYPE(msg))
    72     switch (GST_MESSAGE_TYPE(msg))
    73         {
    73         {
    74         case GST_MESSAGE_EOS:
    74         case GST_MESSAGE_EOS:
    95 
    95 
    96     return ETrue;
    96     return ETrue;
    97     }
    97     }
    98 
    98 
    99 // -----------------------------------------------------------------------------
    99 // -----------------------------------------------------------------------------
   100 // TMSVoIPDownlink::gst_initialize_play
   100 // TMSIPDownlink::gst_initialize_play
   101 // -----------------------------------------------------------------------------
   101 // -----------------------------------------------------------------------------
   102 //
   102 //
   103 gint TMSVoIPDownlink::gst_initialize_play()
   103 gint TMSIPDownlink::gst_initialize_play()
   104     {
   104     {
   105     TRACE_PRN_FN_ENT;
   105     TRACE_PRN_FN_ENT;
   106 
   106 
   107     gint err = KErrNone;
   107     gint err = KErrNone;
   108 
   108 
   117         TRACE_PRN_IF_ERR(err);
   117         TRACE_PRN_IF_ERR(err);
   118         return err;
   118         return err;
   119         }
   119         }
   120 
   120 
   121     iBusPlay = gst_pipeline_get_bus(GST_PIPELINE(iPipelinePlay));
   121     iBusPlay = gst_pipeline_get_bus(GST_PIPELINE(iPipelinePlay));
   122     gst_bus_add_watch(iBusPlay, TMSVoIPDownlink::bus_call, NULL);
   122     gst_bus_add_watch(iBusPlay, TMSIPDownlink::bus_call, NULL);
   123     gst_object_unref(iBusPlay);
   123     gst_object_unref(iBusPlay);
   124 
   124 
   125     iMaxBufLen = ConfigureMedia(iCodecID);
   125     iMaxBufLen = ConfigureMedia(iCodecID);
   126 
   126 
   127     g_object_set(iAppSrc, "stream-type", 0, "blocksize", iMaxBufLen, NULL);
   127     g_object_set(iAppSrc, "stream-type", 0, "blocksize", iMaxBufLen, NULL);
   158     TRACE_PRN_FN_EXT;
   158     TRACE_PRN_FN_EXT;
   159     return err;
   159     return err;
   160     }
   160     }
   161 
   161 
   162 // -----------------------------------------------------------------------------
   162 // -----------------------------------------------------------------------------
   163 // TMSVoIPDownlink::gst_play_raw
   163 // TMSIPDownlink::gst_play_raw
   164 // -----------------------------------------------------------------------------
   164 // -----------------------------------------------------------------------------
   165 //
   165 //
   166 gint TMSVoIPDownlink::gst_play_raw()
   166 gint TMSIPDownlink::gst_play_raw()
   167     {
   167     {
   168     TRACE_PRN_FN_ENT;
   168     TRACE_PRN_FN_ENT;
   169 
   169 
   170     // start playback
   170     // start playback
   171     gst_element_set_state(iPipelinePlay, GST_STATE_PLAYING);
   171     gst_element_set_state(iPipelinePlay, GST_STATE_PLAYING);
   177     TRACE_PRN_FN_EXT;
   177     TRACE_PRN_FN_EXT;
   178     return KErrNone;
   178     return KErrNone;
   179     }
   179     }
   180 
   180 
   181 // -----------------------------------------------------------------------------
   181 // -----------------------------------------------------------------------------
   182 // TMSVoIPDownlink::TMSVoIPDownlink
   182 // TMSIPDownlink::TMSIPDownlink
   183 // Standard Constructor
   183 // Standard Constructor
   184 // -----------------------------------------------------------------------------
   184 // -----------------------------------------------------------------------------
   185 //
   185 //
   186 TMSVoIPDownlink::TMSVoIPDownlink()
   186 TMSIPDownlink::TMSIPDownlink()
   187     {
   187     {
   188     iSelfDn = this;
   188     iSelfDn = this;
   189     }
   189     }
   190 
   190 
   191 // -----------------------------------------------------------------------------
   191 // -----------------------------------------------------------------------------
   192 // TMSVoIPDownlink::~TMSVoIPDownlink
   192 // TMSIPDownlink::~TMSIPDownlink
   193 // Standard Constructor
   193 // Standard Constructor
   194 // -----------------------------------------------------------------------------
   194 // -----------------------------------------------------------------------------
   195 //
   195 //
   196 TMSVoIPDownlink::~TMSVoIPDownlink()
   196 TMSIPDownlink::~TMSIPDownlink()
   197     {
   197     {
   198     TRACE_PRN_FN_ENT;
   198     TRACE_PRN_FN_ENT;
   199 
   199 
   200     Stop();
   200     Stop();
   201     gst_caps_unref(caps);
   201     gst_caps_unref(caps);
   214 
   214 
   215     TRACE_PRN_FN_EXT;
   215     TRACE_PRN_FN_EXT;
   216     }
   216     }
   217 
   217 
   218 // -----------------------------------------------------------------------------
   218 // -----------------------------------------------------------------------------
   219 // TMSVoIPDownlink::NewL
   219 // TMSIPDownlink::NewL
   220 // Symbian two-phase constructor
   220 // Symbian two-phase constructor
   221 // -----------------------------------------------------------------------------
   221 // -----------------------------------------------------------------------------
   222 //
   222 //
   223 TMSVoIPDownlink* TMSVoIPDownlink::NewL(const guint32 codecID,
   223 TMSIPDownlink* TMSIPDownlink::NewL(const guint32 codecID,
   224         const TMMFPrioritySettings priority)
   224         const TMMFPrioritySettings priority)
   225     {
   225     {
   226     TMSVoIPDownlink* self = new (ELeave) TMSVoIPDownlink();
   226     TMSIPDownlink* self = new (ELeave) TMSIPDownlink();
   227     CleanupStack::PushL(self);
   227     CleanupStack::PushL(self);
   228     self->ConstructL(codecID, priority);
   228     self->ConstructL(codecID, priority);
   229     CleanupStack::Pop(self);
   229     CleanupStack::Pop(self);
   230     return self;
   230     return self;
   231     }
   231     }
   232 
   232 
   233 // -----------------------------------------------------------------------------
   233 // -----------------------------------------------------------------------------
   234 // TMSVoIPDownlink::ConstructL
   234 // TMSIPDownlink::ConstructL
   235 // Part two of Symbian two phase construction
   235 // Part two of Symbian two phase construction
   236 // -----------------------------------------------------------------------------
   236 // -----------------------------------------------------------------------------
   237 //
   237 //
   238 void TMSVoIPDownlink::ConstructL(const guint32 codecID,
   238 void TMSIPDownlink::ConstructL(const guint32 codecID,
   239         const TMMFPrioritySettings priority)
   239         const TMMFPrioritySettings priority)
   240     {
   240     {
   241     TRACE_PRN_FN_ENT;
   241     TRACE_PRN_FN_ENT;
   242 
   242 
   243     iCodecID = codecID;
   243     iCodecID = codecID;
   277 
   277 
   278     TRACE_PRN_FN_EXT;
   278     TRACE_PRN_FN_EXT;
   279     }
   279     }
   280 
   280 
   281 // -----------------------------------------------------------------------------
   281 // -----------------------------------------------------------------------------
   282 // TMSVoIPDownlink::Start
   282 // TMSIPDownlink::Start
   283 //
   283 //
   284 // -----------------------------------------------------------------------------
   284 // -----------------------------------------------------------------------------
   285 //
   285 //
   286 void TMSVoIPDownlink::Start()
   286 void TMSIPDownlink::Start()
   287     {
   287     {
   288     TRACE_PRN_FN_ENT;
   288     TRACE_PRN_FN_ENT;
   289 
   289 
   290     gst_play_raw();
   290     gst_play_raw();
   291     iStatus = EStreaming;
   291     iStatus = EStreaming;
   292 
   292 
   293     TRACE_PRN_FN_EXT;
   293     TRACE_PRN_FN_EXT;
   294     }
   294     }
   295 
   295 
   296 // -----------------------------------------------------------------------------
   296 // -----------------------------------------------------------------------------
   297 // TMSVoIPDownlink::Stop
   297 // TMSIPDownlink::Stop
   298 //
   298 //
   299 // -----------------------------------------------------------------------------
   299 // -----------------------------------------------------------------------------
   300 //
   300 //
   301 void TMSVoIPDownlink::Stop()
   301 void TMSIPDownlink::Stop()
   302     {
   302     {
   303     TRACE_PRN_FN_ENT;
   303     TRACE_PRN_FN_ENT;
   304 
   304 
   305     if (iStatus == EStreaming)
   305     if (iStatus == EStreaming)
   306         {
   306         {
   320 
   320 
   321     TRACE_PRN_FN_EXT;
   321     TRACE_PRN_FN_EXT;
   322     }
   322     }
   323 
   323 
   324 // -----------------------------------------------------------------------------
   324 // -----------------------------------------------------------------------------
   325 // TMSVoIPDownlink::BufferToBeFilled
   325 // TMSIPDownlink::BufferToBeFilled
   326 // -----------------------------------------------------------------------------
   326 // -----------------------------------------------------------------------------
   327 //
   327 //
   328 void TMSVoIPDownlink::BufferToBeFilled()
   328 void TMSIPDownlink::BufferToBeFilled()
   329     {
   329     {
   330     TRACE_PRN_N1(_L("TMS->DNL->BTBF: requestBufLen[%d]"), requestBufLen);
   330     TRACE_PRN_N1(_L("TMS->DNL->BTBF: requestBufLen[%d]"), requestBufLen);
   331 
   331 
   332 #ifndef __PLAY_WAV_FROM_FILE__
   332 #ifndef __PLAY_WAV_FROM_FILE__
   333     // Create or adjust the chunk
   333     // Create or adjust the chunk
   364 #endif //__PLAY_WAV_FROM_FILE__
   364 #endif //__PLAY_WAV_FROM_FILE__
   365     TRACE_PRN_IF_ERR(err);
   365     TRACE_PRN_IF_ERR(err);
   366     }
   366     }
   367 
   367 
   368 // -----------------------------------------------------------------------------
   368 // -----------------------------------------------------------------------------
   369 // TMSVoIPDownlink::BufferFilled
   369 // TMSIPDownlink::BufferFilled
   370 //
   370 //
   371 // -----------------------------------------------------------------------------
   371 // -----------------------------------------------------------------------------
   372 //
   372 //
   373 void TMSVoIPDownlink::BufferFilled(const guint buflen)
   373 void TMSIPDownlink::BufferFilled(const guint buflen)
   374     {
   374     {
   375 #ifndef __PLAY_WAV_FROM_FILE__
   375 #ifndef __PLAY_WAV_FROM_FILE__
   376     gstDnlBuffer = gst_buffer_new();
   376     gstDnlBuffer = gst_buffer_new();
   377     gst_buffer_set_caps(gstDnlBuffer, caps);
   377     gst_buffer_set_caps(gstDnlBuffer, caps);
   378     GST_BUFFER_SIZE(gstDnlBuffer) = buflen;
   378     GST_BUFFER_SIZE(gstDnlBuffer) = buflen;
   416     gst_app_src_push_buffer(GST_APP_SRC(iAppSrc), gstDnlBuffer);
   416     gst_app_src_push_buffer(GST_APP_SRC(iAppSrc), gstDnlBuffer);
   417     TRACE_PRN_N1(_L("TMS->DNL->BF: LEN[%d]"), buflen);
   417     TRACE_PRN_N1(_L("TMS->DNL->BF: LEN[%d]"), buflen);
   418     }
   418     }
   419 
   419 
   420 // -----------------------------------------------------------------------------
   420 // -----------------------------------------------------------------------------
   421 // TMSVoIPDownlink::SetCodecCi
   421 // TMSIPDownlink::SetCodecCi
   422 //
   422 //
   423 // -----------------------------------------------------------------------------
   423 // -----------------------------------------------------------------------------
   424 //
   424 //
   425 gint TMSVoIPDownlink::SetCodecCi()
   425 gint TMSIPDownlink::SetCodecCi()
   426     {
   426     {
   427     TRAPD(err, SetCodecCiL());
   427     TRAPD(err, SetCodecCiL());
   428     return err;
   428     return err;
   429     }
   429     }
   430 
   430 
   431 // -----------------------------------------------------------------------------
   431 // -----------------------------------------------------------------------------
   432 // TMSVoIPDownlink::SetCodecCiL
   432 // TMSIPDownlink::SetCodecCiL
   433 //
   433 //
   434 // -----------------------------------------------------------------------------
   434 // -----------------------------------------------------------------------------
   435 //
   435 //
   436 void TMSVoIPDownlink::SetCodecCiL()
   436 void TMSIPDownlink::SetCodecCiL()
   437     {
   437     {
   438     TRACE_PRN_FN_ENT;
   438     TRACE_PRN_FN_ENT;
   439 
   439 
   440     switch (iCodecID)
   440     switch (iCodecID)
   441         {
   441         {
   487 
   487 
   488     TRACE_PRN_FN_EXT;
   488     TRACE_PRN_FN_EXT;
   489     }
   489     }
   490 
   490 
   491 // -----------------------------------------------------------------------------
   491 // -----------------------------------------------------------------------------
   492 // TMSVoIPDownlink::SetVolume
   492 // TMSIPDownlink::SetVolume
   493 //
   493 //
   494 // -----------------------------------------------------------------------------
   494 // -----------------------------------------------------------------------------
   495 //
   495 //
   496 gint TMSVoIPDownlink::SetVolume(const guint volume)
   496 gint TMSIPDownlink::SetVolume(const guint volume)
   497     {
   497     {
   498     g_object_set(G_OBJECT(iSink), "volume", volume, NULL);
   498     g_object_set(G_OBJECT(iSink), "volume", volume, NULL);
   499     TRACE_PRN_N1(_L("TMS->DNL: SetVolume [%d]"), volume);
   499     TRACE_PRN_N1(_L("TMS->DNL: SetVolume [%d]"), volume);
   500     return TMS_RESULT_SUCCESS;
   500     return TMS_RESULT_SUCCESS;
   501     }
   501     }
   502 
   502 
   503 // -----------------------------------------------------------------------------
   503 // -----------------------------------------------------------------------------
   504 // TMSVoIPDownlink::GetVolume
   504 // TMSIPDownlink::GetVolume
   505 //
   505 //
   506 // -----------------------------------------------------------------------------
   506 // -----------------------------------------------------------------------------
   507 //
   507 //
   508 gint TMSVoIPDownlink::GetVolume(guint& volume)
   508 gint TMSIPDownlink::GetVolume(guint& volume)
   509     {
   509     {
   510     g_object_get(G_OBJECT(iSink), "volume", &volume, NULL);
   510     g_object_get(G_OBJECT(iSink), "volume", &volume, NULL);
   511     TRACE_PRN_N1(_L("TMS->DNL: GetVolume [%d]"), volume);
   511     TRACE_PRN_N1(_L("TMS->DNL: GetVolume [%d]"), volume);
   512     return TMS_RESULT_SUCCESS;
   512     return TMS_RESULT_SUCCESS;
   513     }
   513     }
   514 
   514 
   515 // -----------------------------------------------------------------------------
   515 // -----------------------------------------------------------------------------
   516 // TMSVoIPDownlink::GetMaxVolume
   516 // TMSIPDownlink::GetMaxVolume
   517 //
   517 //
   518 // -----------------------------------------------------------------------------
   518 // -----------------------------------------------------------------------------
   519 //
   519 //
   520 gint TMSVoIPDownlink::GetMaxVolume(guint& volume)
   520 gint TMSIPDownlink::GetMaxVolume(guint& volume)
   521     {
   521     {
   522     g_object_get(G_OBJECT(iSink), "maxvolume", &volume, NULL);
   522     g_object_get(G_OBJECT(iSink), "maxvolume", &volume, NULL);
   523     TRACE_PRN_N1(_L("TMS->DNL: MaxVolume [%d]"), volume);
   523     TRACE_PRN_N1(_L("TMS->DNL: MaxVolume [%d]"), volume);
   524     return TMS_RESULT_SUCCESS;
   524     return TMS_RESULT_SUCCESS;
   525     }
   525     }
   526 
   526 
   527 // -----------------------------------------------------------------------------
   527 // -----------------------------------------------------------------------------
   528 // TMSVoIPDownlink::GetDataXferChunkHndl
   528 // TMSIPDownlink::GetDataXferChunkHndl
   529 //
   529 //
   530 // -----------------------------------------------------------------------------
   530 // -----------------------------------------------------------------------------
   531 //
   531 //
   532 gint TMSVoIPDownlink::GetDataXferChunkHndl(const TUint32 key, RChunk& chunk)
   532 gint TMSIPDownlink::GetDataXferChunkHndl(const TUint32 key, RChunk& chunk)
   533     {
   533     {
   534     gint status = TMS_RESULT_DOES_NOT_EXIST;
   534     gint status = TMS_RESULT_DOES_NOT_EXIST;
   535 
   535 
   536     if (iChunk.Handle())
   536     if (iChunk.Handle())
   537         {
   537         {
   551     TRACE_PRN_IF_ERR(status);
   551     TRACE_PRN_IF_ERR(status);
   552     return status;
   552     return status;
   553     }
   553     }
   554 
   554 
   555 // -----------------------------------------------------------------------------
   555 // -----------------------------------------------------------------------------
   556 // TMSVoIPDownlink::SetIlbcCodecMode
   556 // TMSIPDownlink::SetIlbcCodecMode
   557 //
   557 //
   558 // -----------------------------------------------------------------------------
   558 // -----------------------------------------------------------------------------
   559 //
   559 //
   560 gint TMSVoIPDownlink::SetIlbcCodecMode(gint mode)
   560 gint TMSIPDownlink::SetIlbcCodecMode(gint mode)
   561     {
   561     {
   562     gint err = TMS_RESULT_DOES_NOT_EXIST;
   562     gint err = TMS_RESULT_DOES_NOT_EXIST;
   563 
   563 
   564     if (iStatus == EReady)
   564     if (iStatus == EReady)
   565         {
   565         {
   583     TRACE_PRN_IF_ERR(err);
   583     TRACE_PRN_IF_ERR(err);
   584     return err;
   584     return err;
   585     }
   585     }
   586 
   586 
   587 // -----------------------------------------------------------------------------
   587 // -----------------------------------------------------------------------------
   588 // TMSVoIPDownlink::GetIlbcCodecMode
   588 // TMSIPDownlink::GetIlbcCodecMode
   589 //
   589 //
   590 // -----------------------------------------------------------------------------
   590 // -----------------------------------------------------------------------------
   591 //
   591 //
   592 gint TMSVoIPDownlink::GetIlbcCodecMode(gint& mode)
   592 gint TMSIPDownlink::GetIlbcCodecMode(gint& mode)
   593     {
   593     {
   594     // not available through CIs -> return cashed value
   594     // not available through CIs -> return cashed value
   595     mode = iILBCDecodeMode;
   595     mode = iILBCDecodeMode;
   596     TRACE_PRN_N1(_L("TMS->DNL: GetIlbcCodecMode [%d]"), mode);
   596     TRACE_PRN_N1(_L("TMS->DNL: GetIlbcCodecMode [%d]"), mode);
   597     return TMS_RESULT_SUCCESS;
   597     return TMS_RESULT_SUCCESS;
   598     }
   598     }
   599 
   599 
   600 // -----------------------------------------------------------------------------
   600 // -----------------------------------------------------------------------------
   601 // TMSVoIPDownlink::SetG711CodecMode
   601 // TMSIPDownlink::SetG711CodecMode
   602 //
   602 //
   603 // -----------------------------------------------------------------------------
   603 // -----------------------------------------------------------------------------
   604 //
   604 //
   605 gint TMSVoIPDownlink::SetG711CodecMode(gint mode)
   605 gint TMSIPDownlink::SetG711CodecMode(gint mode)
   606     {
   606     {
   607     gint err = TMS_RESULT_DOES_NOT_EXIST;
   607     gint err = TMS_RESULT_DOES_NOT_EXIST;
   608 
   608 
   609     if (iStatus == EReady)
   609     if (iStatus == EReady)
   610         {
   610         {
   628     TRACE_PRN_IF_ERR(err);
   628     TRACE_PRN_IF_ERR(err);
   629     return err;
   629     return err;
   630     }
   630     }
   631 
   631 
   632 // -----------------------------------------------------------------------------
   632 // -----------------------------------------------------------------------------
   633 // TMSVoIPDownlink::GetG711CodecMode
   633 // TMSIPDownlink::GetG711CodecMode
   634 //
   634 //
   635 // -----------------------------------------------------------------------------
   635 // -----------------------------------------------------------------------------
   636 //
   636 //
   637 gint TMSVoIPDownlink::GetG711CodecMode(gint& mode)
   637 gint TMSIPDownlink::GetG711CodecMode(gint& mode)
   638     {
   638     {
   639     // not available through CIs -> return cached value
   639     // not available through CIs -> return cached value
   640     mode = iG711DecodeMode;
   640     mode = iG711DecodeMode;
   641     TRACE_PRN_N1(_L("TMS->DNL: GetG711CodecMode [%d]"), mode);
   641     TRACE_PRN_N1(_L("TMS->DNL: GetG711CodecMode [%d]"), mode);
   642     return TMS_RESULT_SUCCESS;
   642     return TMS_RESULT_SUCCESS;
   643     }
   643     }
   644 
   644 
   645 // -----------------------------------------------------------------------------
   645 // -----------------------------------------------------------------------------
   646 // TMSVoIPDownlink::FrameModeRqrdForEC
   646 // TMSIPDownlink::FrameModeRqrdForEC
   647 //
   647 //
   648 // -----------------------------------------------------------------------------
   648 // -----------------------------------------------------------------------------
   649 //
   649 //
   650 gint TMSVoIPDownlink::FrameModeRqrdForEC(gboolean& frmodereq)
   650 gint TMSIPDownlink::FrameModeRqrdForEC(gboolean& frmodereq)
   651     {
   651     {
   652     gint err = TMS_RESULT_DOES_NOT_EXIST;
   652     gint err = TMS_RESULT_DOES_NOT_EXIST;
   653 
   653 
   654     if (iStatus == EReady)
   654     if (iStatus == EReady)
   655         {
   655         {
   663     TRACE_PRN_IF_ERR(err);
   663     TRACE_PRN_IF_ERR(err);
   664     return err;
   664     return err;
   665     }
   665     }
   666 
   666 
   667 // -----------------------------------------------------------------------------
   667 // -----------------------------------------------------------------------------
   668 // TMSVoIPDownlink::SetFrameMode
   668 // TMSIPDownlink::SetFrameMode
   669 //
   669 //
   670 // -----------------------------------------------------------------------------
   670 // -----------------------------------------------------------------------------
   671 //
   671 //
   672 gint TMSVoIPDownlink::SetFrameMode(const gboolean frmode)
   672 gint TMSIPDownlink::SetFrameMode(const gboolean frmode)
   673     {
   673     {
   674     gint err = TMS_RESULT_DOES_NOT_EXIST;
   674     gint err = TMS_RESULT_DOES_NOT_EXIST;
   675 
   675 
   676     if (iStatus == EReady)
   676     if (iStatus == EReady)
   677         {
   677         {
   687     TRACE_PRN_IF_ERR(err);
   687     TRACE_PRN_IF_ERR(err);
   688     return err;
   688     return err;
   689     }
   689     }
   690 
   690 
   691 // -----------------------------------------------------------------------------
   691 // -----------------------------------------------------------------------------
   692 // TMSVoIPDownlink::GetFrameMode
   692 // TMSIPDownlink::GetFrameMode
   693 //
   693 //
   694 // -----------------------------------------------------------------------------
   694 // -----------------------------------------------------------------------------
   695 //
   695 //
   696 gint TMSVoIPDownlink::GetFrameMode(gboolean& frmode)
   696 gint TMSIPDownlink::GetFrameMode(gboolean& frmode)
   697     {
   697     {
   698     gint err = TMS_RESULT_DOES_NOT_EXIST;
   698     gint err = TMS_RESULT_DOES_NOT_EXIST;
   699 
   699 
   700     if (iErrConcealmentIntfc)
   700     if (iErrConcealmentIntfc)
   701         {
   701         {
   708     TRACE_PRN_IF_ERR(err);
   708     TRACE_PRN_IF_ERR(err);
   709     return err;
   709     return err;
   710     }
   710     }
   711 
   711 
   712 // -----------------------------------------------------------------------------
   712 // -----------------------------------------------------------------------------
   713 // TMSVoIPDownlink::ConcealErrorForNextBuffer
   713 // TMSIPDownlink::ConcealErrorForNextBuffer
   714 //
   714 //
   715 // -----------------------------------------------------------------------------
   715 // -----------------------------------------------------------------------------
   716 //
   716 //
   717 gint TMSVoIPDownlink::ConcealErrorForNextBuffer()
   717 gint TMSIPDownlink::ConcealErrorForNextBuffer()
   718     {
   718     {
   719     gint err = TMS_RESULT_DOES_NOT_EXIST;
   719     gint err = TMS_RESULT_DOES_NOT_EXIST;
   720 
   720 
   721     if (iErrConcealmentIntfc)
   721     if (iErrConcealmentIntfc)
   722         {
   722         {
   727     TRACE_PRN_IF_ERR(err);
   727     TRACE_PRN_IF_ERR(err);
   728     return err;
   728     return err;
   729     }
   729     }
   730 
   730 
   731 // -----------------------------------------------------------------------------
   731 // -----------------------------------------------------------------------------
   732 // TMSVoIPDownlink::SetCng
   732 // TMSIPDownlink::SetCng
   733 //
   733 //
   734 // -----------------------------------------------------------------------------
   734 // -----------------------------------------------------------------------------
   735 //
   735 //
   736 gint TMSVoIPDownlink::SetCng(const TMSFormatType fmttype, const gboolean cng)
   736 gint TMSIPDownlink::SetCng(const TMSFormatType fmttype, const gboolean cng)
   737     {
   737     {
   738     gint err = TMS_RESULT_DOES_NOT_EXIST;
   738     gint err = TMS_RESULT_DOES_NOT_EXIST;
   739 
   739 
   740     if (iStatus == EReady)
   740     if (iStatus == EReady)
   741         {
   741         {
   754     TRACE_PRN_IF_ERR(err);
   754     TRACE_PRN_IF_ERR(err);
   755     return err;
   755     return err;
   756     }
   756     }
   757 
   757 
   758 // -----------------------------------------------------------------------------
   758 // -----------------------------------------------------------------------------
   759 // TMSVoIPDownlink::GetCng
   759 // TMSIPDownlink::GetCng
   760 //
   760 //
   761 // -----------------------------------------------------------------------------
   761 // -----------------------------------------------------------------------------
   762 //
   762 //
   763 gint TMSVoIPDownlink::GetCng(const TMSFormatType fmttype, gboolean& cng)
   763 gint TMSIPDownlink::GetCng(const TMSFormatType fmttype, gboolean& cng)
   764     {
   764     {
   765     gint err = TMS_RESULT_DOES_NOT_EXIST;
   765     gint err = TMS_RESULT_DOES_NOT_EXIST;
   766 
   766 
   767     if (iStatus == EReady)
   767     if (iStatus == EReady)
   768         {
   768         {
   781     TRACE_PRN_IF_ERR(err);
   781     TRACE_PRN_IF_ERR(err);
   782     return err;
   782     return err;
   783     }
   783     }
   784 
   784 
   785 // -----------------------------------------------------------------------------
   785 // -----------------------------------------------------------------------------
   786 // TMSVoIPDownlink::SetPlc
   786 // TMSIPDownlink::SetPlc
   787 //
   787 //
   788 // -----------------------------------------------------------------------------
   788 // -----------------------------------------------------------------------------
   789 //
   789 //
   790 gint TMSVoIPDownlink::SetPlc(const TMSFormatType fmttype, const gboolean plc)
   790 gint TMSIPDownlink::SetPlc(const TMSFormatType fmttype, const gboolean plc)
   791     {
   791     {
   792     gint err = TMS_RESULT_DOES_NOT_EXIST;
   792     gint err = TMS_RESULT_DOES_NOT_EXIST;
   793 
   793 
   794     if (iStatus == EReady)
   794     if (iStatus == EReady)
   795         {
   795         {
   804     TRACE_PRN_IF_ERR(err);
   804     TRACE_PRN_IF_ERR(err);
   805     return err;
   805     return err;
   806     }
   806     }
   807 
   807 
   808 // -----------------------------------------------------------------------------
   808 // -----------------------------------------------------------------------------
   809 // TMSVoIPDownlink::GetPlc
   809 // TMSIPDownlink::GetPlc
   810 //
   810 //
   811 // -----------------------------------------------------------------------------
   811 // -----------------------------------------------------------------------------
   812 //
   812 //
   813 gint TMSVoIPDownlink::GetPlc(const TMSFormatType fmttype, gboolean& plc)
   813 gint TMSIPDownlink::GetPlc(const TMSFormatType fmttype, gboolean& plc)
   814     {
   814     {
   815     gint err = TMS_RESULT_DOES_NOT_EXIST;
   815     gint err = TMS_RESULT_DOES_NOT_EXIST;
   816 
   816 
   817     if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
   817     if (fmttype == TMS_FORMAT_G711 && iG711DecoderIntfc)
   818         {
   818         {
   825     TRACE_PRN_IF_ERR(err);
   825     TRACE_PRN_IF_ERR(err);
   826     return err;
   826     return err;
   827     }
   827     }
   828 
   828 
   829 // -----------------------------------------------------------------------------
   829 // -----------------------------------------------------------------------------
   830 // TMSVoIPDownlink::BadLsfNextBuffer
   830 // TMSIPDownlink::BadLsfNextBuffer
   831 //
   831 //
   832 // -----------------------------------------------------------------------------
   832 // -----------------------------------------------------------------------------
   833 //
   833 //
   834 gint TMSVoIPDownlink::BadLsfNextBuffer()
   834 gint TMSIPDownlink::BadLsfNextBuffer()
   835     {
   835     {
   836     gint err = TMS_RESULT_DOES_NOT_EXIST;
   836     gint err = TMS_RESULT_DOES_NOT_EXIST;
   837 
   837 
   838     if (iStatus == EStreaming)
   838     if (iStatus == EStreaming)
   839         {
   839         {
   847     TRACE_PRN_IF_ERR(err);
   847     TRACE_PRN_IF_ERR(err);
   848     return err;
   848     return err;
   849     }
   849     }
   850 
   850 
   851 // -----------------------------------------------------------------------------
   851 // -----------------------------------------------------------------------------
   852 // TMSVoIPDownlink::SetAudioDeviceL
   852 // TMSIPDownlink::SetAudioDeviceL
   853 //
   853 //
   854 // -----------------------------------------------------------------------------
   854 // -----------------------------------------------------------------------------
   855 void TMSVoIPDownlink::SetAudioDeviceL(TMSAudioOutput output)
   855 void TMSIPDownlink::SetAudioDeviceL(TMSAudioOutput output)
   856     {
   856     {
   857     gint outputDev;
   857     gint outputDev;
   858 
   858 
   859     // ENoPreference=0, EAll=1, ENoOutput=2, EPrivate=3, EPublic=4
   859     // ENoPreference=0, EAll=1, ENoOutput=2, EPrivate=3, EPublic=4
   860     switch (output)
   860     switch (output)
   875     g_object_set(G_OBJECT(iSink), "outputdevice", outputDev, NULL);
   875     g_object_set(G_OBJECT(iSink), "outputdevice", outputDev, NULL);
   876     TRACE_PRN_N1(_L("TMS->DNL: SetAudioDeviceL [%d]"), outputDev);
   876     TRACE_PRN_N1(_L("TMS->DNL: SetAudioDeviceL [%d]"), outputDev);
   877     }
   877     }
   878 
   878 
   879 // -----------------------------------------------------------------------------
   879 // -----------------------------------------------------------------------------
   880 // TMSVoIPDownlink::GetAudioDeviceL
   880 // TMSIPDownlink::GetAudioDeviceL
   881 //
   881 //
   882 // -----------------------------------------------------------------------------
   882 // -----------------------------------------------------------------------------
   883 //
   883 //
   884 void TMSVoIPDownlink::GetAudioDeviceL(TMSAudioOutput& output)
   884 void TMSIPDownlink::GetAudioDeviceL(TMSAudioOutput& output)
   885     {
   885     {
   886     TRACE_PRN_FN_ENT;
   886     TRACE_PRN_FN_ENT;
   887 
   887 
   888     gint outputDev;
   888     gint outputDev;
   889     g_object_get(G_OBJECT(iSink), "outputdevice", &outputDev, NULL);
   889     g_object_get(G_OBJECT(iSink), "outputdevice", &outputDev, NULL);