summaryrefslogtreecommitdiffstats
path: root/src/plugins/symbian/openmaxal/mediaplayer/xaplaysessionimpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/symbian/openmaxal/mediaplayer/xaplaysessionimpl.h')
-rw-r--r--src/plugins/symbian/openmaxal/mediaplayer/xaplaysessionimpl.h210
1 files changed, 210 insertions, 0 deletions
diff --git a/src/plugins/symbian/openmaxal/mediaplayer/xaplaysessionimpl.h b/src/plugins/symbian/openmaxal/mediaplayer/xaplaysessionimpl.h
new file mode 100644
index 000000000..30144712a
--- /dev/null
+++ b/src/plugins/symbian/openmaxal/mediaplayer/xaplaysessionimpl.h
@@ -0,0 +1,210 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Mobility Components.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef XAPLAYSESSIONIMPL_H
+#define XAPLAYSESSIONIMPL_H
+
+#include <OpenMAXAL.h>
+#include <xanokiavolumeextitf.h>
+#include <xanokialinearvolumeitf.h>
+#ifdef USE_VIDEOPLAYERUTILITY
+#include <VideoPlayer2.h>
+#endif
+
+#include "qtmedianamespace.h"
+#include "qmediastreamscontrol.h"
+
+class XAPlayObserver;
+class RWindow;
+class RWsSession;
+
+class XAPlaySessionImpl
+#ifdef USE_VIDEOPLAYERUTILITY
+ : public MVideoPlayerUtilityObserver
+#endif
+{
+public:
+ XAPlaySessionImpl(XAPlayObserver& parent);
+ ~XAPlaySessionImpl();
+ TInt postConstruct();
+ TInt addNativeDisplay(RWindow* window, RWsSession* wssession);
+ TInt updateNativeDisplay(RWindow* window, RWsSession* wssession);
+ TInt removeNativeDisplay(RWindow* window, RWsSession* wssession);
+ TInt load(const TDesC& aURI);
+ void unload();
+ TInt play();
+ TInt pause();
+ TInt stop();
+ TInt duration(TInt64& aDur);
+ TInt position(TInt64& aPos);
+ TInt getSeekable(TBool& seekable);
+ TInt seek(TInt64 pos);
+
+ //Metadata
+ QStringList availableExtendedMetaData () const;
+ QList<QtMultimediaKit::MetaData> availableMetaData () const;
+ QVariant extendedMetaData(const QString & key ) const;
+ bool isMetaDataAvailable() const;
+ bool isWritable() const;
+ QVariant metaData( QtMultimediaKit::MetaData key ) const;
+ void setExtendedMetaData( const QString & key, const QVariant & value );
+ void setMetaData( QtMultimediaKit::MetaData key, const QVariant & value );
+
+ TInt volume(TInt&);
+ TInt setVolume(TInt);
+ TInt setMute(TBool);
+ TInt getMute(TBool&);
+
+ TInt bufferStatus(TInt &);
+
+
+ TInt numMediaStreams(TUint& numStreams);
+ TInt streamType(TUint index, QMediaStreamsControl::StreamType& type);
+ TInt isStreamActive(TUint index, TBool& isActive);
+
+ TInt getPlaybackRate(TReal32 &rate);
+ TInt setPlaybackRate(TReal32 rate);
+
+ //AspectRatioMode
+ void setAspectRatioMode(Qt::AspectRatioMode);
+ Qt::AspectRatioMode getAspectRatioMode();
+
+public:
+ void cbMediaPlayer( XAObjectItf caller,
+ const void *pContext,
+ XAuint32 event,
+ XAresult result,
+ XAuint32 param,
+ void *pInterface);
+
+ void cbPlayItf(XAPlayItf caller,
+ void *pContext,
+ XAuint32 event);
+
+
+ void cbPrefetchItf(XAuint32);
+
+ void cbStreamInformationItf(XAuint32, XAuint32, void*);
+
+#ifdef USE_VIDEOPLAYERUTILITY
+ //MVideoPlayerUtilityObserver
+ void MvpuoOpenComplete(TInt aError);
+ void MvpuoPrepareComplete(TInt aError);
+ void MvpuoFrameReady(CFbsBitmap& aFrame,TInt aError);
+ void MvpuoPlayComplete(TInt aError);
+ void MvpuoEvent(const TMMFEvent& aEvent);
+#endif
+
+private:
+ TInt mapError(XAresult xa_err,
+ TBool debPrn);
+ void setupALKeyMap();
+ TInt setupMetaData();
+ TInt mapMetaDataKey(const char* asckey, QtMultimediaKit::MetaData& key);
+ QVariant getMetaData( int alIndex ) const;
+
+ QMediaStreamsControl::StreamType mapStreamType(XAuint32& alStreamType);
+
+
+private:
+ XAPlayObserver& mParent;
+ XAObjectItf mEOEngine;
+ XAObjectItf mMOPlayer;
+ XAPlayItf mPlayItf;
+ XASeekItf mSeekItf;
+ HBufC8* mURIName;
+ HBufC8* mWAVMime;
+ // Audio Source
+ XADataSource mDataSource;
+ XADataFormat_MIME mMime;
+ XADataLocator_URI mUri;
+ //Audio Sink
+ XADataSink mAudioSink;
+ XADataLocator_IODevice mLocatorOutputDevice;
+ //Video Sink
+ XADataSink mVideoSink;
+ XADataLocator_NativeDisplay mNativeDisplay;
+
+ //Metadata
+ TBool mbMetadataAvailable;
+ XAMetadataExtractionItf mMetadataExtItf;
+ QHash<QString, QtMultimediaKit::MetaData> alKeyMap;
+ QHash<QtMultimediaKit::MetaData, int> keyMap;
+ QHash<QString,int> extendedKeyMap;
+
+ //Volume
+ XANokiaLinearVolumeItf mNokiaLinearVolumeItf;
+ TBool mbVolEnabled;
+ XANokiaVolumeExtItf mNokiaVolumeExtItf;
+ TBool mbMuteEnabled;
+
+ //buffer status
+ XAPrefetchStatusItf mPrefetchStatusItf;
+ TBool mbPrefetchStatusChange;
+
+ //stream information
+ XAStreamInformationItf mStreamInformationItf;
+ TBool mbStreamInfoAvailable;
+ TBool mbAudioStream;
+ TBool mbVideoStream;
+ TInt mNumStreams;
+
+ //Playbackrate
+ XAPlaybackRateItf mPlaybackRateItf;
+ TBool mbPlaybackRateItfAvailable;
+
+ XAVideoPostProcessingItf mVideoPostProcessingItf;
+ TBool mbScalable;
+ Qt::AspectRatioMode mCurrAspectRatioMode;
+
+ //internal
+ TInt64 mCurPosition; // in milliseconds
+ TInt64 mDuration; // in milliseconds
+
+ TBool mbMediaPlayerUnrealized;
+#ifdef USE_VIDEOPLAYERUTILITY
+ CVideoPlayerUtility2* mVideoPlayUtil;
+ CActiveSchedulerWait* mActiveSchedulerWait;
+ TInt m_VPError;
+#endif
+};
+
+#endif /* XAPLAYSESSIONIMPL_H */