--- a/khronosfws/openmax_al/src/adaptation/xaadaptation.h Mon May 03 12:59:52 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,490 +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:
-*
-*/
-
-#ifndef XAADAPTATION_H_
-#define XAADAPTATION_H_
-
-#include <pthread.h>
-#include <semaphore.h>
-#include <string.h>
-#include <unistd.h>
-#include "openmaxalwrapper.h"
-#include "XAAdaptationContextBase.h"
-#include "XAGlobals.h"
-#include <gst.h>
-#include <gstappsrc.h>
-#include <gstappsink.h>
-#include <gstappbuffer.h>
-#include <photography.h>
-#include <OpenMAXAL_ContentPipe.h>
-#include "XAPlatform.h"
-#include "XAStaticCapsAdaptation.h"
-
-#ifdef XA_IMPL_MEASURE_GST_DELAY
-#include <time.h>
-#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 enum
-{
- XA_IMAGE_JPEGENC = 0,
- XA_IMAGE_RAW,
- XA_NUM_OF_IMAGEENCODERS /* Do not move this line */
-} XAImageEnc;
-
-typedef enum
-{
- XA_RADIO_IDLE,
- XA_RADIO_SEEKING,
- XA_RADIO_SETTING_FREQUENCY,
- XA_RADIO_SETTING_FREQUENCY_RANGE
-} XARadioState;
-
-typedef enum
-{
- XA_RADIO_RDS_IDLE,
- XA_RADIO_RDS_GETTING_ODA_GROUP
-} XARadioRDSState;
-/* STRUCTURES */
-
-typedef struct XAAdaptEvtHdlr_
-{
- xaAdaptEventHandler handlerfunc; /* function handling the callback */
- void *handlercontext; /* context of handler */
- XAuint32 eventtypes; /* what kind of events this handles */
-} XAAdaptEvtHdlr;
-
-/* Structure for content pipe thread context */
-typedef struct XAAdaptCpThrCtx_
-{
- XADataLocator_ContentPipe* pipe; /* pointer to content Pipe structure (Sink/Source) */
- CPhandle dataHandle; /* Handle to content pipe data */
- CP_STATE state;
- XAConfigExtensionCpKey cpConfig; /* enum value for CP using e.g. ReadBuffer or WriteBuffer */
- XAImplSemHandle stateSem;
- XAImplSemHandle mpStateSem;
- XAImplSemHandle mpPrerollStateSem;
-
- GstAppSrc *appSrc; /* Pointer to appSrc where data is read from. Not owned */
- GstAppSink *appSink; /* Pointer to AppSink where dats is fed. Not owned */
-}XAAdaptCpThrCtx;
-
-/* context to track buffer insufficient event */
-typedef struct recordItfCtx_{
- XAImplSemHandle bufInsufficientSem;
- XAboolean buffer_insufficient;
-}recodtItfCtx;
-
-/*
- * Structure that holds all common variables for every
- * Gst-Adaptation context structures.
- */
-typedef struct XAAdaptationBaseCtx_
-{
- /* Common Variables for all adaptation elements */
- XAuint32 ctxId;
- GstState binWantedState; /** requested gst-bin target state **/
- GstElement *bin; /** Container for all gst elements **/
-
- GstBus *bus; /** Gst-bus where gst sends messages **/
- GMainLoop *busloop; /** Gst-bus listener loop **/
- pthread_t busloopThr;
- GstBusCb busCb; /** Gst-Bus callback funtion*/
-
- GArray* evtHdlrs; /* array of event handlers */
-
- XAboolean waitingasyncop;
- sem_t semAsyncWait;
- guint asynctimer;
-
- XAConfigExtensionCpKey cpConfig; /* enum value for CP using e.g. ReadBuffer or WriteBuffer */
-
- /* Content Pipe variables */
- XAImplThreadHandle pipeSrcThr, pipeSinkThr;
- XAAdaptCpThrCtx pipeSrcThrCtx, pipeSinkThrCtx;
-
-#ifdef XA_IMPL_MEASURE_GST_DELAY
- clock_t startTime;
- clock_t endTime;
- double diff;
-#endif /*XA_IMPL_MEASURE_GST_DELAY*/
- // VASU MOD BEGINS
- XAboolean thread_launched;
- pthread_mutex_t ds_mutex;
- pthread_cond_t ds_condition;
- XAboolean cond_mutx_inited;
- // VASU MOD ENDS
- /* FUNCTIONS*/
-
-} XAAdaptationBaseCtx_;
-
-typedef struct XAEngineAdaptationCtx_
-{
- /* Parent*/
- XAAdaptationBaseCtx_ baseObj;
-
-} XAEngineAdaptationCtx_;
-
-typedef struct XAMetadataAdaptVars_
-{
-
- XAuint32 childcount;
- XAuint32 nodedepth;
- XAuint32 traversemode;
-
- GstTagList* generaltags;
- GstStructure* audiotags;
- GstStructure* videotags;
- GstStructure** currentchild; /*points to one of previous 3*/
-
-} XAMetadataAdaptVars;
-
-
-/*
- * Structure for Media Player specific gst-adaptation.
- */
-typedef struct XAMediaPlayerAdaptationCtx_
-{
- /* Parent*/
- XAAdaptationBaseCtx_ baseObj;
-
- /* OMX-AL Variables */
- XADataSource *xaSource, *xaBankSrc;
- XADataSink *xaAudioSink, *xaVideoSink, *xaLEDArray, *xaVibra;
-
- /* GST elements */
- GstElement *source;
- XAboolean isobjsrc; /*is source another XA object?*/
- GstElement *codecbin;
- GstElement *audioppbin;
- GstElement *videoppbin;
- GstElement *filter;
- GstElement *videoppBScrbin;
- GstElement *inputSelector;
- GstPad *blackScrSrcPad;
- GstPad *videoScrSrcPad;
- GstPad *blackScrSinkPad;
- GstPad *videoScrSinkPad;
- GstElement *audiosink;
- XAboolean isobjasink; /*is audio sink another XA object?*/
- GstElement *videosink;
- XAboolean isobjvsink; /*is video sink another XA object?*/
-
- XAboolean mute;
- XAuint32 imageEffectID;
- XAboolean isStereoPosition;
- XAmillidegree curRotation;
- XAuint32 curMirror;
-
- XAint32 buffering;
-
- /* internals */
- XAboolean trackpositionenabled;
- guint runpositiontimer;
- GSourceFunc positionCb;
- gint64 lastpos;
-
- XAboolean loopingenabled;
- gint64 loopstart;
- gint64 loopend;
-
- gdouble playrate;
- guint32 rateprops;
-
- XAboolean cameraSinkSynced;
-
- XAMetadataAdaptVars *metadatavars;
-
-} XAMediaPlayerAdaptationCtx_;
-
-typedef struct XASnapshotItfVars_
-{
-
- /*User variables*/
- XAuint32 numpics;
- XAuint32 fps;
- XAboolean freeze;
- gchar* fnametemplate;
- XADataSink* xaSink;
-
- /* internal variables */
- gboolean waitforbuffer;
- gboolean parsenegotiated;
- XAuint32 numpicstaken;
-
- GstBus* ssbus;
- GstElement* sspipeline;
- GstElement* ssbuffersrc;
- GstElement* ssparser;
- GstElement* ssscaler;
- GstElement* ssfilter;
- GstElement* ssencoder;
- GstElement* sstagger;
- GstElement* sssink;
- gulong sighandler;
-
- GstBuffer* snapshotbuffer;
-
-} XASnapshotItfVars;
-
-typedef struct XAMediaRecorderAdaptationCtx_
-{
- /* Parent*/
- XAAdaptationBaseCtx_ baseObj;
-
- /* OMX-AL Variables */
- XADataSource *xaAudioSource, *xaVideoSource;
- XADataSink *xaSink;
- XAuint8 recModes;
-
- /* GST elements */
- GstElement *datasink;
- XAboolean isobjsink; /*is sink another XA object?*/
- GstElement *codecbin;
- GstElement *audioppbin;
- GstElement *audiofilter;
- GstElement *videoppbin;
- GstElement *videofilter;
- GstElement *videoextract;
- GstElement *audiosource;
- GstElement *audioqueue;
- XAboolean isobjasrc; /*is audio source another XA object?*/
- GstElement *videosource;
- GstState vsrcOrigState;
- GstElement *videoqueue;
- 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;
- GSourceFunc positionCb;
-
- XAImplThreadHandle recordingEventThr;
- recodtItfCtx recThrCtx;
-
-
- /* Variables for snapshot */
- XASnapshotItfVars snapshotVars;
-
- XAMetadataAdaptVars *metadatavars;
-
- /* Variables for encoders */
- XAAudioEncoderSettings audioEncSettings;
- XAVideoSettings videoEncSettings;
- XAImageSettings imageEncSettings;
-
- /*buffersink variable*/
- guint64 writepos;
-
-} XAMediaRecorderAdaptationCtx_;
-
-
-/*
- * Structure for Camera specific gst-adaptation variables
- */
-typedef struct XACameraAdaptationCtx_ {
-
- /* Parent*/
- XAAdaptationBaseCtx_ baseObj;
-
- /* OMX-AL Variables */
- XAuint32 deviceID;
- XAuint32 imageEffectID;
- XAmillidegree curRotation;
- XAuint32 curMirror;
-
- /* GST Variables */
- GstFocusStatus focusStatus;
-
- /* Internals */
- XAboolean recording;
- XAboolean playing;
- XAboolean snapshotting;
-} XACameraAdaptationCtx_;
-
-/*
- * Structure for Camera specific gst-adaptation variables
- */
-typedef struct XARadioAdaptationCtx_ {
-
- /* Parent*/
- XAAdaptationBaseCtx_ baseObj;
-
- /* OMX-AL Variables */
- XAuint32 frequency;
- XAuint8 range;
-
- pthread_t emulationThread;
- pthread_t rdsEmulationThread;
- XARadioRDSState rdsState;
- XARadioState state;
-
- /* GST Variables */
-} XARadioAdaptationCtx_;
-
-
-typedef struct XAOMixAdaptConnObj_
-{
- /*pointer to connected context*/
- XAAdaptationBaseCtx* ctx;
- /*pointer to sink currently used by connected ctx*/
- GstElement* currentSink;
-} XAOMixAdaptConnObj;
-
-typedef struct XAOutputMixAdaptationCtx_
-{
- /* Parent*/
- XAAdaptationBaseCtx_ baseObj;
- /* Internal variables */
- XAboolean isStereoPosition;
- XAboolean mute;
-
- XAuint32 currentrouting;
-
- GArray* availableDevices;
- GArray* connectedObjects;
-} XAOutputMixAdaptationCtx_;
-
-/*
- * Structure for Ledarray specific gst-adaptation variables
- */
-typedef struct XALEDArrayAdaptationCtx_ {
-
- /* Parent*/
- XAAdaptationBaseCtx_ baseObj;
-
- /* OMX-AL Variables */
- XAuint32 deviceID;
-
- /* GST Variables */
-
-} XALedarrayAdaptationCtx_;
-
-/*
- * Structure for Vibra specific gst-adaptation variables
- */
-typedef struct XAVibraAdaptationCtx_ {
-
- /* Parent*/
- XAAdaptationBaseCtx_ baseObj;
-
- /* OMX-AL Variables */
- XAuint32 deviceID;
-
- /* GST Variables */
-} XAVibraAdaptationCtx_;
-
-/* 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.
- */
-gboolean XAAdaptationBase_GstBusCb( GstBus *bus, GstMessage *message, gpointer data );
-
-XAresult XAAdaptationBase_InitGstListener(XAAdaptationBaseCtx* ctx);
-void * XAAdaptationBase_LaunchGstListener(void* args);
-void XAAdaptationBase_StopGstListener(XAAdaptationBaseCtx* ctx);
-void XAAdaptationBase_SendAdaptEvents(XAAdaptationBaseCtx* ctx, XAAdaptEvent* event);
-
-void XAAdaptationBase_PrepareAsyncWait(XAAdaptationBaseCtx* ctx);
-void XAAdaptationBase_StartAsyncWait(XAAdaptationBaseCtx* ctx);
-gboolean XAAdaptationBase_CancelAsyncWait(gpointer ctx);
-void XAAdaptationBase_CompleteAsyncWait(XAAdaptationBaseCtx* ctx);
-
-GstElement* XAAdaptationBase_CreateGstSource( XADataSource* xaSrc, const char *name, XAboolean *isobj, XAboolean *isPCM, XAboolean *isRawImage );
-GstElement* XAAdaptationBase_CreateGstSink( XADataSink* xaSrc, const char *name, XAboolean *isobj );
-GstElement* XAAdaptationBase_CreateVideoPP( );
-
-GstElement* XAAdaptationBase_CreateVideoPPBlackScr( );
-GstElement* XAAdaptationBase_CreateInputSelector( );
-GstElement* XAAdaptationBase_CreateAudioPP( );
-void XAAdaptationBase_PadBlockCb(GstPad *pad, gboolean blocked, gpointer user_data);
-void XAAdaptationBase_SetAllCaps (GstCaps * caps, char *field, ...);
-
-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_ */