|         |      1 /* | 
|         |      2 * Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). | 
|         |      3 * All rights reserved. | 
|         |      4 * This component and the accompanying materials are made available | 
|         |      5 * under the terms of "Eclipse Public License v1.0" | 
|         |      6 * which accompanies this distribution, and is available | 
|         |      7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". | 
|         |      8 * | 
|         |      9 * Initial Contributors: | 
|         |     10 * Nokia Corporation - initial contribution. | 
|         |     11 * | 
|         |     12 * Contributors: | 
|         |     13 * | 
|         |     14 * Description:     | 
|         |     15 * | 
|         |     16 */ | 
|         |     17  | 
|         |     18  | 
|         |     19  | 
|         |     20  | 
|         |     21  | 
|         |     22 #ifndef MCCCONTROLLER_H | 
|         |     23 #define MCCCONTROLLER_H | 
|         |     24  | 
|         |     25 //  INCLUDES | 
|         |     26 #include <mmf/common/mmfcontroller.h> | 
|         |     27 #include <mmf/common/mmfstandardcustomcommands.h> | 
|         |     28 #include "mmcctranscoder.h" | 
|         |     29  | 
|         |     30 #ifdef FTD_ENABLED | 
|         |     31 #include <e32msgqueue.h> | 
|         |     32 #include "Mccstreamstats.h" | 
|         |     33 #include "Mcccodecstats.h" | 
|         |     34 #include "Mccjbufferstats.h" | 
|         |     35 #endif | 
|         |     36          | 
|         |     37 #include "mccdef.h" | 
|         |     38 #include "mccinternaldef.h" | 
|         |     39 #include "mccrateadaptationobserver.h" | 
|         |     40 #include "masynclinkcreationobserver.h" | 
|         |     41  | 
|         |     42 // CONSTANTS | 
|         |     43  | 
|         |     44 // MACROS | 
|         |     45  | 
|         |     46 // DATA TYPES | 
|         |     47  | 
|         |     48 // FUNCTION PROTOTYPES | 
|         |     49  | 
|         |     50 // FORWARD DECLARATIONS | 
|         |     51 class CMccUlDlClient; | 
|         |     52 class CMccResourcePool; | 
|         |     53 class CMccQosController; | 
|         |     54 class CMccAsyncLinkCreator; | 
|         |     55 class MMccSourceSink; | 
|         |     56  | 
|         |     57 // CLASS DECLARATION | 
|         |     58  | 
|         |     59 /** | 
|         |     60 *  Mcc Controller methods | 
|         |     61 * | 
|         |     62 *  MccController.dll | 
|         |     63 *  @since Series 60 3.0 | 
|         |     64 */ | 
|         |     65 class CMccController : public CMMFController, | 
|         |     66                        public MMMFAudioPlayDeviceCustomCommandImplementor, | 
|         |     67                        public MMMFAudioRecordDeviceCustomCommandImplementor, | 
|         |     68                        public MMccEventHandler, | 
|         |     69                        public MMccRateAdaptationObserver, | 
|         |     70                        public MAsyncLinkCreationObserver, | 
|         |     71                          public MMccTranscoderObserver | 
|         |     72                          | 
|         |     73     { | 
|         |     74     public: // Constructors and destructor | 
|         |     75  | 
|         |     76         /** | 
|         |     77         * Two-phased constructor. | 
|         |     78         */ | 
|         |     79         static CMccController* NewL(); | 
|         |     80            | 
|         |     81         /** | 
|         |     82         * Destructor. | 
|         |     83         */ | 
|         |     84         virtual ~CMccController(); | 
|         |     85  | 
|         |     86     public: // New functions | 
|         |     87  | 
|         |     88     public: // Functions from base classes | 
|         |     89      | 
|         |     90         // From MMccEventHandler | 
|         |     91          | 
|         |     92         virtual TInt SendMccEventToClient( TMccEvent& aEvent ); | 
|         |     93  | 
|         |     94 	    virtual void StateChange( TInt aState, TUint32 aLinkId ); | 
|         |     95  | 
|         |     96 	    virtual void ErrorOccured( TInt aError,  | 
|         |     97 	                               TUint32 aSessionId,  | 
|         |     98 	                               TUint32 aLinkId, | 
|         |     99 	                               TUint32 aStreamId,  | 
|         |    100 	                               TUint32 aEndpointId ); | 
|         |    101  | 
|         |    102         // From CMMFController | 
|         |    103         virtual void CustomCommand( TMMFMessage& aMessage ); | 
|         |    104  | 
|         |    105         // From MMMFAudioPlayDeviceCustomCommandImplementor | 
|         |    106         virtual void MapdGetVolumeL( TInt& aVolume ); | 
|         |    107         virtual void MapdGetMaxVolumeL( TInt& aMaxVolume ); | 
|         |    108         virtual void MapdSetVolumeL( TInt aVolume ); | 
|         |    109         virtual void MapdGetBalanceL( TInt& aBalance ); | 
|         |    110         virtual void MapdSetBalanceL( TInt aBalance ); | 
|         |    111         virtual void MapdSetVolumeRampL( const TTimeIntervalMicroSeconds& aRampDuration ); | 
|         |    112        | 
|         |    113         // From MMMFAudioRecordDeviceCustomCommandImplementor | 
|         |    114         virtual void MardSetGainL( TInt aGain ); | 
|         |    115         virtual void MardGetMaxGainL( TInt& aMaxGain ); | 
|         |    116         virtual void MardGetGainL( TInt& aGain ); | 
|         |    117         virtual void MardSetBalanceL( TInt aRBalance ); | 
|         |    118         virtual void MardGetBalanceL( TInt& aRBalance ); | 
|         |    119          | 
|         |    120         // From MMccRateAdaptationObserver | 
|         |    121         virtual TInt RateAdaptationRequest( const TMccEvent& aInputData,  | 
|         |    122                                             TMccEvent& aOutputData );                                    | 
|         |    123         virtual TInt RateAdaptationAlert( const TMccEvent& aAdaptationData, | 
|         |    124                                           TAlertType aAlertType ); | 
|         |    125          | 
|         |    126         // From MAsyncLinkCreationObserver | 
|         |    127          | 
|         |    128         /** | 
|         |    129         * Called when CMccAsyncLinkCreator has finished link creation | 
|         |    130         * and can be deleted | 
|         |    131         * @since Series 60 v3.1 | 
|         |    132         * @param aClientData Data for the client containing resolved  | 
|         |    133         *                    IP addresses and ports | 
|         |    134         * @param aCreator    The link creator which has finished | 
|         |    135         * @param aError      System wide error code | 
|         |    136         */ | 
|         |    137         virtual void CreationProcessEnd( const TMccCreateLinkPckg& aClientData,  | 
|         |    138                                          CMccAsyncLinkCreator* aCreator,  | 
|         |    139                                          TInt aError ); | 
|         |    140           | 
|         |    141         // From MMccTranscoderObserver                                           | 
|         |    142         virtual void MccTranscoderEventReceived( TMccEvent& aEvent ); | 
|         |    143  | 
|         |    144     protected:  // Functions from base classes | 
|         |    145      | 
|         |    146         // From CMMFController | 
|         |    147         virtual void AddDataSinkL( MDataSink& aSink ); | 
|         |    148         virtual void AddDataSourceL( MDataSource& aSource ); | 
|         |    149         virtual void SetPrioritySettings( const TMMFPrioritySettings& aPrioritySettings ); | 
|         |    150  | 
|         |    151         // -- Not used -- | 
|         |    152         virtual void RemoveDataSourceL( MDataSource& aDataSource ); | 
|         |    153         virtual void RemoveDataSinkL( MDataSink& aDataSink ); | 
|         |    154         virtual void ResetL(); | 
|         |    155         virtual void PlayL(); | 
|         |    156         virtual void StopL(); | 
|         |    157         virtual void PrimeL(); | 
|         |    158         virtual void PauseL(); | 
|         |    159         virtual TTimeIntervalMicroSeconds PositionL() const; | 
|         |    160         virtual void SetPositionL( const TTimeIntervalMicroSeconds& aPosition ); | 
|         |    161         virtual TTimeIntervalMicroSeconds DurationL() const; | 
|         |    162         virtual void GetNumberOfMetaDataEntriesL( TInt& aNumberOfEntries ); | 
|         |    163         virtual CMMFMetaDataEntry* GetMetaDataEntryL( TInt aIndex ); | 
|         |    164         // -------------- | 
|         |    165  | 
|         |    166     private: | 
|         |    167         /** | 
|         |    168         * C++ default constructor. | 
|         |    169         */ | 
|         |    170         CMccController(); | 
|         |    171          | 
|         |    172         /** | 
|         |    173         * By default Symbian 2nd phase constructor is private. | 
|         |    174         */ | 
|         |    175         void ConstructL(); | 
|         |    176  | 
|         |    177         /** | 
|         |    178         * Gets the identifier of current data sink | 
|         |    179         * @param aMessage - Message from clientside | 
|         |    180         * @leave system wide error code if unsuccessful | 
|         |    181         */ | 
|         |    182 		void GetSinkIdL( TMMFMessage& aMessage ); | 
|         |    183  | 
|         |    184         /** | 
|         |    185         * Gets the identifier of current data source | 
|         |    186         * @param aMessage - Message from clientside | 
|         |    187         * @leave system wide error code if unsuccessful | 
|         |    188         */ | 
|         |    189 		void GetSourceIdL( TMMFMessage& aMessage ); | 
|         |    190 		 | 
|         |    191         /** | 
|         |    192         * Creates an Mcc session | 
|         |    193         * @since Series 60 3.0 | 
|         |    194         * @param aMessage - [input] Message from clientside | 
|         |    195         * @leave system wide error code if unsuccessful | 
|         |    196         * @return None | 
|         |    197         */ | 
|         |    198         void CreateSessionL( TMMFMessage& aMessage ); | 
|         |    199         | 
|         |    200         /** | 
|         |    201         * Closes an Mcc session | 
|         |    202         * @since Series 60 3.0 | 
|         |    203         * @param aMessage - [input] Message from clientside | 
|         |    204         */     | 
|         |    205         void CloseSessionL( TMMFMessage& aMessage ); | 
|         |    206  | 
|         |    207         /** | 
|         |    208         * Creates a Mcc link | 
|         |    209         * @since Series 60 3.0 | 
|         |    210         * @param aMessage - [input] Message from clientside | 
|         |    211         * @return TInt - KErrNone if successful; system wide error code otherwise | 
|         |    212         */ | 
|         |    213         void CreateLinkL( TMMFMessage& aMessage ); | 
|         |    214  | 
|         |    215         /** | 
|         |    216         * Closes a Mcc link | 
|         |    217         * @since Series 60 3.0 | 
|         |    218         * @param aMessage - [input] Message from clientside | 
|         |    219         */     | 
|         |    220         void CloseLinkL( TMMFMessage& aMessage ); | 
|         |    221  | 
|         |    222         /** | 
|         |    223         * Starts stream | 
|         |    224         * @since Series 60 3.0 | 
|         |    225         * @param aMessage - [input] Message from clientside | 
|         |    226         * @leave System wide error code if unsuccessful | 
|         |    227         * @return None | 
|         |    228         */ | 
|         |    229         void StartStreamL( TMMFMessage& aMessage ); | 
|         |    230          | 
|         |    231         /** | 
|         |    232         * Stops stream | 
|         |    233         * @since Series 60 3.0 | 
|         |    234         * @param aMessage - [input] Message from clientside | 
|         |    235         */ | 
|         |    236         void StopStreamL( TMMFMessage& aMessage ); | 
|         |    237          | 
|         |    238         /** | 
|         |    239         * Starts inactivity timer for a stream in a given session. | 
|         |    240         * @since Series 60 3.0 | 
|         |    241         * @param aMessage - [input] Message from clientside | 
|         |    242         * @leave System wide error code if unsuccessful | 
|         |    243         * @return None | 
|         |    244         */ | 
|         |    245         void StartInactivityTimerL( TMMFMessage& aMessage ); | 
|         |    246          | 
|         |    247         /** | 
|         |    248         * Stops inactivity timer for a stream in a given session. | 
|         |    249         * @since Series 60 3.0 | 
|         |    250         * @param aMessage - [input] Message from clientside | 
|         |    251         * @leave System wide error code if unsuccessful | 
|         |    252         * @return None | 
|         |    253         */ | 
|         |    254         void StopInactivityTimerL( TMMFMessage& aMessage ); | 
|         |    255          | 
|         |    256         /** | 
|         |    257         * Request Event Notification | 
|         |    258         * @since Series 60 3.0 | 
|         |    259         * @param aMessage - [input] Message from clientside | 
|         |    260         * @leave System wide error code if unsuccessful | 
|         |    261         * @return None | 
|         |    262         */     | 
|         |    263         void RequestEventNotificationL( TMMFMessage& aMessage ); | 
|         |    264  | 
|         |    265         /** | 
|         |    266         * Creates event to eventbuffer and sends event to client | 
|         |    267         * @since Series 60 3.0 | 
|         |    268         */ | 
|         |    269         void SendEvent(); | 
|         |    270         void SendEventL(); | 
|         |    271          | 
|         |    272         /** | 
|         |    273         * Creates stream | 
|         |    274         * @since Series 60 3.0 | 
|         |    275         * @param aMessage - [input] Message from clientside | 
|         |    276         * @leave System wide error code if unsuccessful | 
|         |    277         * @return None | 
|         |    278         */ | 
|         |    279         void CreateStreamL( TMMFMessage& aMessage ); | 
|         |    280  | 
|         |    281         /** | 
|         |    282         * Deletes stream | 
|         |    283         * @since Series 60 3.0 | 
|         |    284         * @param aMessage - [input] Message from clientside | 
|         |    285         */ | 
|         |    286         void DeleteStreamL( TMMFMessage& aMessage ); | 
|         |    287  | 
|         |    288         /** | 
|         |    289         * Prepares stream | 
|         |    290         * @since Series 60 3.0 | 
|         |    291         * @param aMessage - [input] Message from clientside | 
|         |    292         * @leave System wide error code if unsuccessful | 
|         |    293         * @return None | 
|         |    294         */ | 
|         |    295         void PrepareStreamL( TMMFMessage& aMessage ); | 
|         |    296  | 
|         |    297         /** | 
|         |    298         * Pauses stream | 
|         |    299         * @since Series 60 3.0 | 
|         |    300         * @param aMessage - [input] Message from clientside | 
|         |    301         * @leave System wide error code if unsuccessful | 
|         |    302         * @return None | 
|         |    303         */ | 
|         |    304         void PauseStreamL( TMMFMessage& aMessage ); | 
|         |    305  | 
|         |    306         /** | 
|         |    307         * Resumes stream | 
|         |    308         * @since Series 60 3.0 | 
|         |    309         * @param aMessage - [input] Message from clientside | 
|         |    310         * @leave System wide error code if unsuccessful | 
|         |    311         * @return None | 
|         |    312         */ | 
|         |    313         void ResumeStreamL( TMMFMessage& aMessage ); | 
|         |    314          | 
|         |    315         /** | 
|         |    316         * Checks if streams exists in certain link | 
|         |    317         * @since Series 60 3.0 | 
|         |    318         * @param aMessage - [input] Message from clientside | 
|         |    319         * @leave System wide error code if unsuccessful | 
|         |    320         * @return None | 
|         |    321         */ | 
|         |    322         void StreamsExistsL( TMMFMessage& aMessage ); | 
|         |    323          | 
|         |    324  | 
|         |    325         /** | 
|         |    326         * Get List of supported codecs | 
|         |    327         * @since Series 60 3.0 | 
|         |    328         * @param aMessage - [input] Message from clientside | 
|         |    329         */ | 
|         |    330         void GetSupportedCodecsL( TMMFMessage& aMessage ) const; | 
|         |    331  | 
|         |    332         /** | 
|         |    333         * Get current codec | 
|         |    334         * @since Series 60 3.0 | 
|         |    335         * @param aMessage - [input] Message from clientside | 
|         |    336         */ | 
|         |    337         void GetCodecL( TMMFMessage& aMessage ); | 
|         |    338          | 
|         |    339         /** | 
|         |    340         * Get fmtp string | 
|         |    341         * @since Series 60 3.0 | 
|         |    342         * @param aMessage - [input] Message from clientside | 
|         |    343         */ | 
|         |    344         void GetFmtpAttrL( TMMFMessage& aMessage ); | 
|         |    345          | 
|         |    346         /** | 
|         |    347         * Set Codec | 
|         |    348         * @since Series 60 3.0 | 
|         |    349         * @param aMessage - [input] Message from clientside | 
|         |    350         */ | 
|         |    351         void SetCodecL( TMMFMessage& aMessage ); | 
|         |    352  | 
|         |    353         /** | 
|         |    354         * Get the supported bitrates from the codec of the specified stream | 
|         |    355         * @since Series 60 3.0 | 
|         |    356         * @param aMessage - [input] Message from clientside | 
|         |    357         */ | 
|         |    358         void GetSupportedBitratesL( TMMFMessage& aMessage ); | 
|         |    359          | 
|         |    360         /** | 
|         |    361         * Get syncronisation source from the specified stream | 
|         |    362         * @since Series 60 3.0 | 
|         |    363         * @param aMessage - [input] Message from clientside | 
|         |    364         */ | 
|         |    365         void GetSSRCL( TMMFMessage& aMessage ); | 
|         |    366  | 
|         |    367         /** | 
|         |    368         * Set Priority for stream | 
|         |    369         * @since Series 60 3.0 | 
|         |    370         * @param aMessage - [input] Message from clientside | 
|         |    371         */ | 
|         |    372         void SetPriorityL( TMMFMessage& aMessage ); | 
|         |    373  | 
|         |    374         /** | 
|         |    375         * Sets stream settings | 
|         |    376         * @since Series 60 3.0 | 
|         |    377         * @param aMessage - [input] Message from clientside | 
|         |    378         */ | 
|         |    379         void StreamSettingsL( TMMFMessage& aMessage ); | 
|         |    380          | 
|         |    381         /** | 
|         |    382         * Sends RTCP receiver report to uplink if possible. | 
|         |    383         * @since Series 60 3.0 | 
|         |    384         * @param aMessage - [input] Message from clientside | 
|         |    385         * @leave System wide error code if unsuccessful | 
|         |    386         * @return None | 
|         |    387         */ | 
|         |    388         void SendRTCPReceiverReportL( TMMFMessage& aMessage );  | 
|         |    389          | 
|         |    390         /** | 
|         |    391         * Sends RTCP sender report to uplink if possible. | 
|         |    392         * @since Series 60 3.0 | 
|         |    393         * @param aMessage - [input] Message from clientside | 
|         |    394         * @leave System wide error code if unsuccessful | 
|         |    395         * @return None | 
|         |    396         */ | 
|         |    397         void SendRTCPSenderReportL( TMMFMessage& aMessage );  | 
|         |    398          | 
|         |    399         /** | 
|         |    400         * Sends non-RTCP data to uplink if possible. | 
|         |    401         * @since Series 60 3.0 | 
|         |    402         * @param aMessage - [input] Message from clientside | 
|         |    403         * @leave System wide error code if unsuccessful | 
|         |    404         * @return None | 
|         |    405         */ | 
|         |    406         void SendRTCPDataL( TMMFMessage& aMessage );  | 
|         |    407  | 
|         |    408         /** | 
|         |    409         * Sets remote address for given session | 
|         |    410         * @since Series 60 3.0 | 
|         |    411         * @param aMessage - [input] Message from clientside | 
|         |    412         * @leave System wide error code if unsuccessful | 
|         |    413         * @return None | 
|         |    414         */ | 
|         |    415         void SetRemoteAddressL( TMMFMessage& aMessage ); | 
|         |    416  | 
|         |    417 		/** | 
|         |    418         * Sets remote address for given session | 
|         |    419         * @since Series 60 3.0 | 
|         |    420         * @param aMessage - [input] Message from clientside | 
|         |    421         * @leave System wide error code if unsuccessful | 
|         |    422         * @return None | 
|         |    423         */ | 
|         |    424 		void SetRemoteRtcpAddrL( TMMFMessage& aMessage ); | 
|         |    425 		 | 
|         |    426         /** | 
|         |    427         * Finds given session from session array | 
|         |    428         * @since Series 60 3.0 | 
|         |    429         * @param aSessionID - [input] RTP session ID | 
|         |    430         * @return TInt - Sessionarray index | 
|         |    431         */ | 
|         |    432         TInt FindSessionL( TUint32 aSessionID ); | 
|         |    433  | 
|         |    434         /** | 
|         |    435         * CustomCommand  | 
|         |    436         * @since Series 60 3.0 | 
|         |    437         * @param aMessage - [input] TMMFMessage | 
|         |    438         * @leave System wide error code if unsuccessful | 
|         |    439         * @return None | 
|         |    440         */ | 
|         |    441         void CustomCommandL( TMMFMessage& aMessage ); | 
|         |    442          | 
|         |    443         /** | 
|         |    444         * Sends media signals to given stream in given session | 
|         |    445         * @since Series 60 3.0 | 
|         |    446         * @param aMessage - [input] Message containing the media signal | 
|         |    447         * @return void | 
|         |    448         */ | 
|         |    449         void SendMediaSignalL( TMMFMessage& aMessage ); | 
|         |    450  | 
|         |    451         /** | 
|         |    452         * Enables camera viewfinder | 
|         |    453         * @param aMessage - [input] Message containing the media signal | 
|         |    454         * @return void | 
|         |    455         */ | 
|         |    456         void EnableViewFinderL( TMMFMessage& aMessage ); | 
|         |    457  | 
|         |    458         /** | 
|         |    459         * Disables camera viewfinder | 
|         |    460         * @param aMessage - [input] Message containing the media signal | 
|         |    461         * @return void | 
|         |    462         */ | 
|         |    463         void DisableViewFinderL( TMMFMessage& aMessage ); | 
|         |    464  | 
|         |    465         /** | 
|         |    466         * Gets current viewfinder settings | 
|         |    467         * @param aMessage - [input] | 
|         |    468         * @return void | 
|         |    469         */ | 
|         |    470         void ViewFinderSettingsL( TMMFMessage& aMessage ); | 
|         |    471          | 
|         |    472         /** | 
|         |    473         * Get camera info | 
|         |    474         * @param aMessage - [input] Message  | 
|         |    475         * @return void | 
|         |    476         */ | 
|         |    477         void GetCamInfoL( TMMFMessage& aMessage ); | 
|         |    478          | 
|         |    479         /** | 
|         |    480         * Get num of available cameras | 
|         |    481         * @param aMessage - [input] Message  | 
|         |    482         * @return void | 
|         |    483         */ | 
|         |    484         void GetNumOfCamsL( TMMFMessage& aMessage ); | 
|         |    485  | 
|         |    486         /** | 
|         |    487         * Set camera configuration value | 
|         |    488         * @param aMessage - [input] Message  | 
|         |    489         * @return void | 
|         |    490         */ | 
|         |    491         void SetCamValue1L( TMMFMessage& aMessage ); | 
|         |    492  | 
|         |    493         /** | 
|         |    494         * Get camera configuration value | 
|         |    495         * @param aMessage - [input] Message  | 
|         |    496         * @return void | 
|         |    497         */ | 
|         |    498         void GetCamValue1L( TMMFMessage& aMessage ); | 
|         |    499  | 
|         |    500         /** | 
|         |    501         * Set camera configuration value | 
|         |    502         * @param aMessage - [input] Message  | 
|         |    503         * @return void | 
|         |    504         */ | 
|         |    505         void SetCamValue2L( TMMFMessage& aMessage ); | 
|         |    506  | 
|         |    507         /** | 
|         |    508         * Get camera configuration value | 
|         |    509         * @param aMessage - [input] Message  | 
|         |    510         * @return void | 
|         |    511         */ | 
|         |    512         void GetCamValue2L( TMMFMessage& aMessage ); | 
|         |    513          | 
|         |    514         /** | 
|         |    515         * Set audio routing | 
|         |    516         * @param aMessage - [input] Message  | 
|         |    517         * @return void | 
|         |    518         */ | 
|         |    519         void SetAudioRouteL( TMMFMessage& aMessage ); | 
|         |    520          | 
|         |    521         /** | 
|         |    522         * Get current audio routing destination | 
|         |    523         * @param aMessage - [input] Message  | 
|         |    524         * @return void | 
|         |    525         */ | 
|         |    526         void GetAudioRouteL( TMMFMessage& aMessage ); | 
|         |    527         | 
|         |    528        /** | 
|         |    529         * Get endpoint parameters | 
|         |    530         * @param aMessage - [input] Message  | 
|         |    531         * @return void | 
|         |    532         */ | 
|         |    533         void GetEndpointParameterL( TMMFMessage& aMessage ); | 
|         |    534            | 
|         |    535         /** | 
|         |    536         * Set endpoint parameters | 
|         |    537         * @param aMessage - [input] Message  | 
|         |    538         * @return void | 
|         |    539         */ | 
|         |    540         void SetEndpointParameterL( TMMFMessage& aMessage ); | 
|         |    541          | 
|         |    542         /** | 
|         |    543         * Updates endpoin | 
|         |    544         * @param aMessage - [input] Message  | 
|         |    545         * @return void | 
|         |    546         */ | 
|         |    547         void UpdateEndpointL( TMMFMessage& aMessage ); | 
|         |    548          | 
|         |    549         /** | 
|         |    550         * Reuse endpoint | 
|         |    551         * @param aMessage - [input] Message  | 
|         |    552         * @return void | 
|         |    553         */ | 
|         |    554         void ReuseL( TMMFMessage& aMessage ); | 
|         |    555  | 
|         |    556         /** | 
|         |    557         * Get referece count of endpoint | 
|         |    558         * @param aMessage - [input] Message  | 
|         |    559         * @return void | 
|         |    560         */ | 
|         |    561         void ReferenceCountL( TMMFMessage& aMessage ); | 
|         |    562          | 
|         |    563         /** | 
|         |    564         * Removes endpoint, all streams, using the endpoint, are stopped. | 
|         |    565         * @return void | 
|         |    566         */ | 
|         |    567         void RemoveEndpointL( TUint32 aEndpointId ); | 
|         |    568          | 
|         |    569         /** | 
|         |    570         * Transcodes media file | 
|         |    571         * @return void | 
|         |    572         */ | 
|         |    573         void TranscodeFileL( TMMFMessage& aMessage ); | 
|         |    574          | 
|         |    575         /** | 
|         |    576         * Cancel transcodes media file | 
|         |    577         * @return void | 
|         |    578         */ | 
|         |    579         void CancelTranscodeFileL( TMMFMessage& aMessage ); | 
|         |    580          | 
|         |    581         /** | 
|         |    582          * Binds context into stream | 
|         |    583          * @param aMessage - [input] Message | 
|         |    584          * @return void | 
|         |    585          */ | 
|         |    586         void BindContextIntoStreamL( TMMFMessage& aMessage ); | 
|         |    587          | 
|         |    588         /** | 
|         |    589          * Remove context. | 
|         |    590          * @param aMessage - [input] Message | 
|         |    591          * @return void | 
|         |    592          */ | 
|         |    593         void RemoveContextL( TMMFMessage& aMessage ); | 
|         |    594          | 
|         |    595     private: | 
|         |    596          | 
|         |    597         TInt StoreAndSendEvent( const TMccEvent& aEvent ); | 
|         |    598          | 
|         |    599         void StoreEventL( const TMccEvent& aEvent ); | 
|         |    600          | 
|         |    601         void StreamActionL( const TMccEvent& aEvent, const TMccEvent* aAdditionalEvent ); | 
|         |    602          | 
|         |    603         void CancelMmfMessage(); | 
|         |    604      | 
|         |    605         void PauseByEndPointIdL( const TMccEvent& aEvent, TUint32 aEndPointId ); | 
|         |    606          | 
|         |    607         void ResumeByEndPointIdL( const TMccEvent& aEvent, TUint32 aEndPointId ); | 
|         |    608          | 
|         |    609         TInt UpdateEndpointVolumeSettings( MMccSourceSink& aEndpoint ); | 
|         |    610  | 
|         |    611         void AddCodec( | 
|         |    612             const TUint32& aCodec, | 
|         |    613             const RArray< TFourCC >& aSupportedOutCodecs, | 
|         |    614             const RArray< TFourCC >& aSupportedInCodecs, | 
|         |    615             TFixedArray<TFourCC, KMccFourCCArraySize>& aCodecs, | 
|         |    616             TInt aIndex ) const; | 
|         |    617          | 
|         |    618     private:    // Data | 
|         |    619  | 
|         |    620         // Priority settings | 
|         |    621         TMMFPrioritySettings    iPrioritySettings; | 
|         |    622  | 
|         |    623         // Type of stream EMccAudioUplink/EMccAudioDownlink | 
|         |    624         TInt iStreamType; | 
|         |    625  | 
|         |    626         // IapID | 
|         |    627         TUint iIapID; | 
|         |    628          | 
|         |    629         // MaxVolume | 
|         |    630         TInt iMaxVolume; | 
|         |    631  | 
|         |    632         // Volume | 
|         |    633         TInt iVolume; | 
|         |    634          | 
|         |    635         // MaxGain | 
|         |    636         TInt iMaxGain; | 
|         |    637  | 
|         |    638         // Gain | 
|         |    639         TInt iGain; | 
|         |    640  | 
|         |    641         // Session Index | 
|         |    642         TUint32 iSessionIndex; | 
|         |    643  | 
|         |    644         TMMFMessage* iMessage; | 
|         |    645  | 
|         |    646         // Stream settings package | 
|         |    647         TMccStreamPckg iStreamPckg; | 
|         |    648  | 
|         |    649         // Session PointerArray | 
|         |    650         RPointerArray<CMccUlDlClient> iSessionArray; | 
|         |    651          | 
|         |    652         // Event Buffer | 
|         |    653         RPointerArray<TMccEvent> iEventBuf; | 
|         |    654 		 | 
|         |    655 		CMccResourcePool* iResourcePool; | 
|         |    656 		 | 
|         |    657 		CMccQosController* iQosController; | 
|         |    658  | 
|         |    659 		// Asynchronous Link Creator object | 
|         |    660         RPointerArray<CMccAsyncLinkCreator> iCreatorArray; | 
|         |    661 		 | 
|         |    662 		CMccTranscoder* iTranscoder; | 
|         |    663 		 | 
|         |    664 		// key used to destroy transcoder implemetation | 
|         |    665 		TUid iTranscoderKey; | 
|         |    666 		 | 
|         |    667 		// DTMF payload types indexed by link ID | 
|         |    668 		RArray< TMccKeyValuePair<TUint32, TUint8> > iDtmfPayloadTypes; | 
|         |    669          | 
|         |    670         #ifdef FTD_ENABLED | 
|         |    671          | 
|         |    672         // Message queue carrying stream statistics | 
|         |    673         RMsgQueue<TMccStreamStats> iStreamStatsQueue; | 
|         |    674          | 
|         |    675         // Message queue carrying codec statistics | 
|         |    676         RMsgQueue<TMccCodecStats> iCodecStatsQueue; | 
|         |    677          | 
|         |    678         // Message queue carrying jitter buffer statistics | 
|         |    679         RMsgQueue<TMccJBufferStats> iJBufferStatsQueue; | 
|         |    680          | 
|         |    681         #endif | 
|         |    682            | 
|         |    683     private:    // Friend classes | 
|         |    684  | 
|         |    685     #ifdef TEST_EUNIT | 
|         |    686     friend class UT_CMccController; | 
|         |    687     #endif | 
|         |    688     }; | 
|         |    689  | 
|         |    690 #endif |