changeset 8 | 4a7fac7dd34a |
parent 2 | 5505e8908944 |
child 11 | 1373546e05c6 |
7:71e347f905f2 | 8:4a7fac7dd34a |
---|---|
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 |