gst_plugins_symbian/tsrc/gstreamertestmodule/src/GStreamerTestClassBlocks.cpp
changeset 16 8e837d1bf446
parent 2 5505e8908944
child 11 1373546e05c6
equal deleted inserted replaced
15:4b0c6ed43234 16:8e837d1bf446
    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>
    33 
    34 
    34 
    35 
    35 _LIT8(defaultMedia,"audio/x-raw-int");
    36 _LIT8(defaultMedia,"audio/x-raw-int");
    36 _LIT8(amrMedia,"audio/amr");
    37 _LIT8(amrMedia,"audio/amr");
    37 _LIT8(g711Media,"audio/x-alaw");
    38 _LIT8(g711Media,"audio/x-alaw");
   111     iWavparse = NULL;
   112     iWavparse = NULL;
   112     iDecoder = NULL;
   113     iDecoder = NULL;
   113     iFakesink = NULL;
   114     iFakesink = NULL;
   114     iFilesink = NULL;
   115     iFilesink = NULL;
   115     iEncoder = NULL;
   116     iEncoder = NULL;
       
   117     iAACEncoder = NULL;
       
   118     iQtMux = NULL;
       
   119     iAmrMux = NULL;
   116     iFilter = NULL;
   120     iFilter = NULL;
   117     iWavenc = NULL;
   121     iWavenc = NULL;
   118     iBus = NULL;
   122     iBus = NULL;
   119     iCaps = NULL;
   123     iCaps = NULL;
   120     iG711EncoderIntfc = NULL;
   124     iG711EncoderIntfc = NULL;
   182       g_free (debug);
   186       g_free (debug);
   183       g_print ("Error: %s\n", err->message);
   187       g_print ("Error: %s\n", err->message);
   184       g_error_free (err);
   188       g_error_free (err);
   185       break;
   189       break;
   186     }
   190     }
       
   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;
   187     default:
   199     default:
   188       break;
   200       break;
   189   }
   201   }
   190 
   202 
   191   return TRUE;
   203   return TRUE;
   262         ENTRY( "SetTimeout", CGStreamerTestClass::SetTimeout ),
   274         ENTRY( "SetTimeout", CGStreamerTestClass::SetTimeout ),
   263         ENTRY( "SetAllowedPanic", CGStreamerTestClass::SetAllowedPanic ),
   275         ENTRY( "SetAllowedPanic", CGStreamerTestClass::SetAllowedPanic ),
   264         ENTRY( "SetExpectedEvents", CGStreamerTestClass::SetExpectedEvents ),
   276         ENTRY( "SetExpectedEvents", CGStreamerTestClass::SetExpectedEvents ),
   265         ENTRY( "SetMainLoopRun", CGStreamerTestClass::SetMainLoopRun ),
   277         ENTRY( "SetMainLoopRun", CGStreamerTestClass::SetMainLoopRun ),
   266         ENTRY( "SetCapsInPipeLine", CGStreamerTestClass::SetCapsInPipeLine ),
   278         ENTRY( "SetCapsInPipeLine", CGStreamerTestClass::SetCapsInPipeLine ),
   267 		
   279         ENTRY( "StopRecording", CGStreamerTestClass::StopRecording ),
       
   280         ENTRY( "SeekElement", CGStreamerTestClass::SeekElement ),
       
   281         ENTRY( "CheckProperties", CGStreamerTestClass::CheckProperties ),
       
   282         ENTRY( "GstReliabilitytestPlaypause", CGStreamerTestClass::GstReliabilitytestPlaypause ),
       
   283         ENTRY( "GstReliabilitytestRecording", CGStreamerTestClass::GstReliabilitytestRecording ),
   268         };
   284         };
   269 
   285 
   270     const TInt count = sizeof( KFunctions ) / 
   286     const TInt count = sizeof( KFunctions ) / 
   271                         sizeof( TStifFunctionInfo );
   287                         sizeof( TStifFunctionInfo );
   272 
   288 
   592     gst_bus_add_watch(iObjects->iBus, bus_call, data);
   608     gst_bus_add_watch(iObjects->iBus, bus_call, data);
   593     gst_object_unref (iObjects->iBus);
   609     gst_object_unref (iObjects->iBus);
   594     iLog->Log(_L("<<CGStreamerTestClass::InitPipeLine"));   
   610     iLog->Log(_L("<<CGStreamerTestClass::InitPipeLine"));   
   595     return KErrNone;
   611     return KErrNone;
   596     }
   612     }
       
   613 	
       
   614 
   597 
   615 
   598 TInt CGStreamerTestClass::SetMainLoopRun( CStifItemParser& /*aItem*/ )
   616 TInt CGStreamerTestClass::SetMainLoopRun( CStifItemParser& /*aItem*/ )
   599     {
   617     {
   600     TInt error(KErrNone);
   618     TInt error(KErrNone);
   601     iLog->Log(_L(">>CGStreamerTestClass::SetMainLoopRun"));
   619     iLog->Log(_L(">>CGStreamerTestClass::SetMainLoopRun"));
   738                 {
   756                 {
   739                 iObjects->iEncoder = gst_element_factory_make("wavenc", "wavencoder");             
   757                 iObjects->iEncoder = gst_element_factory_make("wavenc", "wavencoder");             
   740                 }
   758                 }
   741             break;
   759             break;
   742             }
   760             }
       
   761         case   ENOKIAAACENCODER:	        
       
   762             {
       
   763             if(iObjects->iAACEncoder)
       
   764                 {
       
   765                 error = KErrAlreadyExists;
       
   766                 }
       
   767             else
       
   768                 {
       
   769                 iObjects->iAACEncoder = gst_element_factory_make("nokiaaacenc", "nokiaaacenc");     
       
   770                 if( iObjects->iAACEncoder == NULL )
       
   771                     iLog->Log(_L(" iObjects->iAACEncoder == NULL"));
       
   772                 }
       
   773             break;
       
   774             }
       
   775         case   ENOKIAQTMUX:            
       
   776             {
       
   777             if(iObjects->iQtMux)
       
   778                 {
       
   779                 error = KErrAlreadyExists;
       
   780                 }
       
   781             else
       
   782                 {
       
   783                 iObjects->iQtMux = gst_element_factory_make("mp4mux", "mp4mux");     
       
   784                 if( iObjects->iQtMux == NULL )
       
   785                     iLog->Log(_L(" iObjects->iQtMux == NULL"));
       
   786                 }
       
   787             break;
       
   788             }       
       
   789         case   ENOKIAAMRMUX:            
       
   790             {
       
   791             if(iObjects->iAmrMux)
       
   792                 {
       
   793                 error = KErrAlreadyExists;
       
   794                 }
       
   795             else
       
   796                 {
       
   797                 iObjects->iAmrMux = gst_element_factory_make("amrmux", "amrmux");     
       
   798                 if( iObjects->iAmrMux == NULL )
       
   799                     iLog->Log(_L(" iObjects->iAmrMux == NULL"));
       
   800                 }
       
   801             break;
       
   802             }            
   743 	    case   ERESAMPLER:
   803 	    case   ERESAMPLER:
   744             {
   804             {
   745             if(iObjects->iResampler)
   805             if(iObjects->iResampler)
   746                 {
   806                 {
   747                 error = KErrAlreadyExists;
   807                 error = KErrAlreadyExists;
   888             else
   948             else
   889                 {
   949                 {
   890                 }
   950                 }
   891             break;
   951             break;
   892             }
   952             }
       
   953         case   ENOKIAAACENCODER:
       
   954             {
       
   955             if(!iObjects->iAACEncoder)
       
   956                 {
       
   957                 error = KErrNotFound;
       
   958                 }
       
   959             else
       
   960                 {
       
   961                 }
       
   962             break;
       
   963             }            
       
   964         case   ENOKIAQTMUX:
       
   965             {
       
   966             if(!iObjects->iQtMux)
       
   967                 {
       
   968                 error = KErrNotFound;
       
   969                 }
       
   970             else
       
   971                 {
       
   972                 }
       
   973             break;
       
   974             }              
       
   975         case   ENOKIAAMRMUX:
       
   976             {
       
   977             if(!iObjects->iAmrMux)
       
   978                 {
       
   979                 error = KErrNotFound;
       
   980                 }
       
   981             else
       
   982                 {
       
   983                     gboolean header;
       
   984                     g_object_get (G_OBJECT (iObjects->iAmrMux), "header", &header, NULL); 
       
   985 
       
   986                 }
       
   987             break;
       
   988             }             
   893         case   ERESAMPLER:
   989         case   ERESAMPLER:
   894             {
   990             {
   895             if(!iObjects->iResampler)
   991             if(!iObjects->iResampler)
   896                 {
   992                 {
   897                 error = KErrNotFound;
   993                 error = KErrNotFound;
   954                     {
  1050                     {
   955                     g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
  1051                     g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
   956                     FTRACE(FPrint(_L("CGStreamerTestClass::GetElementProperties SamplesRecorded[%d]"),value));
  1052                     FTRACE(FPrint(_L("CGStreamerTestClass::GetElementProperties SamplesRecorded[%d]"),value));
   957                     iLog->Log(_L("CGStreamerTestClass::GetElementProperties SamplesRecorded[%d]"),value);
  1053                     iLog->Log(_L("CGStreamerTestClass::GetElementProperties SamplesRecorded[%d]"),value);
   958                     }
  1054                     }
       
  1055 				else if(!property.Compare(KTagLeftBalanceProperty()))
       
  1056                     {                  
       
  1057                         g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  1058                      }             
       
  1059           
       
  1060                 else if(!property.Compare(KTagRightBalanceProperty()))
       
  1061                     {
       
  1062                     
       
  1063                         g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  1064 
       
  1065                         }	
   959                 delete prop;
  1066                 delete prop;
   960                 }
  1067                 }
   961             break;
  1068             break;
   962             }            
  1069             }            
   963         case   EDEVSOUNDSINK:
  1070         case   EDEVSOUNDSINK:
  1117             else
  1224             else
  1118                 {
  1225                 {
  1119                 }
  1226                 }
  1120             break;
  1227             break;
  1121             }
  1228             }
       
  1229         case   ENOKIAAACENCODER:
       
  1230             {
       
  1231             if(!iObjects->iAACEncoder)
       
  1232                 {
       
  1233                 error = KErrNotFound;
       
  1234                 }
       
  1235             else
       
  1236                 {
       
  1237                 }
       
  1238             break;
       
  1239             }            
       
  1240         case   ENOKIAQTMUX:
       
  1241             {
       
  1242             if(!iObjects->iQtMux)
       
  1243                 {
       
  1244                 error = KErrNotFound;
       
  1245                 }
       
  1246             else
       
  1247                 {
       
  1248                 }
       
  1249             break;
       
  1250             }               
       
  1251         case   ENOKIAAMRMUX:
       
  1252             {
       
  1253             if(!iObjects->iAmrMux)
       
  1254                 {
       
  1255                 error = KErrNotFound;
       
  1256                 }
       
  1257             else
       
  1258                 {
       
  1259                     TInt value;
       
  1260                     aItem.GetNextInt(value);
       
  1261                     g_object_set (G_OBJECT (iObjects->iAmrMux), "header", (gboolean)value, NULL);                     
       
  1262                 }
       
  1263             break;
       
  1264             }              
  1122         case   ERESAMPLER:
  1265         case   ERESAMPLER:
  1123             {
  1266             {
  1124             if(!iObjects->iResampler)
  1267             if(!iObjects->iResampler)
  1125                 {
  1268                 {
  1126                 error = KErrNotFound;
  1269                 error = KErrNotFound;
  1226                         {
  1369                         {
  1227                         error = KErrNotFound;
  1370                         error = KErrNotFound;
  1228                         }
  1371                         }
  1229                     }
  1372                     }
  1230                 else if(!property.Compare(KTagPereferenceProperty()))
  1373                 else if(!property.Compare(KTagPereferenceProperty()))
       
  1374                     {
       
  1375                     TInt value;
       
  1376                     if(!aItem.GetNextInt(value))
       
  1377                         {
       
  1378                         g_object_set (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), value, NULL); 
       
  1379                         }
       
  1380                     else
       
  1381                         {
       
  1382                         error = KErrNotFound;
       
  1383                         }
       
  1384                     }
       
  1385                 else if(!property.Compare(KTagNumBuffersProperty()))
  1231                     {
  1386                     {
  1232                     TInt value;
  1387                     TInt value;
  1233                     if(!aItem.GetNextInt(value))
  1388                     if(!aItem.GetNextInt(value))
  1234                         {
  1389                         {
  1235                         g_object_set (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), value, NULL); 
  1390                         g_object_set (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), value, NULL); 
  1490                 {
  1645                 {
  1491                 gst_bin_add_many(GST_BIN (iObjects->iPipeline),iObjects->iEncoder, NULL);
  1646                 gst_bin_add_many(GST_BIN (iObjects->iPipeline),iObjects->iEncoder, NULL);
  1492                 }
  1647                 }
  1493             break;
  1648             break;
  1494             }
  1649             }
       
  1650         case   ENOKIAAACENCODER:
       
  1651             {
       
  1652             iLog->Log(_L("<<CGStreamerTestClass::AddElementToPipeline ENOKIAAACENCODER"));
       
  1653             if(!iObjects->iAACEncoder)
       
  1654                 {
       
  1655                 error = KErrNotFound;
       
  1656                 }
       
  1657             else
       
  1658                 {
       
  1659                 gst_bin_add_many(GST_BIN (iObjects->iPipeline),iObjects->iAACEncoder, NULL);
       
  1660                 }
       
  1661             break;
       
  1662             }            
       
  1663         case   ENOKIAQTMUX:
       
  1664             {
       
  1665             
       
  1666             if(!iObjects->iQtMux)
       
  1667                 {
       
  1668                 error = KErrNotFound;
       
  1669                 }
       
  1670             else
       
  1671                 {
       
  1672                 gst_bin_add_many(GST_BIN (iObjects->iPipeline),iObjects->iQtMux, NULL);
       
  1673                 }
       
  1674             break;
       
  1675             }     
       
  1676         case   ENOKIAAMRMUX:
       
  1677             {
       
  1678             
       
  1679             if(!iObjects->iAmrMux)
       
  1680                 {
       
  1681                 error = KErrNotFound;
       
  1682                 }
       
  1683             else
       
  1684                 {
       
  1685                 gst_bin_add_many(GST_BIN (iObjects->iPipeline),iObjects->iAmrMux, NULL);
       
  1686                 }
       
  1687             break;
       
  1688             }             
  1495         case   ERESAMPLER:
  1689         case   ERESAMPLER:
  1496             {
  1690             {
  1497             if(!iObjects->iResampler)
  1691             if(!iObjects->iResampler)
  1498                 {
  1692                 {
  1499                 error = KErrNotFound;
  1693                 error = KErrNotFound;
  1563     aItem.GetNextInt(element);
  1757     aItem.GetNextInt(element);
  1564     ret = gst_element_set_state (iObjects->iPipeline, static_cast<GstState>(element) ); 
  1758     ret = gst_element_set_state (iObjects->iPipeline, static_cast<GstState>(element) ); 
  1565     iLog->Log(_L("<<CGStreamerTestClass::SetPipelineState Error[%d] ret[%d]"),error,ret);
  1759     iLog->Log(_L("<<CGStreamerTestClass::SetPipelineState Error[%d] ret[%d]"),error,ret);
  1566     return error;
  1760     return error;
  1567     }
  1761     }
       
  1762 
       
  1763 
  1568 
  1764 
  1569 TInt CGStreamerTestClass::SetCapsInPipeLine( CStifItemParser& aItem )
  1765 TInt CGStreamerTestClass::SetCapsInPipeLine( CStifItemParser& aItem )
  1570     {
  1766     {
  1571     TInt error(KErrNone);
  1767     TInt error(KErrNone);
  1572     TInt width(16);
  1768     TInt width(16);
  2247                     {
  2443                     {
  2248                     array.Append(iObjects->iEncoder);
  2444                     array.Append(iObjects->iEncoder);
  2249                     }
  2445                     }
  2250                 break;
  2446                 break;
  2251                 }
  2447                 }
       
  2448             case   ENOKIAAACENCODER:
       
  2449                 {
       
  2450                 if(!iObjects->iAACEncoder)
       
  2451                     {
       
  2452                     error = KErrNotFound;
       
  2453                     }
       
  2454                 else
       
  2455                     {
       
  2456                     array.Append(iObjects->iAACEncoder);
       
  2457                     }
       
  2458                 break;
       
  2459                 }                
       
  2460             case   ENOKIAQTMUX:
       
  2461                 {
       
  2462                 if(!iObjects->iQtMux)
       
  2463                     {
       
  2464                     error = KErrNotFound;
       
  2465                     }
       
  2466                 else
       
  2467                     {
       
  2468                     array.Append(iObjects->iQtMux);
       
  2469                     }
       
  2470                 break;
       
  2471                 }                  
       
  2472             case   ENOKIAAMRMUX:
       
  2473                 {
       
  2474                 if(!iObjects->iAmrMux)
       
  2475                     {
       
  2476                     error = KErrNotFound;
       
  2477                     }
       
  2478                 else
       
  2479                     {
       
  2480                     array.Append(iObjects->iAmrMux);
       
  2481                     }
       
  2482                 break;
       
  2483                 }                 
  2252             case   ERESAMPLER:
  2484             case   ERESAMPLER:
  2253                 {
  2485                 {
  2254                 if(!iObjects->iResampler)
  2486                 if(!iObjects->iResampler)
  2255                     {
  2487                     {
  2256                     error = KErrNotFound;
  2488                     error = KErrNotFound;
  2324                 gst_caps_unref(iObjects->iCaps);
  2556                 gst_caps_unref(iObjects->iCaps);
  2325                 iObjects->iCaps = NULL;
  2557                 iObjects->iCaps = NULL;
  2326                 }
  2558                 }
  2327             else
  2559             else
  2328                 {
  2560                 {
  2329                 linkOK = gst_element_link(array[i-1],array[i]);
  2561                     if( array[i] == iObjects->iQtMux)
       
  2562                     {
       
  2563                         iLog->Log(_L("array[i] == iObjects->iQtMux"));
       
  2564                         GstPad* qtsinkpad  = gst_element_get_request_pad( array[i], "audio_%d");
       
  2565                         if( !qtsinkpad )
       
  2566                             {
       
  2567                                 iLog->Log(_L("qtsinkpad failed"));
       
  2568                             }
       
  2569                         GstPad* aacencsrcpad  = gst_element_get_pad( array[i-1], "src");
       
  2570                         if( !aacencsrcpad )
       
  2571                             {
       
  2572                                 iLog->Log(_L("aacencsrcpad failed"));
       
  2573                             }
       
  2574                         
       
  2575                         //linkOK = gst_pad_link (aacencsrcpad,qtsinkpad);
       
  2576                         if( gst_pad_link (aacencsrcpad,qtsinkpad) != GST_PAD_LINK_OK )
       
  2577                             {
       
  2578                         iLog->Log(_L("gst_pad_link (aacencsrcpad,qtsinkpad) failed"));
       
  2579                         linkOK = 0;
       
  2580                             }
       
  2581                     }
       
  2582                     else
       
  2583                     {    
       
  2584                         linkOK = gst_element_link(array[i-1],array[i]);
       
  2585                     }
  2330                 }
  2586                 }
  2331             }        
  2587             }        
  2332         }
  2588         }
  2333     
  2589     
  2334     array.Close();
  2590     array.Close();
  2335     iLog->Log(_L("<<CGStreamerTestClass::LinkElementsInPipeline Error[%d]"),linkOK);
  2591     iLog->Log(_L("<<CGStreamerTestClass::LinkElementsInPipeline Error[%d]"),linkOK);
  2336     return error;
  2592     return error;
  2337     }
  2593     }
  2338 
  2594 
  2339 
  2595 
       
  2596 
       
  2597 
       
  2598 
       
  2599 
       
  2600 
       
  2601 
       
  2602 
       
  2603 
       
  2604 
       
  2605 
       
  2606 
       
  2607 TInt CGStreamerTestClass::StopRecording( CStifItemParser& /*aItem*/ )
       
  2608     {   
       
  2609     FTRACE(FPrint(_L("CGStreamerTestClass::StopRecording")));
       
  2610     iLog->Log(_L(">>CGStreamerTestClass::StopRecording"));   
       
  2611     gst_element_send_event (iObjects->iPipeline, gst_event_new_eos ());
       
  2612     iLog->Log(_L("<<CGStreamerTestClass::StopRecording"));   
       
  2613     return KErrNone;
       
  2614     }
       
  2615 
       
  2616 TInt CGStreamerTestClass::GstReliabilitytestRecording( CStifItemParser& aItem )
       
  2617     {   
       
  2618     FTRACE(FPrint(_L("CGStreamerTestClass::GstReliabilitytestRecording")));
       
  2619     iLog->Log(_L(">>CGStreamerTestClass::GstReliabilitytestRecording"));   
       
  2620     TInt i=0;
       
  2621     aItem.GetNextInt(i);
       
  2622     while(--i)
       
  2623         {
       
  2624          gst_element_set_state (iObjects->iPipeline, GST_STATE_PLAYING );
       
  2625          sleep (60);
       
  2626         }
       
  2627     iLog->Log(_L("<<CGStreamerTestClass::GstReliabilitytestRecording"));   
       
  2628     return KErrNone;
       
  2629     }
       
  2630 
       
  2631 
       
  2632 TInt CGStreamerTestClass::GstReliabilitytestPlaypause( CStifItemParser& aItem )
       
  2633     {   
       
  2634     FTRACE(FPrint(_L("CGStreamerTestClass::GstReliabilitytestPlaypause")));
       
  2635     iLog->Log(_L(">>CGStreamerTestClass::GstReliabilitytestPlaypause"));   
       
  2636     TInt i=0;
       
  2637     aItem.GetNextInt(i);
       
  2638     //aItem.GetNextInt(element);
       
  2639     while( --i )
       
  2640         {
       
  2641         gst_element_set_state (iObjects->iPipeline, GST_STATE_PLAYING );
       
  2642         sleep(10);
       
  2643         gst_element_set_state (iObjects->iPipeline, GST_STATE_PAUSED );
       
  2644         sleep(2);
       
  2645         }
       
  2646     iLog->Log(_L("<<CGStreamerTestClass::GstReliabilitytestPlaypause"));   
       
  2647     return KErrNone;
       
  2648     }
       
  2649 
       
  2650 static gint convert_devsound_rate(gint devsound_rate)
       
  2651     {
       
  2652     gint result;
       
  2653 
       
  2654     switch (devsound_rate)
       
  2655         {
       
  2656         case 1:
       
  2657             result=8000;
       
  2658             break;
       
  2659         case 2:
       
  2660             result=11025;
       
  2661             break;
       
  2662         case 4:
       
  2663             result=16000;
       
  2664             break;
       
  2665         case 8:
       
  2666             result=22050;
       
  2667             break;
       
  2668         case 16:
       
  2669             result=32000;
       
  2670             break;
       
  2671         case 32:
       
  2672             result=44100;
       
  2673             break;
       
  2674         case 64:
       
  2675             result=48000;
       
  2676             break;
       
  2677         case 128:
       
  2678             result=88200;
       
  2679             break;
       
  2680         case 256:
       
  2681             result=96000;
       
  2682             break;
       
  2683         case 512:
       
  2684             result=12000;
       
  2685             break;
       
  2686         case 1024:
       
  2687             result=24000;
       
  2688             break;
       
  2689         case 2048:
       
  2690             result=64000;
       
  2691             break;
       
  2692         default:
       
  2693             result=8000;
       
  2694             break;
       
  2695 
       
  2696         }
       
  2697     return result;
       
  2698 
       
  2699     }
       
  2700 
       
  2701 TInt CGStreamerTestClass::CheckProperties( CStifItemParser& aItem )
       
  2702     {   
       
  2703     FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties")));
       
  2704     iLog->Log(_L(">>CGStreamerTestClass::CheckProperties"));   
       
  2705     TInt error = KErrNone;
       
  2706     TInt element;
       
  2707     TInt ValueExpected(0);
       
  2708     aItem.GetNextInt(element);
       
  2709         switch(element)
       
  2710             {
       
  2711             case   EFILESOURCE:
       
  2712                 {
       
  2713                 if(!iObjects->iSource)
       
  2714                     {
       
  2715                     error = KErrNotFound;
       
  2716                     }
       
  2717                 else
       
  2718                     {
       
  2719                     }
       
  2720                 break;
       
  2721                 }
       
  2722             case   EFILESINK:
       
  2723                 {
       
  2724                 if(!iObjects->iSink)
       
  2725                     {
       
  2726                     error = KErrNotFound;
       
  2727                     }
       
  2728                 else
       
  2729                     {
       
  2730                     }
       
  2731                 break;
       
  2732                 }
       
  2733             case   EFAKESOURCE:
       
  2734                 {
       
  2735                 if(!iObjects->iSource)
       
  2736                     {
       
  2737                     error = KErrNotFound;
       
  2738                     }
       
  2739                 else
       
  2740                     {
       
  2741                     }
       
  2742                 break;
       
  2743                 }
       
  2744             case   EFAKESINK:
       
  2745                 {
       
  2746                 if(!iObjects->iSink)
       
  2747                     {
       
  2748                     error = KErrNotFound;
       
  2749                     }
       
  2750                 else
       
  2751                     {
       
  2752                     }
       
  2753                 break;
       
  2754                 }
       
  2755             case   EWAVPARSE:
       
  2756                 {
       
  2757                 if(!iObjects->iWavparse)
       
  2758                     {
       
  2759                     error = KErrNotFound;
       
  2760                     }
       
  2761                 else
       
  2762                     {
       
  2763                     }
       
  2764                 break;
       
  2765                 }
       
  2766             case   EMP3DECODER:
       
  2767                 {
       
  2768                 if(!iObjects->iDecoder)
       
  2769                     {
       
  2770                     error = KErrNotFound;
       
  2771                     }
       
  2772                 else
       
  2773                     {
       
  2774                     }
       
  2775                 break;
       
  2776                 }
       
  2777             case   EWAVEENCODER:
       
  2778                 {
       
  2779                 if(!iObjects->iEncoder)
       
  2780                     {
       
  2781                     error = KErrNotFound;
       
  2782                     }
       
  2783                 else
       
  2784                     {
       
  2785                     }
       
  2786                 break;
       
  2787                 }
       
  2788             case   ENOKIAAACENCODER:
       
  2789                 {
       
  2790                 if(!iObjects->iAACEncoder)
       
  2791                     {
       
  2792                     error = KErrNotFound;
       
  2793                     }
       
  2794                 else
       
  2795                     {
       
  2796                     }
       
  2797                 break;
       
  2798                 }
       
  2799             case   ENOKIAQTMUX:
       
  2800                 {
       
  2801                 if(!iObjects->iQtMux)
       
  2802                     {
       
  2803                     error = KErrNotFound;
       
  2804                     }
       
  2805                 else
       
  2806                     {
       
  2807                     }
       
  2808                 break;
       
  2809                 }
       
  2810             case   ENOKIAAMRMUX:
       
  2811                 {
       
  2812                 if(!iObjects->iAmrMux)
       
  2813                     {
       
  2814                     error = KErrNotFound;
       
  2815                     }
       
  2816                 else
       
  2817                     {
       
  2818                     }
       
  2819                 break;
       
  2820                 }                
       
  2821             case   ERESAMPLER:
       
  2822                 {
       
  2823                 if(!iObjects->iResampler)
       
  2824                     {
       
  2825                     error = KErrNotFound;
       
  2826                     }
       
  2827                 else
       
  2828                     {
       
  2829                     }
       
  2830                 break;
       
  2831                 }
       
  2832             case   ECONVERTER:
       
  2833                 {
       
  2834                 if(!iObjects->iConverter)
       
  2835                     {
       
  2836                     error = KErrNotFound;
       
  2837                     }
       
  2838                 else
       
  2839                     {
       
  2840                     }
       
  2841                 break;
       
  2842                 }
       
  2843             case   EDEVSOUNDSRC:
       
  2844                 {
       
  2845                 if(!iObjects->iSource)
       
  2846                     {
       
  2847                     error = KErrNotFound;
       
  2848                     }
       
  2849                 else
       
  2850                     {
       
  2851                     TPtrC property;
       
  2852                     TInt value(0);
       
  2853                     aItem.GetNextString(property);
       
  2854                     aItem.GetNextInt(ValueExpected);
       
  2855                     HBufC8* prop = HBufC8::NewL(property.Length()+ 1);
       
  2856                     TPtr8 des = prop->Des();
       
  2857                     des.Copy(property);
       
  2858                     if(!property.Compare(KTagGainProperty()))
       
  2859                         {
       
  2860                         g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  2861                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties GetGain[%d]"),value));
       
  2862                         iLog->Log(_L("CGStreamerTestClass::CheckProperties GetGain[%d]"),value);
       
  2863                         }
       
  2864                     else if(!property.Compare(KTagRateProperty()))
       
  2865                         {
       
  2866                         g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL);
       
  2867                         value = convert_devsound_rate(value);
       
  2868                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties GetRate[%d]"),value));
       
  2869                         iLog->Log(_L("CGStreamerTestClass::CheckProperties GetRate[%d]"),value);
       
  2870                         }
       
  2871                     else if(!property.Compare(KTagChannelsProperty()))
       
  2872                         {
       
  2873                         g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  2874                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties Channels[%d]"),value));
       
  2875                         iLog->Log(_L("CGStreamerTestClass::CheckProperties channels[%d]"),value);
       
  2876                         }
       
  2877                     else if(!property.Compare(KTagMaxGainProperty()))
       
  2878                         {
       
  2879                         g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  2880                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties MaxGain[%d]"),value));
       
  2881                         iLog->Log(_L("CGStreamerTestClass::CheckProperties Max Gain[%d]"),value);
       
  2882                         }
       
  2883                     else if(!property.Compare(KTagSamplesRecordedProperty()))
       
  2884                         {
       
  2885                         g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  2886                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties SamplesRecorded[%d]"),value));
       
  2887                         iLog->Log(_L("CGStreamerTestClass::CheckProperties SamplesRecorded[%d]"),value);
       
  2888                         }
       
  2889 
       
  2890                     else if(!property.Compare(KTagLeftBalanceProperty()))
       
  2891                         {                  
       
  2892                             g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  2893                          }             
       
  2894               
       
  2895                     else if(!property.Compare(KTagRightBalanceProperty()))
       
  2896                         {
       
  2897                         
       
  2898                             g_object_get (G_OBJECT (iObjects->iSource),(const char *)(des.PtrZ()), &value, NULL); 
       
  2899 
       
  2900                             }
       
  2901                    
       
  2902                     if(value == ValueExpected)
       
  2903                         {
       
  2904                     FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties EDEVSOUNDSRC OK")));
       
  2905                     iLog->Log(_L("CGStreamerTestClass::CheckProperties EDEVSOUNDSRC OK " ));
       
  2906                         }
       
  2907                     else
       
  2908                         {
       
  2909                     FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties EDEVSOUNDSRC Error ValueExpected [%d]"),ValueExpected));
       
  2910                     iLog->Log(_L("CGStreamerTestClass::CheckProperties EDEVSOUNDSRC ValueExpected [%d]"),ValueExpected);
       
  2911                         error = KErrGeneral;
       
  2912                         gst_element_set_state (iObjects->iPipeline,GST_STATE_NULL);
       
  2913                         }
       
  2914                     delete prop;
       
  2915                     }
       
  2916                 break;
       
  2917                 }            
       
  2918             case   EDEVSOUNDSINK:
       
  2919                 {
       
  2920                 if(!iObjects->iSink)
       
  2921                     {
       
  2922                     error = KErrNotFound;
       
  2923                     }
       
  2924                 else
       
  2925                     {
       
  2926                     TPtrC property;
       
  2927                     TInt value(0);
       
  2928                     aItem.GetNextString(property);
       
  2929                     HBufC8* prop = HBufC8::NewL(property.Length()+ 1);
       
  2930                     TPtr8 des = prop->Des();
       
  2931                     des.Copy(property);
       
  2932                     if(!property.Compare(KTagVolumeProperty()))
       
  2933                         {
       
  2934                         g_object_get (G_OBJECT (iObjects->iSink),(const char *)(des.PtrZ()), &value, NULL); 
       
  2935                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties Volume[%d]"),value));
       
  2936                         iLog->Log(_L("CGStreamerTestClass::CheckProperties Volume[%d]"),value);
       
  2937                         }
       
  2938                     else if(!property.Compare(KTagRateProperty()))
       
  2939                         {
       
  2940                         g_object_get (G_OBJECT (iObjects->iSink),(const char *)(des.PtrZ()), &value, NULL); 
       
  2941                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties rate [%d]"),value));
       
  2942                         iLog->Log(_L("CGStreamerTestClass::CheckProperties rate[%d]"),value);
       
  2943                         }
       
  2944                     else if(!property.Compare(KTagChannelsProperty()))
       
  2945                         {
       
  2946                         g_object_get (G_OBJECT (iObjects->iSink),(const char *)(des.PtrZ()), &value, NULL); 
       
  2947                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties channels [%d]"),value));
       
  2948                         iLog->Log(_L("CGStreamerTestClass::CheckProperties channels[%d]"),value);
       
  2949                         }
       
  2950                     else if(!property.Compare(KTagMaxVolumeProperty()))
       
  2951                         {
       
  2952                         g_object_get (G_OBJECT (iObjects->iSink),(const char *)(des.PtrZ()), &value, NULL); 
       
  2953                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties max vol[%d] "),value));
       
  2954                         iLog->Log(_L("CGStreamerTestClass::CheckProperties max vol[%d]"),value);
       
  2955                         }
       
  2956                     else if(!property.Compare(KTagSamplesPlayedProperty()))
       
  2957                         {
       
  2958                         g_object_get (G_OBJECT (iObjects->iSink),(const char *)(des.PtrZ()), &value, NULL); 
       
  2959                         FTRACE(FPrint(_L("CGStreamerTestClass::CheckProperties samples played[%d] "),value));
       
  2960                         iLog->Log(_L("CGStreamerTestClass::CheckProperties samples played[%d]"),value);
       
  2961                         }
       
  2962                     delete prop;
       
  2963                     }
       
  2964                 break;
       
  2965                 }
       
  2966             default:
       
  2967                 error = KErrNotFound;
       
  2968                 break;
       
  2969             }
       
  2970         iLog->Log(_L(">>CGStreamerTestClass::CheckProperties Error[%d]"),error);
       
  2971         return error;
       
  2972     iLog->Log(_L("<<CGStreamerTestClass::CheckProperties"));   
       
  2973     return KErrNone;
       
  2974     }
       
  2975 
       
  2976 TInt CGStreamerTestClass::SeekElement( CStifItemParser& aItem )
       
  2977     {   
       
  2978     FTRACE(FPrint(_L("CGStreamerTestClass::SeekElement")));
       
  2979     iLog->Log(_L(">>CGStreamerTestClass::SeekElement"));   
       
  2980     //
       
  2981     TInt time;
       
  2982     GstFormat fmt = GST_FORMAT_TIME;
       
  2983     gint64 pos1, len1 , pos2 , len2;
       
  2984 
       
  2985     aItem.GetNextInt(time);
       
  2986     if (gst_element_query_position (iObjects->iPipeline, &fmt, &pos1)
       
  2987       && gst_element_query_duration (iObjects->iPipeline, &fmt, &len1)) {
       
  2988     iLog->Log(_L("CGStreamerTestClass:: before seek query position and duration error"));
       
  2989     }
       
  2990     pos1 = (pos1 / GST_SECOND ) ;
       
  2991     len1 = (len1 / GST_SECOND ) ;
       
  2992     time = pos1 + (time);
       
  2993     if (!gst_element_seek (iObjects->iPipeline, 1.0 , GST_FORMAT_TIME, GST_SEEK_FLAG_ACCURATE,
       
  2994                              GST_SEEK_TYPE_SET, time*GST_SECOND ,
       
  2995                              GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE)) {
       
  2996     iLog->Log(_L("<<CGStreamerTestClass::SeekElement Failed"));
       
  2997       }
       
  2998 
       
  2999     if (gst_element_query_position (iObjects->iPipeline, &fmt, &pos2)
       
  3000       && gst_element_query_duration (iObjects->iPipeline, &fmt, &len2)) {
       
  3001     iLog->Log(_L("CGStreamerTestClass:: after seek query position and duration error"));
       
  3002     }
       
  3003     pos2 = (pos2 / GST_SECOND ) ;
       
  3004     len2 = (len2 / GST_SECOND ) ;
       
  3005     iLog->Log(_L("<<CGStreamerTestClass::SeekElement"));   
       
  3006     return KErrNone;
       
  3007     }
       
  3008 
       
  3009 
       
  3010 
       
  3011 
  2340 //  End of File
  3012 //  End of File