khronosfws/openmax_al/src/common/xanokiavolumeextitf.c
branchRCL_3
changeset 20 0ac9a5310753
parent 19 095bea5f582e
child 21 999b2818a0eb
--- a/khronosfws/openmax_al/src/common/xanokiavolumeextitf.c	Tue Aug 31 15:43:02 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,540 +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: 
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-
-#include "xanvolumeextitf.h"
-#include "xanokiavolumeextitfadaptationmmf.h"
-
-/**
- * XANokiaVolumeExtItfImpl* GetImpl(XANokiaVolumeExtItf self)
- * Description: Validated interface pointer and cast it to implementations pointer.
- **/
-static XANokiaVolumeExtItfImpl* GetImpl(XANokiaVolumeExtItf self)
-    {
-    if (self)
-        {
-        XANokiaVolumeExtItfImpl* impl = (XANokiaVolumeExtItfImpl*) (*self);
-        if (impl && impl == impl->self)
-            {
-            return impl;
-            }
-        }
-    return NULL;
-    }
-
-/**
- * XAresult XANokiaVolumeExtItfImpl_RegisterVolumeCallback(XANokiaVolumeExtItf self,
- *                                               xaNokiaVolumeExtCallback callback,
- *                                               void * pContext)
- * Description: Sets or clears the xaVolumeCallback.
- **/
-XAresult XANokiaVolumeExtItfImpl_RegisterVolumeCallback(
-        XANokiaVolumeExtItf self, xaNokiaVolumeExtCallback callback,
-        void * pContext)
-    {
-    XAresult ret = XA_RESULT_SUCCESS;
-    XANokiaVolumeExtItfImpl* impl = GetImpl(self);
-    DEBUG_API("->XANokiaVolumeExtItfImpl_RegisterVolumeCallback");
-
-    if (!impl)
-        {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        /* invalid parameter */
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_RegisterVolumeCallback");
-        return XA_RESULT_PARAMETER_INVALID;
-        }
-
-    impl->callback = callback;
-    impl->context = pContext;
-    impl->cbPtrToSelf = self;
-
-    DEBUG_API("<-XANokiaVolumeExtItfImpl_RegisterVolumeCallback");
-    return ret;
-    }
-
-/**
- * Base interface XANokiaVolumeExtItf implementation
- */
-
-/**
- * XAresult XANokiaVolumeExtItfImpl_SetVolumeLevel(XANokiaVolumeExtItf self, XAmillibel level)
- * Description: Sets the object's volume level.
- **/
-XAresult XANokiaVolumeExtItfImpl_SetVolumeLevel(XANokiaVolumeExtItf self,
-        XAmillibel level)
-    {
-    XANokiaVolumeExtItfImpl *impl = GetImpl(self);
-    XAresult ret = XA_RESULT_SUCCESS;
-
-    XAmillibel maximumLevel = 0;
-
-    DEBUG_API("->XANokiaVolumeExtItfImpl_SetVolumeLevel");
-
-    /* check maximum volume level */
-    if (XANokiaVolumeExtItfImpl_GetMaxVolumeLevel(self, &maximumLevel)
-            != XA_RESULT_SUCCESS)
-        {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel");
-        /* cannot solve maximum volume level */
-        return XA_RESULT_PARAMETER_INVALID;
-        }
-
-    if (!impl || level > maximumLevel)
-        {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel");
-        /* invalid parameter */
-        return XA_RESULT_PARAMETER_INVALID;
-        }
-
-    impl->volumeLevel = level;
-
-    DEBUG_API("<-XANokiaVolumeExtItfImpl_SetVolumeLevel");
-    return ret;
-    }
-
-/**
- * XAresult XANokiaVolumeExtItfImpl_GetVolumeLevel(XANokiaVolumeExtItf self, XAmillibel *pLevel)
- * Description: Gets the object’s volume level.
- **/
-XAresult XANokiaVolumeExtItfImpl_GetVolumeLevel(XANokiaVolumeExtItf self,
-        XAmillibel *pLevel)
-    {
-    XAresult ret = XA_RESULT_SUCCESS;
-    XANokiaVolumeExtItfImpl *impl = GetImpl(self);
-    DEBUG_API("->XANokiaVolumeExtItfImpl_GetVolumeLevel");
-
-    if (!impl || !pLevel)
-        {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_GetVolumeLevel");
-        /* invalid parameter */
-        return XA_RESULT_PARAMETER_INVALID;
-        }
-
-    *pLevel = impl->volumeLevel;
-
-    DEBUG_API("<-XANokiaVolumeExtItfImpl_GetVolumeLevel");
-    return ret;
-    }
-
-/**
- * XAresult XANokiaVolumeExtItfImpl_GetMaxVolumeLevel(XANokiaVolumeExtItf  self, XAmillibel *pMaxLevel)
- * Description: Gets the maximum supported level.
- **/
-XAresult XANokiaVolumeExtItfImpl_GetMaxVolumeLevel(XANokiaVolumeExtItf self,
-        XAmillibel *pMaxLevel)
-    {
-    XAresult ret = XA_RESULT_SUCCESS;
-    XANokiaVolumeExtItfImpl *impl = GetImpl(self);
-    DEBUG_API("->XANokiaVolumeExtItfImpl_GetVolumeLevel");
-
-    if (!impl || !pMaxLevel)
-        {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMaxVolumeLevel");
-        /* invalid parameter */
-        return XA_RESULT_PARAMETER_INVALID;
-        }
-
-    *pMaxLevel = MAX_SUPPORT_VOLUME_LEVEL;
-
-    DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMaxVolumeLevel");
-    return ret;
-    }
-
-/**
- * XAresult XANokiaVolumeExtItfImpl_SetMute(XANokiaVolumeExtItf self, XAboolean mute)
- * Description: Mutes or unmutes the object.
- **/
-XAresult XANokiaVolumeExtItfImpl_SetMute(XANokiaVolumeExtItf self,
-        XAboolean mute)
-    {
-    XAresult ret = XA_RESULT_SUCCESS;
-    XANokiaVolumeExtItfImpl *impl = GetImpl(self);
-    DEBUG_API("->XANokiaVolumeExtItfImpl_SetMute");
-
-    if (!impl)
-        {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_SetMute");
-        /* invalid parameter */
-        return XA_RESULT_PARAMETER_INVALID;
-        }
-
-    ret = XAAdaptationBase_ThreadEntry(impl->adapCtx);
-    if (ret == XA_RESULT_SUCCESS)
-        {
-        /* check is mute state changed */
-        if (mute != impl->mute)
-            {
-            if (impl->adapCtx && impl->adapCtx->fwtype == FWMgrFWMMF)
-                {
-                ret = XANokiaVolumeExtItfAdapt_SetMute(
-                        (XAAdaptationMMFCtx*) impl->adapCtx, mute);
-                if (ret == XA_RESULT_SUCCESS)
-                    {
-                    impl->mute = mute;
-                    }
-                }
-            }
-
-        XAAdaptationBase_ThreadExit(impl->adapCtx);
-        }
-    DEBUG_API("<-XANokiaVolumeExtItfImpl_SetMute");
-    return ret;
-    }
-
-/**
- * XAresult XANokiaVolumeExtItfImpl_GetMute(XANokiaVolumeExtItf self, XAboolean *pMute)
- * Description: Retrieves the object's state.
- **/
-XAresult XANokiaVolumeExtItfImpl_GetMute(XANokiaVolumeExtItf self,
-        XAboolean *pMute)
-    {
-    XAresult ret = XA_RESULT_SUCCESS;
-    XANokiaVolumeExtItfImpl *impl = GetImpl(self);
-    DEBUG_API("->XANokiaVolumeExtItfImpl_GetMute");
-
-    if (!impl || !pMute)
-        {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMute");
-        /* invalid parameter */
-        return XA_RESULT_PARAMETER_INVALID;
-        }
-
-    *pMute = impl->mute;
-
-    DEBUG_API("<-XANokiaVolumeExtItfImpl_GetMute");
-    return ret;
-    }
-
-/**
- * XAresult XANokiaVolumeExtItfImpl_EnableStereoPosition(XANokiaVolumeExtItf self, XAboolean enable)
- * Description: Enables or disables the stereo positioning effect.
- **/
-XAresult XANokiaVolumeExtItfImpl_EnableStereoPosition(
-        XANokiaVolumeExtItf self, XAboolean enable)
-    {
-    XAresult ret = XA_RESULT_SUCCESS;
-    XANokiaVolumeExtItfImpl *impl = GetImpl(self);
-    DEBUG_API("->XANokiaVolumeExtItfImpl_EnableStereoPosition");
-
-    if (!impl)
-        {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_EnableStereoPosition");
-        /* invalid parameter */
-        return XA_RESULT_PARAMETER_INVALID;
-        }
-
-    ret = XAAdaptationBase_ThreadEntry(impl->adapCtx);
-    if (ret == XA_RESULT_PARAMETER_INVALID || ret
-            == XA_RESULT_PRECONDITIONS_VIOLATED)
-        {
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_EnableStereoPosition");
-        return ret;
-        }
-    /* Check is stereo position state changed */
-    if (enable != impl->enableStereoPos)
-        {
-        if (impl->adapCtx->fwtype == FWMgrFWMMF)
-            {
-            ret = XANokiaVolumeExtItfAdapt_EnableStereoPosition(
-                    (XAAdaptationMMFCtx*) impl->adapCtx, enable);
-            }
-
-        if (ret == XA_RESULT_SUCCESS)
-            {
-            impl->enableStereoPos = enable;
-            }
-        }
-
-    XAAdaptationBase_ThreadExit(impl->adapCtx);
-    DEBUG_API("<-XANokiaVolumeExtItfImpl_EnableStereoPosition");
-    return ret;
-    }
-
-/**
- * XAresult XANokiaVolumeExtItfImpl_IsEnabledStereoPosition(XANokiaVolumeExtItf self,
- *                                                  XAboolean *pEnable)
- * Description: Returns the enabled state of the stereo positioning effect.
- **/
-XAresult XANokiaVolumeExtItfImpl_IsEnabledStereoPosition(
-        XANokiaVolumeExtItf self, XAboolean *pEnable)
-    {
-    XAresult ret = XA_RESULT_SUCCESS;
-    XANokiaVolumeExtItfImpl *impl = GetImpl(self);
-    DEBUG_API("->XANokiaVolumeExtItfImpl_IsEnabledStereoPosition");
-
-    if (!impl || !pEnable)
-        {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_IsEnabledStereoPosition");
-        /* invalid parameter */
-        return XA_RESULT_PARAMETER_INVALID;
-        }
-
-    *pEnable = impl->enableStereoPos;
-
-    DEBUG_API("<-XANokiaVolumeExtItfImpl_IsEnabledStereoPosition");
-    return ret;
-    }
-
-/**
- * XAresult XANokiaVolumeExtItfImpl_SetStereoPosition(XANokiaVolumeExtItf self,
- *                                            XApermille stereoPosition)
- * Description: Sets the stereo position of the object.
- **/
-XAresult XANokiaVolumeExtItfImpl_SetStereoPosition(XANokiaVolumeExtItf self,
-        XApermille stereoPosition)
-    {
-    XAresult ret = XA_RESULT_SUCCESS;
-    XANokiaVolumeExtItfImpl *impl = GetImpl(self);
-    DEBUG_API("->XANokiaVolumeExtItfImpl_SetStereoPosition");
-
-    if (!impl || (stereoPosition < STEREO_POSITION_LEFT) || (stereoPosition
-            > STEREO_POSITION_RIGHT))
-        {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_SetStereoPosition");
-        /* invalid parameter */
-        return XA_RESULT_PARAMETER_INVALID;
-        }
-
-    impl->stereoPosition = stereoPosition;
-
-    ret = XAAdaptationBase_ThreadEntry(impl->adapCtx);
-    if (ret == XA_RESULT_PARAMETER_INVALID || ret
-            == XA_RESULT_PRECONDITIONS_VIOLATED)
-        {
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_SetStereoPosition");
-        return ret;
-        }
-    /* check is stereo position effect enabled if is then handle effect */
-    if (impl->enableStereoPos)
-        {
-        if (impl->adapCtx->fwtype == FWMgrFWMMF)
-            {
-            ret = XANokiaVolumeExtItfAdapt_SetStereoPosition(
-                    (XAAdaptationMMFCtx*) impl->adapCtx, stereoPosition);
-
-            }
-        }
-
-    XAAdaptationBase_ThreadExit(impl->adapCtx);
-    DEBUG_API("<-XANokiaVolumeExtItfImpl_SetStereoPosition");
-    return ret;
-    }
-
-/**
- * XAresult XANokiaVolumeExtItfImpl_GetStereoPosition(XANokiaVolumeExtItf self,
- *                                            XApermille *pStereoPosition)
- * Description: Gets the object’s stereo position setting.
- **/
-XAresult XANokiaVolumeExtItfImpl_GetStereoPosition(XANokiaVolumeExtItf self,
-        XApermille *pStereoPosition)
-    {
-    XAresult ret = XA_RESULT_SUCCESS;
-    XANokiaVolumeExtItfImpl *impl = GetImpl(self);
-    DEBUG_API("->XANokiaVolumeExtItfImpl_GetStereoPosition");
-
-    if (!impl || !pStereoPosition)
-        {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_GetStereoPosition");
-        /* invalid parameter */
-        return XA_RESULT_PARAMETER_INVALID;
-        }
-
-    *pStereoPosition = impl->stereoPosition;
-
-    DEBUG_API("<-XANokiaVolumeExtItfImpl_GetStereoPosition");
-    return ret;
-    }
-
-XAresult XANokiaVolumeExtItfImpl_SetCallbackEventsMask(
-        XANokiaVolumeExtItf self, XAuint32 eventFlags)
-    {
-    XAresult ret = XA_RESULT_SUCCESS;
-    XANokiaVolumeExtItfImpl* impl = GetImpl(self);
-    DEBUG_API("->XANokiaVolumeExtItfImpl_SetCallbackEventsMask");
-
-    if (!impl)
-        {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        /* invalid parameter */
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_SetCallbackEventsMask");
-        return XA_RESULT_PARAMETER_INVALID;
-        }
-
-    impl->eventFlags = eventFlags;
-
-    DEBUG_API("<-XANokiaVolumeExtItfImpl_SetCallbackEventsMask");
-    return ret;
-    }
-
-XAresult XANokiaVolumeExtItfImpl_GetCallbackEventsMask(
-        XANokiaVolumeExtItf self, XAuint32 * pEventFlags)
-    {
-    XAresult ret = XA_RESULT_SUCCESS;
-    XANokiaVolumeExtItfImpl* impl = GetImpl(self);
-    DEBUG_API("->XANokiaVolumeExtItfImpl_GetCallbackEventsMask");
-
-    if (!impl || !pEventFlags)
-        {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        /* invalid parameter */
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_GetCallbackEventsMask");
-        return XA_RESULT_PARAMETER_INVALID;
-        }
-
-    *pEventFlags = impl->eventFlags;
-
-    DEBUG_API("<-XANokiaVolumeExtItfImpl_GetCallbackEventsMask");
-    return ret;
-    }
-
-/**
- * XANokiaVolumeExtItfImpl -specific methods
- **/
-
-/**
- * XANokiaVolumeExtItfImpl* XANokiaVolumeExtItfImpl_Create()
- * Description: Allocate and initialize VolumeItfImpl
- **/
-XANokiaVolumeExtItfImpl* XANokiaVolumeExtItfImpl_Create(
-        XAAdaptationBaseCtx *adapCtx)
-    {
-    XANokiaVolumeExtItfImpl *self = (XANokiaVolumeExtItfImpl*) calloc(1,
-            sizeof(XANokiaVolumeExtItfImpl));
-    DEBUG_API("->XANokiaVolumeExtItfImpl_Create");
-
-    if (self)
-        {
-        /* init itf default implementation */
-        self->itf.EnableStereoPosition
-                = XANokiaVolumeExtItfImpl_EnableStereoPosition;
-        self->itf.GetMaxVolumeLevel
-                = XANokiaVolumeExtItfImpl_GetMaxVolumeLevel;
-        self->itf.GetMute = XANokiaVolumeExtItfImpl_GetMute;
-        self->itf.GetStereoPosition
-                = XANokiaVolumeExtItfImpl_GetStereoPosition;
-        self->itf.GetVolumeLevel = XANokiaVolumeExtItfImpl_GetVolumeLevel;
-        self->itf.IsEnabledStereoPosition
-                = XANokiaVolumeExtItfImpl_IsEnabledStereoPosition;
-        self->itf.SetMute = XANokiaVolumeExtItfImpl_SetMute;
-        self->itf.SetStereoPosition
-                = XANokiaVolumeExtItfImpl_SetStereoPosition;
-        self->itf.SetVolumeLevel = XANokiaVolumeExtItfImpl_SetVolumeLevel;
-        self->itf.RegisterVolumeCallback
-                = XANokiaVolumeExtItfImpl_RegisterVolumeCallback;
-        self->itf.SetCallbackEventsMask
-                = XANokiaVolumeExtItfImpl_SetCallbackEventsMask;
-        self->itf.GetCallbackEventsMask
-                = XANokiaVolumeExtItfImpl_GetCallbackEventsMask;
-
-        /* init variables */
-        self->volumeLevel = 0;
-        self->mute = XA_BOOLEAN_FALSE;
-        self->enableStereoPos = XA_BOOLEAN_FALSE;
-        self->stereoPosition = STEREO_POSITION_CENTER;
-
-        self->adapCtx = adapCtx;
-
-        XAAdaptationBase_AddEventHandler(adapCtx,
-                &XANokiaVolumeExtItfImpl_AdaptCb, XA_NOKIAEXTVOLITFEVENTS,
-                self);
-
-        self->self = self;
-        }
-
-    DEBUG_API("<-XANokiaVolumeExtItfImpl_Create");
-    return self;
-    }
-
-/**
- * void XANokiaVolumeExtItfImpl_Free(XANokiaVolumeExtItfImpl* self)
- * Description: Free all resources reserved at XANokiaVolumeExtItfImpl_Create
- **/
-void XANokiaVolumeExtItfImpl_Free(XANokiaVolumeExtItfImpl* self)
-    {
-    DEBUG_API("->XANokiaVolumeExtItfImpl_Free");
-    assert(self==self->self);
-    free(self);
-    DEBUG_API("<-XANokiaVolumeExtItfImpl_Free");
-    }
-
-/* void XANokiaVolumeExtItfimpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event )
- * Description: Event handler for adaptation events
- */
-void XANokiaVolumeExtItfImpl_AdaptCb(void *pHandlerCtx, XAAdaptEvent *event)
-    {
-    XANokiaVolumeExtItfImpl* impl = (XANokiaVolumeExtItfImpl*) pHandlerCtx;
-    XAboolean eventBoolean = XA_BOOLEAN_FALSE;
-
-    DEBUG_API("->XANokiaVolumeExtItfimpl_AdaptCb");
-
-    if (!impl)
-        {
-        DEBUG_ERR("XANokiaVolumeExtItfImpl_AdaptCb, invalid context pointer!");
-        DEBUG_API("<-XANokiaVolumeExtItfImpl_AdaptCb");
-        return;
-        }
-    assert(event);
-
-    if (event->eventid == XA_ADAPT_VOLUME_MUTE_CHANGED && impl->callback)
-        {
-        if (impl->eventFlags & XA_NOKIAVOLUMEEXT_EVENT_MUTE_CHANGED)
-            {
-            DEBUG_API("Mute Status  changed in adaptation");
-            eventBoolean = *(XAboolean*) event->data;
-            impl->callback(impl->cbPtrToSelf, impl->context,
-                    XA_NOKIAVOLUMEEXT_EVENT_MUTE_CHANGED, eventBoolean);
-            }
-        }
-
-    else if (event->eventid == XA_ADAPT_VOLUME_VOLUME_CHANGED)
-        {
-        if (impl->eventFlags & XA_NOKIAVOLUMEEXT_EVENT_VOLUME_CHANGED)
-            {
-            DEBUG_API("Volume Status  changed in adaptation");
-            eventBoolean = *(XAboolean*) event->data;
-            impl->callback(impl->cbPtrToSelf, impl->context,
-                    XA_NOKIAVOLUMEEXT_EVENT_VOLUME_CHANGED, eventBoolean);
-            }
-        }
-    else if (event->eventid == XA_ADAPT_VULOME_STEREOPOSITION_CHANGED)
-        {
-        if (impl->eventFlags
-                & XA_NOKIAVOLUMEEXT_EVENT_STEREO_POSITION_CHANGED)
-            {
-            DEBUG_API("StereoPosituin Status  changed in adaptation");
-            eventBoolean = *(XAboolean*) event->data;
-            impl->callback(impl->cbPtrToSelf, impl->context,
-                    XA_NOKIAVOLUMEEXT_EVENT_STEREO_POSITION_CHANGED,
-                    eventBoolean);
-            }
-        }
-
-    DEBUG_API("<-XANokiaVolumeExtItfimpl_AdaptCb");
-    }