diff -r 71ca22bcf22a -r 5a06f39ad45b khronosfws/openmax_al/src/mmf_adaptation/xaadaptationmmf.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/khronosfws/openmax_al/src/mmf_adaptation/xaadaptationmmf.h Fri Apr 16 15:29:42 2010 +0300 @@ -0,0 +1,221 @@ +/* +* 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: +* +*/ + +#ifndef XAADAPTATION_H_ +#define XAADAPTATION_H_ + +#include +#include +#include +#include +#include +#include "openmaxalwrapper.h" +#include "xaadaptationcontextbasemmf.h" +#include "xaglobals.h" +//#include "OpenMAXAL_ContentPipe.h" +#include "xaplatform.h" + +#ifdef XA_IMPL_MEASURE_GST_DELAY +#include +#endif /* XA_IMPL_MEASURE_GST_DELAY */ + +/* MACROS */ +#define FLIP_NONE 0 +#define FLIP_CLOCKWISE 1 /* Rotate clockwise 90 degrees */ +#define FLIP_ROTATE_180 2 /* Rotate 180 degrees */ +#define FLIP_COUNTERCLOCKWISE 3 /* Rotate counter-clockwise 90 degrees */ +#define FLIP_HORIZONTAL 4 /* Flip image horizontally */ +#define FLIP_VERTICAL 5 /* Flip image vertically */ + +/* TYPEDEFS */ +//typedef gboolean (*GstBusCb)( GstBus *bus, GstMessage *message, gpointer data ); +#define XA_IMPL_SUPPORTED_AUDIO_OUT_NUM 3 +#define XA_IMPL_OMIX_MAX_CONNECTED_MEDIAPLAYERS 10 +#define CONTENT_PIPE_BUFFER_SIZE 1000 +#define TEST_VIDEO_WIDTH 640 +#define TEST_VIDEO_HEIGHT 480 + +typedef enum +{ + XA_AUDIO_WAVENC = 0, + XA_AUDIO_VORBISENC, + XA_AUDIO_PCM, + XA_NUM_OF_AUDIOENCODERS /* Do not move this line */ +} XAAudioEnc; + +typedef enum +{ + XA_VIDEO_JPEGENC = 0, + XA_VIDEO_THEORAENC, + XA_NUM_OF_VIDEOENCODERS /* Do not move this line */ +} XAVideoEnc; + +typedef enum CP_STATE +{ + CPStateNull =0, + CPStateInitialized, + CPStatePrerolling, + CPStateStarted, + CPStateRunning, + CPStatePaused, + CPStateStopped, + CPStateWaitForData, + CPStateEOS, + CPStateError +}CP_STATE; + +typedef struct XAAdaptEvtHdlrMMF_ +{ + xaAdaptEventHandlerMMF handlerfunc; /* function handling the callback */ + void *handlercontext; /* context of handler */ + XAuint32 eventtypes; /* what kind of events this handles */ +} XAAdaptEvtHdlrMMF; + +/* + * Structure that holds all common variables for every + * mmf-Adaptation context structures. + */ +typedef struct XAAdaptationBaseMMFCtx_ +{ + /* Common Variables for all adaptation elements */ + GArray* evtHdlrs; /* array of event handlers */ + XAuint32 ctxId; + XAboolean placeholder; + +} XAAdaptationBaseMMFCtx_; + +typedef struct XAEngineAdaptationMMFCtx_ +{ + /* Parent*/ + XAAdaptationBaseMMFCtx_ baseObj; + +} XAEngineAdaptationMMFCtx_; + +/* + * Structure for Media Player specific gst-adaptation. + */ +typedef struct XAMediaPlayerAdaptationMMFCtx_ +{ + /* Parent*/ + XAAdaptationBaseMMFCtx_ baseObj; + + /* OMX-AL Variables */ + XADataSource *xaSource, *xaBankSrc; + XADataSink *xaAudioSink, *xaVideoSink, *xaLEDArray, *xaVibra; + + /* MMF elements */ + XAboolean isobjsrc; /*is source another XA object?*/ + + XAboolean isobjasink; /*is audio sink another XA object?*/ + XAboolean isobjvsink; /*is video sink another XA object?*/ + + XAboolean mute; + XAuint32 imageEffectID; + XAboolean isStereoPosition; + XAmillidegree curRotation; + XAuint32 curMirror; + + XAint32 buffering; + + /* internals */ + XAboolean trackpositionenabled; + + + XAboolean loopingenabled; + + XAboolean cameraSinkSynced; + void* mmfContext; + + +} XAMediaPlayerAdaptationMMFCtx_; + +typedef struct XAMediaRecorderAdaptationMMFCtx_ +{ + /* Parent*/ + XAAdaptationBaseMMFCtx_ baseObj; + + /* OMX-AL Variables */ + XADataSource *xaAudioSource, *xaVideoSource; + XADataSink *xaSink; + XAuint8 recModes; + + /* GST elements */ + XAboolean isobjsink; /*is sink another XA object?*/ + XAboolean isobjasrc; /*is audio source another XA object?*/ + XAboolean isobjvsrc; /*is video source another XA object?*/ + XAboolean encodingchanged; + + XAboolean mute; + XAuint32 imageEffectID; + XAboolean isStereoPosition; + XAuint32 xaRecordState; + XAmillidegree curRotation; + XAuint32 curMirror; + XAboolean isRecord; + + /* internals */ + XAboolean trackpositionenabled; + gboolean runpositiontimer; + + XAImplThreadHandle recordingEventThr; + + /* Variables for encoders */ + XAAudioEncoderSettings audioEncSettings; + XAVideoSettings videoEncSettings; + XAImageSettings imageEncSettings; + + void* mmfContext; + + +} XAMediaRecorderAdaptationMMFCtx_; + + +/* FUNCTIONS */ +/* + * gboolean XAAdaptationBase_GstBusCb( GstBus *bus, GstMessage *message, gpointer data ); + * Default CallBack handler for gst-bus messages. This will be called if object specific callback is + * not implemented. + */ + + +void XAAdaptationBaseMMF_SendAdaptEvents(XAAdaptationBaseMMFCtx* ctx, XAAdaptEventMMF* event); + +//void XAAdaptationBase_PrepareAsyncWait(XAAdaptationBaseCtx* ctx); +//void XAAdaptationBase_StartAsyncWait(XAAdaptationBaseCtx* ctx); +//gboolean XAAdaptationBase_CancelAsyncWait(gpointer ctx); +//void XAAdaptationBase_CompleteAsyncWait(XAAdaptationBaseCtx* ctx); + + +//XAresult XAMediaPlayerAdapt_UpdatePositionCbTimer(XAMediaPlayerAdaptationCtx_* mCtx); + +//XAresult XAMediaRecorderAdapt_ChangeEncoders( XAMediaRecorderAdaptationCtx_* mCtx ); +//XAresult XAMediaRecorderAdapt_CheckCodec( XAMediaRecorderAdaptationCtx_* mCtx, XACapsType encType, XAuint32 encoderId ); + +//XAresult XAMetadataAdapt_TryWriteTags(XAAdaptationBaseCtx* mCtx, GstBin* binToWriteTo); +//void XAMetadataAdapt_FreeVars(XAMetadataAdaptVars *vars); + +//GstElement* XAOutputMixAdapt_GetSink(XAAdaptationBaseCtx* bCtx); + + +//XAresult XAOutputMixAdapt_ConnectObject(XAAdaptationBaseCtx* omCtx, XAAdaptationBaseCtx* bCtx, GstElement* usedMix); +//XAresult XAOutputMixAdapt_DisconnectObject(XAAdaptationBaseCtx* omCtx, XAAdaptationBaseCtx* bCtx); +//void* XAAdaptationBase_ContentPipeScrThrFunc( void* arg); +//void* XAAdaptationBase_ContentPipeSinkThrFunc( void* arg); +//CPresult XAAdaptationBase_ContentPipeSrcCb(CP_EVENTTYPE eEvent, CPuint iParam); +//CPresult XAAdaptationBase_ContentPipeSinkCb(CP_EVENTTYPE eEvent, CPuint iParam); + +#endif /* XAADAPTATION_H_ */