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 // |
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 |