diff -r 095bea5f582e -r 0ac9a5310753 khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.h --- a/khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.h Tue Aug 31 15:43:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,324 +0,0 @@ -/* - * Copyright (c) 2009 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: MMF Backend Engine Header - * - */ - -#ifndef CMMFBackendEngine_H -#define CMMFBackendEngine_H - -#define ENABLE_GRAPHICS_SURFACE_INTEGRATION - -#include "openmaxalwrapper.h" - -#ifdef __cplusplus - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef ENABLE_GRAPHICS_SURFACE_INTEGRATION -#include //TSurfaceId -#include //TVideoAspectRatio -#include -#include -#include -#include -#include "sfmrlocaltimer.h" -#endif - -// MetaDataWrite Custom Command UID -const TUid KUidMetaDataWriteCustomCommand = - { - 0x10207af9 - }; - -#define MAX_EXTENSION_SIZE 10 - -class CMarkerPositionTimer; -class CPositionUpdateTimer; -NONSHARABLE_CLASS(CMMFBackendEngine) : public CBase, - public MVideoPlayerUtilityObserver, - public MVideoLoadingObserver, - public MMdaAudioPlayerCallback, - public MMdaObjectStateChangeObserver - { -public: - enum TFuncInUse - { - EPlay = 0, - ERecord - }; - - enum TUriType - { - ELocal = 0, - EStreaming - }; - - enum TMMFUtiltyInUse - { - ENoUtility, - EVideoPlayerUtility, - EAudioPlayerUtility, - EAudioRecorderUtility - }; - - enum TRecorderState - { - ERecorderNotReady = 0, - ERecorderOpen, - ERecorderRecording - }; - -public: - - static CMMFBackendEngine* NewL(); - ~CMMFBackendEngine(); - - TInt SetFileName(char* uri, XAuint32 format, TFuncInUse func); - void Close(); - void Destroy(); - TInt SetRecorderState(TRecorderState state, XAboolean stopCalled); - TInt GetRecordPosition(XAuint64* position); - TInt SetPositionUpdatePerioed(XAmillisecond period); - TInt SetAdaptContext(void* adaptcontext); - TInt GetCodecId(XAuint32* encoderId); - TInt GetBitRate(XAuint32* bitrate); - TInt GetSampleRate(XAmilliHertz* samplerate); - TInt GetChannels(XAuint32* channels); - TInt SetDestinationBitRate(XAuint32* bitrate); - TInt SetDestinationSampleRate(XAmilliHertz* samplerate); - TInt SetDestinationChannels(XAuint32* channels); - - XAresult CreateAndConfigureWindowL(); - XAresult SetNativeDisplayInformation(void* display_info); - XAresult ResumePlayback(); - XAresult PausePlayback(); - XAresult StopPlayback(); - XAresult GetPlayState(XAuint32 *pState); - XAresult GetDuration(XAmillisecond *pMsec); - XAresult GetPosition(XAmillisecond *pMsec); - XAresult SetPlayAdaptContext(void * adaptcontext); - XAresult RegisterCallback(xaPlayCallback cbFunction); - XAresult SetCallbackEventsMask(XAuint32 eventflags); - XAresult SetMarkerPosition(XAmillisecond mSec); - XAresult ClearMarkerPosition(); - XAresult SetPositionUpdatePeriod(XAmillisecond mSec); - - XAresult SetPosition(XAmillisecond pMsec); - XAresult SetRepeats(XAboolean repeat); - XAresult SetPlayWindow(XAmillisecond start, XAmillisecond end); - - XAresult GetNumStreams(XAuint32* numstreams); - XAresult GetStreamInfo(XAuint32 streamindex, XAuint32* streamtype); - XAresult GetVideoFrameSize(XAuint32* height, XAuint32* width, - XAuint32* frameRate); - XAresult SetActiveState(XAuint32 streamindex, XAboolean active); - - XAresult SetVolume(XAuint32 volume); - XAresult GetVolume(XAuint32* volume); - XAresult GetMaxVolume(XAuint32* maxvolume); - - XAresult SetPlaybackRate(XAint16 rate); - XAresult GetPlaybackRateCapabilities(XAboolean* forward, XAboolean* backward); - -public: - - // MMdaObjectStateChangeObserver - void MoscoStateChangeEvent(CBase* aObject, TInt aPreviousState, - TInt aCurrentState, TInt aErrorcCode); - - //MMdaAudioPlayerCallback - void MapcInitComplete(TInt aError, - const TTimeIntervalMicroSeconds& aDuration); - void MapcPlayComplete(TInt aError); - - //From MVidePlayerUtilityObserver - void MvpuoOpenComplete(TInt aError); - void MvpuoPrepareComplete(TInt aError); - void MvpuoFrameReady(CFbsBitmap& aFrame, TInt aError); - void MvpuoPlayComplete(TInt aError); - void MvpuoEvent(const TMMFEvent& aEvent); - - // From MRebufferCallback - void MvloLoadingStarted(); - void MvloLoadingComplete(); - -private: - enum TPlayerState - { - EPlayerClosed, - EPlayerOpened, - EPlayerPrepared, - EPlayerPaused, - EPlayerPlaying, - }; - -private: - CMMFBackendEngine(); - void ConstructL(); - void InitAudioRecorderUtilityL(); - void InitAudioPlayerUtilityL(); - void InitVideoPlayerUtilityL(); - void InitPlayerTimersL(); - TInt DetermineAPIToUse(char *uri, TFuncInUse aFunc); - XAresult DoHandlePlayItfAttributesChanged(); - void DoPostEvent(XAuint32 event); - TInt InitializeURIForMMFUtil(char *uri); - -private: - CVideoPlayerUtility2* iVideoPlayer; - CBase* iBaseVideoPlayer; - CMdaAudioPlayerUtility* iAudioPlayer; - CBase* iBaseAudioPlayer; - CMdaAudioRecorderUtility* iAudioRecorder; - CBase* iBaseAudioRecorder; - TFileName iFileName; - TInt iAPIBeingUsed; - TInt iPreviousRecordState; - TInt iCurrentRecordState; - TInt iErrorCode; - TRecorderState iRecordState; - LocalTimer* iPositionUpdateTimer; - TUint64 iTimerDelay; - void* iAdaptContext; - XAuint32 iFileFormat; - TInt iPauseSupportMP4; - CActiveSchedulerWait* iActiveSchedulerWait; - CAudioInput* iAudioInputRecord; -#ifdef USE_LOCAL_WINDOW_RESOURCES - CMediaClientVideoDisplay* iMediaClientVideoDisplay; - TRect m_clipRect; - TRect m_videoExtent; - TRect m_cropRegion; - TVideoAspectRatio m_pixelAspectRatio; - RWindow m_Window; - TRect m_cropRect; - TSurfaceId m_surfaceId; - TVideoRotation m_rotation; - TReal32 m_scaleWidth; - TReal32 m_scaleHeight; - TInt m_horizPos; - TInt m_vertPos; - TInt m_displayId; - /*TBool m_bWindowReferencePassed;*/ - RWsSession m_ws; -#endif /* USE_LOCAL_WINDOW_RESOURCES */ - - /* Holds duration of the media clip opend for playback */ - TTimeIntervalMicroSeconds iMediaDuration; - /* Holds the playback position to be used for next play command */ - TTimeIntervalMicroSeconds iPlaybackHead; - /* Holds current XA state of media player object */ - XAuint32 iMediaPlayerState; - /* Owns */ - CMarkerPositionTimer* iMarkerPositionTimer; - CPositionUpdateTimer* iPlayItfPositionUpdateTimer; - /* Owns */ - CWsScreenDevice* m_pScr; - /* Holds mmf state of media player object */ - TPlayerState iMMFPlayerState; - - /* Property set by client */ - XAuint32 iPlayItfEventFlags; - /* Property set by client */ - xaPlayCallback iPlayItfCBFunction; - /* Property set by client */ - XAmillisecond iMarkerPosition; - /* Property set by client */ - XAmillisecond iPositionUpdatePeriod; - /* Property set by client (for file without file:///) */ - HBufC* iUri; /* owns */ - TPtr iUriPtr; - TUriType iUriType; - /* Property set by client */ - RWsSession* m_pWs; - /* Property set by client */ - RWindow* m_pWindow; - }; - -#else /* __cplusplus */ - -extern int mmf_backend_engine_init(void** engine); -extern int mmf_backend_engine_deinit(void* engine); - -extern int mmf_set_recorder_uri(void* context, char* uri, XAuint32 format); - -extern void mmf_close(void* context); - -extern int mmf_set_adapt_context(void* context, void* adaptcontext); - -extern int mmf_start_recording(void* context); - -extern int mmf_stop_recording(void* context, XAboolean stopCalled); - -extern int mmf_get_record_position(void* context, XAuint64* position); - -extern int mmf_set_record_position_update_period(void* context, XAmillisecond msec); - -extern int mmf_get_codec_id(void* context, XAuint32* encoderId); -extern int mmf_get_channels(void* context, XAuint32* channelsIn); -extern int mmf_get_samplerate(void* context, XAmilliHertz* sampleRate); -extern int mmf_get_bitrate(void* context, XAuint32* bitRate); -extern int mmf_set_destination_channels(void* context, XAuint32* channelsIn); -extern int mmf_set_destination_samplerate(void* context, XAmilliHertz* sampleRate); -extern int mmf_set_destination_bitrate(void* context, XAuint32* bitRate); - -extern XAresult mmf_set_play_adapt_context(void * context, void * adaptcontext); -extern XAresult mmf_set_player_uri(void * context, char * uri, XAuint32 format); -/*extern XAresult mmf_set_window_handle(void * context, void * display_infos);*/ -extern XAresult mmf_setup_native_display(void * context, void * display_info); - -/*Functions for XAPlayItf*/ -extern XAresult mmf_playitf_resume_playback(void * context); -extern XAresult mmf_playitf_pause_playback(void * context); -extern XAresult mmf_playitf_stop_playback(void * context); -extern XAresult mmf_playitf_get_play_state(void * context, XAuint32 * pState); -extern XAresult mmf_playitf_get_duration(void * context, XAmillisecond * pMsec); -extern XAresult mmf_playitf_get_position(void * context, XAmillisecond * pMsec); -extern XAresult mmf_playitf_register_callback(void * context, xaPlayCallback callback); -extern XAresult mmf_playitf_set_callback_events_mask(void * context, XAuint32 eventflags); -extern XAresult mmf_playitf_set_marker_position(void * context, XAmillisecond mSec); -extern XAresult mmf_playitf_clear_marker_position(void * context); -extern XAresult mmf_playitf_set_position_update_period(void * context, XAmillisecond mSec); - -extern XAresult mmf_seekitf_set_position(void * context, XAmillisecond mSec); -extern XAresult mmf_seekitf_set_playwindow(void * context, XAmillisecond start, XAmillisecond end); -extern XAresult mmf_seekitf_set_repeats(void * context, XAboolean repeat); - -extern XAresult mmf_streaminformationitf_get_numstreams(void * context, XAuint32* numstreams); -extern XAresult mmf_streaminformationitf_get_streaminfo(void * context, XAuint32 streamindex, - XAuint32* streamtype); -extern XAresult mmf_streaminformationitf_get_videoframesize(void * context, XAuint32* height, - XAuint32* width, XAuint32* frameRate); -extern XAresult mmf_streaminformationitf_set_activestream(void * context, XAuint32 streamindex, - XAboolean active); - -extern XAresult mmf_volumeitf_set_volume(void * context, XAuint32 volume); -extern XAresult mmf_volumeitf_get_volume(void * context, XAuint32* volume); -extern XAresult mmf_volumeitf_get_maxvolume(void * context, XAuint32* volume); -extern XAresult mmf_playbackrateitf_set_playbackrate(void * context, XAint16 rate); -extern XAresult mmf_playbackrateitf_get_playbackratecaps(void * context, - XAboolean* forward, XAboolean* backward); - -#endif /* __cplusplus */ - -#endif /* CMMFBackendEngine_H */