khronosfws/openmax_al/src/mmf_adaptation/xanokialinearvolumeitfadaptationmmf.c
author hgs
Fri, 09 Jul 2010 16:43:35 -0500
changeset 33 5e8b14bae8c3
parent 28 ebf79c79991a
child 48 a493a607b5bf
permissions -rw-r--r--
201027
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
19
hgs
parents:
diff changeset
     1
/*
25
hgs
parents: 21
diff changeset
     2
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents: 21
diff changeset
     3
 * All rights reserved.
hgs
parents: 21
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents: 21
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents: 21
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents: 21
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents: 21
diff changeset
     8
 *
hgs
parents: 21
diff changeset
     9
 * Initial Contributors:
hgs
parents: 21
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents: 21
diff changeset
    11
 *
hgs
parents: 21
diff changeset
    12
 * Contributors:
hgs
parents: 21
diff changeset
    13
 *
hgs
parents: 21
diff changeset
    14
 * Description: Nokia Linear Volume MMF impl
hgs
parents: 21
diff changeset
    15
 *
hgs
parents: 21
diff changeset
    16
 */
19
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include "xaadaptationmmf.h"
hgs
parents:
diff changeset
    19
#include "xanokialinearvolumeitfadaptationmmf.h"
hgs
parents:
diff changeset
    20
#include "xamediaplayeradaptctxmmf.h"
hgs
parents:
diff changeset
    21
#include "cmmfbackendengine.h"
21
hgs
parents: 19
diff changeset
    22
#include "cmmfradiobackendengine.h"
hgs
parents: 19
diff changeset
    23
28
hgs
parents: 25
diff changeset
    24
XAresult XANokiaLinearVolumeItfAdapt_GetVolumeLevel(XAAdaptationMMFCtx *ctx, XAuint32* percentage)
hgs
parents: 25
diff changeset
    25
{
hgs
parents: 25
diff changeset
    26
    XAresult res = XA_RESULT_SUCCESS;
hgs
parents: 25
diff changeset
    27
    XAuint32 maxvol;
hgs
parents: 25
diff changeset
    28
    XAuint32 vol;
hgs
parents: 25
diff changeset
    29
    DEBUG_API("->XANokiaLinearVolumeItfAdapt_GetVolumeLevel");
hgs
parents: 25
diff changeset
    30
    if(!ctx || ( ctx->baseObj.ctxId != XAMediaPlayerAdaptation &&
hgs
parents: 25
diff changeset
    31
                 ctx->baseObj.ctxId != XAMediaRecorderAdaptation &&
hgs
parents: 25
diff changeset
    32
                 ctx->baseObj.ctxId != XARadioAdaptation) )
hgs
parents: 25
diff changeset
    33
    {
hgs
parents: 25
diff changeset
    34
        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
hgs
parents: 25
diff changeset
    35
        DEBUG_API("<-XANokiaLinearVolumeItfAdapt_GetVolumeLevel");
hgs
parents: 25
diff changeset
    36
        /* invalid parameter */
hgs
parents: 25
diff changeset
    37
        return XA_RESULT_PARAMETER_INVALID;
hgs
parents: 25
diff changeset
    38
    }
hgs
parents: 25
diff changeset
    39
    
hgs
parents: 25
diff changeset
    40
    if(ctx->baseObj.ctxId == XAMediaPlayerAdaptation)
hgs
parents: 25
diff changeset
    41
        {
hgs
parents: 25
diff changeset
    42
        mmf_volumeitf_get_maxvolume(((XAMediaPlayerAdaptationMMFCtx*)ctx)->mmfContext,
hgs
parents: 25
diff changeset
    43
                                        &maxvol); 
hgs
parents: 25
diff changeset
    44
		mmf_volumeitf_get_volume(((XAMediaPlayerAdaptationMMFCtx*)ctx)->mmfContext,
hgs
parents: 25
diff changeset
    45
                                    &vol);
hgs
parents: 25
diff changeset
    46
        
hgs
parents: 25
diff changeset
    47
        *percentage = (vol * MAX_PERCENTAGE_VOLUME)/maxvol;
hgs
parents: 25
diff changeset
    48
        
hgs
parents: 25
diff changeset
    49
        }
33
hgs
parents: 28
diff changeset
    50
    else if (ctx->baseObj.ctxId == XARadioAdaptation)
hgs
parents: 28
diff changeset
    51
        {
hgs
parents: 28
diff changeset
    52
        mmf_set_player_adapt_context(cmmfradiobackendengine_init(), ctx);
hgs
parents: 28
diff changeset
    53
        res = get_volume(cmmfradiobackendengine_init(), &vol);
hgs
parents: 28
diff changeset
    54
        *percentage = vol;
hgs
parents: 28
diff changeset
    55
        }      
28
hgs
parents: 25
diff changeset
    56
hgs
parents: 25
diff changeset
    57
    DEBUG_API_A1("<-XANokiaLinearVolumeItfAdapt_GetVolumeLevel %d", percentage);
hgs
parents: 25
diff changeset
    58
    return res;
hgs
parents: 25
diff changeset
    59
}
hgs
parents: 25
diff changeset
    60
19
hgs
parents:
diff changeset
    61
/*
hgs
parents:
diff changeset
    62
 * XAresult XANokiaLinearVolumeItfAdapt_SetVolumeLevel(void *ctx, AdaptationContextIDS ctx->baseObj.ctxId,
hgs
parents:
diff changeset
    63
 *                                          XAuint32 percentage)
hgs
parents:
diff changeset
    64
 * @param void *ctx - Adaptation context, this will be casted to correct type regarding to contextID
hgs
parents:
diff changeset
    65
 * XAuint32 percentage - Requested volume level, in between MIN_VOLUME_LEVEL and MAX_VOLUME_LEVEL
hgs
parents:
diff changeset
    66
 * @return XAresult ret - Success value
hgs
parents:
diff changeset
    67
 */
25
hgs
parents: 21
diff changeset
    68
XAresult XANokiaLinearVolumeItfAdapt_SetVolumeLevel(XAAdaptationMMFCtx *ctx,
hgs
parents: 21
diff changeset
    69
        XAuint32 percentage)
hgs
parents: 21
diff changeset
    70
    {
19
hgs
parents:
diff changeset
    71
    XAresult res = XA_RESULT_SUCCESS;
hgs
parents:
diff changeset
    72
    XAuint32 maxvol;
hgs
parents:
diff changeset
    73
    XAuint32 vol;
hgs
parents:
diff changeset
    74
    DEBUG_API_A1("->XANokiaLinearVolumeItfAdapt_SetVolumeLevel to: %d", percentage);
25
hgs
parents: 21
diff changeset
    75
    if (!ctx || (ctx->baseObj.ctxId != XAMediaPlayerAdaptation
hgs
parents: 21
diff changeset
    76
            && ctx->baseObj.ctxId != XAMediaRecorderAdaptation
hgs
parents: 21
diff changeset
    77
            && ctx->baseObj.ctxId != XARadioAdaptation))
hgs
parents: 21
diff changeset
    78
        {
33
hgs
parents: 28
diff changeset
    79
        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
hgs
parents: 28
diff changeset
    80
        DEBUG_API("<-XANokiaLinearVolumeItfAdapt_SetVolumeLevel");
19
hgs
parents:
diff changeset
    81
        /* invalid parameter */
25
hgs
parents: 21
diff changeset
    82
        res = XA_RESULT_PARAMETER_INVALID;
hgs
parents: 21
diff changeset
    83
        return res;
hgs
parents: 21
diff changeset
    84
        }
hgs
parents: 21
diff changeset
    85
hgs
parents: 21
diff changeset
    86
    if (ctx->baseObj.ctxId == XAMediaPlayerAdaptation)
19
hgs
parents:
diff changeset
    87
        {
25
hgs
parents: 21
diff changeset
    88
        res = mmf_volumeitf_get_maxvolume(
hgs
parents: 21
diff changeset
    89
                ((XAMediaPlayerAdaptationMMFCtx*) ctx)->mmfContext, &maxvol);
hgs
parents: 21
diff changeset
    90
hgs
parents: 21
diff changeset
    91
        if(res == XA_RESULT_SUCCESS)
hgs
parents: 21
diff changeset
    92
            {
hgs
parents: 21
diff changeset
    93
            vol = (percentage * maxvol) / MAX_PERCENTAGE_VOLUME;
hgs
parents: 21
diff changeset
    94
            res = mmf_volumeitf_set_volume(
hgs
parents: 21
diff changeset
    95
                    ((XAMediaPlayerAdaptationMMFCtx*) ctx)->mmfContext, vol);
hgs
parents: 21
diff changeset
    96
            }
hgs
parents: 21
diff changeset
    97
19
hgs
parents:
diff changeset
    98
        }
21
hgs
parents: 19
diff changeset
    99
    else if (ctx->baseObj.ctxId == XARadioAdaptation)
25
hgs
parents: 21
diff changeset
   100
        {
hgs
parents: 21
diff changeset
   101
        mmf_set_player_adapt_context(cmmfradiobackendengine_init(), ctx);
hgs
parents: 21
diff changeset
   102
        res = set_volume(cmmfradiobackendengine_init(), percentage);
33
hgs
parents: 28
diff changeset
   103
        }
hgs
parents: 28
diff changeset
   104
    DEBUG_API("<-XANokiaLinearVolumeItfAdapt_SetVolumeLevel");
19
hgs
parents:
diff changeset
   105
    return res;
25
hgs
parents: 21
diff changeset
   106
    }
19
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
XAresult XANokiaLinearVolumeItfAdapt_GetStepCount(XAAdaptationMMFCtx *ctx,
25
hgs
parents: 21
diff changeset
   109
        XAuint32* stepcount)
19
hgs
parents:
diff changeset
   110
    {
hgs
parents:
diff changeset
   111
    XAresult res = XA_RESULT_SUCCESS;
21
hgs
parents: 19
diff changeset
   112
    DEBUG_API("->XANokiaLinearVolumeItfAdapt_GetStepCount ");
25
hgs
parents: 21
diff changeset
   113
    if (!ctx || (ctx->baseObj.ctxId != XAMediaPlayerAdaptation
hgs
parents: 21
diff changeset
   114
            && ctx->baseObj.ctxId != XAMediaRecorderAdaptation
hgs
parents: 21
diff changeset
   115
            && ctx->baseObj.ctxId != XARadioAdaptation))
hgs
parents: 21
diff changeset
   116
        {
33
hgs
parents: 28
diff changeset
   117
        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
hgs
parents: 28
diff changeset
   118
        DEBUG_API("<-XANokiaLinearVolumeItfAdapt_SetVolumeLevel");
19
hgs
parents:
diff changeset
   119
        /* invalid parameter */
hgs
parents:
diff changeset
   120
        return XA_RESULT_PARAMETER_INVALID;
25
hgs
parents: 21
diff changeset
   121
        }
hgs
parents: 21
diff changeset
   122
hgs
parents: 21
diff changeset
   123
    if (ctx->baseObj.ctxId == XAMediaPlayerAdaptation)
hgs
parents: 21
diff changeset
   124
        {
hgs
parents: 21
diff changeset
   125
        res = mmf_volumeitf_get_maxvolume(
hgs
parents: 21
diff changeset
   126
                ((XAMediaPlayerAdaptationMMFCtx*) ctx)->mmfContext, stepcount);
hgs
parents: 21
diff changeset
   127
        }
hgs
parents: 21
diff changeset
   128
hgs
parents: 21
diff changeset
   129
    DEBUG_API("<-XANokiaLinearVolumeItfAdapt_GetStepCount");
hgs
parents: 21
diff changeset
   130
    return res;
19
hgs
parents:
diff changeset
   131
    }
hgs
parents:
diff changeset
   132
25
hgs
parents: 21
diff changeset
   133
void XANokiaLinearVolumeItfAdapt_VolumeChange(XAAdaptationBaseCtx *ctx,
hgs
parents: 21
diff changeset
   134
        TInt aVolume)
hgs
parents: 21
diff changeset
   135
    {
hgs
parents: 21
diff changeset
   136
    XAAdaptEvent event =
19
hgs
parents:
diff changeset
   137
        {
25
hgs
parents: 21
diff changeset
   138
        XA_NOKIALINEARVOLITFEVENTS, XA_ADAPT_VOLUME_VOLUME_CHANGED, 1, 0
hgs
parents: 21
diff changeset
   139
        };
hgs
parents: 21
diff changeset
   140
    if (ctx)
hgs
parents: 21
diff changeset
   141
        {
hgs
parents: 21
diff changeset
   142
        event.data = &aVolume;
hgs
parents: 21
diff changeset
   143
        XAAdaptationBase_SendAdaptEvents(ctx, &event);
19
hgs
parents:
diff changeset
   144
        }
hgs
parents:
diff changeset
   145
    }
hgs
parents:
diff changeset
   146