khronosfws/openmax_al/src/adptcommon/xaadptbasectx.h
author hgs
Fri, 11 Jun 2010 19:59:23 -0500
changeset 25 6f7ceef7b1d1
parent 21 2ed61feeead6
child 33 5e8b14bae8c3
permissions -rw-r--r--
201023

/*
 * 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: Base Adaptation Macros common between adaptations.
 *
 */

#ifndef XAADPTBASECTX_H_
#define XAADPTBASECTX_H_

#include <glib.h>
#include "openmaxalwrapper.h"
#include "xaglobals.h"
#include "xaframeworkmgr.h"
#include "xacapabilitiesmgr.h"
#include "xaplatform.h"
/* ENUMERATIONS */

/**
 GLOBAL ENUMERATIONS
 */

typedef enum
    {
    XAMediaPlayerAdaptation = 0,
    XAMediaRecorderAdaptation,
    XARadioAdaptation,
    XACameraAdaptation,
    XAOutputMixAdaptation,
    XAVibraAdaptation,
    XALedArrayAdaptation,
    XAMDAdaptation,
    XAEngineAdaptation
    } AdaptationContextIDS;

#define XA_ADAPT_PU_INTERVAL 50                     /* position update interval */
#define XA_ADAPT_ASYNC_TIMEOUT 3000                 /* timeout to wait async events */
#define XA_ADAPT_ASYNC_TIMEOUT_SHORT 1000           /* timeout to wait async events */
#define XA_ADAPT_ASYNC_TIMEOUT_SHORT_NSEC 1000000   /* timeout to wait async events */

#define XA_ADAPT_POSITION_UPDATE_EVT 0xf0           /* position update event */
#define XA_ADAPT_SNAPSHOT_TAKEN 0xf1                /* snapshot taken event */
#define XA_ADAPT_SNAPSHOT_INITIATED 0xf2            /* snapshot intitiated event */
#define XA_ADAPT_MDE_TAGS_AVAILABLE 0xf3            /* metadata taglist changed */
#define XA_ADAPT_OMIX_DEVICESET_CHANGED 0xf4        /* Output mix device changed event */
#define XA_ADAPT_RADIO_FREQUENCY_CHANGED 0xf6       /* Radio frequency changed event */
#define XA_ADAPT_RADIO_FREQUENCY_RANGE_CHANGED 0xf7 /* Radio frequency range changed event */
#define XA_ADAPT_RADIO_SEEK_COMPLETE 0xf8           /* Radio seek complete changed event */
#define XA_ADAPT_RDS_GET_ODA_GROUP_DONE 0xf9        /* RDS get oda group done event */
#define XA_ADAPT_BUFFERING 0xfa
#define XA_ADAPT_MDE_TAGS_WRITTEN 0xfb
/* TYPEDEFS */

#define RADIO_DEFAULT_FREQ_RANGE XA_FREQRANGE_FMEUROAMERICA
#define RADIO_DEFAULT_FREQ 88000000

/* TYPEDEFS */

/* Adaptation device IDs */
#define XA_ADAPTID_DEVSOUNDSRC      0xAD7E5001
#define XA_ADAPTID_DEVSOUNDSINK     0xAD7E5002
#define XA_ADAPTID_AUTOAUDIOSINK    0xAD7E5003
#define XA_ADAPTID_AUDIOTESTSRC     0xAD7E5004
#define XA_ADAPTID_AUTOVIDEOSINK    0xAD7E5005
#define XA_ADAPTID_VIDEOTESTSRC     0xAD7E5006
#define XA_ADAPTID_V4L2SRC          0xAD7E5007
#define XA_ADAPTID_JACKSINK         0xAD7E5008
#define XA_ADAPTID_MOTIONJPEG       0xAD7E5009
#define XA_ADAPTID_THEORA           0xAD7E500A
#define XA_ADAPTID_VORBIS           0xAD7E500B

#define XA_ADAPTID_VIBRA            0xAD7E500C
#define XA_ADAPTID_LEDARRAY         0xAD7E500D

#define XA_ADAPTID_RAWVIDEO         0xAD7E500E

#define XA_ADAPT_DEFAULTAUDIOOUTPUT XA_ADAPTID_DEVSOUNDSINK

#ifdef XA_USE_TEST_PLUGINS
#define XA_ADAPT_DEFAULTAUDIOINPUT  XA_ADAPTID_AUDIOTESTSRC
#else
#define XA_ADAPT_DEFAULTAUDIOINPUT  XA_ADAPTID_DEVSOUNDSRC
#endif

#define XA_ADAPT_OGGPROFILE_UNKNOWN 0x1

#define XA_ADAPT_PCMSAMPLEFORMAT_SUPPORTED_8   0x1
#define XA_ADAPT_PCMSAMPLEFORMAT_SUPPORTED_16  0x2
#define XA_ADAPT_PCMSAMPLEFORMAT_SUPPORTED_20  0x4
#define XA_ADAPT_PCMSAMPLEFORMAT_SUPPORTED_24  0x8
#define XA_ADAPT_PCMSAMPLEFORMAT_SUPPORTED_28  0x10
#define XA_ADAPT_PCMSAMPLEFORMAT_SUPPORTED_32  0x20

#define XA_ADAPT_MAX_BITRATE_COUNT 10

#define XA_ADAPTID_UNINITED 0

#define XA_ADAPT_PLAY_STATE_CHANGED 0xf5			
#define XA_ADAPT_RADIO_FREQUENCY_CHANGED 0xf6       /* Radio frequency changed event */
#define XA_ADAPT_RADIO_FREQUENCY_RANGE_CHANGED 0xf7 /* Radio frequency range changed event */
#define XA_ADAPT_RADIO_SEEK_COMPLETE 0xf8           /* Radio seek complete changed event */
#define XA_ADAPT_RADIO_STEREO_STATUS_CHANGED 	0xf9  /* Radio stereo status changed */
#define XA_ADAPT_RADIO_SIGNAL_STRENGTH_CHANGED 0xfa   /* Radio signal status changed */
#define XA_ADAPT_VOLUME_VOLUME_CHANGED 0xfb					/* volume changed */
#define XA_ADAPT_VOLUME_MUTE_CHANGED 0xfc         	/* mute changed */
#define XA_ADAPT_VULOME_STEREOPOSITION_CHANGED  0xfd /* stereo position changed */

/* Adaptation event structure */
typedef struct XAAdaptEvent_
    {
    XAAdaptEventTypes eventtype; /* what kind of event, e.g. playitf event  */
    XAuint8 eventid; /* eventtype-specific event, e.g. XA_PLAYEVENT macro */
    XAuint32 datasize; /* event data size */
    void* data; /* event data if needed */
    } XAAdaptEvent;

/* Forward declaration of adaptation basecontext */
typedef struct XAAdaptationBaseCtx_ XAAdaptationBaseCtx;

/*
 * Structure that holds all common variables for every
 * Gst-Adaptation context structures.
 */
typedef struct XAAdaptationBaseCtx_
    {
    /*     Common Variables for all adaptation elements */
    XAuint32 ctxId;
    GArray* evtHdlrs; /*array of event handlers */
    FrameworkMap* fwkmapper;
    FWMgrFwType fwtype;
    XACapabilities* capslist;

    } XAAdaptationBaseCtx_;

/* Adaptation event callback */
typedef void (*xaAdaptEventHandler)(void *pHandlerCtx, XAAdaptEvent* event);

typedef struct XAAdaptEvtHdlr_
    {
    xaAdaptEventHandler handlerfunc; /* function handling the callback */
    void *handlercontext; /* context of handler */
    XAuint32 eventtypes; /* what kind of events this handles */
    } XAAdaptEvtHdlr;

/* FUNCTIONS */
XAresult XAAdaptationBase_Init(XAAdaptationBaseCtx* pSelf, XAuint32 ctxId);
XAresult XAAdaptationBase_PostInit(XAAdaptationBaseCtx* ctx);
XAresult XAAdaptationBase_AddEventHandler(XAAdaptationBaseCtx* ctx,
        xaAdaptEventHandler evtHandler, XAuint32 evtTypes, void *pHandlerCtx);
XAresult XAAdaptationBase_RemoveEventHandler(XAAdaptationBaseCtx* ctx,
        xaAdaptEventHandler evtHandler);
void XAAdaptationBase_SendAdaptEvents(XAAdaptationBaseCtx* ctx,
        XAAdaptEvent* event);
XAresult XAAdaptationBase_ThreadEntry(XAAdaptationBaseCtx *adaptCtx);
XAresult XAAdaptationBase_ThreadExit(XAAdaptationBaseCtx *adaptCtx);
void XAAdaptationBase_Free(XAAdaptationBaseCtx* ctx);

#endif /* XAADPTBASECTX_H_ */