multimediacommsengine/mmcecli/src/mcecodec.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 27 Apr 2010 17:02:55 +0300
branchRCL_3
changeset 14 5bf83dc720b3
parent 0 1bce908db942
permissions -rw-r--r--
Revision: 201015 Kit: 201017

/*
* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:    
*
*/




#include "mcecodec.h"
#include "mcesession.h"
#include "mcemanager.h"
#include "mcemediastream.h"
#include "mceclientserver.h"
#include "mcefactory.h"
#include "mceevents.h"
#include "mcestreamobserver.h"
#include "mceclientserver.h"
#include "mcecomcodec.h"


#define _FLAT_DATA static_cast<CMceComCodec*>( iFlatData )
#define FLAT_DATA( data ) _FLAT_DATA->data

// ============================ MEMBER FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// CMceCodec::~CMceCodec
// -----------------------------------------------------------------------------
//
CMceCodec::~CMceCodec()
    {
    delete iFlatData;
    }

// -----------------------------------------------------------------------------
// CMceCodec::InitializeL
// -----------------------------------------------------------------------------
//
void CMceCodec::InitializeL( CMceMediaStream& aParent )
    {    
    iStream = &aParent;
        
    if ( !Id().IsAssigned() )
        {
        FLAT_DATA( iID ) = iStream->Session()->Manager().NextMediaId();
        }
    }

// -----------------------------------------------------------------------------
// CMceCodec::SetStateL
// -----------------------------------------------------------------------------
//
EXPORT_C void CMceCodec::SetStateL( CMceCodec::TState aState )
    {
    FLAT_DATA( iState ) = aState;
    }


// -----------------------------------------------------------------------------
// CMceCodec::SetStandByTimerL
// -----------------------------------------------------------------------------
//
EXPORT_C void CMceCodec::SetStandByTimerL( TUint32 /*aTimerValue*/ )
    {
    // NOT SUPPORTED YET
    User::Leave( KErrNotSupported );
    }


// -----------------------------------------------------------------------------
// CMceCodec::SetMMFPriorityL
// -----------------------------------------------------------------------------
//
EXPORT_C void CMceCodec::SetMMFPriorityL( TInt aPriority )
    {
    FLAT_DATA( iPriority ) = aPriority;
    }

// -----------------------------------------------------------------------------
// CMceCodec::SetMMFPriorityPreferenceL
// -----------------------------------------------------------------------------
//
EXPORT_C void CMceCodec::SetMMFPriorityPreferenceL( TInt aPriorityPreference )
    {
    FLAT_DATA( iPriorityPreference ) = aPriorityPreference;
    }

// -----------------------------------------------------------------------------
// CMceCodec::SetKeepAliveTimerL
// -----------------------------------------------------------------------------
//
EXPORT_C void CMceCodec::SetKeepAliveTimerL( TUint8 aTimerValue )
    {
    FLAT_DATA( iKeepAliveTimer ) = aTimerValue;
    }

// -----------------------------------------------------------------------------
// CMceCodec::SetKeepAlivePayloadTypeL
// -----------------------------------------------------------------------------
//
EXPORT_C void CMceCodec::SetKeepAlivePayloadTypeL( TUint8 aKeepAlivePT )
    {
    FLAT_DATA( iKeepAlivePayloadType ) = aKeepAlivePT;
    }

// -----------------------------------------------------------------------------
// CMceCodec::SetKeepAliveDataL
// -----------------------------------------------------------------------------
//
EXPORT_C void CMceCodec::SetKeepAliveDataL( const TDesC8& aData )        
    {
    _FLAT_DATA->SetKeepAliveDataL( aData );    
    }


// -----------------------------------------------------------------------------
// CMceCodec::State
// -----------------------------------------------------------------------------
//
EXPORT_C CMceCodec::TState CMceCodec::State() const
    {
    return static_cast<CMceCodec::TState>( FLAT_DATA( iState ) );
    }
    
// -----------------------------------------------------------------------------
// CMceCodec::Type
// -----------------------------------------------------------------------------
//   
EXPORT_C TMceCodecType CMceCodec::Type() const
    {
    return iType;
    }

// -----------------------------------------------------------------------------
// CMceCodec::FourCC
// -----------------------------------------------------------------------------
//
EXPORT_C TUint32 CMceCodec::FourCC() const
    {
    return FLAT_DATA( iFourCC );
    }
       
// -----------------------------------------------------------------------------
// CMceCodec::Bitrate
// -----------------------------------------------------------------------------
//
EXPORT_C TUint CMceCodec::Bitrate() const
    {
    return FLAT_DATA( iBitrate );
    }

// -----------------------------------------------------------------------------
// CMceAudioCodec::AllowedBitrates
// -----------------------------------------------------------------------------
//
EXPORT_C TUint CMceCodec::AllowedBitrates() const
    {
    return FLAT_DATA( iAllowedBitrates );
    }
    
// -----------------------------------------------------------------------------
// CMceCodec::FrameSize
// -----------------------------------------------------------------------------
//
EXPORT_C TUint CMceCodec::FrameSize() const
    {
    return FLAT_DATA( iFrameSize );
    }
    
// -----------------------------------------------------------------------------
// CMceCodec::CodecMode
// -----------------------------------------------------------------------------
//
EXPORT_C TUint CMceCodec::CodecMode() const
    {
    return FLAT_DATA( iCodecMode );
    }    

// -----------------------------------------------------------------------------
// CMceCodec::PayloadType
// -----------------------------------------------------------------------------
//
EXPORT_C TUint8 CMceCodec::PayloadType() const
    {
    return FLAT_DATA( iPayloadType );
    }

    
// -----------------------------------------------------------------------------
// CMceCodec::SdpName
// -----------------------------------------------------------------------------
//
EXPORT_C const TDesC8& CMceCodec::SdpName() const
    {
    return FLAT_DATA( iSdpName );
    }

// -----------------------------------------------------------------------------
// 
// -----------------------------------------------------------------------------
//	
EXPORT_C TInt CMceCodec::MMFPriority() const
    {
    return FLAT_DATA( iPriority );
    }


// -----------------------------------------------------------------------------
// 
// -----------------------------------------------------------------------------
//	
EXPORT_C TInt CMceCodec::MMFPriorityPreference() const
    {
    return FLAT_DATA( iPriorityPreference );
    }

// -----------------------------------------------------------------------------
// 
// -----------------------------------------------------------------------------
//	
EXPORT_C TUint8 CMceCodec::KeepAliveTimer() const
    {
    return FLAT_DATA( iKeepAliveTimer );
    }

// -----------------------------------------------------------------------------
// 
// -----------------------------------------------------------------------------
//	
EXPORT_C TUint8 CMceCodec::KeepAlivePayloadType() const
    {
    return FLAT_DATA( iKeepAlivePayloadType );
    }

// -----------------------------------------------------------------------------
// 
// -----------------------------------------------------------------------------
//	
EXPORT_C const TDesC8& CMceCodec::KeepAliveData() const
    {
    if ( FLAT_DATA( iKeepAliveData ) )
        {
        return *FLAT_DATA( iKeepAliveData );
        }
    return KNullDesC8;
    }

// -----------------------------------------------------------------------------
// CMceCodec::Preference
// -----------------------------------------------------------------------------
//
EXPORT_C TInt CMceCodec::Preference() const
    {
    return FLAT_DATA( iPreference );
    }
	    
// -----------------------------------------------------------------------------
// CMceCodec::SetPreference
// -----------------------------------------------------------------------------
//
EXPORT_C void CMceCodec::SetPreferenceL( TInt aPeference )
    {
    FLAT_DATA( iPreference ) = aPeference;
    }

// -----------------------------------------------------------------------------
// CMceCodec::Id
// -----------------------------------------------------------------------------
//
TMceMediaId CMceCodec::Id() const
    {
    return FLAT_DATA( iID );
    }
     
// -----------------------------------------------------------------------------
// CMceCodec::SerializationId
// -----------------------------------------------------------------------------
//
TUint64 CMceCodec::SerializationId() const
    {
    return FLAT_DATA( SerializationId() );
    }
     
// -----------------------------------------------------------------------------
// CMceCodec::InternalizeFlatL
// -----------------------------------------------------------------------------
//
void CMceCodec::InternalizeFlatL( RReadStream& aReadStream )
    {
    __ASSERT_ALWAYS( iFlatData , User::Leave( KErrNotReady ) );
    _FLAT_DATA->InternalizeFlatL( aReadStream );
    }

// -----------------------------------------------------------------------------
// CMceCodec::ExternalizeFlatL
// -----------------------------------------------------------------------------
//
void CMceCodec::ExternalizeFlatL( RWriteStream& aWriteStream )
    {
    __ASSERT_ALWAYS( iFlatData , User::Leave( KErrNotReady ) );
    _FLAT_DATA->ExternalizeFlatL( aWriteStream );
    }

// -----------------------------------------------------------------------------
// CMceCodec::InternalizeL
// -----------------------------------------------------------------------------
//
void CMceCodec::InternalizeL( MMceComSerializationContext& aSerCtx )
    {
    InternalizeFlatL( aSerCtx.ReadStream() );
    }

// -----------------------------------------------------------------------------
// CMceCodec::ExternalizeL
// -----------------------------------------------------------------------------
//
void CMceCodec::ExternalizeL( MMceComSerializationContext& aSerCtx )
    {
    ExternalizeFlatL( aSerCtx.WriteStream() );
    }

// -----------------------------------------------------------------------------
// CMceCodec::BaseFactory
// -----------------------------------------------------------------------------
//
TMceFactory CMceCodec::BaseFactory()
    {
    return TMceFactory();
    }

// -----------------------------------------------------------------------------
// CMceCodec::FlatData
// -----------------------------------------------------------------------------
//    
CMceComCodec* CMceCodec::FlatData()
    {
    return iFlatData;
    }

// -----------------------------------------------------------------------------
// CMceCodec::Attach
// -----------------------------------------------------------------------------
//
void CMceCodec::Attach( CMceMediaStream& aParent )
    {
    iStream = &aParent;
    }
    
// -----------------------------------------------------------------------------
// CMceCodec::EventReceivedL
// -----------------------------------------------------------------------------
//
TInt CMceCodec::EventReceivedL( TMceEvent& aEvent )
    {
    TInt status = KMceEventNotOwner;
    TBool idMatch = aEvent.Id().iCodecID == Id();
    if ( !idMatch )
        {
        return KMceEventNotOwner;
        }
        
    if ( aEvent.Id().IsCodecId() )
        {
        status = KMceEventUpdate;
        }
    else
        {
        status = KMceEventNotConsumed;
        }
    
    return status;
    }

// -----------------------------------------------------------------------------
// CMceCodec::Updated
// -----------------------------------------------------------------------------
//
void CMceCodec::Updated()
    {
    }

// -----------------------------------------------------------------------------
// CMceCodec::SetSdpNameL
// -----------------------------------------------------------------------------
//
void CMceCodec::SetSdpNameL( const TDesC8& /*aSdpName*/ )
    {
    }
    
// -----------------------------------------------------------------------------
// CMceCodec::CMceCodec
// -----------------------------------------------------------------------------
//
CMceCodec::CMceCodec()
    {
    }

// -----------------------------------------------------------------------------
// CMceCodec::ConstructL
// -----------------------------------------------------------------------------
//
void CMceCodec::ConstructL( CMceComCodec* aFlatData )
    {
    iFlatData = aFlatData;
    FLAT_DATA( iID ) = TMceMediaId();//as not assigned
    }