mpx/playbackframework/playbackengine/inc/mpxplaybackengine.inl
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 27 May 2010 13:19:19 +0300
changeset 32 edd273b3192a
parent 0 a2952bb97e68
permissions -rw-r--r--
Revision: 201019 Kit: 2010121

/*
* Copyright (c) 2006 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:  Inline implementation of playback engine
*
*/


#include <mpxlog.h>
// ============================ LOCAL FUNCTIONS ==============================

// ----------------------------------------------------------------------------
// Check if a pointer is NULL
// ----------------------------------------------------------------------------
//
#include <mpxmessage2.h>
#include <mpxcollectionplaylist.h>
#include <mpxmediacollectiondetaildefs.h>
#include <mpxplaybackmessagedefs.h>

inline void CheckPtrL(TAny* aPtr)
    {
    if (!aPtr)
        {
        User::Leave(KErrNotReady);
        }
    }
    
// ----------------------------------------------------------------------------
// Check if a pointer is NULL
// ----------------------------------------------------------------------------
//
inline void CheckPtrL(const TAny* aPtr)
    {
    CheckPtrL(const_cast<TAny*>(aPtr));
    }

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

// ----------------------------------------------------------------------------
// Return plugin interface
// ----------------------------------------------------------------------------
//
inline CMPXPlaybackPlugin* CMPXPlaybackEngine::PluginL() const
    {
    CheckPtrL(iPluginHandler->Plugin());
    return iPluginHandler->Plugin();
    }

// ----------------------------------------------------------------------------
// Return the list of clients attached to this player
// ----------------------------------------------------------------------------
//
inline CMPXClientList* CMPXPlaybackEngine::ClientList()
    {
    return iClientList;
    }

// ----------------------------------------------------------------------------
// Return plugin handler
// ----------------------------------------------------------------------------
//
inline CMPXPlaybackPluginHandler* CMPXPlaybackEngine::PluginHandler()
    {
    return iPluginHandler;
    }    
    
// ----------------------------------------------------------------------------
// Does this player have access to audio resource
// ----------------------------------------------------------------------------
//
inline TBool CMPXPlaybackEngine::IsPlayerActive() const
    {
    return iPlayerActive;
    }
    
// ----------------------------------------------------------------------------
// Return mode id of the player engine
// ----------------------------------------------------------------------------
//
inline const TUid& CMPXPlaybackEngine::ModeId() const
    {
    return iModeId;
    }
	

// ----------------------------------------------------------------------------
// Return category of the player engine
// ----------------------------------------------------------------------------
//
inline const TInt CMPXPlaybackEngine::Category() const
    {
    return iCategory;
    }

// ----------------------------------------------------------------------------
// Current state
// ----------------------------------------------------------------------------
//
inline TMPXPlaybackState CMPXPlaybackEngine::State() const
    {
    MPX_DEBUG3("CMPXPlaybackEngine::State(): this = 0x%08x, iState = %d", this, iState);
    return iState;
    }   
          
// ----------------------------------------------------------------------------
// Current collection path, or KNullDesC if none (i.e. not from collection)
// ----------------------------------------------------------------------------
//
inline const CMPXCollectionPlaylist* CMPXPlaybackEngine::Playlist() const
    {
    CMPXCollectionPlaylist* pl = NULL;
    if (iPlaylist && iPlaySource==EPlayFromCollection)
        {
        pl = iPlaylist;
        }    
    return pl;
    }
    
// ----------------------------------------------------------------------------
// Current uri, or KNullDesC if none (i.e. uri not supplied)
// ----------------------------------------------------------------------------
//
inline const TDesC& CMPXPlaybackEngine::Uri() const
    { 
    return (iUri && iPlaySource == EPlayFromUri) ? 
            static_cast<const TDesC&>(*iUri) : KNullDesC;
    }    

// ----------------------------------------------------------------------------
// Current file handle
// ----------------------------------------------------------------------------
//
inline const RFile& CMPXPlaybackEngine::File() const
    {
    return iFile;
    }

// ----------------------------------------------------------------------------
// Return last active process id
// ----------------------------------------------------------------------------
//
inline TProcessId CMPXPlaybackEngine::LastActiveProcessId() const
    {
    return iLastActiveProcess;
    }

// ----------------------------------------------------------------------------
// CPlaybackCallbackReflector constructor
// ----------------------------------------------------------------------------
//
inline CMPXPlaybackEngine::TCallbackReflector::TCallbackReflector(
                                                   CMPXPlaybackEngine& aEngine)
    : iEngine(aEngine)
    {
    }

// ----------------------------------------------------------------------------
// Handle playback property
// Called by CMPXPlaybackEngine::HandleProperty which is called by plugin
// ----------------------------------------------------------------------------
//  
void CMPXPlaybackEngine::TCallbackReflector::HandleProperty(
    TMPXPlaybackProperty aProperty,
    TInt aValue,
    TInt aError)
    {
    MPX_FUNC_EX("CMPXPlaybackEngine::TCallbackReflector::HandleProperty");
    MPX_DEBUG5("HandleProperty eninge 0x%08x prop %d val %d err %d", 
                &iEngine, aProperty, aValue, aError);
    ASSERT(iEngine.iTaskQueue->Task() == EProperty);
    if (KErrNone == aError)
        {
        iEngine.iProperties[aProperty]=aValue;
        TRAP_IGNORE(
            iEngine.iClientList->SendMsgL(TMPXPlaybackMessage(
                                    TMPXPlaybackMessage::EPropertyChanged,
                                    aProperty, aValue)));
        }
    // Task will be completed in the CMPXPlaybackEngine::HandleProperty
    }
    
// ----------------------------------------------------------------------------
// Method is called continously until aComplete=ETrue, signifying that 
// it is done and there will be no more callbacks
// ----------------------------------------------------------------------------
//  
void CMPXPlaybackEngine::TCallbackReflector::HandleSubPlayerNames(
                                               TUid /*aPlayer*/,
                                               const MDesCArray* /*aSubPlayers*/,
                                               TBool /*aComplete*/,
                                               TInt  /*aError*/)
    {
    MPX_FUNC_EX("CMPXPlaybackEngine::TCallbackReflector::HandleSubPlayerNames");
    }
    
// ----------------------------------------------------------------------------
// Callback of media request
// ----------------------------------------------------------------------------
//  
void CMPXPlaybackEngine::TCallbackReflector::HandleMedia(
                                    CMPXMedia* /*aMedia*/,
                                    TInt /*aError*/)
    {
    MPX_FUNC_EX("CMPXPlaybackEngine::TCallbackReflector::HandleMedia");
    }

#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
// ----------------------------------------------------------------------------
// Current file handle
// ----------------------------------------------------------------------------
//
inline const RFile64& CMPXPlaybackEngine::File64() const
    {
    MPX_FUNC("CMPXPlaybackEngine::File64()");
    return iFile64;
    }
#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API

//End of file