gst_plugins_symbian/tsrc/gstreamertestmodule/src/GStreamerTestClassBlocks.cpp
branchRCL_3
changeset 30 7e817e7e631c
parent 29 567bb019e3e3
equal deleted inserted replaced
29:567bb019e3e3 30:7e817e7e631c
    28 #include <StifTestInterface.h>
    28 #include <StifTestInterface.h>
    29 #include "GStreamerTestClass.h"
    29 #include "GStreamerTestClass.h"
    30 #include "debug.h"
    30 #include "debug.h"
    31 #include <stdlib.h>
    31 #include <stdlib.h>
    32 #include <string.h>
    32 #include <string.h>
    33 #include <unistd.h>
       
    34 
    33 
    35 
    34 
    36 _LIT8(defaultMedia,"audio/x-raw-int");
    35 _LIT8(defaultMedia,"audio/x-raw-int");
    37 _LIT8(amrMedia,"audio/amr");
    36 _LIT8(amrMedia,"audio/amr");
    38 _LIT8(g711Media,"audio/x-alaw");
    37 _LIT8(g711Media,"audio/x-alaw");
   112     iWavparse = NULL;
   111     iWavparse = NULL;
   113     iDecoder = NULL;
   112     iDecoder = NULL;
   114     iFakesink = NULL;
   113     iFakesink = NULL;
   115     iFilesink = NULL;
   114     iFilesink = NULL;
   116     iEncoder = NULL;
   115     iEncoder = NULL;
   117     iAACEncoder = NULL;
       
   118     iQtMux = NULL;
       
   119     iAmrMux = NULL;
       
   120     iFilter = NULL;
   116     iFilter = NULL;
   121     iWavenc = NULL;
   117     iWavenc = NULL;
   122     iBus = NULL;
   118     iBus = NULL;
   123     iCaps = NULL;
   119     iCaps = NULL;
   124     iG711EncoderIntfc = NULL;
   120     iG711EncoderIntfc = NULL;
   186       g_free (debug);
   182       g_free (debug);
   187       g_print ("Error: %s\n", err->message);
   183       g_print ("Error: %s\n", err->message);
   188       g_error_free (err);
   184       g_error_free (err);
   189       break;
   185       break;
   190     }
   186     }
   191     case GST_MESSAGE_STATE_CHANGED:
       
   192         {
       
   193         GstState*  state = NULL;
       
   194         GstState * pending = NULL;
       
   195         gst_element_get_state(GST_ELEMENT (objects->iPipeline),state,pending,-1 );
       
   196         //int x = 10;
       
   197         }
       
   198         break;
       
   199     default:
   187     default:
   200       break;
   188       break;
   201   }
   189   }
   202 
   190 
   203   return TRUE;
   191   return TRUE;
   274         ENTRY( "SetTimeout", CGStreamerTestClass::SetTimeout ),
   262         ENTRY( "SetTimeout", CGStreamerTestClass::SetTimeout ),
   275         ENTRY( "SetAllowedPanic", CGStreamerTestClass::SetAllowedPanic ),
   263         ENTRY( "SetAllowedPanic", CGStreamerTestClass::SetAllowedPanic ),
   276         ENTRY( "SetExpectedEvents", CGStreamerTestClass::SetExpectedEvents ),
   264         ENTRY( "SetExpectedEvents", CGStreamerTestClass::SetExpectedEvents ),
   277         ENTRY( "SetMainLoopRun", CGStreamerTestClass::SetMainLoopRun ),
   265         ENTRY( "SetMainLoopRun", CGStreamerTestClass::SetMainLoopRun ),
   278         ENTRY( "SetCapsInPipeLine", CGStreamerTestClass::SetCapsInPipeLine ),
   266         ENTRY( "SetCapsInPipeLine", CGStreamerTestClass::SetCapsInPipeLine ),
   279         ENTRY( "StopRecording", CGStreamerTestClass::StopRecording ),
   267 		
   280         ENTRY( "SeekElement", CGStreamerTestClass::SeekElement ),
       
   281         ENTRY( "CheckProperties", CGStreamerTestClass::CheckProperties ),
       
   282         ENTRY( "GstReliabilitytestPlaypause", CGStreamerTestClass::GstReliabilitytestPlaypause ),
       
   283         ENTRY( "GstReliabilitytestRecording", CGStreamerTestClass::GstReliabilitytestRecording ),
       
   284         ENTRY( "PlayBack", CGStreamerTestClass::PlayBack ),  
       
   285         };
   268         };
   286 
   269 
   287     const TInt count = sizeof( KFunctions ) / 
   270     const TInt count = sizeof( KFunctions ) / 
   288                         sizeof( TStifFunctionInfo );
   271                         sizeof( TStifFunctionInfo );
   289 
   272 
   592 
   575 
   593     iLog->Log(_L("<<CGStreamerTestClass::InitGStreamer"));
   576     iLog->Log(_L("<<CGStreamerTestClass::InitGStreamer"));
   594     return KErrNone;
   577     return KErrNone;
   595     }
   578     }
   596 
   579 
   597 /*** block b  from ../../../docs/manual/highlevel-components.xml ***/
       
   598 static gboolean
       
   599 my_bus_callback (GstBus     *bus,
       
   600          GstMessage *message,
       
   601          gpointer    data)
       
   602 {
       
   603       
       
   604   GMainLoop *loop = ( GMainLoop * )data;
       
   605 
       
   606   switch (GST_MESSAGE_TYPE (message)) {
       
   607     case GST_MESSAGE_ERROR: {
       
   608       GError *err;
       
   609       gchar *debug;
       
   610 
       
   611       gst_message_parse_error (message, &err, &debug);
       
   612       g_print ("Error: %s\n", err->message);
       
   613       g_error_free (err);
       
   614       g_free (debug);
       
   615 
       
   616       g_main_loop_quit (loop);
       
   617       break;
       
   618     }
       
   619     case GST_MESSAGE_EOS:
       
   620         
       
   621        /* end-of-stream */
       
   622       g_main_loop_quit (loop);
       
   623       break;
       
   624     default:
       
   625       /* unhandled message */
       
   626       break;
       
   627   }
       
   628 
       
   629   /* remove message from the queue */
       
   630   return TRUE;
       
   631 }
       
   632 
       
   633 /*** block c  from ../../../docs/manual/highlevel-components.xml ***/
       
   634 GstElement *pipeline;
       
   635 GstPad* devsoundsinkpad = NULL;
       
   636 
       
   637 static void
       
   638 cb_newpad (GstElement *decodebin,
       
   639        GstPad     *pad,
       
   640        gboolean    last,
       
   641        gpointer    data)
       
   642 {
       
   643     GstCaps *caps;
       
   644       GstStructure *str;
       
   645       GstPadLinkReturn linkret= GST_PAD_LINK_OK ;
       
   646 
       
   647       /* check media type */
       
   648       caps = gst_pad_get_caps (pad);
       
   649       str = gst_caps_get_structure (caps, 0);
       
   650       if (!g_strrstr (gst_structure_get_name (str), "audio")) {
       
   651         gst_caps_unref (caps);
       
   652         return;
       
   653       }
       
   654       gst_caps_unref (caps);
       
   655 
       
   656       /* link'n'play */
       
   657       linkret = gst_pad_link (pad, devsoundsinkpad);
       
   658 }
       
   659 
       
   660 
       
   661 gboolean  cb_autoplug( GstBin * *bin,
       
   662                         GstPad        *pad,
       
   663                         GstCaps       *caps,
       
   664                         gpointer       user_data)
       
   665 {
       
   666     
       
   667     GstCaps* sinkcaps = NULL;    
       
   668     gboolean supported = FALSE; 
       
   669     
       
   670     sinkcaps = gst_pad_get_caps( devsoundsinkpad );
       
   671         
       
   672     supported = gst_caps_is_subset( caps, sinkcaps );
       
   673     
       
   674     if( supported )
       
   675     {
       
   676       return FALSE;
       
   677     }
       
   678    
       
   679     return TRUE;
       
   680 
       
   681 }
       
   682 
       
   683 
       
   684 
       
   685 TInt CGStreamerTestClass::PlayBack( CStifItemParser& aItem )
       
   686 {
       
   687       GMainLoop *loop;
       
   688       GstElement *src, *dec, *sink;
       
   689       GstBus *bus;            
       
   690       
       
   691       FTRACE(FPrint(_L("CGStreamerTestClass::PlayBack")));     
       
   692       
       
   693       iLog->Log(_L(">>filesrc creation "));
       
   694 
       
   695       src = gst_element_factory_make ("filesrc", "source");
       
   696       
       
   697       iLog->Log(_L("<<filesrc creation "));
       
   698       
       
   699       TPtrC location;
       
   700       TFileName filename;
       
   701       
       
   702       char carray[1024];
       
   703       aItem.GetNextString(location);
       
   704       filename.Copy(location);
       
   705       wcstombs(carray, (const wchar_t *)filename.PtrZ(), 1024);
       
   706                       
       
   707       g_object_set (G_OBJECT (src), "location", carray, NULL);
       
   708       
       
   709      // gst_bin_add_many(GST_BIN (iObjects->iPipeline),src, NULL);
       
   710       
       
   711       iLog->Log(_L(">>decodebin2 creation "));
       
   712       dec = gst_element_factory_make ("decodebin2", "decoder");
       
   713       iLog->Log(_L("<<decodebin2 creation "));       
       
   714 
       
   715       /* create audio output */     
       
   716       sink = gst_element_factory_make ("devsoundsink", "sink");
       
   717             
       
   718       gst_bin_add_many (GST_BIN (iObjects->iPipeline), src, dec, sink, NULL);
       
   719       
       
   720       devsoundsinkpad = gst_element_get_pad( sink, "sink");          
       
   721       
       
   722       g_signal_connect (dec, "new-decoded-pad", G_CALLBACK (cb_newpad), NULL);
       
   723       g_signal_connect (dec, "autoplug-continue", G_CALLBACK (cb_autoplug), NULL);
       
   724       
       
   725       gst_element_link (src, dec);        
       
   726            
       
   727       iLog->Log(_L("<<Setting pipeline to Play"));
       
   728             
       
   729       return KErrNone;   
       
   730     
       
   731 }
       
   732 
       
   733 // -----------------------------------------------------------------------------
   580 // -----------------------------------------------------------------------------
   734 // CGStreamerTestClass::CreatePipeLine
   581 // CGStreamerTestClass::CreatePipeLine
   735 // Create Pipeline
   582 // Create Pipeline
   736 // -----------------------------------------------------------------------------
   583 // -----------------------------------------------------------------------------
   737 //
   584 //
   745     gst_bus_add_watch(iObjects->iBus, bus_call, data);
   592     gst_bus_add_watch(iObjects->iBus, bus_call, data);
   746     gst_object_unref (iObjects->iBus);
   593     gst_object_unref (iObjects->iBus);
   747     iLog->Log(_L("<<CGStreamerTestClass::InitPipeLine"));   
   594     iLog->Log(_L("<<CGStreamerTestClass::InitPipeLine"));   
   748     return KErrNone;
   595     return KErrNone;
   749     }
   596     }
   750 	
       
   751 
       
   752 
   597 
   753 TInt CGStreamerTestClass::SetMainLoopRun( CStifItemParser& /*aItem*/ )
   598 TInt CGStreamerTestClass::SetMainLoopRun( CStifItemParser& /*aItem*/ )
   754     {
   599     {
   755     TInt error(KErrNone);
   600     TInt error(KErrNone);
   756     iLog->Log(_L(">>CGStreamerTestClass::SetMainLoopRun"));
   601     iLog->Log(_L(">>CGStreamerTestClass::SetMainLoopRun"));
   893                 {
   738                 {
   894                 iObjects->iEncoder = gst_element_factory_make("wavenc", "wavencoder");             
   739                 iObjects->iEncoder = gst_element_factory_make("wavenc", "wavencoder");             
   895                 }
   740                 }
   896             break;
   741             break;
   897             }
   742             }
   898         case   ENOKIAAACENCODER:	        
       
   899             {
       
   900             if(iObjects->iAACEncoder)
       
   901                 {
       
   902                 error = KErrAlreadyExists;
       
   903                 }
       
   904             else
       
   905                 {
       
   906                 iObjects->iAACEncoder = gst_element_factory_make("nokiaaacenc", "nokiaaacenc");     
       
   907                 if( iObjects->iAACEncoder == NULL )
       
   908                     iLog->Log(_L(" iObjects->iAACEncoder == NULL"));
       
   909                 }
       
   910             break;
       
   911             }
       
   912         case   ENOKIAQTMUX:            
       
   913             {
       
   914             if(iObjects->iQtMux)
       
   915                 {
       
   916                 error = KErrAlreadyExists;
       
   917                 }
       
   918             else
       
   919                 {
       
   920                 iObjects->iQtMux = gst_element_factory_make("mp4mux", "mp4mux");     
       
   921                 if( iObjects->iQtMux == NULL )
       
   922                     iLog->Log(_L(" iObjects->iQtMux == NULL"));
       
   923                 }
       
   924             break;
       
   925             }       
       
   926         case   ENOKIAAMRMUX:            
       
   927             {
       
   928             if(iObjects->iAmrMux)
       
   929                 {
       
   930                 error = KErrAlreadyExists;
       
   931                 }
       
   932             else
       
   933                 {
       
   934                 iObjects->iAmrMux = gst_element_factory_make("amrmux", "amrmux");     
       
   935                 if( iObjects->iAmrMux == NULL )
       
   936                     iLog->Log(_L(" iObjects->iAmrMux == NULL"));
       
   937                 }
       
   938             break;
       
   939             }            
       
   940 	    case   ERESAMPLER:
   743 	    case   ERESAMPLER:
   941             {
   744             {
   942             if(iObjects->iResampler)
   745             if(iObjects->iResampler)
   943                 {
   746                 {
   944                 error = KErrAlreadyExists;
   747                 error = KErrAlreadyExists;
  1085             else
   888             else
  1086                 {
   889                 {
  1087                 }
   890                 }
  1088             break;
   891             break;
  1089             }
   892             }
  1090         case   ENOKIAAACENCODER:
       
  1091             {
       
  1092             if(!iObjects->iAACEncoder)
       
  1093                 {
       
  1094                 error = KErrNotFound;
       
  1095                 }
       
  1096             else
       
  1097                 {
       
  1098                 }
       
  1099             break;
       
  1100             }            
       
  1101         case   ENOKIAQTMUX:
       
  1102             {
       
  1103             if(!iObjects->iQtMux)
       
  1104                 {
       
  1105                 error = KErrNotFound;
       
  1106                 }
       
  1107             else
       
  1108                 {
       
  1109                 }
       
  1110             break;
       
  1111             }              
       
  1112         case   ENOKIAAMRMUX:
       
  1113             {
       
  1114             if(!iObjects->iAmrMux)
       
  1115                 {
       
  1116                 error = KErrNotFound;
       
  1117                 }
       
  1118             else
       
  1119                 {
       
  1120                     gboolean header;
       
  1121                     g_object_get (G_OBJECT (iObjects->iAmrMux), "header", &header, NULL); 
       
  1122 
       
  1123                 }
       
  1124             break;
       
  1125             }             
       
  1126         case   ERESAMPLER:
   893         case   ERESAMPLER:
  1127             {
   894             {
  1128             if(!iObjects->iResampler)
   895             if(!iObjects->iResampler)
  1129                 {
   896                 {
  1130                 error = KErrNotFound;
   897                 error = KErrNotFound;
  1187                     {
   954                     {
  1188                     g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
   955                     g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
  1189                     FTRACE(FPrint(_L("CGStreamerTestClass::GetElementProperties SamplesRecorded[%d]"),value));
   956                     FTRACE(FPrint(_L("CGStreamerTestClass::GetElementProperties SamplesRecorded[%d]"),value));
  1190                     iLog->Log(_L("CGStreamerTestClass::GetElementProperties SamplesRecorded[%d]"),value);
   957                     iLog->Log(_L("CGStreamerTestClass::GetElementProperties SamplesRecorded[%d]"),value);
  1191                     }
   958                     }
  1192 				else if(!property.Compare(KTagLeftBalanceProperty()))
       
  1193                     {                  
       
  1194                         g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  1195                      }             
       
  1196           
       
  1197                 else if(!property.Compare(KTagRightBalanceProperty()))
       
  1198                     {
       
  1199                     
       
  1200                         g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  1201 
       
  1202                         }	
       
  1203                 delete prop;
   959                 delete prop;
  1204                 }
   960                 }
  1205             break;
   961             break;
  1206             }            
   962             }            
  1207         case   EDEVSOUNDSINK:
   963         case   EDEVSOUNDSINK:
  1361             else
  1117             else
  1362                 {
  1118                 {
  1363                 }
  1119                 }
  1364             break;
  1120             break;
  1365             }
  1121             }
  1366         case   ENOKIAAACENCODER:
       
  1367             {
       
  1368             if(!iObjects->iAACEncoder)
       
  1369                 {
       
  1370                 error = KErrNotFound;
       
  1371                 }
       
  1372             else
       
  1373                 {
       
  1374                 }
       
  1375             break;
       
  1376             }            
       
  1377         case   ENOKIAQTMUX:
       
  1378             {
       
  1379             if(!iObjects->iQtMux)
       
  1380                 {
       
  1381                 error = KErrNotFound;
       
  1382                 }
       
  1383             else
       
  1384                 {
       
  1385                 }
       
  1386             break;
       
  1387             }               
       
  1388         case   ENOKIAAMRMUX:
       
  1389             {
       
  1390             if(!iObjects->iAmrMux)
       
  1391                 {
       
  1392                 error = KErrNotFound;
       
  1393                 }
       
  1394             else
       
  1395                 {
       
  1396                     TInt value;
       
  1397                     aItem.GetNextInt(value);
       
  1398                     g_object_set (G_OBJECT (iObjects->iAmrMux), "header", (gboolean)value, NULL);                     
       
  1399                 }
       
  1400             break;
       
  1401             }              
       
  1402         case   ERESAMPLER:
  1122         case   ERESAMPLER:
  1403             {
  1123             {
  1404             if(!iObjects->iResampler)
  1124             if(!iObjects->iResampler)
  1405                 {
  1125                 {
  1406                 error = KErrNotFound;
  1126                 error = KErrNotFound;
  1506                         {
  1226                         {
  1507                         error = KErrNotFound;
  1227                         error = KErrNotFound;
  1508                         }
  1228                         }
  1509                     }
  1229                     }
  1510                 else if(!property.Compare(KTagPereferenceProperty()))
  1230                 else if(!property.Compare(KTagPereferenceProperty()))
  1511                     {
       
  1512                     TInt value;
       
  1513                     if(!aItem.GetNextInt(value))
       
  1514                         {
       
  1515                         g_object_set (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), value, NULL); 
       
  1516                         }
       
  1517                     else
       
  1518                         {
       
  1519                         error = KErrNotFound;
       
  1520                         }
       
  1521                     }
       
  1522                 else if(!property.Compare(KTagNumBuffersProperty()))
       
  1523                     {
  1231                     {
  1524                     TInt value;
  1232                     TInt value;
  1525                     if(!aItem.GetNextInt(value))
  1233                     if(!aItem.GetNextInt(value))
  1526                         {
  1234                         {
  1527                         g_object_set (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), value, NULL); 
  1235                         g_object_set (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), value, NULL); 
  1782                 {
  1490                 {
  1783                 gst_bin_add_many(GST_BIN (iObjects->iPipeline),iObjects->iEncoder, NULL);
  1491                 gst_bin_add_many(GST_BIN (iObjects->iPipeline),iObjects->iEncoder, NULL);
  1784                 }
  1492                 }
  1785             break;
  1493             break;
  1786             }
  1494             }
  1787         case   ENOKIAAACENCODER:
       
  1788             {
       
  1789             iLog->Log(_L("<<CGStreamerTestClass::AddElementToPipeline ENOKIAAACENCODER"));
       
  1790             if(!iObjects->iAACEncoder)
       
  1791                 {
       
  1792                 error = KErrNotFound;
       
  1793                 }
       
  1794             else
       
  1795                 {
       
  1796                 gst_bin_add_many(GST_BIN (iObjects->iPipeline),iObjects->iAACEncoder, NULL);
       
  1797                 }
       
  1798             break;
       
  1799             }            
       
  1800         case   ENOKIAQTMUX:
       
  1801             {
       
  1802             
       
  1803             if(!iObjects->iQtMux)
       
  1804                 {
       
  1805                 error = KErrNotFound;
       
  1806                 }
       
  1807             else
       
  1808                 {
       
  1809                 gst_bin_add_many(GST_BIN (iObjects->iPipeline),iObjects->iQtMux, NULL);
       
  1810                 }
       
  1811             break;
       
  1812             }     
       
  1813         case   ENOKIAAMRMUX:
       
  1814             {
       
  1815             
       
  1816             if(!iObjects->iAmrMux)
       
  1817                 {
       
  1818                 error = KErrNotFound;
       
  1819                 }
       
  1820             else
       
  1821                 {
       
  1822                 gst_bin_add_many(GST_BIN (iObjects->iPipeline),iObjects->iAmrMux, NULL);
       
  1823                 }
       
  1824             break;
       
  1825             }             
       
  1826         case   ERESAMPLER:
  1495         case   ERESAMPLER:
  1827             {
  1496             {
  1828             if(!iObjects->iResampler)
  1497             if(!iObjects->iResampler)
  1829                 {
  1498                 {
  1830                 error = KErrNotFound;
  1499                 error = KErrNotFound;
  1894     aItem.GetNextInt(element);
  1563     aItem.GetNextInt(element);
  1895     ret = gst_element_set_state (iObjects->iPipeline, static_cast<GstState>(element) ); 
  1564     ret = gst_element_set_state (iObjects->iPipeline, static_cast<GstState>(element) ); 
  1896     iLog->Log(_L("<<CGStreamerTestClass::SetPipelineState Error[%d] ret[%d]"),error,ret);
  1565     iLog->Log(_L("<<CGStreamerTestClass::SetPipelineState Error[%d] ret[%d]"),error,ret);
  1897     return error;
  1566     return error;
  1898     }
  1567     }
  1899 
       
  1900 
       
  1901 
  1568 
  1902 TInt CGStreamerTestClass::SetCapsInPipeLine( CStifItemParser& aItem )
  1569 TInt CGStreamerTestClass::SetCapsInPipeLine( CStifItemParser& aItem )
  1903     {
  1570     {
  1904     TInt error(KErrNone);
  1571     TInt error(KErrNone);
  1905     TInt width(16);
  1572     TInt width(16);
  2580                     {
  2247                     {
  2581                     array.Append(iObjects->iEncoder);
  2248                     array.Append(iObjects->iEncoder);
  2582                     }
  2249                     }
  2583                 break;
  2250                 break;
  2584                 }
  2251                 }
  2585             case   ENOKIAAACENCODER:
       
  2586                 {
       
  2587                 if(!iObjects->iAACEncoder)
       
  2588                     {
       
  2589                     error = KErrNotFound;
       
  2590                     }
       
  2591                 else
       
  2592                     {
       
  2593                     array.Append(iObjects->iAACEncoder);
       
  2594                     }
       
  2595                 break;
       
  2596                 }                
       
  2597             case   ENOKIAQTMUX:
       
  2598                 {
       
  2599                 if(!iObjects->iQtMux)
       
  2600                     {
       
  2601                     error = KErrNotFound;
       
  2602                     }
       
  2603                 else
       
  2604                     {
       
  2605                     array.Append(iObjects->iQtMux);
       
  2606                     }
       
  2607                 break;
       
  2608                 }                  
       
  2609             case   ENOKIAAMRMUX:
       
  2610                 {
       
  2611                 if(!iObjects->iAmrMux)
       
  2612                     {
       
  2613                     error = KErrNotFound;
       
  2614                     }
       
  2615                 else
       
  2616                     {
       
  2617                     array.Append(iObjects->iAmrMux);
       
  2618                     }
       
  2619                 break;
       
  2620                 }                 
       
  2621             case   ERESAMPLER:
  2252             case   ERESAMPLER:
  2622                 {
  2253                 {
  2623                 if(!iObjects->iResampler)
  2254                 if(!iObjects->iResampler)
  2624                     {
  2255                     {
  2625                     error = KErrNotFound;
  2256                     error = KErrNotFound;
  2693                 gst_caps_unref(iObjects->iCaps);
  2324                 gst_caps_unref(iObjects->iCaps);
  2694                 iObjects->iCaps = NULL;
  2325                 iObjects->iCaps = NULL;
  2695                 }
  2326                 }
  2696             else
  2327             else
  2697                 {
  2328                 {
  2698                     if( array[i] == iObjects->iQtMux)
  2329                 linkOK = gst_element_link(array[i-1],array[i]);
  2699                     {
       
  2700                         iLog->Log(_L("array[i] == iObjects->iQtMux"));
       
  2701                         GstPad* qtsinkpad  = gst_element_get_request_pad( array[i], "audio_%d");
       
  2702                         if( !qtsinkpad )
       
  2703                             {
       
  2704                                 iLog->Log(_L("qtsinkpad failed"));
       
  2705                             }
       
  2706                         GstPad* aacencsrcpad  = gst_element_get_pad( array[i-1], "src");
       
  2707                         if( !aacencsrcpad )
       
  2708                             {
       
  2709                                 iLog->Log(_L("aacencsrcpad failed"));
       
  2710                             }
       
  2711                         
       
  2712                         //linkOK = gst_pad_link (aacencsrcpad,qtsinkpad);
       
  2713                         if( gst_pad_link (aacencsrcpad,qtsinkpad) != GST_PAD_LINK_OK )
       
  2714                             {
       
  2715                         iLog->Log(_L("gst_pad_link (aacencsrcpad,qtsinkpad) failed"));
       
  2716                         linkOK = 0;
       
  2717                             }
       
  2718                     }
       
  2719                     else
       
  2720                     {    
       
  2721                         linkOK = gst_element_link(array[i-1],array[i]);
       
  2722                     }
       
  2723                 }
  2330                 }
  2724             }        
  2331             }        
  2725         }
  2332         }
  2726     
  2333     
  2727     array.Close();
  2334     array.Close();
  2728     iLog->Log(_L("<<CGStreamerTestClass::LinkElementsInPipeline Error[%d]"),linkOK);
  2335     iLog->Log(_L("<<CGStreamerTestClass::LinkElementsInPipeline Error[%d]"),linkOK);
  2729     return error;
  2336     return error;
  2730     }
  2337     }
  2731 
  2338 
  2732 
  2339 
  2733 
       
  2734 
       
  2735 
       
  2736 
       
  2737 
       
  2738 
       
  2739 
       
  2740 
       
  2741 
       
  2742 
       
  2743 
       
  2744 TInt CGStreamerTestClass::StopRecording( CStifItemParser& /*aItem*/ )
       
  2745     {   
       
  2746     FTRACE(FPrint(_L("CGStreamerTestClass::StopRecording")));
       
  2747     iLog->Log(_L(">>CGStreamerTestClass::StopRecording"));   
       
  2748     gst_element_send_event (iObjects->iPipeline, gst_event_new_eos ());
       
  2749     iLog->Log(_L("<<CGStreamerTestClass::StopRecording"));   
       
  2750     return KErrNone;
       
  2751     }
       
  2752 
       
  2753 TInt CGStreamerTestClass::GstReliabilitytestRecording( CStifItemParser& aItem )
       
  2754     {   
       
  2755     FTRACE(FPrint(_L("CGStreamerTestClass::GstReliabilitytestRecording")));
       
  2756     iLog->Log(_L(">>CGStreamerTestClass::GstReliabilitytestRecording"));   
       
  2757     TInt i=0;
       
  2758     aItem.GetNextInt(i);
       
  2759     while(--i)
       
  2760         {
       
  2761          gst_element_set_state (iObjects->iPipeline, GST_STATE_PLAYING );
       
  2762          sleep (60);
       
  2763         }
       
  2764     iLog->Log(_L("<<CGStreamerTestClass::GstReliabilitytestRecording"));   
       
  2765     return KErrNone;
       
  2766     }
       
  2767 
       
  2768 
       
  2769 TInt CGStreamerTestClass::GstReliabilitytestPlaypause( CStifItemParser& aItem )
       
  2770     {   
       
  2771     FTRACE(FPrint(_L("CGStreamerTestClass::GstReliabilitytestPlaypause")));
       
  2772     iLog->Log(_L(">>CGStreamerTestClass::GstReliabilitytestPlaypause"));   
       
  2773     TInt i=0;
       
  2774     aItem.GetNextInt(i);
       
  2775     //aItem.GetNextInt(element);
       
  2776     while( --i )
       
  2777         {
       
  2778         gst_element_set_state (iObjects->iPipeline, GST_STATE_PLAYING );
       
  2779         sleep(10);
       
  2780         gst_element_set_state (iObjects->iPipeline, GST_STATE_PAUSED );
       
  2781         sleep(2);
       
  2782         }
       
  2783     iLog->Log(_L("<<CGStreamerTestClass::GstReliabilitytestPlaypause"));   
       
  2784     return KErrNone;
       
  2785     }
       
  2786 
       
  2787 static gint convert_devsound_rate(gint devsound_rate)
       
  2788     {
       
  2789     gint result;
       
  2790 
       
  2791     switch (devsound_rate)
       
  2792         {
       
  2793         case 1:
       
  2794             result=8000;
       
  2795             break;
       
  2796         case 2:
       
  2797             result=11025;
       
  2798             break;
       
  2799         case 4:
       
  2800             result=16000;
       
  2801             break;
       
  2802         case 8:
       
  2803             result=22050;
       
  2804             break;
       
  2805         case 16:
       
  2806             result=32000;
       
  2807             break;
       
  2808         case 32:
       
  2809             result=44100;
       
  2810             break;
       
  2811         case 64:
       
  2812             result=48000;
       
  2813             break;
       
  2814         case 128:
       
  2815             result=88200;
       
  2816             break;
       
  2817         case 256:
       
  2818             result=96000;
       
  2819             break;
       
  2820         case 512:
       
  2821             result=12000;
       
  2822             break;
       
  2823         case 1024:
       
  2824             result=24000;
       
  2825             break;
       
  2826         case 2048:
       
  2827             result=64000;
       
  2828             break;
       
  2829         default:
       
  2830             result=8000;
       
  2831             break;
       
  2832 
       
  2833         }
       
  2834     return result;
       
  2835 
       
  2836     }
       
  2837 
       
  2838 TInt CGStreamerTestClass::CheckProperties( CStifItemParser& aItem )
       
  2839     {   
       
  2840     FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties")));
       
  2841     iLog->Log(_L(">>CGStreamerTestClass::CheckProperties"));   
       
  2842     TInt error = KErrNone;
       
  2843     TInt element;
       
  2844     TInt ValueExpected(0);
       
  2845     aItem.GetNextInt(element);
       
  2846         switch(element)
       
  2847             {
       
  2848             case   EFILESOURCE:
       
  2849                 {
       
  2850                 if(!iObjects->iSource)
       
  2851                     {
       
  2852                     error = KErrNotFound;
       
  2853                     }
       
  2854                 else
       
  2855                     {
       
  2856                     }
       
  2857                 break;
       
  2858                 }
       
  2859             case   EFILESINK:
       
  2860                 {
       
  2861                 if(!iObjects->iSink)
       
  2862                     {
       
  2863                     error = KErrNotFound;
       
  2864                     }
       
  2865                 else
       
  2866                     {
       
  2867                     }
       
  2868                 break;
       
  2869                 }
       
  2870             case   EFAKESOURCE:
       
  2871                 {
       
  2872                 if(!iObjects->iSource)
       
  2873                     {
       
  2874                     error = KErrNotFound;
       
  2875                     }
       
  2876                 else
       
  2877                     {
       
  2878                     }
       
  2879                 break;
       
  2880                 }
       
  2881             case   EFAKESINK:
       
  2882                 {
       
  2883                 if(!iObjects->iSink)
       
  2884                     {
       
  2885                     error = KErrNotFound;
       
  2886                     }
       
  2887                 else
       
  2888                     {
       
  2889                     }
       
  2890                 break;
       
  2891                 }
       
  2892             case   EWAVPARSE:
       
  2893                 {
       
  2894                 if(!iObjects->iWavparse)
       
  2895                     {
       
  2896                     error = KErrNotFound;
       
  2897                     }
       
  2898                 else
       
  2899                     {
       
  2900                     }
       
  2901                 break;
       
  2902                 }
       
  2903             case   EMP3DECODER:
       
  2904                 {
       
  2905                 if(!iObjects->iDecoder)
       
  2906                     {
       
  2907                     error = KErrNotFound;
       
  2908                     }
       
  2909                 else
       
  2910                     {
       
  2911                     }
       
  2912                 break;
       
  2913                 }
       
  2914             case   EWAVEENCODER:
       
  2915                 {
       
  2916                 if(!iObjects->iEncoder)
       
  2917                     {
       
  2918                     error = KErrNotFound;
       
  2919                     }
       
  2920                 else
       
  2921                     {
       
  2922                     }
       
  2923                 break;
       
  2924                 }
       
  2925             case   ENOKIAAACENCODER:
       
  2926                 {
       
  2927                 if(!iObjects->iAACEncoder)
       
  2928                     {
       
  2929                     error = KErrNotFound;
       
  2930                     }
       
  2931                 else
       
  2932                     {
       
  2933                     }
       
  2934                 break;
       
  2935                 }
       
  2936             case   ENOKIAQTMUX:
       
  2937                 {
       
  2938                 if(!iObjects->iQtMux)
       
  2939                     {
       
  2940                     error = KErrNotFound;
       
  2941                     }
       
  2942                 else
       
  2943                     {
       
  2944                     }
       
  2945                 break;
       
  2946                 }
       
  2947             case   ENOKIAAMRMUX:
       
  2948                 {
       
  2949                 if(!iObjects->iAmrMux)
       
  2950                     {
       
  2951                     error = KErrNotFound;
       
  2952                     }
       
  2953                 else
       
  2954                     {
       
  2955                     }
       
  2956                 break;
       
  2957                 }                
       
  2958             case   ERESAMPLER:
       
  2959                 {
       
  2960                 if(!iObjects->iResampler)
       
  2961                     {
       
  2962                     error = KErrNotFound;
       
  2963                     }
       
  2964                 else
       
  2965                     {
       
  2966                     }
       
  2967                 break;
       
  2968                 }
       
  2969             case   ECONVERTER:
       
  2970                 {
       
  2971                 if(!iObjects->iConverter)
       
  2972                     {
       
  2973                     error = KErrNotFound;
       
  2974                     }
       
  2975                 else
       
  2976                     {
       
  2977                     }
       
  2978                 break;
       
  2979                 }
       
  2980             case   EDEVSOUNDSRC:
       
  2981                 {
       
  2982                 if(!iObjects->iSource)
       
  2983                     {
       
  2984                     error = KErrNotFound;
       
  2985                     }
       
  2986                 else
       
  2987                     {
       
  2988                     TPtrC property;
       
  2989                     TInt value(0);
       
  2990                     aItem.GetNextString(property);
       
  2991                     aItem.GetNextInt(ValueExpected);
       
  2992                     HBufC8* prop = HBufC8::NewL(property.Length()+ 1);
       
  2993                     TPtr8 des = prop->Des();
       
  2994                     des.Copy(property);
       
  2995                     if(!property.Compare(KTagGainProperty()))
       
  2996                         {
       
  2997                         g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  2998                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties GetGain[%d]"),value));
       
  2999                         iLog->Log(_L("CGStreamerTestClass::CheckProperties GetGain[%d]"),value);
       
  3000                         }
       
  3001                     else if(!property.Compare(KTagRateProperty()))
       
  3002                         {
       
  3003                         g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL);
       
  3004                         value = convert_devsound_rate(value);
       
  3005                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties GetRate[%d]"),value));
       
  3006                         iLog->Log(_L("CGStreamerTestClass::CheckProperties GetRate[%d]"),value);
       
  3007                         }
       
  3008                     else if(!property.Compare(KTagChannelsProperty()))
       
  3009                         {
       
  3010                         g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  3011                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties Channels[%d]"),value));
       
  3012                         iLog->Log(_L("CGStreamerTestClass::CheckProperties channels[%d]"),value);
       
  3013                         }
       
  3014                     else if(!property.Compare(KTagMaxGainProperty()))
       
  3015                         {
       
  3016                         g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  3017                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties MaxGain[%d]"),value));
       
  3018                         iLog->Log(_L("CGStreamerTestClass::CheckProperties Max Gain[%d]"),value);
       
  3019                         }
       
  3020                     else if(!property.Compare(KTagSamplesRecordedProperty()))
       
  3021                         {
       
  3022                         g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  3023                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties SamplesRecorded[%d]"),value));
       
  3024                         iLog->Log(_L("CGStreamerTestClass::CheckProperties SamplesRecorded[%d]"),value);
       
  3025                         }
       
  3026 
       
  3027                     else if(!property.Compare(KTagLeftBalanceProperty()))
       
  3028                         {                  
       
  3029                             g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  3030                          }             
       
  3031               
       
  3032                     else if(!property.Compare(KTagRightBalanceProperty()))
       
  3033                         {
       
  3034                         
       
  3035                             g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  3036 
       
  3037                             }
       
  3038                    
       
  3039                     if(value == ValueExpected)
       
  3040                         {
       
  3041                     FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties EDEVSOUNDSRC OK")));
       
  3042                     iLog->Log(_L("CGStreamerTestClass::CheckProperties EDEVSOUNDSRC OK " ));
       
  3043                         }
       
  3044                     else
       
  3045                         {
       
  3046                     FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties EDEVSOUNDSRC Error ValueExpected [%d]"),ValueExpected));
       
  3047                     iLog->Log(_L("CGStreamerTestClass::CheckProperties EDEVSOUNDSRC ValueExpected [%d]"),ValueExpected);
       
  3048                         error = KErrGeneral;
       
  3049                         gst_element_set_state (iObjects->iPipeline,GST_STATE_NULL);
       
  3050                         }
       
  3051                     delete prop;
       
  3052                     }
       
  3053                 break;
       
  3054                 }            
       
  3055             case   EDEVSOUNDSINK:
       
  3056                 {
       
  3057                 if(!iObjects->iSink)
       
  3058                     {
       
  3059                     error = KErrNotFound;
       
  3060                     }
       
  3061                 else
       
  3062                     {
       
  3063                     TPtrC property;
       
  3064                     TInt value(0);
       
  3065                     aItem.GetNextString(property);
       
  3066                     HBufC8* prop = HBufC8::NewL(property.Length()+ 1);
       
  3067                     TPtr8 des = prop->Des();
       
  3068                     des.Copy(property);
       
  3069                     if(!property.Compare(KTagVolumeProperty()))
       
  3070                         {
       
  3071                         g_object_get (G_OBJECT (iObjects->iSink),(const char *)(des.PtrZ()), &value, NULL); 
       
  3072                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties Volume[%d]"),value));
       
  3073                         iLog->Log(_L("CGStreamerTestClass::CheckProperties Volume[%d]"),value);
       
  3074                         }
       
  3075                     else if(!property.Compare(KTagRateProperty()))
       
  3076                         {
       
  3077                         g_object_get (G_OBJECT (iObjects->iSink),(const char *)(des.PtrZ()), &value, NULL); 
       
  3078                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties rate [%d]"),value));
       
  3079                         iLog->Log(_L("CGStreamerTestClass::CheckProperties rate[%d]"),value);
       
  3080                         }
       
  3081                     else if(!property.Compare(KTagChannelsProperty()))
       
  3082                         {
       
  3083                         g_object_get (G_OBJECT (iObjects->iSink),(const char *)(des.PtrZ()), &value, NULL); 
       
  3084                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties channels [%d]"),value));
       
  3085                         iLog->Log(_L("CGStreamerTestClass::CheckProperties channels[%d]"),value);
       
  3086                         }
       
  3087                     else if(!property.Compare(KTagMaxVolumeProperty()))
       
  3088                         {
       
  3089                         g_object_get (G_OBJECT (iObjects->iSink),(const char *)(des.PtrZ()), &value, NULL); 
       
  3090                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties max vol[%d] "),value));
       
  3091                         iLog->Log(_L("CGStreamerTestClass::CheckProperties max vol[%d]"),value);
       
  3092                         }
       
  3093                     else if(!property.Compare(KTagSamplesPlayedProperty()))
       
  3094                         {
       
  3095                         g_object_get (G_OBJECT (iObjects->iSink),(const char *)(des.PtrZ()), &value, NULL); 
       
  3096                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties samples played[%d] "),value));
       
  3097                         iLog->Log(_L("CGStreamerTestClass::CheckProperties samples played[%d]"),value);
       
  3098                         }
       
  3099                     delete prop;
       
  3100                     }
       
  3101                 break;
       
  3102                 }
       
  3103             default:
       
  3104                 error = KErrNotFound;
       
  3105                 break;
       
  3106             }
       
  3107         iLog->Log(_L(">>CGStreamerTestClass::CheckProperties Error[%d]"),error);
       
  3108         return error;
       
  3109     iLog->Log(_L("<<CGStreamerTestClass::CheckProperties"));   
       
  3110     return KErrNone;
       
  3111     }
       
  3112 
       
  3113 TInt CGStreamerTestClass::SeekElement( CStifItemParser& aItem )
       
  3114     {   
       
  3115     FTRACE(FPrint(_L("CGStreamerTestClass::SeekElement")));
       
  3116     iLog->Log(_L(">>CGStreamerTestClass::SeekElement"));   
       
  3117     //
       
  3118     TInt time;
       
  3119     GstFormat fmt = GST_FORMAT_TIME;
       
  3120     gint64 pos1, len1 , pos2 , len2;
       
  3121 
       
  3122     aItem.GetNextInt(time);
       
  3123     if (gst_element_query_position (iObjects->iPipeline, &fmt, &pos1)
       
  3124       && gst_element_query_duration (iObjects->iPipeline, &fmt, &len1)) {
       
  3125     iLog->Log(_L("CGStreamerTestClass:: before seek query position and duration error"));
       
  3126     }
       
  3127     pos1 = (pos1 / GST_SECOND ) ;
       
  3128     len1 = (len1 / GST_SECOND ) ;
       
  3129     time = pos1 + (time);
       
  3130     if (!gst_element_seek (iObjects->iPipeline, 1.0 , GST_FORMAT_TIME, GST_SEEK_FLAG_ACCURATE,
       
  3131                              GST_SEEK_TYPE_SET, time*GST_SECOND ,
       
  3132                              GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE)) {
       
  3133     iLog->Log(_L("<<CGStreamerTestClass::SeekElement Failed"));
       
  3134       }
       
  3135 
       
  3136     if (gst_element_query_position (iObjects->iPipeline, &fmt, &pos2)
       
  3137       && gst_element_query_duration (iObjects->iPipeline, &fmt, &len2)) {
       
  3138     iLog->Log(_L("CGStreamerTestClass:: after seek query position and duration error"));
       
  3139     }
       
  3140     pos2 = (pos2 / GST_SECOND ) ;
       
  3141     len2 = (len2 / GST_SECOND ) ;
       
  3142     iLog->Log(_L("<<CGStreamerTestClass::SeekElement"));   
       
  3143     return KErrNone;
       
  3144     }
       
  3145 
       
  3146 
       
  3147 
       
  3148 
       
  3149 //  End of File
  2340 //  End of File