khronosfws/openmax_al/src/gst_adaptation/xaimagecontrolsitfadaptation.c
author hgs
Fri, 14 May 2010 18:19:45 -0500
changeset 20 b67dd1fc57c5
parent 19 4a629bc82c5e
permissions -rw-r--r--
201019
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
19
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: 
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
20
hgs
parents: 19
diff changeset
    18
#include <gst/gst.h>
19
hgs
parents:
diff changeset
    19
#include "xaadaptationgst.h"
hgs
parents:
diff changeset
    20
#include "xamediaplayeradaptctx.h"
hgs
parents:
diff changeset
    21
#include "xamediarecorderadaptctx.h"
hgs
parents:
diff changeset
    22
#include "xacameraadaptctx.h"
hgs
parents:
diff changeset
    23
#include "xaimagecontrolsitfadaptation.h"
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
/*
hgs
parents:
diff changeset
    26
 * XAresult XAImageControlsItfAdapt_SetBrightness(XAAdaptationGstCtx *bCtx,
hgs
parents:
diff changeset
    27
 *                                                XAuint32 brightness)
hgs
parents:
diff changeset
    28
 */
hgs
parents:
diff changeset
    29
XAresult XAImageControlsItfAdapt_SetBrightness(XAAdaptationGstCtx *bCtx,
hgs
parents:
diff changeset
    30
                                               XAuint32 brightness)
hgs
parents:
diff changeset
    31
{
hgs
parents:
diff changeset
    32
    XAresult ret = XA_RESULT_SUCCESS;
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
    gdouble gstBrightness = 0;
hgs
parents:
diff changeset
    35
    XAint32 tempBrightness = 0;
hgs
parents:
diff changeset
    36
    GstElement *balanceElement = NULL;
hgs
parents:
diff changeset
    37
    DEBUG_API("->XAImageControlsItfAdapt_SetBrightness")
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
    if(!bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation && bCtx->baseObj.ctxId != XAMediaRecorderAdaptation
hgs
parents:
diff changeset
    40
       && bCtx->baseObj.ctxId != XACameraAdaptation))
hgs
parents:
diff changeset
    41
    {
hgs
parents:
diff changeset
    42
        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
hgs
parents:
diff changeset
    43
        DEBUG_API("<-XAImageControlsItfAdapt_SetBrightness")
hgs
parents:
diff changeset
    44
        return XA_RESULT_PARAMETER_INVALID;
hgs
parents:
diff changeset
    45
    }
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
    if( bCtx->baseObj.ctxId == XAMediaRecorderAdaptation )
hgs
parents:
diff changeset
    48
    {
hgs
parents:
diff changeset
    49
        XAMediaRecorderAdaptationCtx* ctx = (XAMediaRecorderAdaptationCtx*) bCtx;
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
        balanceElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_balance");
hgs
parents:
diff changeset
    52
    }
hgs
parents:
diff changeset
    53
    if( bCtx->baseObj.ctxId == XAMediaPlayerAdaptation )
hgs
parents:
diff changeset
    54
    {
hgs
parents:
diff changeset
    55
        XAMediaPlayerAdaptationCtx* ctx = (XAMediaPlayerAdaptationCtx*) bCtx;
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
        balanceElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_balance");
hgs
parents:
diff changeset
    58
    }
hgs
parents:
diff changeset
    59
    if( bCtx->baseObj.ctxId == XACameraAdaptation )
hgs
parents:
diff changeset
    60
    {
hgs
parents:
diff changeset
    61
        XACameraAdaptationCtx* ctx = (XACameraAdaptationCtx*) bCtx;
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
        GstElement *videoPP = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "videopp_camera");
hgs
parents:
diff changeset
    64
        if ( !videoPP )
hgs
parents:
diff changeset
    65
        {
hgs
parents:
diff changeset
    66
            DEBUG_ERR("Could not receive videopp from camerabin!");
hgs
parents:
diff changeset
    67
        }
hgs
parents:
diff changeset
    68
        else
hgs
parents:
diff changeset
    69
        {
hgs
parents:
diff changeset
    70
            /* Get camera balance element */
hgs
parents:
diff changeset
    71
            balanceElement = gst_bin_get_by_name( GST_BIN(videoPP), "pp_balance");
hgs
parents:
diff changeset
    72
        }
hgs
parents:
diff changeset
    73
    }
hgs
parents:
diff changeset
    74
hgs
parents:
diff changeset
    75
    /* count gstBrightness from XA contrast. Allowed values for gst is -1 to 1
hgs
parents:
diff changeset
    76
     * and allowed value for XA is 0 to 100 */
hgs
parents:
diff changeset
    77
    tempBrightness = brightness;
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
    gstBrightness = ( ((gdouble)tempBrightness - SCALE_VALUE_BRIGHTNESS) / SCALE_VALUE_BRIGHTNESS );
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
    if(balanceElement)
hgs
parents:
diff changeset
    82
    {
hgs
parents:
diff changeset
    83
        g_object_set(G_OBJECT(balanceElement), "brightness", gstBrightness, NULL);
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
        if(bCtx->baseObj.ctxId == XAMediaPlayerAdaptation)
hgs
parents:
diff changeset
    86
        {
hgs
parents:
diff changeset
    87
            ret = XAImageControlsItfAdapt_HandleImageType(bCtx);
hgs
parents:
diff changeset
    88
        }
hgs
parents:
diff changeset
    89
    }
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
	if ( balanceElement )
hgs
parents:
diff changeset
    92
	{
hgs
parents:
diff changeset
    93
        gst_object_unref(balanceElement);
hgs
parents:
diff changeset
    94
	}
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
    DEBUG_API("<-XAImageControlsItfAdapt_SetBrightness")
hgs
parents:
diff changeset
    97
    return ret;
hgs
parents:
diff changeset
    98
}
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
/*
hgs
parents:
diff changeset
   101
 * XAresult XAImageControlsItfAdapt_SetContrast(XAAdaptationGstCtx *bCtx,
hgs
parents:
diff changeset
   102
 *                                              XAuint32 contrast)
hgs
parents:
diff changeset
   103
 */
hgs
parents:
diff changeset
   104
XAresult XAImageControlsItfAdapt_SetContrast(XAAdaptationGstCtx *bCtx,
hgs
parents:
diff changeset
   105
                                             XAint32 contrast)
hgs
parents:
diff changeset
   106
{
hgs
parents:
diff changeset
   107
    XAresult ret = XA_RESULT_SUCCESS;
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
    gdouble gstContrast = 1;
hgs
parents:
diff changeset
   110
    GstElement *balanceElement = NULL;
hgs
parents:
diff changeset
   111
    DEBUG_API("->XAImageControlsItfAdapt_SetContrast")
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
    if(!bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation && bCtx->baseObj.ctxId != XAMediaRecorderAdaptation
hgs
parents:
diff changeset
   114
       && bCtx->baseObj.ctxId != XACameraAdaptation))
hgs
parents:
diff changeset
   115
    {
hgs
parents:
diff changeset
   116
        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
hgs
parents:
diff changeset
   117
        DEBUG_API("<-XAImageControlsItfAdapt_SetContrast")
hgs
parents:
diff changeset
   118
        return XA_RESULT_PARAMETER_INVALID;
hgs
parents:
diff changeset
   119
    }
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
    if( bCtx->baseObj.ctxId == XAMediaPlayerAdaptation )
hgs
parents:
diff changeset
   122
    {
hgs
parents:
diff changeset
   123
        XAMediaPlayerAdaptationCtx* ctx = (XAMediaPlayerAdaptationCtx*) bCtx;
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
        balanceElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_balance");
hgs
parents:
diff changeset
   126
    }
hgs
parents:
diff changeset
   127
    if( bCtx->baseObj.ctxId == XAMediaRecorderAdaptation )
hgs
parents:
diff changeset
   128
    {
hgs
parents:
diff changeset
   129
        XAMediaRecorderAdaptationCtx* ctx = (XAMediaRecorderAdaptationCtx*) bCtx;
hgs
parents:
diff changeset
   130
hgs
parents:
diff changeset
   131
        balanceElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_balance");
hgs
parents:
diff changeset
   132
    }
hgs
parents:
diff changeset
   133
    if( bCtx->baseObj.ctxId == XACameraAdaptation )
hgs
parents:
diff changeset
   134
    {
hgs
parents:
diff changeset
   135
        XACameraAdaptationCtx* ctx = (XACameraAdaptationCtx*) bCtx;
hgs
parents:
diff changeset
   136
hgs
parents:
diff changeset
   137
        GstElement *videoPP = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "videopp_camera");
hgs
parents:
diff changeset
   138
        if( !videoPP )
hgs
parents:
diff changeset
   139
        {
hgs
parents:
diff changeset
   140
            DEBUG_ERR("Could not receive videopp from camerabin!");
hgs
parents:
diff changeset
   141
        }
hgs
parents:
diff changeset
   142
        else
hgs
parents:
diff changeset
   143
        {
hgs
parents:
diff changeset
   144
            /* Get camera balance element */
hgs
parents:
diff changeset
   145
            balanceElement = gst_bin_get_by_name( GST_BIN(videoPP), "pp_balance");
hgs
parents:
diff changeset
   146
        }
hgs
parents:
diff changeset
   147
    }
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
    /* count gstContrast from XA contrast. Allowed values for gst is 0 to 2
hgs
parents:
diff changeset
   150
     * and allowed value for XA is -100 to 100 */
hgs
parents:
diff changeset
   151
    gstContrast = (( (gdouble)contrast + SCALE_VALUE_CONTRAST ) / SCALE_VALUE_CONTRAST );
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
    if(balanceElement)
hgs
parents:
diff changeset
   154
    {
hgs
parents:
diff changeset
   155
        g_object_set(G_OBJECT(balanceElement), "contrast", gstContrast, NULL);
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
        if(bCtx->baseObj.ctxId == XAMediaPlayerAdaptation)
hgs
parents:
diff changeset
   158
        {
hgs
parents:
diff changeset
   159
            ret = XAImageControlsItfAdapt_HandleImageType(bCtx);
hgs
parents:
diff changeset
   160
        }
hgs
parents:
diff changeset
   161
    }
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
	if ( balanceElement )
hgs
parents:
diff changeset
   164
	{
hgs
parents:
diff changeset
   165
        gst_object_unref(balanceElement);
hgs
parents:
diff changeset
   166
	}
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
    DEBUG_API("<-XAImageControlsItfAdapt_SetContrast")
hgs
parents:
diff changeset
   169
    return ret;
hgs
parents:
diff changeset
   170
}
hgs
parents:
diff changeset
   171
hgs
parents:
diff changeset
   172
/*
hgs
parents:
diff changeset
   173
 * XAresult XAImageControlsItfAdapt_SetGamma(XAAdaptationGstCtx *bCtx,
hgs
parents:
diff changeset
   174
 *                                           XApermille gamma)
hgs
parents:
diff changeset
   175
 */
hgs
parents:
diff changeset
   176
XAresult XAImageControlsItfAdapt_SetGamma(XAAdaptationGstCtx *bCtx,
hgs
parents:
diff changeset
   177
                                          XApermille gamma)
hgs
parents:
diff changeset
   178
{
hgs
parents:
diff changeset
   179
    XAresult ret = XA_RESULT_SUCCESS;
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
    gdouble gstGamma=0;
hgs
parents:
diff changeset
   182
    GstElement *gammaElement = NULL;
hgs
parents:
diff changeset
   183
    DEBUG_API("->XAImageControlsItfAdapt_SetGamma")
hgs
parents:
diff changeset
   184
hgs
parents:
diff changeset
   185
    if(!bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation && bCtx->baseObj.ctxId != XAMediaRecorderAdaptation
hgs
parents:
diff changeset
   186
       && bCtx->baseObj.ctxId != XACameraAdaptation))
hgs
parents:
diff changeset
   187
    {
hgs
parents:
diff changeset
   188
        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
hgs
parents:
diff changeset
   189
        DEBUG_API("<-XAImageControlsItfAdapt_SetGamma")
hgs
parents:
diff changeset
   190
        return XA_RESULT_PARAMETER_INVALID;
hgs
parents:
diff changeset
   191
    }
hgs
parents:
diff changeset
   192
hgs
parents:
diff changeset
   193
    if( bCtx->baseObj.ctxId == XAMediaPlayerAdaptation )
hgs
parents:
diff changeset
   194
    {
hgs
parents:
diff changeset
   195
        XAMediaPlayerAdaptationCtx* ctx = (XAMediaPlayerAdaptationCtx*) bCtx;
hgs
parents:
diff changeset
   196
hgs
parents:
diff changeset
   197
        gammaElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_gamma");
hgs
parents:
diff changeset
   198
    }
hgs
parents:
diff changeset
   199
hgs
parents:
diff changeset
   200
    if( bCtx->baseObj.ctxId == XAMediaRecorderAdaptation )
hgs
parents:
diff changeset
   201
    {
hgs
parents:
diff changeset
   202
        XAMediaRecorderAdaptationCtx* ctx = (XAMediaRecorderAdaptationCtx*) bCtx;
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
        gammaElement = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "pp_gamma");
hgs
parents:
diff changeset
   205
    }
hgs
parents:
diff changeset
   206
hgs
parents:
diff changeset
   207
    if( bCtx->baseObj.ctxId == XACameraAdaptation )
hgs
parents:
diff changeset
   208
    {
hgs
parents:
diff changeset
   209
        XACameraAdaptationCtx* ctx = (XACameraAdaptationCtx*) bCtx;
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
        GstElement *videoPP = gst_bin_get_by_name( GST_BIN(ctx->baseObj.bin), "videopp_camera");
hgs
parents:
diff changeset
   212
        if( !videoPP )
hgs
parents:
diff changeset
   213
        {
hgs
parents:
diff changeset
   214
            DEBUG_ERR("Could not receive videopp from camerabin!");
hgs
parents:
diff changeset
   215
        }
hgs
parents:
diff changeset
   216
        else
hgs
parents:
diff changeset
   217
        {
hgs
parents:
diff changeset
   218
            /* Get camera gamma element */
hgs
parents:
diff changeset
   219
            gammaElement = gst_bin_get_by_name( GST_BIN(videoPP), "pp_gamma");
hgs
parents:
diff changeset
   220
        }
hgs
parents:
diff changeset
   221
    }
hgs
parents:
diff changeset
   222
hgs
parents:
diff changeset
   223
    /* count gstGamma from XA gamma */
hgs
parents:
diff changeset
   224
    gstGamma = ( (gdouble)gamma / SCALE_VALUE_GAMMA );
hgs
parents:
diff changeset
   225
hgs
parents:
diff changeset
   226
    if(gammaElement)
hgs
parents:
diff changeset
   227
    {
hgs
parents:
diff changeset
   228
        g_object_set(G_OBJECT(gammaElement), "gamma", gstGamma, NULL);
hgs
parents:
diff changeset
   229
hgs
parents:
diff changeset
   230
        if(bCtx->baseObj.ctxId == XAMediaPlayerAdaptation)
hgs
parents:
diff changeset
   231
        {
hgs
parents:
diff changeset
   232
            ret = XAImageControlsItfAdapt_HandleImageType(bCtx);
hgs
parents:
diff changeset
   233
        }
hgs
parents:
diff changeset
   234
    }
hgs
parents:
diff changeset
   235
hgs
parents:
diff changeset
   236
	if ( gammaElement )
hgs
parents:
diff changeset
   237
	{
hgs
parents:
diff changeset
   238
        gst_object_unref(gammaElement);
hgs
parents:
diff changeset
   239
	}
hgs
parents:
diff changeset
   240
hgs
parents:
diff changeset
   241
    DEBUG_API("<-XAImageControlsItfAdapt_SetGamma")
hgs
parents:
diff changeset
   242
    return ret;
hgs
parents:
diff changeset
   243
}
hgs
parents:
diff changeset
   244
hgs
parents:
diff changeset
   245
/*
hgs
parents:
diff changeset
   246
 * XAresult XAImageControlsItfAdapt_GetSupportedGammaSettings(XAAdaptationGstCtx *bCtx,
hgs
parents:
diff changeset
   247
 *                                                            XApermille *pMinValue,
hgs
parents:
diff changeset
   248
 *                                                            XApermille *pMaxValue,
hgs
parents:
diff changeset
   249
 *                                                            XAuint32 *pNumSettings,
hgs
parents:
diff changeset
   250
 *                                                            XApermille **ppSettings)
hgs
parents:
diff changeset
   251
 */
hgs
parents:
diff changeset
   252
XAresult XAImageControlsItfAdapt_GetSupportedGammaSettings(XAAdaptationGstCtx *bCtx,
hgs
parents:
diff changeset
   253
                                                           XApermille *pMinValue,
hgs
parents:
diff changeset
   254
                                                           XApermille *pMaxValue,
hgs
parents:
diff changeset
   255
                                                           XAuint32 *pNumSettings,
hgs
parents:
diff changeset
   256
                                                           XApermille **ppSettings)
hgs
parents:
diff changeset
   257
{
hgs
parents:
diff changeset
   258
    XAresult ret = XA_RESULT_SUCCESS;
hgs
parents:
diff changeset
   259
    DEBUG_API("->XAImageControlsItfAdapt_GetSupportedGammaSettings")
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
    if(!bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation && bCtx->baseObj.ctxId != XAMediaRecorderAdaptation
hgs
parents:
diff changeset
   262
       && bCtx->baseObj.ctxId != XACameraAdaptation) || !pMinValue || !pMaxValue || !pNumSettings)
hgs
parents:
diff changeset
   263
    {
hgs
parents:
diff changeset
   264
        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
hgs
parents:
diff changeset
   265
        /* invalid parameter */
hgs
parents:
diff changeset
   266
        DEBUG_API("<-XAImageControlsItfAdapt_GetSupportedGammaSettings")
hgs
parents:
diff changeset
   267
        return XA_RESULT_PARAMETER_INVALID;
hgs
parents:
diff changeset
   268
    }
hgs
parents:
diff changeset
   269
hgs
parents:
diff changeset
   270
    *pMinValue = MIN_GAMMA_VALUE;
hgs
parents:
diff changeset
   271
    *pMaxValue = MAX_GAMMA_VALUE;
hgs
parents:
diff changeset
   272
hgs
parents:
diff changeset
   273
    /* manual settings is continuous from min to max then pNumSetting return 0. */
hgs
parents:
diff changeset
   274
    *pNumSettings = 0;
hgs
parents:
diff changeset
   275
hgs
parents:
diff changeset
   276
    DEBUG_API("<-XAImageControlsItfAdapt_GetSupportedGammaSettings")
hgs
parents:
diff changeset
   277
    return ret;
hgs
parents:
diff changeset
   278
}
hgs
parents:
diff changeset
   279
/*
hgs
parents:
diff changeset
   280
 * XAresult XAImageControlsItfAdapt_HandleImageType(XAAdaptationGstCtx *bCtx)
hgs
parents:
diff changeset
   281
 * Description: this run gstreamer for image type
hgs
parents:
diff changeset
   282
 *
hgs
parents:
diff changeset
   283
 */
hgs
parents:
diff changeset
   284
XAresult XAImageControlsItfAdapt_HandleImageType(XAAdaptationGstCtx *bCtx)
hgs
parents:
diff changeset
   285
{
hgs
parents:
diff changeset
   286
    XAresult ret = XA_RESULT_SUCCESS;
hgs
parents:
diff changeset
   287
    XADataSource *dataSrc = NULL;
hgs
parents:
diff changeset
   288
    GstStateChangeReturn gstRet = GST_STATE_CHANGE_SUCCESS;
hgs
parents:
diff changeset
   289
    GstState gstOrigState = GST_STATE_PLAYING;
hgs
parents:
diff changeset
   290
    GstState gstTmpState = GST_STATE_PLAYING;
hgs
parents:
diff changeset
   291
    XAMediaPlayerAdaptationCtx* mCtx = NULL;
hgs
parents:
diff changeset
   292
    DEBUG_API("->XAImageControlsItfAdapt_HandleImageType");
hgs
parents:
diff changeset
   293
hgs
parents:
diff changeset
   294
    if( !bCtx || (bCtx->baseObj.ctxId != XAMediaPlayerAdaptation) )
hgs
parents:
diff changeset
   295
    {
hgs
parents:
diff changeset
   296
        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
hgs
parents:
diff changeset
   297
        DEBUG_API("<-XAImageControlsItfAdapt_HandleImageType")
hgs
parents:
diff changeset
   298
        return XA_RESULT_PARAMETER_INVALID;
hgs
parents:
diff changeset
   299
    }
hgs
parents:
diff changeset
   300
hgs
parents:
diff changeset
   301
    mCtx = (XAMediaPlayerAdaptationCtx*) bCtx;
hgs
parents:
diff changeset
   302
hgs
parents:
diff changeset
   303
    dataSrc = mCtx->xaSource;
hgs
parents:
diff changeset
   304
hgs
parents:
diff changeset
   305
    if( dataSrc )
hgs
parents:
diff changeset
   306
    {
hgs
parents:
diff changeset
   307
        XAMediaType mediaType;
hgs
parents:
diff changeset
   308
        ret = XACommon_CheckDataSource(dataSrc, &mediaType);
hgs
parents:
diff changeset
   309
        if( ret == XA_RESULT_SUCCESS && mediaType == XA_MEDIATYPE_IMAGE )
hgs
parents:
diff changeset
   310
        {
hgs
parents:
diff changeset
   311
            gstOrigState = GST_STATE(bCtx->bin);
hgs
parents:
diff changeset
   312
hgs
parents:
diff changeset
   313
            DEBUG_INFO_A1("Sending change state request to state %d", GST_STATE_READY);
hgs
parents:
diff changeset
   314
            gstRet = gst_element_set_state( GST_ELEMENT(bCtx->bin), GST_STATE_READY);
hgs
parents:
diff changeset
   315
            gstTmpState = GST_STATE(bCtx->bin);
hgs
parents:
diff changeset
   316
            if(gstRet == GST_STATE_CHANGE_SUCCESS && gstTmpState == GST_STATE_READY)
hgs
parents:
diff changeset
   317
                {
hgs
parents:
diff changeset
   318
                DEBUG_INFO_A1("Sending change state request to state %d", gstOrigState);
hgs
parents:
diff changeset
   319
                gstRet = gst_element_set_state( GST_ELEMENT(bCtx->bin), gstOrigState);
hgs
parents:
diff changeset
   320
                }
hgs
parents:
diff changeset
   321
        }
hgs
parents:
diff changeset
   322
    }
hgs
parents:
diff changeset
   323
    DEBUG_API("<-XAImageControlsItfAdapt_HandleImageType");
hgs
parents:
diff changeset
   324
    return ret;
hgs
parents:
diff changeset
   325
}