khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.h
author hgs
Tue, 21 Sep 2010 11:38:43 -0500
changeset 53 eabc8c503852
parent 43 9894ed580e4a
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
25
hgs
parents: 21
diff changeset
     2
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents: 21
diff changeset
     3
 * All rights reserved.
hgs
parents: 21
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents: 21
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents: 21
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents: 21
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents: 21
diff changeset
     8
 *
hgs
parents: 21
diff changeset
     9
 * Initial Contributors:
hgs
parents: 21
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents: 21
diff changeset
    11
 *
hgs
parents: 21
diff changeset
    12
 * Contributors:
hgs
parents: 21
diff changeset
    13
 *
hgs
parents: 21
diff changeset
    14
 * Description: MMF Backend Engine Header
hgs
parents: 21
diff changeset
    15
 *
hgs
parents: 21
diff changeset
    16
 */
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
25
hgs
parents: 21
diff changeset
    18
#ifndef CMMFBackendEngine_H
hgs
parents: 21
diff changeset
    19
#define CMMFBackendEngine_H
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#define ENABLE_GRAPHICS_SURFACE_INTEGRATION
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include "openmaxalwrapper.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#ifdef __cplusplus
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
#include <e32base.h>
20
hgs
parents: 19
diff changeset
    28
#include <mdaaudiosampleplayer.h>  
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
#include <f32file.h>
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
#include <videoplayer.h>
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
#include <videoplayer2.h>
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
#include <e32std.h>
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
#include <mmf/common/mmferrors.h>
43
hgs
parents: 28
diff changeset
    34
#include <mmf/common/mmfbase.h>
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
#include <MMFMetadataEventConfigConstants.h>
19
hgs
parents: 12
diff changeset
    36
#include <mmf/common/mmfstandardcustomcommands.h>
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    37
#ifdef ENABLE_GRAPHICS_SURFACE_INTEGRATION
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
#include <graphics/surface.h> //TSurfaceId
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
#include <mmf/common/mmfvideo.h> //TVideoAspectRatio
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
#include <mediaclientvideodisplay.h>
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
#include <surfaceeventhandler.h>
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
#include <mdaaudiosampleeditor.h>
19
hgs
parents: 12
diff changeset
    43
#include <AudioInput.h>
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
#include "sfmrlocaltimer.h"
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
#endif
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
// MetaDataWrite Custom Command UID
25
hgs
parents: 21
diff changeset
    48
const TUid KUidMetaDataWriteCustomCommand =
hgs
parents: 21
diff changeset
    49
    {
hgs
parents: 21
diff changeset
    50
    0x10207af9
hgs
parents: 21
diff changeset
    51
    };
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
#define MAX_EXTENSION_SIZE 10
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
19
hgs
parents: 12
diff changeset
    55
class CMarkerPositionTimer;
hgs
parents: 12
diff changeset
    56
class CPositionUpdateTimer;
53
hgs
parents: 43
diff changeset
    57
class CPrefetchLevelUpdateTimer;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
NONSHARABLE_CLASS(CMMFBackendEngine) : public CBase,
25
hgs
parents: 21
diff changeset
    59
        public MVideoPlayerUtilityObserver,
hgs
parents: 21
diff changeset
    60
        public MVideoLoadingObserver,
hgs
parents: 21
diff changeset
    61
        public MMdaAudioPlayerCallback,
hgs
parents: 21
diff changeset
    62
        public MMdaObjectStateChangeObserver
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
    {
25
hgs
parents: 21
diff changeset
    64
public:
hgs
parents: 21
diff changeset
    65
    enum TFuncInUse
hgs
parents: 21
diff changeset
    66
        {
hgs
parents: 21
diff changeset
    67
                EPlay = 0, 
hgs
parents: 21
diff changeset
    68
                ERecord
hgs
parents: 21
diff changeset
    69
        };
21
hgs
parents: 20
diff changeset
    70
25
hgs
parents: 21
diff changeset
    71
    enum TUriType
hgs
parents: 21
diff changeset
    72
        {
hgs
parents: 21
diff changeset
    73
                ELocal = 0, 
hgs
parents: 21
diff changeset
    74
                EStreaming
hgs
parents: 21
diff changeset
    75
        };
hgs
parents: 21
diff changeset
    76
hgs
parents: 21
diff changeset
    77
    enum TMMFUtiltyInUse
hgs
parents: 21
diff changeset
    78
        {
19
hgs
parents: 12
diff changeset
    79
        ENoUtility,
hgs
parents: 12
diff changeset
    80
        EVideoPlayerUtility,
hgs
parents: 12
diff changeset
    81
        EAudioPlayerUtility,
hgs
parents: 12
diff changeset
    82
        EAudioRecorderUtility
25
hgs
parents: 21
diff changeset
    83
        };
hgs
parents: 21
diff changeset
    84
hgs
parents: 21
diff changeset
    85
    enum TRecorderState
hgs
parents: 21
diff changeset
    86
        {
hgs
parents: 21
diff changeset
    87
                ERecorderNotReady = 0, 
hgs
parents: 21
diff changeset
    88
                ERecorderOpen, 
hgs
parents: 21
diff changeset
    89
                ERecorderRecording
hgs
parents: 21
diff changeset
    90
        };
hgs
parents: 21
diff changeset
    91
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    92
public:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
    static CMMFBackendEngine* NewL();
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
    ~CMMFBackendEngine();
25
hgs
parents: 21
diff changeset
    96
hgs
parents: 21
diff changeset
    97
    TInt SetFileName(char* uri, XAuint32 format, TFuncInUse func);
19
hgs
parents: 12
diff changeset
    98
    void Close();
hgs
parents: 12
diff changeset
    99
    void Destroy();
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
    TInt SetRecorderState(TRecorderState state, XAboolean stopCalled);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
    TInt GetRecordPosition(XAuint64* position);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
    TInt SetPositionUpdatePerioed(XAmillisecond period);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
    TInt SetAdaptContext(void* adaptcontext);
19
hgs
parents: 12
diff changeset
   104
    TInt GetCodecId(XAuint32* encoderId);
hgs
parents: 12
diff changeset
   105
    TInt GetBitRate(XAuint32* bitrate);
hgs
parents: 12
diff changeset
   106
    TInt GetSampleRate(XAmilliHertz* samplerate);
hgs
parents: 12
diff changeset
   107
    TInt GetChannels(XAuint32* channels);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
    TInt SetDestinationBitRate(XAuint32* bitrate);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
    TInt SetDestinationSampleRate(XAmilliHertz* samplerate);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
    TInt SetDestinationChannels(XAuint32* channels);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
19
hgs
parents: 12
diff changeset
   112
    XAresult CreateAndConfigureWindowL();
hgs
parents: 12
diff changeset
   113
    XAresult SetNativeDisplayInformation(void* display_info);
hgs
parents: 12
diff changeset
   114
    XAresult ResumePlayback();
25
hgs
parents: 21
diff changeset
   115
    XAresult PausePlayback();
19
hgs
parents: 12
diff changeset
   116
    XAresult StopPlayback();
hgs
parents: 12
diff changeset
   117
    XAresult GetPlayState(XAuint32 *pState);
hgs
parents: 12
diff changeset
   118
    XAresult GetDuration(XAmillisecond *pMsec);
hgs
parents: 12
diff changeset
   119
    XAresult GetPosition(XAmillisecond *pMsec);
hgs
parents: 12
diff changeset
   120
    XAresult SetPlayAdaptContext(void * adaptcontext);
hgs
parents: 12
diff changeset
   121
    XAresult RegisterCallback(xaPlayCallback cbFunction);
hgs
parents: 12
diff changeset
   122
    XAresult SetCallbackEventsMask(XAuint32 eventflags);
hgs
parents: 12
diff changeset
   123
    XAresult SetMarkerPosition(XAmillisecond mSec);
hgs
parents: 12
diff changeset
   124
    XAresult ClearMarkerPosition();
hgs
parents: 12
diff changeset
   125
    XAresult SetPositionUpdatePeriod(XAmillisecond mSec);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
19
hgs
parents: 12
diff changeset
   127
    XAresult SetPosition(XAmillisecond pMsec);
hgs
parents: 12
diff changeset
   128
    XAresult SetRepeats(XAboolean repeat);
hgs
parents: 12
diff changeset
   129
    XAresult SetPlayWindow(XAmillisecond start, XAmillisecond end);
25
hgs
parents: 21
diff changeset
   130
19
hgs
parents: 12
diff changeset
   131
    XAresult GetNumStreams(XAuint32* numstreams);
hgs
parents: 12
diff changeset
   132
    XAresult GetStreamInfo(XAuint32 streamindex, XAuint32* streamtype);
25
hgs
parents: 21
diff changeset
   133
    XAresult GetVideoFrameSize(XAuint32* height, XAuint32* width,
hgs
parents: 21
diff changeset
   134
            XAuint32* frameRate);
19
hgs
parents: 12
diff changeset
   135
    XAresult SetActiveState(XAuint32 streamindex, XAboolean active);
25
hgs
parents: 21
diff changeset
   136
19
hgs
parents: 12
diff changeset
   137
    XAresult SetVolume(XAuint32 volume);
hgs
parents: 12
diff changeset
   138
    XAresult GetVolume(XAuint32* volume);
hgs
parents: 12
diff changeset
   139
    XAresult GetMaxVolume(XAuint32* maxvolume);
28
hgs
parents: 25
diff changeset
   140
hgs
parents: 25
diff changeset
   141
    XAresult SetPlaybackRate(XAint16 rate);
hgs
parents: 25
diff changeset
   142
    XAresult GetPlaybackRateCapabilities(XAboolean* forward, XAboolean* backward);
53
hgs
parents: 43
diff changeset
   143
	//PrefetchStatus
hgs
parents: 43
diff changeset
   144
	XAresult RegisterPrefetchCallback(xaPrefetchCallback);
hgs
parents: 43
diff changeset
   145
	XAresult SetPrefetchLevelUpdatePeriod(XApermille);
hgs
parents: 43
diff changeset
   146
	XAresult SetPrefetchCallbackEventsMask(XAuint32 eventflags);
hgs
parents: 43
diff changeset
   147
	
hgs
parents: 43
diff changeset
   148
	XAresult GetPrefetchStatus(XAuint32* status);
hgs
parents: 43
diff changeset
   149
	XAresult GetPrefetchFillLevel(XApermille* level);
hgs
parents: 43
diff changeset
   150
hgs
parents: 43
diff changeset
   151
	XAresult RegisterStreamInfoCallback(xaStreamEventChangeCallback);
hgs
parents: 43
diff changeset
   152
hgs
parents: 43
diff changeset
   153
    XAresult SetSourceRect(const XARectangle* rect);
hgs
parents: 43
diff changeset
   154
    XAresult SetDestinationRect(const XARectangle* rect);
hgs
parents: 43
diff changeset
   155
    XAresult SetRotation(XAmillidegree rotation);
hgs
parents: 43
diff changeset
   156
    XAresult SetScaleOptions(XAuint32 options);
28
hgs
parents: 25
diff changeset
   157
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   158
public:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   159
19
hgs
parents: 12
diff changeset
   160
    // MMdaObjectStateChangeObserver
25
hgs
parents: 21
diff changeset
   161
    void MoscoStateChangeEvent(CBase* aObject, TInt aPreviousState,
hgs
parents: 21
diff changeset
   162
            TInt aCurrentState, TInt aErrorcCode);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   163
19
hgs
parents: 12
diff changeset
   164
    //MMdaAudioPlayerCallback
25
hgs
parents: 21
diff changeset
   165
    void MapcInitComplete(TInt aError,
19
hgs
parents: 12
diff changeset
   166
            const TTimeIntervalMicroSeconds& aDuration);
hgs
parents: 12
diff changeset
   167
    void MapcPlayComplete(TInt aError);
25
hgs
parents: 21
diff changeset
   168
19
hgs
parents: 12
diff changeset
   169
    //From MVidePlayerUtilityObserver
hgs
parents: 12
diff changeset
   170
    void MvpuoOpenComplete(TInt aError);
hgs
parents: 12
diff changeset
   171
    void MvpuoPrepareComplete(TInt aError);
hgs
parents: 12
diff changeset
   172
    void MvpuoFrameReady(CFbsBitmap& aFrame, TInt aError);
hgs
parents: 12
diff changeset
   173
    void MvpuoPlayComplete(TInt aError);
hgs
parents: 12
diff changeset
   174
    void MvpuoEvent(const TMMFEvent& aEvent);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   175
19
hgs
parents: 12
diff changeset
   176
    // From MRebufferCallback
hgs
parents: 12
diff changeset
   177
    void MvloLoadingStarted();
25
hgs
parents: 21
diff changeset
   178
    void MvloLoadingComplete();
19
hgs
parents: 12
diff changeset
   179
25
hgs
parents: 21
diff changeset
   180
private:
19
hgs
parents: 12
diff changeset
   181
    enum TPlayerState
25
hgs
parents: 21
diff changeset
   182
        {
hgs
parents: 21
diff changeset
   183
        EPlayerClosed,
hgs
parents: 21
diff changeset
   184
        EPlayerOpened,
hgs
parents: 21
diff changeset
   185
        EPlayerPrepared,
hgs
parents: 21
diff changeset
   186
        EPlayerPaused,
hgs
parents: 21
diff changeset
   187
        EPlayerPlaying,
hgs
parents: 21
diff changeset
   188
        };
hgs
parents: 21
diff changeset
   189
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   190
private:
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
    CMMFBackendEngine();
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
    void ConstructL();
20
hgs
parents: 19
diff changeset
   193
    void InitAudioRecorderUtilityL();
19
hgs
parents: 12
diff changeset
   194
    void InitAudioPlayerUtilityL();
hgs
parents: 12
diff changeset
   195
    void InitVideoPlayerUtilityL();
hgs
parents: 12
diff changeset
   196
    void InitPlayerTimersL();
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
    TInt DetermineAPIToUse(char *uri, TFuncInUse aFunc);
19
hgs
parents: 12
diff changeset
   198
    XAresult DoHandlePlayItfAttributesChanged();
hgs
parents: 12
diff changeset
   199
    void DoPostEvent(XAuint32 event);
hgs
parents: 12
diff changeset
   200
    TInt InitializeURIForMMFUtil(char *uri);
hgs
parents: 12
diff changeset
   201
53
hgs
parents: 43
diff changeset
   202
	//StreamInfo
hgs
parents: 43
diff changeset
   203
	void SetStreamInfo();
hgs
parents: 43
diff changeset
   204
	void SendStreamInfoEvent(TInt);	
hgs
parents: 43
diff changeset
   205
19
hgs
parents: 12
diff changeset
   206
private:
25
hgs
parents: 21
diff changeset
   207
    CVideoPlayerUtility2* iVideoPlayer;
hgs
parents: 21
diff changeset
   208
    CBase* iBaseVideoPlayer;
hgs
parents: 21
diff changeset
   209
    CMdaAudioPlayerUtility* iAudioPlayer;
hgs
parents: 21
diff changeset
   210
    CBase* iBaseAudioPlayer;
hgs
parents: 21
diff changeset
   211
    CMdaAudioRecorderUtility* iAudioRecorder;
hgs
parents: 21
diff changeset
   212
    CBase* iBaseAudioRecorder;
hgs
parents: 21
diff changeset
   213
    TFileName iFileName;
hgs
parents: 21
diff changeset
   214
    TInt iAPIBeingUsed;
hgs
parents: 21
diff changeset
   215
    TInt iPreviousRecordState;
hgs
parents: 21
diff changeset
   216
    TInt iCurrentRecordState;
hgs
parents: 21
diff changeset
   217
    TInt iErrorCode;
hgs
parents: 21
diff changeset
   218
    TRecorderState iRecordState;
hgs
parents: 21
diff changeset
   219
    LocalTimer* iPositionUpdateTimer;
hgs
parents: 21
diff changeset
   220
    TUint64 iTimerDelay;
hgs
parents: 21
diff changeset
   221
    void* iAdaptContext;
hgs
parents: 21
diff changeset
   222
    XAuint32 iFileFormat;
hgs
parents: 21
diff changeset
   223
    TInt iPauseSupportMP4;
hgs
parents: 21
diff changeset
   224
    CActiveSchedulerWait* iActiveSchedulerWait;
hgs
parents: 21
diff changeset
   225
    CAudioInput* iAudioInputRecord;
19
hgs
parents: 12
diff changeset
   226
#ifdef USE_LOCAL_WINDOW_RESOURCES
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   227
    CMediaClientVideoDisplay* iMediaClientVideoDisplay;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
    TRect m_clipRect;
25
hgs
parents: 21
diff changeset
   229
    TRect m_videoExtent;
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
    TRect m_cropRegion;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   231
    TVideoAspectRatio m_pixelAspectRatio;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
    RWindow m_Window;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
    TRect m_cropRect;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   234
    TSurfaceId m_surfaceId;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
    TVideoRotation m_rotation;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   236
    TReal32 m_scaleWidth;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   237
    TReal32 m_scaleHeight;
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   238
    TInt m_horizPos;
25
hgs
parents: 21
diff changeset
   239
    TInt m_vertPos;
hgs
parents: 21
diff changeset
   240
    TInt m_displayId;
19
hgs
parents: 12
diff changeset
   241
    /*TBool m_bWindowReferencePassed;*/
hgs
parents: 12
diff changeset
   242
    RWsSession m_ws;
hgs
parents: 12
diff changeset
   243
#endif /* USE_LOCAL_WINDOW_RESOURCES */
hgs
parents: 12
diff changeset
   244
hgs
parents: 12
diff changeset
   245
    /* Holds duration of the media clip opend for playback */
hgs
parents: 12
diff changeset
   246
    TTimeIntervalMicroSeconds iMediaDuration;
hgs
parents: 12
diff changeset
   247
    /* Holds the playback position to be used for next play command */
hgs
parents: 12
diff changeset
   248
    TTimeIntervalMicroSeconds iPlaybackHead;
hgs
parents: 12
diff changeset
   249
    /* Holds current XA state of media player object */
hgs
parents: 12
diff changeset
   250
    XAuint32 iMediaPlayerState;
hgs
parents: 12
diff changeset
   251
    /* Owns */
hgs
parents: 12
diff changeset
   252
    CMarkerPositionTimer* iMarkerPositionTimer;
hgs
parents: 12
diff changeset
   253
    CPositionUpdateTimer* iPlayItfPositionUpdateTimer;
hgs
parents: 12
diff changeset
   254
    /* Owns */
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   255
    CWsScreenDevice* m_pScr;
19
hgs
parents: 12
diff changeset
   256
    /* Holds mmf state of media player object */
hgs
parents: 12
diff changeset
   257
    TPlayerState iMMFPlayerState;
hgs
parents: 12
diff changeset
   258
hgs
parents: 12
diff changeset
   259
    /* Property set by client */
hgs
parents: 12
diff changeset
   260
    XAuint32 iPlayItfEventFlags;
hgs
parents: 12
diff changeset
   261
    /* Property set by client */
hgs
parents: 12
diff changeset
   262
    xaPlayCallback iPlayItfCBFunction;
hgs
parents: 12
diff changeset
   263
    /* Property set by client */
hgs
parents: 12
diff changeset
   264
    XAmillisecond iMarkerPosition;
hgs
parents: 12
diff changeset
   265
    /* Property set by client */
hgs
parents: 12
diff changeset
   266
    XAmillisecond iPositionUpdatePeriod;
53
hgs
parents: 43
diff changeset
   267
hgs
parents: 43
diff changeset
   268
	//PrefetchStatus Interface variables
hgs
parents: 43
diff changeset
   269
	TBool bPrefetchCallbackRegistered;
hgs
parents: 43
diff changeset
   270
	TBool bStatusChangeMask;
hgs
parents: 43
diff changeset
   271
    CPrefetchLevelUpdateTimer* iPrefetchLevelUpdateTimer;
hgs
parents: 43
diff changeset
   272
    XAmillisecond iPrefetchLevelUpdatePeriod;
hgs
parents: 43
diff changeset
   273
	XAuint32 iPrefetchStatus;
hgs
parents: 43
diff changeset
   274
hgs
parents: 43
diff changeset
   275
	//StreamInfo
hgs
parents: 43
diff changeset
   276
	TInt iNumStreams;
hgs
parents: 43
diff changeset
   277
	TBool iAudioOnly; 
hgs
parents: 43
diff changeset
   278
	TBool iStreamInfoEventSubscribed;
hgs
parents: 43
diff changeset
   279
19
hgs
parents: 12
diff changeset
   280
    /* Property set by client (for file without file:///) */
hgs
parents: 12
diff changeset
   281
    HBufC* iUri; /* owns */
hgs
parents: 12
diff changeset
   282
    TPtr iUriPtr;
21
hgs
parents: 20
diff changeset
   283
    TUriType iUriType;
19
hgs
parents: 12
diff changeset
   284
    /* Property set by client */
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   285
    RWsSession* m_pWs;
19
hgs
parents: 12
diff changeset
   286
    /* Property set by client */
25
hgs
parents: 21
diff changeset
   287
    RWindow* m_pWindow;
19
hgs
parents: 12
diff changeset
   288
    };
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   289
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   290
#else  /* __cplusplus */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   291
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   292
extern int mmf_backend_engine_init(void** engine);
19
hgs
parents: 12
diff changeset
   293
extern int mmf_backend_engine_deinit(void* engine);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   294
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   295
extern int mmf_set_recorder_uri(void* context, char* uri, XAuint32 format);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   296
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   297
extern void mmf_close(void* context);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   298
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   299
extern int mmf_set_adapt_context(void* context, void* adaptcontext);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   300
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   301
extern int mmf_start_recording(void* context);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   302
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   303
extern int mmf_stop_recording(void* context, XAboolean stopCalled);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   304
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   305
extern int mmf_get_record_position(void* context, XAuint64* position);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   306
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   307
extern int mmf_set_record_position_update_period(void* context, XAmillisecond msec);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   308
19
hgs
parents: 12
diff changeset
   309
extern int mmf_get_codec_id(void* context, XAuint32* encoderId);
hgs
parents: 12
diff changeset
   310
extern int mmf_get_channels(void* context, XAuint32* channelsIn);
hgs
parents: 12
diff changeset
   311
extern int mmf_get_samplerate(void* context, XAmilliHertz* sampleRate);
hgs
parents: 12
diff changeset
   312
extern int mmf_get_bitrate(void* context, XAuint32* bitRate);
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   313
extern int mmf_set_destination_channels(void* context, XAuint32* channelsIn);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   314
extern int mmf_set_destination_samplerate(void* context, XAmilliHertz* sampleRate);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   315
extern int mmf_set_destination_bitrate(void* context, XAuint32* bitRate);
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   316
19
hgs
parents: 12
diff changeset
   317
extern XAresult mmf_set_play_adapt_context(void * context, void * adaptcontext);
hgs
parents: 12
diff changeset
   318
extern XAresult mmf_set_player_uri(void * context, char * uri, XAuint32 format);
hgs
parents: 12
diff changeset
   319
/*extern XAresult mmf_set_window_handle(void * context, void * display_infos);*/
hgs
parents: 12
diff changeset
   320
extern XAresult mmf_setup_native_display(void * context, void * display_info);
hgs
parents: 12
diff changeset
   321
hgs
parents: 12
diff changeset
   322
/*Functions for XAPlayItf*/
hgs
parents: 12
diff changeset
   323
extern XAresult mmf_playitf_resume_playback(void * context);
hgs
parents: 12
diff changeset
   324
extern XAresult mmf_playitf_pause_playback(void * context);
hgs
parents: 12
diff changeset
   325
extern XAresult mmf_playitf_stop_playback(void * context);
hgs
parents: 12
diff changeset
   326
extern XAresult mmf_playitf_get_play_state(void * context, XAuint32 * pState);
hgs
parents: 12
diff changeset
   327
extern XAresult mmf_playitf_get_duration(void * context, XAmillisecond * pMsec);
hgs
parents: 12
diff changeset
   328
extern XAresult mmf_playitf_get_position(void * context, XAmillisecond * pMsec);
hgs
parents: 12
diff changeset
   329
extern XAresult mmf_playitf_register_callback(void * context, xaPlayCallback callback);
hgs
parents: 12
diff changeset
   330
extern XAresult mmf_playitf_set_callback_events_mask(void * context, XAuint32 eventflags);
hgs
parents: 12
diff changeset
   331
extern XAresult mmf_playitf_set_marker_position(void * context, XAmillisecond mSec);
hgs
parents: 12
diff changeset
   332
extern XAresult mmf_playitf_clear_marker_position(void * context);
hgs
parents: 12
diff changeset
   333
extern XAresult mmf_playitf_set_position_update_period(void * context, XAmillisecond mSec);
hgs
parents: 12
diff changeset
   334
hgs
parents: 12
diff changeset
   335
extern XAresult mmf_seekitf_set_position(void * context, XAmillisecond mSec);
hgs
parents: 12
diff changeset
   336
extern XAresult mmf_seekitf_set_playwindow(void * context, XAmillisecond start, XAmillisecond end);
hgs
parents: 12
diff changeset
   337
extern XAresult mmf_seekitf_set_repeats(void * context, XAboolean repeat);
hgs
parents: 12
diff changeset
   338
hgs
parents: 12
diff changeset
   339
extern XAresult mmf_streaminformationitf_get_numstreams(void * context, XAuint32* numstreams);
hgs
parents: 12
diff changeset
   340
extern XAresult mmf_streaminformationitf_get_streaminfo(void * context, XAuint32 streamindex,
25
hgs
parents: 21
diff changeset
   341
        XAuint32* streamtype);
19
hgs
parents: 12
diff changeset
   342
extern XAresult mmf_streaminformationitf_get_videoframesize(void * context, XAuint32* height,
25
hgs
parents: 21
diff changeset
   343
        XAuint32* width, XAuint32* frameRate);
19
hgs
parents: 12
diff changeset
   344
extern XAresult mmf_streaminformationitf_set_activestream(void * context, XAuint32 streamindex,
25
hgs
parents: 21
diff changeset
   345
        XAboolean active);
19
hgs
parents: 12
diff changeset
   346
hgs
parents: 12
diff changeset
   347
extern XAresult mmf_volumeitf_set_volume(void * context, XAuint32 volume);
hgs
parents: 12
diff changeset
   348
extern XAresult mmf_volumeitf_get_volume(void * context, XAuint32* volume);
hgs
parents: 12
diff changeset
   349
extern XAresult mmf_volumeitf_get_maxvolume(void * context, XAuint32* volume);
28
hgs
parents: 25
diff changeset
   350
extern XAresult mmf_playbackrateitf_set_playbackrate(void * context, XAint16 rate);
hgs
parents: 25
diff changeset
   351
extern XAresult mmf_playbackrateitf_get_playbackratecaps(void * context,
hgs
parents: 25
diff changeset
   352
                                XAboolean* forward, XAboolean* backward);
hgs
parents: 25
diff changeset
   353
53
hgs
parents: 43
diff changeset
   354
extern XAresult mmf_prefetchstatusitf_register_callback(void * context, xaPrefetchCallback callback);
hgs
parents: 43
diff changeset
   355
extern XAresult mmf_prefetchstatusitf_set_callback_events_mask(void * context,	XAuint32 cbMask);
hgs
parents: 43
diff changeset
   356
extern XAresult mmf_prefetchstatusitf_set_fill_level_update_period( void * context, XAmillisecond mSec);
hgs
parents: 43
diff changeset
   357
hgs
parents: 43
diff changeset
   358
extern XAresult mmf_prefetchstatusitf_get_status(void *context, XAuint32* status);
hgs
parents: 43
diff changeset
   359
extern XAresult mmf_prefetchstatusitf_get_fill_level(void *context,XApermille* fillLevel);
hgs
parents: 43
diff changeset
   360
hgs
parents: 43
diff changeset
   361
extern XAresult mmf_streaminfoitf_register_callback(void * context, xaStreamEventChangeCallback callback);
hgs
parents: 43
diff changeset
   362
hgs
parents: 43
diff changeset
   363
extern XAresult mmf_videoppitf_set_sourcerectangle(void * context, const XARectangle* rect);
hgs
parents: 43
diff changeset
   364
extern XAresult mmf_videoppitf_set_destinationrectangle(void * context, const XARectangle* rect);
hgs
parents: 43
diff changeset
   365
extern XAresult mmf_videoppitf_set_rotation(void * context, XAmillidegree rotation);
hgs
parents: 43
diff changeset
   366
extern XAresult mmf_videoppitf_set_scalingoptions(void * context, XAuint32 options);
hgs
parents: 43
diff changeset
   367
12
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   368
#endif /* __cplusplus */
5a06f39ad45b Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   369
25
hgs
parents: 21
diff changeset
   370
#endif /* CMMFBackendEngine_H */