00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MMCCINTERFACE_H
00020 #define MMCCINTERFACE_H
00021
00022 #include <e32base.h>
00023 #include <mmf\common\mmffourcc.h>
00024 #include <mmf\common\mmfstandardcustomcommands.h>
00025 #include <mmccnetworksettings.h>
00026 #include <mmccinterfacedef.h>
00027 #include <mmccevents.h>
00028
00029 class CMccCodecInformation;
00030 class CMccEvent;
00031 class TCameraInfo;
00032
00033
00034
00035
00036
00037 const TUid KUidMccInterface = { 0x102073F7 };
00038 const TUid KUidMccFileSink = { 0x102747D7 };
00039 const TUid KUidMccFileSource = { 0x102747D5 };
00040 const TUid KUidMccRtpSource = { 0x1020740B };
00041 const TUid KUidMccRtpSink = { 0x1020740C };
00042 const TUid KUidMccVideoSource = { 0x102747D6 };
00043 const TUid KUidMccVideoSink = { 0x102747D8 };
00044 const TUid KUidMccTranscoder = { 0x10282897 };
00045 const TUid KUidMccAnySource = { 0x10283394 };
00046 const TUid KUidMccAnySink = { 0x10283395 };
00047
00059 class CMccInterface : public CBase
00060 {
00061 public:
00062
00070 IMPORT_C static CMccInterface* NewL( MMccCtrlObserver& aObserver );
00071
00075 virtual ~CMccInterface();
00076
00077 public:
00078
00086 IMPORT_C TInt CreateSession( TUint32& aSessionId );
00087
00095 IMPORT_C TInt CloseSession( TUint32 aSessionId );
00096
00107 IMPORT_C TInt CreateLink( TUint32 aSessionId,
00108 TInt aLinkType,
00109 TUint32& aLinkId,
00110 TMccNetSettings& aNetSettings );
00111
00119 IMPORT_C TInt CloseLink( TUint32 aSessionId, TUint32 aLinkId );
00120
00132 IMPORT_C TInt CreateStream( TUint32 aSessionId, TUint32 aLinkId,
00133 TUint32& aStreamId, TInt aStreamType,
00134 CMccCodecInformation& aCodecInformation );
00135
00147 IMPORT_C TInt PrepareStream( TUint32 aSessionId, TUint32 aLinkId,
00148 TUint32 aStreamId, TUint32 aEndpointId = 0 );
00149
00162 IMPORT_C TInt StartStream( TUint32 aSessionId, TUint32 aLinkId,
00163 TUint32 aStreamId,
00164 TUint32 aEndpointId = 0,
00165 TBool aPaused = EFalse,
00166 TBool aEnableRTCP = ETrue );
00167
00181 IMPORT_C TInt PauseStream( TUint32 aSessionId, TUint32 aLinkId,
00182 TUint32 aStreamId,
00183 TUint32 aEndpointId = 0,
00184 TBool aEnableRTCP = ETrue );
00185
00197 IMPORT_C TInt ResumeStream( TUint32 aSessionId, TUint32 aLinkId,
00198 TUint32 aStreamId,
00199 TUint32 aEndpointId = 0,
00200 TBool aEnableRTCP = ETrue );
00201
00212 IMPORT_C TInt StopStream( TUint32 aSessionId, TUint32 aLinkId,
00213 TUint32 aStreamId, TUint32 aEndpointId = 0 );
00214
00223 IMPORT_C TInt DeleteStream( TUint32 aSessionId, TUint32 aLinkId,
00224 TUint32 aStreamId );
00225
00240 IMPORT_C TInt StartInactivityTimer( TUint32 aSessionId,
00241 TUint32 aLinkId,
00242 TUint32 aStreamId,
00243 TUint32 aTimeoutTime,
00244 TUint32 aEndpointId = 0 );
00245
00256 IMPORT_C TInt StopInactivityTimer( TUint32 aSessionId,
00257 TUint32 aLinkId,
00258 TUint32 aStreamId,
00259 TUint32 aEndpointId = 0 );
00260
00270 IMPORT_C TInt SetRemoteAddress( TUint32 aSessionId,
00271 TUint32 aLinkId,
00272 const TInetAddr& aRemoteAddr,
00273 TUint aRemoteRtcpPort = 0 );
00274
00284 IMPORT_C CMccCodecInformation* CodecL( TUint32 aSessionId,
00285 TUint32 aLinkId,
00286 TUint32 aStreamId );
00287
00297 IMPORT_C TInt SetCodec( TUint32 aSessionId,
00298 TUint32 aLinkId,
00299 TUint32 aStreamId,
00300 CMccCodecInformation& aCodecInformation );
00301
00310 TInt GetSupportedCodecs( RArray<TFourCC>& aCodecs );
00311
00322 IMPORT_C TInt GetCapabilities(
00323 RPointerArray<CMccCodecInformation>& aCapabilities ) const;
00324
00338 IMPORT_C TInt GetCapabilities( const TUid aType,
00339 TInt aStreamType,
00340 const TDesC8& aParam,
00341 RPointerArray<CMccCodecInformation>& aCapabilities );
00342
00353 IMPORT_C TInt GetSSRC( TUint32 aSessionId,
00354 TUint32 aLinkId,
00355 TUint32 aStreamId,
00356 TUint32 aEndpointId,
00357 TUint32& aSSRC );
00358
00364 IMPORT_C void SendMediaSignalL( const TMccEvent& aEvent );
00365
00375 IMPORT_C TInt AddDataSink( const TUid aSinkType, const TDesC8& aParam,
00376 TUint32& aEndpointId );
00377
00387 IMPORT_C TInt AddDataSource( const TUid aSourceType, const TDesC8& aParam,
00388 TUint32& aEndpointId );
00389
00398 IMPORT_C TBool LinkExists( TUint32 aSessionId,
00399 TUint32& aLinkId,
00400 const TMccNetSettings& aNetSettings );
00401
00409 IMPORT_C TBool StreamsExists( TUint32 aSessionId,
00410 TUint32 aLinkId );
00411
00423 IMPORT_C TInt GetParameter( TUint32 aSessionId, TUint32 aLinkId,
00424 TUint32 aStreamId, TUint32 aEndpointId,
00425 TUint32 aParam, TDes8& aVal );
00426
00438 IMPORT_C TInt SetParameter( TUint32 aSessionId, TUint32 aLinkId,
00439 TUint32 aStreamId, TUint32 aEndpointId,
00440 TUint32 aParam, const TDesC8& aVal );
00441
00452 IMPORT_C TInt UpdateDataSink( TUint32 aSessionId, TUint32 aLinkId,
00453 TUint32 aStreamId, TUint32 aEndpointId,
00454 const TDesC8& aParam );
00455
00466 IMPORT_C TInt UpdateDataSource( TUint32 aSessionId, TUint32 aLinkId,
00467 TUint32 aStreamId, TUint32 aEndpointId,
00468 const TDesC8& aParam );
00469
00479 IMPORT_C TInt RemoveDataSink( TUint32 aSessionId, TUint32 aLinkId,
00480 TUint32 aStreamId, TUint32 aEndpointId );
00481
00491 IMPORT_C TInt RemoveDataSource( TUint32 aSessionId, TUint32 aLinkId,
00492 TUint32 aStreamId, TUint32 aEndpointId );
00493
00506 IMPORT_C TInt Reuse( TUint32 aSessionId, TUint32 aLinkId,
00507 TUint32 aStreamId, TUint32 aEndpointId );
00508
00519 IMPORT_C TInt ReferenceCount( TUint32 aSessionId, TUint32 aLinkId,
00520 TUint32 aStreamId, TUint32 aEndpointId,
00521 TUint& aCount );
00522
00531 IMPORT_C TInt AddBundle( TUint32 aSessionId, TMccStreamBundle& aBundle,
00532 TUint32& aBundleId );
00533
00541 IMPORT_C TInt RemoveBundle( TUint32 aSessionId, TUint32 aBundleId );
00542
00550 IMPORT_C TInt GetBundles( TUint32 aSessionId,
00551 RArray<TMccStreamBundle>& aBundles);
00552
00567 IMPORT_C TInt TranscodeFile( const TDesC8& aSourceFile,
00568 const TDesC8& aDestFile,
00569 TUint32 aQuality, TUint32& aSessionId,
00570 const CMccCodecInformation* aVideoCodec = 0,
00571 const CMccCodecInformation* aAudioCodec = 0 );
00572
00579 IMPORT_C TInt CancelTranscodeFile( TUint32 aSessionId );
00580
00593 IMPORT_C TInt MediaQualityRequest(
00594 const TMccMediaQualityConfig& aConfig );
00595
00606 IMPORT_C TInt CancelMediaQualityRequest(
00607 const TMccMediaQualityConfig& aConfig );
00608
00616 void GetController( RMMFController& aController );
00617
00618 private:
00619
00623 CMccInterface();
00624
00628 void ConstructL( MMccCtrlObserver& aObserver );
00629
00630 private:
00631
00637 void OpenControllerL( const TUid& aControllerUid );
00638
00642 void CapabilitiesL();
00643
00650 TInt GetSupportedBitrates( TUint32 aSessionId,
00651 TUint32 aLinkId,
00652 TUint32 aStreamId,
00653 RArray<TUint>& aBitrates );
00654
00658 TInt SendRTCPReceiverReport( TUint32 aSessionId,
00659 TUint32 aLinkId,
00660 TUint32 aStreamId );
00664 TInt SendRTCPSenderReport( TUint32 aSessionId,
00665 TUint32 aLinkId,
00666 TUint32 aStreamId );
00667
00671 TInt SendRTCPAnyData( TUint32 aSessionId,
00672 TUint32 aLinkId,
00673 TUint32 aStreamId,
00674 const TDesC8& aData );
00675
00679 TInt EnableViewFinder( const TDesC8& aParam );
00680
00684 TInt DisableViewFinder();
00685
00689 TInt GetViewFinderSettings( TUint32 aParam, TUint32 aEndPointId,
00690 TDes8& aVal );
00691
00695 TCameraInfo GetCameraInfoL( TInt aDeviceIndex );
00696
00700 TInt GetNumOfCamerasL();
00701
00705 TInt GetCameraParameter( TUint32 aParam, TInt& aVal );
00706
00710 TInt SetCameraParameter( TUint32 aParam, TInt aVal );
00711
00715 TInt GetCameraParameter( TUint32 aParam, TReal& aVal );
00716
00720 TInt SetCameraParameter(TUint32 aParam, TReal aVal);
00721
00725 TInt SetEndpointParameter( TUint32 aParam,
00726 TUint32 aSessionId,
00727 TUint32 aLinkId,
00728 TUint32 aStreamId,
00729 TUint32 aEndPointId,
00730 const TDesC8& aVal );
00731
00735 TInt GetEndpointParameter( TUint32 aParam,
00736 TUint32 aSessionId,
00737 TUint32 aLinkId,
00738 TUint32 aStreamId,
00739 TUint32 aEndPointId,
00740 TDes8& aVal );
00741
00745 TInt SetAudioRouting( TUint32 aSessionId, TUint32 aLinkId,
00746 TUint32 aStreamId, TUint32 aRoutingDestination );
00747
00751 TInt AudioRouting( TUint32 aSessionId, TUint32 aLinkId,
00752 TUint32 aStreamId, TUint32& aRoutingDestination );
00753
00757 TInt Volume( TInt& aVolume ) const;
00758
00762 TInt MaxVolume( TUint32 aSessionId,
00763 TUint32 aLinkId,
00764 TUint32 aStreamId,
00765 TInt& aMaxVolume );
00766
00770 TInt SetVolume( TInt aVolume );
00771
00775 TInt Balance( TUint32 aSessionId,
00776 TUint32 aLinkId,
00777 TUint32 aStreamId,
00778 TInt& aBalance,
00779 TMccDevice aStreamType );
00780
00784 TInt SetBalance( TUint32 aSessionId,
00785 TUint32 aLinkId,
00786 TUint32 aStreamId,
00787 TInt aBalance,
00788 TMccDevice aStreamType );
00789
00793 TInt GetGain( TInt& aGain ) const;
00794
00798 TInt SetGain( TInt aGain );
00799
00803 TInt MaxGain( TUint32 aSessionId,
00804 TUint32 aLinkId,
00805 TUint32 aStreamId,
00806 TInt& aMaxGain );
00807
00811 TInt StoreEndpointInfo( TUint32 aEndpointId,
00812 const TMMFMessageDestination& aHandleInfo );
00813
00817 TMMFMessageDestination FindEndpointInfo( TUint32 aEndpointId,
00818 TInt& aError );
00819
00823 TInt RemoveEndpointInfo( TUint32 aEndpointId );
00824
00825 private:
00826
00831 class TMccEndpointInfo
00832 {
00833 public:
00834 TUint32 iEndpointId;
00835 TMMFMessageDestination iHandleInfo;
00836 };
00837
00841 static TBool EndpointInfoMatch( const TMccEndpointInfo& aInfo1,
00842 const TMccEndpointInfo& aInfo2 );
00843
00844
00845 TAny* iReserved1;
00846 TInt iReserved2;
00847
00848 private:
00849
00850
00851 CMccEvent* iMccEvent;
00852
00853
00854 RMMFController iController;
00855
00856
00857 TMMFMessageDestinationPckg iMessageDest;
00858
00859
00860 RMMFAudioPlayDeviceCustomCommands iAudioPlayDeviceCustomCommands;
00861
00862
00863 RMMFAudioRecordDeviceCustomCommands iAudioRecordDeviceCustomCommands;
00864
00865
00866 RPointerArray<CMccCodecInformation> iCodecInformation;
00867
00868
00869 RArray<TMccEndpointInfo> iEndpointInfos;
00870
00871 private:
00872 #ifdef TEST_EUNIT
00873 friend class UT_CMccInterface;
00874 #endif
00875 };
00876
00877 #endif