17c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*
27c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project
37c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
47c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License");
57c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * you may not use this file except in compliance with the License.
67c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * You may obtain a copy of the License at
77c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
87c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *      http://www.apache.org/licenses/LICENSE-2.0
97c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software
117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS,
127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * See the License for the specific language governing permissions and
147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * limitations under the License.
157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @file    M4xVSS_API.c
197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    API of eXtended Video Studio Service (Video Studio 2.1)
207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note
217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * OSAL main types and errors ***/
267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Types.h"
277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Error.h"
287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Memory.h"
297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Debug.h"
307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_FileReader.h"
317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_FileWriter.h"
327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_CoreID.h"
337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_CharStar.h"
347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi// StageFright encoders require %16 resolution
357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4ENCODER_common.h"
360a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury#include "M4DECODER_Common.h"
370a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury#include "VideoEditorVideoDecoder.h"
387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * VSS 3GPP API definition */
417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4VSS3GPP_ErrorCodes.h"
427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*************************
447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiBegin of xVSS API
457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi **************************/
467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4xVSS_API.h"
487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4xVSS_Internal.h"
497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* RC: to delete unecessary temp files on the fly */
517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4VSS3GPP_InternalTypes.h"
52eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury#include <utils/Log.h>
537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * prototype    M4OSA_ERR M4xVSS_Init(M4OSA_Context* pContext, M4xVSS_InitParams* pParams)
577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This function initializes the xVSS
587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        Initializes the xVSS edit operation (allocates an execution context).
597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext            (OUT) Pointer on the xVSS edit context to allocate
617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    params                (IN) Parameters mandatory for xVSS
627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR:            No error
637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER:    At least one parameter is M4OSA_NULL
647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_ALLOC:        Memory allocation has failed
657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4xVSS_Init( M4OSA_Context *pContext, M4xVSS_InitParams *pParams )
697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4xVSS_Context *xVSS_context;
717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32 length = 0, i;
727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( pParams == M4OSA_NULL )
747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("Parameter structure for M4xVSS_Init function is NULL");
767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_PARAMETER;
777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( pParams->pFileReadPtr == M4OSA_NULL
807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        || pParams->pFileWritePtr == M4OSA_NULL )
817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0(
837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            "pFileReadPtr or pFileWritePtr in M4xVSS_InitParams structure is NULL");
847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_PARAMETER;
857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
87694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu    xVSS_context = (M4xVSS_Context *)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_Context), M4VS,
887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        (M4OSA_Char *)"Context of the xVSS layer");
897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context == M4OSA_NULL )
917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("Allocation error in M4xVSS_Init");
937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_ALLOC;
947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Initialize file read/write functions pointers */
977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pFileReadPtr = pParams->pFileReadPtr;
987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pFileWritePtr = pParams->pFileWritePtr;
997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*UTF Conversion support: copy conversion functions pointers and allocate the temporary
1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi     buffer*/
1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( pParams->pConvFromUTF8Fct != M4OSA_NULL )
1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( pParams->pConvToUTF8Fct != M4OSA_NULL )
1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->UTFConversionContext.pConvFromUTF8Fct =
1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->pConvFromUTF8Fct;
1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->UTFConversionContext.pConvToUTF8Fct =
1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->pConvToUTF8Fct;
1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->UTFConversionContext.m_TempOutConversionSize =
1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                UTF_CONVERSION_BUFFER_SIZE;
1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->UTFConversionContext.pTempOutConversionBuffer =
113694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                (M4OSA_Void *)M4OSA_32bitAlignedMalloc(UTF_CONVERSION_BUFFER_SIZE
1147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                * sizeof(M4OSA_UInt8),
1157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4VA, (M4OSA_Char *)"M4xVSS_Init: UTF conversion buffer");
1167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( M4OSA_NULL
1187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                == xVSS_context->UTFConversionContext.pTempOutConversionBuffer )
1197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
1207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_0("Allocation error in M4xVSS_Init");
121694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                free(xVSS_context->pTempPath);
1227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pTempPath = M4OSA_NULL;
123694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                free(xVSS_context);
1247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context = M4OSA_NULL;
1257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return M4ERR_ALLOC;
1267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
1277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
1287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        else
1297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
1307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("M4xVSS_Init: one UTF conversion pointer is null and the other\
1317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                           is not null");
132694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            free(xVSS_context->pTempPath);
1337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pTempPath = M4OSA_NULL;
134694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            free(xVSS_context);
1357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context = M4OSA_NULL;
1367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_PARAMETER;
1377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
1387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
1397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    else
1407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
1417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->UTFConversionContext.pConvFromUTF8Fct = M4OSA_NULL;
1427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->UTFConversionContext.pConvToUTF8Fct = M4OSA_NULL;
1437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->UTFConversionContext.m_TempOutConversionSize = 0;
1447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->UTFConversionContext.pTempOutConversionBuffer =
1457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_NULL;
1467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
1477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( pParams->pTempPath != M4OSA_NULL )
1497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
1507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /*No need to convert into UTF8 as all input of xVSS are in UTF8
1517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        (the conversion customer format into UTF8
1527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        is done in VA/VAL)*/
1537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pTempPath =
154694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            (M4OSA_Void *)M4OSA_32bitAlignedMalloc(strlen(pParams->pTempPath) + 1,
1557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VS, (M4OSA_Char *)"xVSS Path for temporary files");
1567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pTempPath == M4OSA_NULL )
1587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
1597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_Init");
1607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
1617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
16232ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        memcpy((void *)xVSS_context->pTempPath, (void *)pParams->pTempPath,
163947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma            strlen(pParams->pTempPath) + 1);
1647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* TODO: Check that no previous xVSS temporary files are present ? */
1657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
1667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    else
1677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
1687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("Path for temporary files is NULL");
169694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu        free(xVSS_context);
1707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context = M4OSA_NULL;
1717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_PARAMETER;
1727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
1737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings =
175694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu        (M4VSS3GPP_EditSettings *)M4OSA_32bitAlignedMalloc(sizeof(M4VSS3GPP_EditSettings),
1767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VS, (M4OSA_Char *)"Copy of VSS structure");
1777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->pSettings == M4OSA_NULL )
1797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
1807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("Allocation error in M4xVSS_Init");
181694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu        free(xVSS_context->pTempPath);
1827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pTempPath = M4OSA_NULL;
183694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu        free(xVSS_context);
1847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context = M4OSA_NULL;
1857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_ALLOC;
1867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
1877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Initialize pointers in pSettings */
1897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->pClipList = M4OSA_NULL;
1907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->pTransitionList = M4OSA_NULL;
1917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->Effects = M4OSA_NULL; /* RC */
1927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->xVSS.pBGMtrack = M4OSA_NULL;
1937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* This is used to know if the user has added or removed some medias */
1957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->previousClipNumber = 0;
1967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
1977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* "State machine" */
1987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->editingStep = 0;
1997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->analyseStep = 0;
2007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pcmPreviewFile = M4OSA_NULL;
2027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Initialize Pto3GPP and MCS lists */
2047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pMCSparamsList = M4OSA_NULL;
2057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pPTo3GPPparamsList = M4OSA_NULL;
2067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pPTo3GPPcurrentParams = M4OSA_NULL;
2077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pMCScurrentParams = M4OSA_NULL;
2087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->tempFileIndex = 0;
2107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->targetedBitrate = 0;
2127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->targetedTimescale = 0;
2147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pAudioMixContext = M4OSA_NULL;
2167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pAudioMixSettings = M4OSA_NULL;
2177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*FB: initialize to avoid crash when error during the editing*/
2197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pCurrentEditSettings = M4OSA_NULL;
2207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Initialize state if all initializations are corrects */
2227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->m_state = M4xVSS_kStateInitialized;
2237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* initialize MCS context*/
2257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pMCS_Ctxt = M4OSA_NULL;
2267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    *pContext = xVSS_context;
2287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return M4NO_ERROR;
2307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
2317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
2337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * prototype    M4xVSS_ReduceTranscode
2357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This function changes the given editing structure in order to
2367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                minimize the transcoding time.
2377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        The xVSS analyses this structure, and if needed, changes the
2387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                output parameters (Video codec, video size, audio codec,
2397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                audio nb of channels) to minimize the transcoding time.
2407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
2417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext            (OUT) Pointer on the xVSS edit context to allocate
2427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pSettings            (IN) Edition settings (allocated by the user)
2437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR:            No error
2447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER:    At least one parameter is M4OSA_NULL
2457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_ALLOC:        Memory allocation has failed
2467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_STATE:        This function cannot not be called at this time
2477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
2487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
2497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4xVSS_ReduceTranscode( M4OSA_Context pContext,
2507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                 M4VSS3GPP_EditSettings *pSettings )
2517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
2527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4xVSS_Context *xVSS_context = (M4xVSS_Context *)pContext;
2537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_ERR err = M4NO_ERROR;
2547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VIDEOEDITING_ClipProperties fileProperties;
2557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt8 i, j;
2567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool bAudioTransition = M4OSA_FALSE;
2577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool bIsBGMReplace = M4OSA_FALSE;
2587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool bFound;
2597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32 videoConfig[9] =
2607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
2617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        0, 0, 0, 0, 0, 0, 0, 0, 0
2627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    };
2637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Index <-> Video config **/
2647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* 0:        H263  SQCIF        */
2657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* 1:        H263  QCIF        */
2667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* 2:        H263  CIF        */
2677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* 3:        MPEG4 SQCIF        */
2687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* 4:        MPEG4 QQVGA        */
2697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* 5:        MPEG4 QCIF        */
2707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* 6:        MPEG4 QVGA        */
2717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* 7:        MPEG4 CIF        */
2727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* 8:        MPEG4 VGA        */
2737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /****************************/
2747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32 audioConfig[3] =
2757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
2767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        0, 0, 0
2777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    };
2787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /** Index <-> Audio config **/
2797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* 0:    AMR                    */
2807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* 1:    AAC    16kHz mono        */
2817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* 2:    AAC 16kHz stereo    */
2827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /****************************/
2837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Check state */
2857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->m_state != M4xVSS_kStateInitialized \
2867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        && xVSS_context->m_state != M4xVSS_kStateOpened )
2877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
2887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_1(
2897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            "Bad state when calling M4xVSS_ReduceTranscode function! State is %d",
2907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->m_state);
2917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_STATE;
2927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
2937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
2947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Check number of clips */
2957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( pSettings->uiClipNumber == 0 )
2967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
2977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("The number of input clip must be greater than 0 !");
2987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_PARAMETER;
2997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
3007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Check if there is a background music, and if its audio will replace input clip audio */
3027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( pSettings->xVSS.pBGMtrack != M4OSA_NULL )
3037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
3047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( pSettings->xVSS.pBGMtrack->uiAddVolume == 100 )
3057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
3067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            bIsBGMReplace = M4OSA_TRUE;
3077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
3087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
3097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Parse all clips, and give occurences of each combination */
3117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    for ( i = 0; i < pSettings->uiClipNumber; i++ )
3127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
3137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* We ignore JPG input files as they are always transcoded */
3147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( pSettings->pClipList[i]->FileType == M4VIDEOEDITING_kFileType_3GPP )
3157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
3167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /**
3177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            * UTF conversion: convert into the customer format*/
3187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_Void *pDecodedPath = pSettings->pClipList[i]->pFile;
3197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_UInt32 ConvertedSize = 0;
3207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct
3227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                != M4OSA_NULL && xVSS_context->
3237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                UTFConversionContext.pTempOutConversionBuffer
3247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                != M4OSA_NULL )
3257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
3267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                err = M4xVSS_internalConvertFromUTF8(xVSS_context,
3277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (M4OSA_Void *)pSettings->pClipList[i]->pFile,
3287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (M4OSA_Void *)xVSS_context->
3297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    UTFConversionContext.pTempOutConversionBuffer,
3307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    &ConvertedSize);
3317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( err != M4NO_ERROR )
3337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
3347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_1("M4xVSS_ReduceTranscode:\
3357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                   M4xVSS_internalConvertFromUTF8 returns err: 0x%x", err);
3367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return err;
3377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
3387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pDecodedPath =
3397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->UTFConversionContext.pTempOutConversionBuffer;
3407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
3417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /**
3427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            * End of the utf conversion, now use the converted path*/
3437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            err = M4xVSS_internalGetProperties(xVSS_context, pDecodedPath,
3447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                &fileProperties);
3457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            //err = M4xVSS_internalGetProperties(xVSS_context, pSettings->pClipList[i]->pFile,
3477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            //     &fileProperties);
3487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( err != M4NO_ERROR )
3497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
3507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_1(
3517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    "M4xVSS_sendCommand: M4xVSS_internalGetProperties returned 0x%x",
3527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err);
3537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* TODO: Translate error code of MCS to an xVSS error code ? */
3547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return err;
3557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
3567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Check best video settings */
3587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( fileProperties.uiVideoWidth == 128
3597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                && fileProperties.uiVideoHeight == 96 )
3607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
3617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( fileProperties.VideoStreamType == M4VIDEOEDITING_kH263 )
3627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
3637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    videoConfig[0] += fileProperties.uiClipVideoDuration;
3647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
3657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else if( ( fileProperties.VideoStreamType
3667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4VIDEOEDITING_kMPEG4) \
3677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    || (fileProperties.VideoStreamType == M4VIDEOEDITING_kH264) )
3687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
3697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    videoConfig[3] += fileProperties.uiClipVideoDuration;
3707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
3717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
3727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else if( fileProperties.uiVideoWidth == 160
3737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                && fileProperties.uiVideoHeight == 120 )
3747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
3757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( ( fileProperties.VideoStreamType == M4VIDEOEDITING_kMPEG4) \
3767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    || (fileProperties.VideoStreamType == M4VIDEOEDITING_kH264) )
3777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
3787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    videoConfig[4] += fileProperties.uiClipVideoDuration;
3797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
3807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
3817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else if( fileProperties.uiVideoWidth == 176
3827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                && fileProperties.uiVideoHeight == 144 )
3837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
3847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( fileProperties.VideoStreamType == M4VIDEOEDITING_kH263 )
3857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
3867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    videoConfig[1] += fileProperties.uiClipVideoDuration;
3877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
3887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else if( ( fileProperties.VideoStreamType
3897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4VIDEOEDITING_kMPEG4) \
3907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    || (fileProperties.VideoStreamType == M4VIDEOEDITING_kH264) )
3917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
3927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    videoConfig[5] += fileProperties.uiClipVideoDuration;
3937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
3947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
3957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else if( fileProperties.uiVideoWidth == 320
3967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                && fileProperties.uiVideoHeight == 240 )
3977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
3987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( ( fileProperties.VideoStreamType == M4VIDEOEDITING_kMPEG4) \
3997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    || (fileProperties.VideoStreamType == M4VIDEOEDITING_kH264) )
4007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
4017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    videoConfig[6] += fileProperties.uiClipVideoDuration;
4027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
4037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
4047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else if( fileProperties.uiVideoWidth == 352
4057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                && fileProperties.uiVideoHeight == 288 )
4067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
4077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( fileProperties.VideoStreamType == M4VIDEOEDITING_kH263 )
4087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
4097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    videoConfig[2] += fileProperties.uiClipVideoDuration;
4107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
4117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else if( ( fileProperties.VideoStreamType
4127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4VIDEOEDITING_kMPEG4) \
4137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    || (fileProperties.VideoStreamType == M4VIDEOEDITING_kH264) )
4147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
4157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    videoConfig[7] += fileProperties.uiClipVideoDuration;
4167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
4177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
4187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else if( fileProperties.uiVideoWidth == 640
4197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                && fileProperties.uiVideoHeight == 480 )
4207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
4217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( ( fileProperties.VideoStreamType == M4VIDEOEDITING_kMPEG4) \
4227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    || (fileProperties.VideoStreamType == M4VIDEOEDITING_kH264) )
4237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
4247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    videoConfig[8] += fileProperties.uiClipVideoDuration;
4257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
4267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
4277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* If there is a BGM that replaces existing audio track, we do not care about
4297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            audio track as it will be replaced */
4307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* If not, we try to minimize audio reencoding */
4317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( bIsBGMReplace == M4OSA_FALSE )
4327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
4337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( fileProperties.AudioStreamType == M4VIDEOEDITING_kAAC )
4347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
4357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( fileProperties.uiSamplingFrequency == 16000 && \
4367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        fileProperties.uiNbChannels == 1 )
4377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
4387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        audioConfig[1] += fileProperties.uiClipAudioDuration;
4397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
4407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    else if( fileProperties.uiSamplingFrequency == 16000 && \
4417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        fileProperties.uiNbChannels == 2 )
4427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
4437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        audioConfig[2] += fileProperties.uiClipAudioDuration;
4447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
4457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
4467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else if( fileProperties.AudioStreamType
4477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4VIDEOEDITING_kAMR_NB )
4487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
4497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    audioConfig[0] += fileProperties.uiClipAudioDuration;
4507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
4517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
4527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
4537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
4547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Find best output video format (the most occuring combination) */
4567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    j = 0;
4577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    bFound = M4OSA_FALSE;
4587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    for ( i = 0; i < 9; i++ )
4607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
4617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( videoConfig[i] >= videoConfig[j] )
4627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
4637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            j = i;
4647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            bFound = M4OSA_TRUE;
4657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
4667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
4677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( bFound )
4697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
4707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        switch( j )
4717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
4727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case 0:
4737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoFormat = M4VIDEOEDITING_kH263;
4747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoSize = M4VIDEOEDITING_kSQCIF;
4757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
4767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case 1:
4787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoFormat = M4VIDEOEDITING_kH263;
4797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoSize = M4VIDEOEDITING_kQCIF;
4807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
4817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case 2:
4837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoFormat = M4VIDEOEDITING_kH263;
4847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoSize = M4VIDEOEDITING_kCIF;
4857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
4867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case 3:
4887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoFormat =
4897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (fileProperties.VideoStreamType == M4VIDEOEDITING_kMPEG4)
4907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    ? M4VIDEOEDITING_kMPEG4 : M4VIDEOEDITING_kH264;
4917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoSize = M4VIDEOEDITING_kSQCIF;
4927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
4937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case 4:
4957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoFormat =
4967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (fileProperties.VideoStreamType == M4VIDEOEDITING_kMPEG4)
4977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    ? M4VIDEOEDITING_kMPEG4 : M4VIDEOEDITING_kH264;
4987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoSize = M4VIDEOEDITING_kQQVGA;
4997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
5007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case 5:
5027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoFormat =
5037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (fileProperties.VideoStreamType == M4VIDEOEDITING_kMPEG4)
5047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    ? M4VIDEOEDITING_kMPEG4 : M4VIDEOEDITING_kH264;
5057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoSize = M4VIDEOEDITING_kQCIF;
5067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
5077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case 6:
5097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoFormat =
5107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (fileProperties.VideoStreamType == M4VIDEOEDITING_kMPEG4)
5117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    ? M4VIDEOEDITING_kMPEG4 : M4VIDEOEDITING_kH264;
5127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoSize = M4VIDEOEDITING_kQVGA;
5137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
5147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case 7:
5167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoFormat =
5177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (fileProperties.VideoStreamType == M4VIDEOEDITING_kMPEG4)
5187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    ? M4VIDEOEDITING_kMPEG4 : M4VIDEOEDITING_kH264;
5197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoSize = M4VIDEOEDITING_kCIF;
5207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
5217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case 8:
5237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoFormat =
5247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (fileProperties.VideoStreamType == M4VIDEOEDITING_kMPEG4)
5257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    ? M4VIDEOEDITING_kMPEG4 : M4VIDEOEDITING_kH264;
5267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputVideoSize = M4VIDEOEDITING_kVGA;
5277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
5287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
5297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
5307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Find best output audio format (the most occuring combination) */
5327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    j = 0;
5337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    bFound = M4OSA_FALSE;
5347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    for ( i = 0; i < 3; i++ )
5367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
5377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( audioConfig[i] >= audioConfig[j] )
5387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
5397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            j = i;
5407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            bFound = M4OSA_TRUE;
5417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
5427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
5437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( bFound )
5457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
5467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        switch( j )
5477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
5487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case 0:
5497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputAudioFormat = M4VIDEOEDITING_kAMR_NB;
5507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.bAudioMono = M4OSA_TRUE;
5517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
5527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case 1:
5547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputAudioFormat = M4VIDEOEDITING_kAAC;
5557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.bAudioMono = M4OSA_TRUE;
5567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
5577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case 2:
5597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.outputAudioFormat = M4VIDEOEDITING_kAAC;
5607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->xVSS.bAudioMono = M4OSA_FALSE;
5617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
5627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
5637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
5647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return M4NO_ERROR;
5667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
5677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
5697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
5707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * prototype    M4OSA_ERR M4xVSS_SendCommand(M4OSA_Context pContext,
5717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                                         M4VSS3GPP_EditSettings* pSettings)
5727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This function gives to the xVSS an editing structure
5737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        The xVSS analyses this structure, and prepare edition
5747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                This function must be called after M4xVSS_Init, after
5757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                M4xVSS_CloseCommand, or after M4xVSS_PreviewStop.
5767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                After this function, the user must call M4xVSS_Step until
5777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                it returns another error than M4NO_ERROR.
5787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
5797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext            (IN) Pointer on the xVSS edit context
5807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pSettings            (IN) Edition settings (allocated by the user)
5817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR:            No error
5827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER:    At least one parameter is M4OSA_NULL
5837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_ALLOC:        Memory allocation has failed
5847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_STATE:        This function cannot not be called at this time
5857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
5867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
5877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4xVSS_SendCommand( M4OSA_Context pContext,
5887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                             M4VSS3GPP_EditSettings *pSettings )
5897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
5907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4xVSS_Context *xVSS_context = (M4xVSS_Context *)pContext;
5917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt8 i, j;
5927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt8 nbOfSameClip = 0;
5937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_ERR err;
5947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool isNewBGM = M4OSA_TRUE;
5957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4xVSS_Pto3GPP_params *pPto3GPP_last = M4OSA_NULL;
5967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4xVSS_MCS_params *pMCS_last = M4OSA_NULL;
5977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32 width, height, samplingFreq;
5987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Bool bIsTranscoding = M4OSA_FALSE;
5997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Int32 totalDuration;
6007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32 outputSamplingFrequency = 0;
6017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32 length = 0;
6027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Int8 masterClip = -1;
6037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    i = 0;
6057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Check state */
6067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->m_state != M4xVSS_kStateInitialized \
6077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        && xVSS_context->m_state != M4xVSS_kStateOpened )
6087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
6097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_1(
6107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            "Bad state when calling M4xVSS_SendCommand function! State is %d",
6117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->m_state);
6127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_STATE;
6137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
6147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* State is back to initialized to allow call of cleanup function in case of error */
6167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->m_state = M4xVSS_kStateInitialized;
6177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Check if a previous sendCommand has been called */
6197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->previousClipNumber != 0 )
6207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
6217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_UInt32 pCmpResult = 0;
6227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Compare BGM input */
6247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->xVSS.pBGMtrack != M4OSA_NULL \
6257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            && pSettings->xVSS.pBGMtrack != M4OSA_NULL )
6267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
627947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma            pCmpResult = strcmp((const char *)xVSS_context->pSettings->xVSS.pBGMtrack->pFile,
628947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                (const char *)pSettings->xVSS.pBGMtrack->pFile);
6297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( pCmpResult == 0 )
6317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
6327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Check if audio output parameters have changed */
6337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pSettings->xVSS.outputAudioFormat ==
6347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pSettings->xVSS.outputAudioFormat
6357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    && xVSS_context->pSettings->xVSS.bAudioMono
6367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == pSettings->xVSS.bAudioMono )
6377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
6387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* It means that BGM is the same as before, so, no need to redecode it */
6397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE2_0(
6407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        "BGM is the same as before, nothing to decode");
6417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    isNewBGM = M4OSA_FALSE;
6427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
6437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else
6447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
6457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* We need to unallocate PCM preview file path in internal context */
6467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( xVSS_context->pcmPreviewFile != M4OSA_NULL )
6477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
648694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(xVSS_context->pcmPreviewFile);
6497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pcmPreviewFile = M4OSA_NULL;
6507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
6517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
6527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
6537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else
6547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
6557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* We need to unallocate PCM preview file path in internal context */
6567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pcmPreviewFile != M4OSA_NULL )
6577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
658694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    free(xVSS_context->pcmPreviewFile);
6597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pcmPreviewFile = M4OSA_NULL;
6607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
6617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
6627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
6637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Check if output settings have changed */
6657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->xVSS.outputVideoSize
6667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            != pSettings->xVSS.outputVideoSize
6677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            || xVSS_context->pSettings->xVSS.outputVideoFormat
6687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            != pSettings->xVSS.outputVideoFormat
6690a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury            || xVSS_context->pSettings->xVSS.outputVideoProfile
6700a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury            != pSettings->xVSS.outputVideoProfile
6710a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury            || xVSS_context->pSettings->xVSS.outputVideoLevel
6720a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury            != pSettings->xVSS.outputVideoLevel
6737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            || xVSS_context->pSettings->xVSS.outputAudioFormat
6747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            != pSettings->xVSS.outputAudioFormat
6757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            || xVSS_context->pSettings->xVSS.bAudioMono
6767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            != pSettings->xVSS.bAudioMono
6777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            || xVSS_context->pSettings->xVSS.outputAudioSamplFreq
6787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            != pSettings->xVSS.outputAudioSamplFreq )
6797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
6807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* If it is the case, we can't reuse already transcoded/converted files */
6817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* so, we delete these files and remove them from chained list */
6827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pPTo3GPPparamsList != M4OSA_NULL )
6837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
6847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_Pto3GPP_params *pParams =
6857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pPTo3GPPparamsList;
6867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_Pto3GPP_params *pParams_sauv;
6877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                while( pParams != M4OSA_NULL )
6897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
6907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( pParams->pFileIn != M4OSA_NULL )
6917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
692694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(pParams->pFileIn);
6937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams->pFileIn = M4OSA_NULL;
6947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
6957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( pParams->pFileOut != M4OSA_NULL )
6977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
6987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Delete temporary file */
699947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                        remove((const char *)pParams->pFileOut);
700694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(pParams->pFileOut);
7017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams->pFileOut = M4OSA_NULL;
7027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
7037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( pParams->pFileTemp != M4OSA_NULL )
7057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
7067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Delete temporary file */
7077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4xVSS_RESERVED_MOOV_DISK_SPACE
7087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
709947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                        remove((const char *)pParams->pFileTemp);
710694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(pParams->pFileTemp);
7117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*M4xVSS_RESERVED_MOOV_DISK_SPACE*/
7137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams->pFileTemp = M4OSA_NULL;
7157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
7167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pParams_sauv = pParams;
7177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pParams = pParams->pNext;
718694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    free(pParams_sauv);
7197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pParams_sauv = M4OSA_NULL;
7207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
7217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pPTo3GPPparamsList = M4OSA_NULL;
7227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
7237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pMCSparamsList != M4OSA_NULL )
7257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
7267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_MCS_params *pParams = xVSS_context->pMCSparamsList;
7277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_MCS_params *pParams_sauv;
7287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_MCS_params *pParams_bgm = M4OSA_NULL;
7297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                while( pParams != M4OSA_NULL )
7317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
7327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Here, we do not delete BGM */
7337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( pParams->isBGM != M4OSA_TRUE )
7347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
7357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( pParams->pFileIn != M4OSA_NULL )
7367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
737694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                            free(pParams->pFileIn);
7387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pParams->pFileIn = M4OSA_NULL;
7397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
7407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( pParams->pFileOut != M4OSA_NULL )
7427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
7437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* Delete temporary file */
744947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                            remove((const char *)pParams->pFileOut);
745694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                            free(pParams->pFileOut);
7467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pParams->pFileOut = M4OSA_NULL;
7477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
7487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( pParams->pFileTemp != M4OSA_NULL )
7507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
7517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* Delete temporary file */
7527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4xVSS_RESERVED_MOOV_DISK_SPACE
7537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
754947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                            remove((const char *)pParams->pFileTemp);
755694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                            free(pParams->pFileTemp);
7567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*M4xVSS_RESERVED_MOOV_DISK_SPACE*/
7587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pParams->pFileTemp = M4OSA_NULL;
7607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
7617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams_sauv = pParams;
7627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams = pParams->pNext;
763694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(pParams_sauv);
7647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams_sauv = M4OSA_NULL;
7657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
7667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    else
7677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
7687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams_bgm = pParams;
7697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams = pParams->pNext;
7707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /*PR P4ME00003182 initialize this pointer because the following params
7717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        element will be deallocated*/
7727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( pParams != M4OSA_NULL
7737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            && pParams->isBGM != M4OSA_TRUE )
7747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
7757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pParams_bgm->pNext = M4OSA_NULL;
7767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
7777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
7787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
7797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pMCSparamsList = pParams_bgm;
7807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
7817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Maybe need to implement framerate changing */
7827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            //xVSS_context->pSettings->videoFrameRate;
7837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
7847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Unallocate previous xVSS_context->pSettings structure */
7867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4xVSS_freeSettings(xVSS_context->pSettings);
7877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /*Unallocate output file path*/
7897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->pOutputFile != M4OSA_NULL )
7907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
791694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            free(xVSS_context->pSettings->pOutputFile);
7927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->pOutputFile = M4OSA_NULL;
7937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
7947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->uiOutputPathSize = 0;
7957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pOutputFile = M4OSA_NULL;
7967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
7977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
7987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**********************************
7997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    Clips registering
8007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    **********************************/
8017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
8027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Copy settings from user given structure to our "local" structure */
8037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->xVSS.outputVideoFormat =
8047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pSettings->xVSS.outputVideoFormat;
8050a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    xVSS_context->pSettings->xVSS.outputVideoProfile =
8060a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury        pSettings->xVSS.outputVideoProfile;
8070a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    xVSS_context->pSettings->xVSS.outputVideoLevel =
8080a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury        pSettings->xVSS.outputVideoLevel;
8097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->xVSS.outputVideoSize =
8107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pSettings->xVSS.outputVideoSize;
8117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->xVSS.outputAudioFormat =
8127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pSettings->xVSS.outputAudioFormat;
8137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->xVSS.bAudioMono = pSettings->xVSS.bAudioMono;
8147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->xVSS.outputAudioSamplFreq =
8157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pSettings->xVSS.outputAudioSamplFreq;
8167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*xVSS_context->pSettings->pOutputFile = pSettings->pOutputFile;*/
8177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*FB: VAL CR P4ME00003076
8187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    The output video and audio bitrate are given by the user in the edition settings structure*/
8197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->xVSS.outputVideoBitrate =
8207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pSettings->xVSS.outputVideoBitrate;
8217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->xVSS.outputAudioBitrate =
8227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pSettings->xVSS.outputAudioBitrate;
8237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->PTVolLevel = pSettings->PTVolLevel;
8247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
8257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*FB: bug fix if the output path is given in M4xVSS_sendCommand*/
8267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
8277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( pSettings->pOutputFile != M4OSA_NULL
8287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        && pSettings->uiOutputPathSize > 0 )
8297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
8307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_Void *pDecodedPath = pSettings->pOutputFile;
8317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /*As all inputs of the xVSS are in UTF8, convert the output file path into the
8327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        customer format*/
8337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct != M4OSA_NULL
8347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            && xVSS_context->UTFConversionContext.pTempOutConversionBuffer
8357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            != M4OSA_NULL )
8367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
8377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            err = M4xVSS_internalConvertFromUTF8(xVSS_context,
8387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                (M4OSA_Void *)pSettings->pOutputFile,
8397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                (M4OSA_Void *)xVSS_context->
8407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                UTFConversionContext.pTempOutConversionBuffer, &length);
8417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
8427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( err != M4NO_ERROR )
8437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
8447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_1("M4xVSS_SendCommand:\
8457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                               M4xVSS_internalConvertFromUTF8 returns err: 0x%x", err);
8467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return err;
8477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
8487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pDecodedPath =
8497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->UTFConversionContext.pTempOutConversionBuffer;
8507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pSettings->uiOutputPathSize = length;
8517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
8527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
853694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu        xVSS_context->pSettings->pOutputFile = (M4OSA_Void *)M4OSA_32bitAlignedMalloc \
8547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (pSettings->uiOutputPathSize + 1, M4VS,
8557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (M4OSA_Char *)"output file path");
8567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
8577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->pOutputFile == M4OSA_NULL )
8587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
8597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
8607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*FB: to avoid leaks when there is an error in the send command*/
8617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Free Send command */
8627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
8637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /**/
8647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
8657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
86632ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        memcpy((void *)xVSS_context->pSettings->pOutputFile,
86732ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu            (void *)pDecodedPath, pSettings->uiOutputPathSize + 1);
8687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->uiOutputPathSize = pSettings->uiOutputPathSize;
8697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pOutputFile = xVSS_context->pSettings->pOutputFile;
8707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
8717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    else
8727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
8737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->pOutputFile = M4OSA_NULL;
8747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->uiOutputPathSize = 0;
8757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pOutputFile = M4OSA_NULL;
8767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
8777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->pTemporaryFile = pSettings->pTemporaryFile;
8787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->uiClipNumber = pSettings->uiClipNumber;
8797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->videoFrameRate = pSettings->videoFrameRate;
8807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->uiMasterClip =
8817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        0; /* With VSS 2.0, this new param is mandatory */
8827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->xVSS.pTextRenderingFct =
8837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pSettings->xVSS.pTextRenderingFct; /* CR text handling */
8847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->xVSS.outputFileSize =
8857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pSettings->xVSS.outputFileSize;
8867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
8877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( pSettings->xVSS.outputFileSize != 0 \
8887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        && pSettings->xVSS.outputAudioFormat != M4VIDEOEDITING_kAMR_NB )
8897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
8907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("M4xVSS_SendCommand: Impossible to limit file\
8917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                       size with other audio output than AAC");
8927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_PARAMETER;
8937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
8947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->nbStepTotal = 0;
8957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->currentStep = 0;
8967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
8977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->pSettings->xVSS.outputVideoFormat != M4VIDEOEDITING_kMPEG4
8987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        && xVSS_context->pSettings->xVSS.outputVideoFormat
8997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        != M4VIDEOEDITING_kH263
9007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        && xVSS_context->pSettings->xVSS.outputVideoFormat
9017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        != M4VIDEOEDITING_kH264 )
9027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
9037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->xVSS.outputVideoFormat =
9047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIDEOEDITING_kNoneVideo;
9057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
9067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Get output width/height */
9087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    switch( xVSS_context->pSettings->xVSS.outputVideoSize )
9097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
9107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_kSQCIF:
9117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            width = 128;
9127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            height = 96;
9137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
9147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_kQQVGA:
9167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            width = 160;
9177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            height = 120;
9187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
9197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_kQCIF:
9217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            width = 176;
9227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            height = 144;
9237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
9247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_kQVGA:
9267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            width = 320;
9277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            height = 240;
9287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
9297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_kCIF:
9317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            width = 352;
9327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            height = 288;
9337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
9347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_kVGA:
9367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            width = 640;
9377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            height = 480;
9387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
9397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* +PR LV5807 */
9407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_kWVGA:
9417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            width = 800;
9427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            height = 480;
9437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
9447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_kNTSC:
9467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            width = 720;
9477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            height = 480;
9487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
9497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* -PR LV5807 */
9507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* +CR Google */
9517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_k640_360:
9527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            width = 640;
9537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            height = 360;
9547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
9557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_k854_480:
9577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            // StageFright encoders require %16 resolution
9597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            width = M4ENCODER_854_480_Width;
9617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            height = 480;
9637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
9647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9658806b706693c0992724f6603353af18aeb4a0f80Hong Teng        case M4VIDEOEDITING_k1280_720:
9667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            width = 1280;
9677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            height = 720;
9687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
9697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9708806b706693c0992724f6603353af18aeb4a0f80Hong Teng        case M4VIDEOEDITING_k1080_720:
9717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            // StageFright encoders require %16 resolution
9728806b706693c0992724f6603353af18aeb4a0f80Hong Teng            width = M4ENCODER_1080_720_Width;
9737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            height = 720;
9747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
9757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9768806b706693c0992724f6603353af18aeb4a0f80Hong Teng        case M4VIDEOEDITING_k960_720:
9777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            width = 960;
9787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            height = 720;
9797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
9807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9818806b706693c0992724f6603353af18aeb4a0f80Hong Teng        case M4VIDEOEDITING_k1920_1080:
9828806b706693c0992724f6603353af18aeb4a0f80Hong Teng            width = 1920;
9838806b706693c0992724f6603353af18aeb4a0f80Hong Teng            height = M4ENCODER_1920_1080_Height;
9848806b706693c0992724f6603353af18aeb4a0f80Hong Teng            break;
9858806b706693c0992724f6603353af18aeb4a0f80Hong Teng
9867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* -CR Google */
9877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        default: /* If output video size is not given, we take QCIF size */
9887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            width = 176;
9897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            height = 144;
9907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->xVSS.outputVideoSize =
9917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4VIDEOEDITING_kQCIF;
9927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
9937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
9947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
9957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Get output Sampling frequency */
9967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    switch( xVSS_context->pSettings->xVSS.outputAudioSamplFreq )
9977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
9987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_k8000_ASF:
9997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            samplingFreq = 8000;
10007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
10017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
10027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_k16000_ASF:
10037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            samplingFreq = 16000;
10047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
10057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
10067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_k22050_ASF:
10077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            samplingFreq = 22050;
10087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
10097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
10107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_k24000_ASF:
10117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            samplingFreq = 24000;
10127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
10137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
10147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_k32000_ASF:
10157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            samplingFreq = 32000;
10167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
10177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
10187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_k44100_ASF:
10197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            samplingFreq = 44100;
10207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
10217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
10227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_k48000_ASF:
10237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            samplingFreq = 48000;
10247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
10257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
10267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4VIDEOEDITING_kDefault_ASF:
10277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        default:
10287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->xVSS.outputAudioFormat
10297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                == M4VIDEOEDITING_kAMR_NB )
10307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
10317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                samplingFreq = 8000;
10327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
10337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else if( xVSS_context->pSettings->xVSS.outputAudioFormat
10347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                == M4VIDEOEDITING_kAAC )
10357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
10367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                samplingFreq = 16000;
10377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
10387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else
10397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
10407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                samplingFreq = 0;
10417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
10427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
10437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
10447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
10457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Allocate clip/transitions if clip number is not null ... */
10467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( 0 < xVSS_context->pSettings->uiClipNumber )
10477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
10487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->pClipList != M4OSA_NULL )
10497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
1050694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            free((xVSS_context->pSettings->pClipList));
10517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->pClipList = M4OSA_NULL;
10527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
10537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
10547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->pTransitionList != M4OSA_NULL )
10557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
1056694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            free(xVSS_context->pSettings->pTransitionList);
10577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->pTransitionList = M4OSA_NULL;
10587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
10597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
10607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->pClipList =
1061694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            (M4VSS3GPP_ClipSettings ** )M4OSA_32bitAlignedMalloc \
10627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (sizeof(M4VSS3GPP_ClipSettings *)*xVSS_context->pSettings->uiClipNumber,
10637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VS, (M4OSA_Char *)"xVSS, copy of pClipList");
10647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
10657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->pClipList == M4OSA_NULL )
10667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
10677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
10687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*FB: to avoid leaks when there is an error in the send command*/
10697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Free Send command */
10707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
10717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /**/
10727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
10737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
10747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Set clip list to NULL */
107532ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        memset((void *)xVSS_context->pSettings->pClipList,0,
10767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            sizeof(M4VSS3GPP_ClipSettings *)
107732ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu            *xVSS_context->pSettings->uiClipNumber);
10787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
10797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->uiClipNumber > 1 )
10807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
10817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->pTransitionList =
10827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                (M4VSS3GPP_TransitionSettings ** ) \
1083694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                M4OSA_32bitAlignedMalloc(sizeof(M4VSS3GPP_TransitionSettings *)                \
10847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                *(xVSS_context->pSettings->uiClipNumber - 1), M4VS, (M4OSA_Char *) \
10857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                "xVSS, copy of pTransitionList");
10867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
10877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->pTransitionList == M4OSA_NULL )
10887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
10897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
10907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*FB: to avoid leaks when there is an error in the send command*/
10917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Free Send command */
10927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_freeCommand(xVSS_context);
10937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**/
10947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return M4ERR_ALLOC;
10957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
10967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Set transition list to NULL */
109732ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu            memset(
109832ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                (void *)xVSS_context->pSettings->pTransitionList,0,
10997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                sizeof(M4VSS3GPP_TransitionSettings *)
110032ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                *(xVSS_context->pSettings->uiClipNumber - 1));
11017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
11027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        else
11037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
11047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->pTransitionList = M4OSA_NULL;
11057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
11067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
11077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* else, there is a pb in the input settings structure */
11087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    else
11097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
11107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("No clip in this settings list !!");
11117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /*FB: to avoid leaks when there is an error in the send command*/
11127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Free Send command */
11137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4xVSS_freeCommand(xVSS_context);
11147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /**/
11157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_PARAMETER;
11167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
11177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
11187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* RC Allocate effects settings */
11197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings->nbEffects = pSettings->nbEffects;
11207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
11217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( 0 < xVSS_context->pSettings->nbEffects )
11227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
11237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->Effects =
1124694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            (M4VSS3GPP_EffectSettings *)M4OSA_32bitAlignedMalloc \
11257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (xVSS_context->pSettings->nbEffects * sizeof(M4VSS3GPP_EffectSettings),
11267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VS, (M4OSA_Char *)"effects settings");
11277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
11287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->Effects == M4OSA_NULL )
11297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
11307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
11317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*FB: to avoid leaks when there is an error in the send command*/
11327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Free Send command */
11337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
11347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /**/
11357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
11367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
11377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /*FB bug fix 19.03.2008: these pointers were not initialized -> crash when free*/
11387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        for ( i = 0; i < xVSS_context->pSettings->nbEffects; i++ )
11397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
11407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->Effects[i].xVSS.pFramingFilePath =
11417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_NULL;
11427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->Effects[i].xVSS.pFramingBuffer =
11437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_NULL;
11447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->Effects[i].xVSS.pTextBuffer = M4OSA_NULL;
11457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
11467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /**/
11477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
11487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
11497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->targetedTimescale == 0 )
11507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
11517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_UInt32 pTargetedTimeScale = 0;
11527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
11537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        err = M4xVSS_internalGetTargetedTimeScale(xVSS_context, pSettings,
11547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            &pTargetedTimeScale);
11557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
11567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( M4NO_ERROR != err || pTargetedTimeScale == 0 )
11577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
11587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_1("M4xVSS_SendCommand: M4xVSS_internalGetTargetedTimeScale\
11597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                           returned 0x%x", err);
11607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*FB: to avoid leaks when there is an error in the send command*/
11617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Free Send command */
11627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
11637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /**/
11647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return err;
11657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
11667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->targetedTimescale = pTargetedTimeScale;
11677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
11687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
11697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Initialize total duration variable */
11707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    totalDuration = 0;
11717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
11727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Parsing list of clips given by application, and prepare analyzing */
11737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    for ( i = 0; i < xVSS_context->pSettings->uiClipNumber; i++ )
11747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
11757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Allocate current clip */
11767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->pClipList[i] =
1177694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            (M4VSS3GPP_ClipSettings *)M4OSA_32bitAlignedMalloc \
11787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (sizeof(M4VSS3GPP_ClipSettings), M4VS, (M4OSA_Char *)"clip settings");
11797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
11807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->pClipList[i] == M4OSA_NULL )
11817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
11827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
11837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*FB: to avoid leaks when there is an error in the send command*/
11847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Free Send command */
11857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
11867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /**/
11877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
11887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
11897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
11907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Copy clip settings from given structure to our xVSS_context structure */
11917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        err =
11927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_DuplicateClipSettings(xVSS_context->pSettings->pClipList[i],
11937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pSettings->pClipList[i], M4OSA_TRUE);
11947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
11957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( err != M4NO_ERROR )
11967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
11977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_1(
11987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                "M4xVSS_SendCommand: M4xVSS_DuplicateClipSettings return error 0x%x",
11997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                err);
12007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*FB: to avoid leaks when there is an error in the send command*/
12017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Free Send command */
12027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
12037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /**/
12047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return err;
12057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
12067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
12076e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury        xVSS_context->pSettings->pClipList[i]->bTranscodingRequired =
12086e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury            M4OSA_FALSE;
12096e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury
12107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Because there is 1 less transition than clip number */
12117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( i < xVSS_context->pSettings->uiClipNumber - 1 )
12127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
12137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->pTransitionList[i] =
12147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                (M4VSS3GPP_TransitionSettings
1215694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                *)M4OSA_32bitAlignedMalloc(sizeof(M4VSS3GPP_TransitionSettings),
12167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4VS, (M4OSA_Char *)"transition settings");
12177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
12187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->pTransitionList[i] == M4OSA_NULL )
12197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
12207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
12217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*FB: to avoid leaks when there is an error in the send command*/
12227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Free Send command */
12237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_freeCommand(xVSS_context);
12247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**/
12257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return M4ERR_ALLOC;
12267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
12277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
122832ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu            memcpy(
122932ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                (void *)xVSS_context->pSettings->pTransitionList[i],
123032ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                (void *)pSettings->pTransitionList[i],
12317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                sizeof(M4VSS3GPP_TransitionSettings));
12327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Initialize external effect context to NULL, to know if input jpg has already been
12337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            decoded or not */
12347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->pTransitionList[i]->
12357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pExtVideoTransitionFctCtxt = M4OSA_NULL;
12367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
12377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            switch( xVSS_context->pSettings->
12387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pTransitionList[i]->VideoTransitionType )
12397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
12407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* If transition type is alpha magic, we need to decode input file */
12417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                case M4xVSS_kVideoTransitionType_AlphaMagic:
12427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Allocate our alpha magic settings structure to have a copy of the
12437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    provided one */
12447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->pTransitionList[i]->      \
12457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                     xVSS.transitionSpecific.pAlphaMagicSettings =
1246694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        (M4xVSS_AlphaMagicSettings *)M4OSA_32bitAlignedMalloc \
12477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        (sizeof(M4xVSS_AlphaMagicSettings), M4VS,
12487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        (M4OSA_Char *)"Input Alpha magic settings structure");
12497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
12507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( xVSS_context->pSettings->pTransitionList[i]-> \
12517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS.transitionSpecific.pAlphaMagicSettings == M4OSA_NULL )
12527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
12537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_0(
12547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "Allocation error in M4xVSS_SendCommand");
12557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /*FB: to avoid leaks when there is an error in the send command*/
12567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Free Send command */
12577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4xVSS_freeCommand(xVSS_context);
12587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /**/
12597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return M4ERR_ALLOC;
12607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
12617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Copy data from the provided alpha magic settings structure tou our
12627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    structure */
126332ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                    memcpy((void *)xVSS_context->pSettings->
12647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pTransitionList[i]-> \
12657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS.transitionSpecific.pAlphaMagicSettings,
126632ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                        (void *)pSettings->pTransitionList[i]-> \
12677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS.transitionSpecific.pAlphaMagicSettings,
12687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        sizeof(M4xVSS_AlphaMagicSettings));
12697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
12707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Allocate our alpha magic input filename */
12717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->pTransitionList[i]-> \
12727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS.transitionSpecific.pAlphaMagicSettings->
1273694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        pAlphaFilePath = M4OSA_32bitAlignedMalloc(
1274947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                        (strlen(pSettings->pTransitionList[i]-> \
12757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS.transitionSpecific.pAlphaMagicSettings->pAlphaFilePath)
12767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        + 1), M4VS, (M4OSA_Char *)"Alpha magic file path");
12777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
12787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( xVSS_context->pSettings->pTransitionList[i]-> \
12797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS.transitionSpecific.pAlphaMagicSettings->pAlphaFilePath
12807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        == M4OSA_NULL )
12817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
12827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_0(
12837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "Allocation error in M4xVSS_SendCommand");
12847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /*FB: to avoid leaks when there is an error in the send command*/
12857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Free Send command */
12867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4xVSS_freeCommand(xVSS_context);
12877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /**/
12887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return M4ERR_ALLOC;
12897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
12907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Copy data from the provided alpha magic filename to our */
12917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_chrNCopy(
12927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->pTransitionList[i]->xVSS.
12937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        transitionSpecific.pAlphaMagicSettings->
12947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pAlphaFilePath,
12957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pSettings->pTransitionList[i]->xVSS.
12967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        transitionSpecific.pAlphaMagicSettings->
1297947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                        pAlphaFilePath, strlen(
12987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pSettings->pTransitionList[i]->xVSS.
12997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        transitionSpecific.pAlphaMagicSettings->
13007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pAlphaFilePath) + 1);
13017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
13027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Parse all transition to know if the input jpg has already been decoded */
13037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    for ( j = 0; j < i; j++ )
13047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
13057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( xVSS_context->pSettings->
13067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pTransitionList[j]->VideoTransitionType
13077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            == M4xVSS_kVideoTransitionType_AlphaMagic )
13087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
13097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_UInt32 pCmpResult = 0;
1310947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                            pCmpResult = strcmp((const char *)xVSS_context->pSettings->
13117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pTransitionList[i]->xVSS.
13127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                transitionSpecific.pAlphaMagicSettings->
1313947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                                pAlphaFilePath, (const char *)xVSS_context->pSettings->
13147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pTransitionList[j]->xVSS.
13157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                transitionSpecific.
1316947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                                pAlphaMagicSettings->pAlphaFilePath);
13177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
13187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            if( pCmpResult == 0 )
13197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            {
13207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4xVSS_internal_AlphaMagicSettings
13217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    *alphaSettings;
13227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
13237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                alphaSettings =
13247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    (M4xVSS_internal_AlphaMagicSettings
1325694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                                    *)M4OSA_32bitAlignedMalloc(
13267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    sizeof(
13277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    M4xVSS_internal_AlphaMagicSettings),
13287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    M4VS,
13297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    (M4OSA_Char
13307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    *)
13317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    "Alpha magic settings structure 1");
13327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
13337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                if( alphaSettings == M4OSA_NULL )
13347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                {
13357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    M4OSA_TRACE1_0(
13367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        "Allocation error in M4xVSS_SendCommand");
13377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    /*FB: to avoid leaks when there is an error in the send
13387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                     command*/
13397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    /* Free Send command */
13407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    M4xVSS_freeCommand(xVSS_context);
13417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    /**/
13427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    return M4ERR_ALLOC;
13437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                }
13447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                alphaSettings->pPlane =
13457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    ((M4xVSS_internal_AlphaMagicSettings *)(
13467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    xVSS_context->pSettings->
13477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pTransitionList[j]->
13487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pExtVideoTransitionFctCtxt))->
13497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pPlane;
13507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
13517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                if( xVSS_context->pSettings->
13527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pTransitionList[i]->xVSS.transitionSpecific.
13537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pAlphaMagicSettings->blendingPercent > 0
13547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    && xVSS_context->pSettings->
13557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pTransitionList[i]->xVSS.
13567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    transitionSpecific.
13577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pAlphaMagicSettings->blendingPercent
13587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    <= 100 )
13597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                {
13607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    alphaSettings->blendingthreshold =
13617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        ( xVSS_context->pSettings->
13627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        pTransitionList[i]->xVSS.
13637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        transitionSpecific.
13647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        pAlphaMagicSettings->
13657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        blendingPercent) * 255 / 200;
13667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                }
13677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                else
13687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                {
13697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    alphaSettings->blendingthreshold = 0;
13707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                }
13717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                alphaSettings->isreverse =
13727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    xVSS_context->pSettings->
13737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pTransitionList[i]->xVSS.
13747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    transitionSpecific.
13757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pAlphaMagicSettings->isreverse;
13767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                /* It means that the input jpg file for alpha magic has already
13777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                 been decoded -> no nedd to decode it again */
13787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                if( alphaSettings->blendingthreshold == 0 )
13797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                {
13807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    xVSS_context->pSettings->
13817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        pTransitionList[i]->
13827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        ExtVideoTransitionFct =
13837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        M4xVSS_AlphaMagic;
13847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                }
13857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                else
13867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                {
13877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    xVSS_context->pSettings->
13887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        pTransitionList[i]->
13897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        ExtVideoTransitionFct =
13907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        M4xVSS_AlphaMagicBlending;
13917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                }
13927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                xVSS_context->pSettings->pTransitionList[i]->
13937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pExtVideoTransitionFctCtxt = alphaSettings;
13947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                break;
13957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            }
13967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
13977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
13987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
13997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* If the jpg has not been decoded yet ... */
14007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( xVSS_context->pSettings->
14017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pTransitionList[i]->pExtVideoTransitionFctCtxt
14027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        == M4OSA_NULL )
14037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
14047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4VIFI_ImagePlane *outputPlane;
14057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4xVSS_internal_AlphaMagicSettings *alphaSettings;
14067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /*UTF conversion support*/
14077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_Void *pDecodedPath = M4OSA_NULL;
14087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
14097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /*To support ARGB8888 : get the width and height */
14107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_UInt32 width_ARGB888 =
14117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS_context->pSettings->pTransitionList[i]->xVSS.
14127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            transitionSpecific.pAlphaMagicSettings->width;
14137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_UInt32 height_ARGB888 =
14147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS_context->pSettings->pTransitionList[i]->xVSS.
14157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            transitionSpecific.pAlphaMagicSettings->height;
14167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1(
14177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            " TransitionListM4xVSS_SendCommand width State is %d",
14187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            width_ARGB888);
14197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1(
14207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            " TransitionListM4xVSS_SendCommand height! State is %d",
14217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            height_ARGB888);
14227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Allocate output plane */
1423694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        outputPlane = (M4VIFI_ImagePlane *)M4OSA_32bitAlignedMalloc(3
14247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            * sizeof(M4VIFI_ImagePlane), M4VS, (M4OSA_Char
14257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            *)
14267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "Output plane for Alpha magic transition");
14277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
14287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( outputPlane == M4OSA_NULL )
14297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
14307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRACE1_0(
14317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                "Allocation error in M4xVSS_SendCommand");
14327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /*FB: to avoid leaks when there is an error in the send command*/
14337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* Free Send command */
14347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_freeCommand(xVSS_context);
14357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /**/
14367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            return M4ERR_ALLOC;
14377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
14387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
14397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        outputPlane[0].u_width = width;
14407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        outputPlane[0].u_height = height;
14417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        outputPlane[0].u_topleft = 0;
14427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        outputPlane[0].u_stride = width;
14437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        outputPlane[0].pac_data = (M4VIFI_UInt8
1444694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                            *)M4OSA_32bitAlignedMalloc(( width * height * 3)
14457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            >> 1,
14467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4VS,
14477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            (M4OSA_Char
14487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            *)
14497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "Alloc for the Alpha magic pac_data output YUV");
14507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        ;
14517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
14527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( outputPlane[0].pac_data == M4OSA_NULL )
14537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
1454694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                            free(outputPlane);
14557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            outputPlane = M4OSA_NULL;
14567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRACE1_0(
14577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                "Allocation error in M4xVSS_SendCommand");
14587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /*FB: to avoid leaks when there is an error in the send command*/
14597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* Free Send command */
14607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_freeCommand(xVSS_context);
14617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /**/
14627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            return M4ERR_ALLOC;
14637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
14647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        outputPlane[1].u_width = width >> 1;
14657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        outputPlane[1].u_height = height >> 1;
14667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        outputPlane[1].u_topleft = 0;
14677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        outputPlane[1].u_stride = width >> 1;
14687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        outputPlane[1].pac_data = outputPlane[0].pac_data
14697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            + outputPlane[0].u_width * outputPlane[0].u_height;
14707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        outputPlane[2].u_width = width >> 1;
14717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        outputPlane[2].u_height = height >> 1;
14727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        outputPlane[2].u_topleft = 0;
14737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        outputPlane[2].u_stride = width >> 1;
14747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        outputPlane[2].pac_data = outputPlane[1].pac_data
14757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            + outputPlane[1].u_width * outputPlane[1].u_height;
14767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
14777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pDecodedPath =
14787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS_context->pSettings->pTransitionList[i]->xVSS.
14797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            transitionSpecific.pAlphaMagicSettings->
14807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pAlphaFilePath;
14817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /**
14827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        * UTF conversion: convert into the customer format, before being used*/
14837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct
14847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            != M4OSA_NULL && xVSS_context->
14857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            UTFConversionContext.
14867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pTempOutConversionBuffer != M4OSA_NULL )
14877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
14887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err = M4xVSS_internalConvertFromUTF8(xVSS_context,
14897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                (M4OSA_Void *)xVSS_context->pSettings->
14907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pTransitionList[i]->xVSS.
14917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                transitionSpecific.
14927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pAlphaMagicSettings->pAlphaFilePath,
14937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                (M4OSA_Void *)xVSS_context->
14947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                UTFConversionContext.
14957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pTempOutConversionBuffer, &length);
14967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
14977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            if( err != M4NO_ERROR )
14987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            {
14997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4OSA_TRACE1_1(
15007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    "M4xVSS_SendCommand: pConvFromUTF8Fct returns err: 0x%x",
15017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    err);
15027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                /* Free Send command */
15037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4xVSS_freeCommand(xVSS_context);
15047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                return err;
15057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            }
15067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pDecodedPath =
15077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                xVSS_context->UTFConversionContext.
15087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pTempOutConversionBuffer;
15097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
15107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /**
15117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        End of the conversion, use the decoded path*/
15127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /*To support ARGB8888 : convert + resizing from ARGB8888 to yuv420 */
15137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
15147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err = M4xVSS_internalConvertAndResizeARGB8888toYUV420(
15157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pDecodedPath,
15167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS_context->pFileReadPtr, outputPlane,
15177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            width_ARGB888, height_ARGB888);
15187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
15197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( err != M4NO_ERROR )
15207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
1521694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                            free(outputPlane[0].pac_data);
15227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            outputPlane[0].pac_data = M4OSA_NULL;
1523694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                            free(outputPlane);
15247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            outputPlane = M4OSA_NULL;
15257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_freeCommand(xVSS_context);
15267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRACE1_1(
15277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                "M4xVSS_SendCommand: error when decoding alpha magic JPEG: 0x%x",
15287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                err);
15297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            return err;
15307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
15317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
15327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Allocate alpha settings structure */
15337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        alphaSettings =
1534694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                            (M4xVSS_internal_AlphaMagicSettings *)M4OSA_32bitAlignedMalloc(
15357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            sizeof(M4xVSS_internal_AlphaMagicSettings),
15367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4VS, (M4OSA_Char
15377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            *)"Alpha magic settings structure 2");
15387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
15397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( alphaSettings == M4OSA_NULL )
15407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
15417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRACE1_0(
15427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                "Allocation error in M4xVSS_SendCommand");
15437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /*FB: to avoid leaks when there is an error in the send command*/
15447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* Free Send command */
15457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_freeCommand(xVSS_context);
15467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /**/
15477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            return M4ERR_ALLOC;
15487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
15497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        alphaSettings->pPlane = outputPlane;
15507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
15517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( xVSS_context->pSettings->pTransitionList[i]->xVSS.
15527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            transitionSpecific.pAlphaMagicSettings->
15537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            blendingPercent > 0 && xVSS_context->pSettings->
15547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pTransitionList[i]->xVSS.
15557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            transitionSpecific.pAlphaMagicSettings->
15567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            blendingPercent <= 100 )
15577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
15587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            alphaSettings->blendingthreshold =
15597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                ( xVSS_context->pSettings->
15607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pTransitionList[i]->xVSS.
15617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                transitionSpecific.pAlphaMagicSettings->
15627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                blendingPercent) * 255 / 200;
15637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
15647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        else
15657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
15667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            alphaSettings->blendingthreshold = 0;
15677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
15687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        alphaSettings->isreverse =
15697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS_context->pSettings->pTransitionList[i]->xVSS.
15707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            transitionSpecific.pAlphaMagicSettings->
15717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            isreverse;
15727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
15737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( alphaSettings->blendingthreshold == 0 )
15747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
15757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS_context->pSettings->pTransitionList[i]->
15767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                ExtVideoTransitionFct = M4xVSS_AlphaMagic;
15777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
15787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        else
15797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
15807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS_context->pSettings->pTransitionList[i]->
15817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                ExtVideoTransitionFct =
15827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4xVSS_AlphaMagicBlending;
15837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
15847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->pTransitionList[i]->
15857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pExtVideoTransitionFctCtxt = alphaSettings;
15867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
15877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
15887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    break;
15897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
15907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                case M4xVSS_kVideoTransitionType_SlideTransition:
15917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
15927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4xVSS_internal_SlideTransitionSettings *slideSettings;
15937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        slideSettings =
1594694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                            (M4xVSS_internal_SlideTransitionSettings *)M4OSA_32bitAlignedMalloc(
15957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            sizeof(M4xVSS_internal_SlideTransitionSettings),
15967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4VS, (M4OSA_Char
15977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            *)"Internal slide transition settings");
15987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
15997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( M4OSA_NULL == slideSettings )
16007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
16017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRACE1_0(
16027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                "Allocation error in M4xVSS_SendCommand");
16037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /*FB: to avoid leaks when there is an error in the send command*/
16047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* Free Send command */
16057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_freeCommand(xVSS_context);
16067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /**/
16077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            return M4ERR_ALLOC;
16087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
16097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Just copy the lone parameter from the input settings to the internal
16107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                         context. */
16117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
16127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        slideSettings->direction =
16137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pSettings->pTransitionList[i]->xVSS.transitionSpecific.
16147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pSlideTransitionSettings->direction;
16157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
16167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* No need to keep our copy of the settings. */
16177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->pTransitionList[i]->
16187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS.transitionSpecific.pSlideTransitionSettings =
16197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_NULL;
16207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->pTransitionList[i]->
16217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            ExtVideoTransitionFct = &M4xVSS_SlideTransition;
16227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->pTransitionList[i]->
16237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pExtVideoTransitionFctCtxt = slideSettings;
16247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
16257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    break;
16267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
16277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                case M4xVSS_kVideoTransitionType_FadeBlack:
16287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
16297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->pTransitionList[i]->
16307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            ExtVideoTransitionFct = &M4xVSS_FadeBlackTransition;
16317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
16327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    break;
16337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
16347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                case M4xVSS_kVideoTransitionType_External:
16357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
16367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->pTransitionList[i]->
16377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            ExtVideoTransitionFct =
16387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pSettings->pTransitionList[i]->ExtVideoTransitionFct;
16397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->pTransitionList[i]->
16407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pExtVideoTransitionFctCtxt =
16417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pSettings->pTransitionList[i]->
16427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pExtVideoTransitionFctCtxt;
16437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->pTransitionList[i]->
16447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            VideoTransitionType =
16457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4VSS3GPP_kVideoTransitionType_External;
16467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
16477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    break;
16487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
16497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                default:
16507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    break;
16517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                } // switch
16527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
16537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Update total_duration with transition duration */
16547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            totalDuration -= xVSS_context->pSettings->
16557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pTransitionList[i]->uiTransitionDuration;
16567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
16577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
16587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
16597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->pClipList[i]->FileType
16607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4VIDEOEDITING_kFileType_ARGB8888 )
16617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
16626e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury            if(M4OSA_TRUE ==
16636e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                   xVSS_context->pSettings->pClipList[i]->xVSS.isPanZoom) {
16646e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                M4OSA_Char out_img[M4XVSS_MAX_PATH_LEN];
16656e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                M4OSA_Char out_img_tmp[M4XVSS_MAX_PATH_LEN];
16666e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                M4xVSS_Pto3GPP_params *pParams = M4OSA_NULL;
16676e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                M4OSA_Context pARGBFileIn;
16686e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                /*UTF conversion support*/
16696e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                M4OSA_Void *pDecodedPath = pSettings->pClipList[i]->pFile;
16706e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury
16716e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                /* Parse Pto3GPP params chained list to know if input file has already been
16726e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                converted */
16736e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                if( xVSS_context->pPTo3GPPparamsList != M4OSA_NULL )
16747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
16756e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    M4OSA_UInt32 pCmpResult = 0;
16767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
16776e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    pParams = xVSS_context->pPTo3GPPparamsList;
16786e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    /* We parse all Pto3gpp Param chained list */
16796e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    while( pParams != M4OSA_NULL )
16806e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    {
16816e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        pCmpResult = strcmp((const char *)pSettings->pClipList[i]->pFile,
16826e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            (const char *)pParams->pFileIn);
16837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
16846e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        if( pCmpResult == 0
16856e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            && (pSettings->pClipList[i]->uiEndCutTime
16866e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            == pParams->duration
16876e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            || pSettings->pClipList[i]->xVSS.uiDuration
16886e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            == pParams->duration)
16896e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            && pSettings->pClipList[i]->xVSS.MediaRendering
16906e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            == pParams->MediaRendering )
16917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
16927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
16936e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury
16946e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        {
16956e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /* Replace JPG filename with existing 3GP filename */
16966e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            goto replaceARGB_3GP;
16976e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        }
16986e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /* We need to update this variable, in case some pictures have been
16996e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                         added between two */
17006e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /* calls to M4xVSS_sendCommand */
17016e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        pPto3GPP_last = pParams;
17026e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        pParams = pParams->pNext;
17037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
17047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
17057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17066e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                /* Construct output temporary 3GP filename */
17076e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                err = M4OSA_chrSPrintf(out_img, M4XVSS_MAX_PATH_LEN - 1, (M4OSA_Char *)"%simg%d.3gp",
17086e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    xVSS_context->pTempPath, xVSS_context->tempFileIndex);
17097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17106e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                if( err != M4NO_ERROR )
17116e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                {
17126e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    M4OSA_TRACE1_1("Error in M4OSA_chrSPrintf: 0x%x", err);
17136e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    /*FB: to avoid leaks when there is an error in the send command*/
17146e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    /* Free Send command */
17156e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    M4xVSS_freeCommand(xVSS_context);
17166e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    /**/
17176e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    return err;
17186e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                }
17197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17206e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    #ifdef M4xVSS_RESERVED_MOOV_DISK_SPACE
17217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17226e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                err = M4OSA_chrSPrintf(out_img_tmp, M4XVSS_MAX_PATH_LEN - 1, "%simg%d.tmp",
17236e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    xVSS_context->pTempPath, xVSS_context->tempFileIndex);
17247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17256e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                if( err != M4NO_ERROR )
17266e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                {
17276e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    M4OSA_TRACE1_1("Error in M4OSA_chrSPrintf: 0x%x", err);
17286e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    /*FB: to avoid leaks when there is an error in the send command*/
17296e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    /* Free Send command */
17306e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    M4xVSS_freeCommand(xVSS_context);
17316e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    /**/
17326e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    return err;
17336e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                }
17347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17356e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    #endif /*M4xVSS_RESERVED_MOOV_DISK_SPACE*/
17367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17376e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                xVSS_context->tempFileIndex++;
17387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17396e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                /* Allocate last element Pto3GPP params structure */
17406e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                pParams = (M4xVSS_Pto3GPP_params
17416e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    *)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_Pto3GPP_params),
17426e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    M4VS, (M4OSA_Char *)"Element of Pto3GPP Params");
17437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17446e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                if( pParams == M4OSA_NULL )
17456e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                {
17466e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    M4OSA_TRACE1_0(
17476e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        "M4xVSS_sendCommand: Problem when allocating one element Pto3GPP Params");
17486e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    /*FB: to avoid leaks when there is an error in the send command*/
17496e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    /* Free Send command */
17506e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    M4xVSS_freeCommand(xVSS_context);
17516e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    /**/
17526e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    return M4ERR_ALLOC;
17536e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                }
17547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17556e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                /* Initializes pfilexxx members of pParams to be able to free them correctly */
17566e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                pParams->pFileIn = M4OSA_NULL;
17576e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                pParams->pFileOut = M4OSA_NULL;
17586e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                pParams->pFileTemp = M4OSA_NULL;
17596e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                pParams->pNext = M4OSA_NULL;
17606e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                pParams->MediaRendering = M4xVSS_kResizing;
17617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17626e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                /*To support ARGB8888 :get the width and height */
17636e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                pParams->height = pSettings->pClipList[
17646e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    i]->ClipProperties.uiStillPicHeight; //ARGB_Height;
17656e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                    pParams->width = pSettings->pClipList[
17666e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        i]->ClipProperties.uiStillPicWidth; //ARGB_Width;
17676e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        M4OSA_TRACE3_1("CLIP M4xVSS_SendCommand ARGB8888 H = %d", pParams->height);
17686e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        M4OSA_TRACE3_1("CLIP M4xVSS_SendCommand ARGB8888 W = %d", pParams->width);
17697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17706e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        if( xVSS_context->pPTo3GPPparamsList
17716e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            == M4OSA_NULL ) /* Means it is the first element of the list */
17726e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        {
17736e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /* Initialize the xVSS context with the first element of the list */
17746e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            xVSS_context->pPTo3GPPparamsList = pParams;
17757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17766e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /* Save this element in case of other file to convert */
17776e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pPto3GPP_last = pParams;
17786e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        }
17796e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        else
17806e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        {
17816e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /* Update next pointer of the previous last element of the chain */
17826e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pPto3GPP_last->pNext = pParams;
17837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17846e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /* Update save of last element of the chain */
17856e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pPto3GPP_last = pParams;
17866e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        }
17877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17886e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /* Fill the last M4xVSS_Pto3GPP_params element */
17896e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        pParams->duration =
17906e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            xVSS_context->pSettings->pClipList[i]->uiEndCutTime;
17916e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /* If duration is filled, let's use it instead of EndCutTime */
17926e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        if( xVSS_context->pSettings->pClipList[i]->xVSS.uiDuration != 0 )
17937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
17946e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pParams->duration =
17956e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                xVSS_context->pSettings->pClipList[i]->xVSS.uiDuration;
17967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
17977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
17986e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        pParams->InputFileType = M4VIDEOEDITING_kFileType_ARGB8888;
17997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
18006e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /**
18016e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        * UTF conversion: convert into the customer format, before being used*/
18026e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        pDecodedPath = xVSS_context->pSettings->pClipList[i]->pFile;
18036e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        length = strlen(pDecodedPath);
18047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
18056e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /**
18066e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        * UTF conversion: convert into the customer format, before being used*/
18076e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct
18086e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            != M4OSA_NULL && xVSS_context->
18096e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            UTFConversionContext.pTempOutConversionBuffer
18106e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            != M4OSA_NULL )
18116e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        {
18126e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            err = M4xVSS_internalConvertFromUTF8(xVSS_context, (M4OSA_Void
18136e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                *)xVSS_context->pSettings->pClipList[i]->pFile,
18146e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                (M4OSA_Void *)xVSS_context->
18156e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                UTFConversionContext.pTempOutConversionBuffer,
18166e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                &length);
18177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
18186e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            if( err != M4NO_ERROR )
18196e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            {
18206e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                M4OSA_TRACE1_1(
18216e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                    "M4xVSS_SendCommand: pConvFromUTF8Fct returns err: 0x%x",
18226e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                    err);
18236e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                /* Free Send command */
18246e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                M4xVSS_freeCommand(xVSS_context);
18256e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                return err;
18266e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            }
18276e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pDecodedPath =
18286e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                xVSS_context->UTFConversionContext.pTempOutConversionBuffer;
18296e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        }
18307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
18316e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /**
18326e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        * End of the UTF conversion, use the converted file path*/
18336e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        pParams->pFileIn = (M4OSA_Void *)M4OSA_32bitAlignedMalloc(length + 1, M4VS,
18346e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            (M4OSA_Char *)"Pto3GPP Params: file in");
18357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
18366e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        if( pParams->pFileIn == M4OSA_NULL )
18376e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        {
18386e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
18396e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /*FB: to avoid leaks when there is an error in the send command*/
18406e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /* Free Send command */
18416e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            M4xVSS_freeCommand(xVSS_context);
18426e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /**/
18436e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            return M4ERR_ALLOC;
18446e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        }
18456e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        memcpy((void *)pParams->pFileIn, (void *)pDecodedPath,
18466e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            (length + 1)); /* Copy input file path */
18477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
18486e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /* Check that JPG file is present on the FS (P4ME00002974) by just opening
18496e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                         and closing it */
18506e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        err =
18516e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            xVSS_context->pFileReadPtr->openRead(&pARGBFileIn, pDecodedPath,
18526e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            M4OSA_kFileRead);
18537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
18547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( err != M4NO_ERROR )
18557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
18566e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            M4OSA_TRACE1_2("Can't open input jpg file %s, error: 0x%x\n",
18576e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                pDecodedPath, err);
18587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* Free Send command */
18597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_freeCommand(xVSS_context);
18607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            return err;
18617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
18626e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        err = xVSS_context->pFileReadPtr->closeRead(pARGBFileIn);
18637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
18646e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        if( err != M4NO_ERROR )
18656e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        {
18666e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            M4OSA_TRACE1_2("Can't close input jpg file %s, error: 0x%x\n",
18676e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                pDecodedPath, err);
18686e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /* Free Send command */
18696e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            M4xVSS_freeCommand(xVSS_context);
18706e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            return err;
18716e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        }
18727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
18736e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /**
18746e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        * UTF conversion: convert into the customer format, before being used*/
18756e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        pDecodedPath = out_img;
18766e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        length = strlen(pDecodedPath);
18777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
18786e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct
18796e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            != M4OSA_NULL && xVSS_context->
18806e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            UTFConversionContext.pTempOutConversionBuffer
18816e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            != M4OSA_NULL )
18826e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        {
18836e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            err = M4xVSS_internalConvertFromUTF8(xVSS_context,
18846e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                (M4OSA_Void *)out_img, (M4OSA_Void *)xVSS_context->
18856e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                UTFConversionContext.pTempOutConversionBuffer, &length);
18867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
18876e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            if( err != M4NO_ERROR )
18886e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            {
18896e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                M4OSA_TRACE1_1(
18906e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                    "M4xVSS_SendCommand: pConvFromUTF8Fct returns err: 0x%x",
18916e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                    err);
18926e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                /* Free Send command */
18936e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                M4xVSS_freeCommand(xVSS_context);
18946e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                return err;
18956e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            }
18966e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pDecodedPath =
18976e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                xVSS_context->UTFConversionContext.pTempOutConversionBuffer;
18986e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        }
18997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
19006e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /**
19016e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        * End of the UTF conversion, use the converted file path*/
19026e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        pParams->pFileOut = (M4OSA_Void *)M4OSA_32bitAlignedMalloc((length + 1), M4VS,
19036e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            (M4OSA_Char *)"Pto3GPP Params: file out");
19047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
19056e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        if( pParams->pFileOut == M4OSA_NULL )
19067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
19076e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
19086e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /*FB: to avoid leaks when there is an error in the send command*/
19097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* Free Send command */
19107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_freeCommand(xVSS_context);
19116e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /**/
19126e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            return M4ERR_ALLOC;
19137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
19146e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        memcpy((void *)pParams->pFileOut, (void *)pDecodedPath,
19156e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            (length + 1)); /* Copy output file path */
19167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
19176e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    #ifdef M4xVSS_RESERVED_MOOV_DISK_SPACE
19186e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /**
19196e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        * UTF conversion: convert into the customer format, before being used*/
19207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
19216e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        pDecodedPath = out_img_tmp;
19226e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        length = strlen(pDecodedPath);
19237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
19246e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct
19256e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            != M4OSA_NULL && xVSS_context->
19266e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            UTFConversionContext.pTempOutConversionBuffer
19276e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            != M4OSA_NULL )
19286e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        {
19296e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            err = M4xVSS_internalConvertFromUTF8(xVSS_context,
19306e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                (M4OSA_Void *)out_img_tmp, (M4OSA_Void *)xVSS_context->
19316e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                UTFConversionContext.pTempOutConversionBuffer, &length);
19327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
19336e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            if( err != M4NO_ERROR )
19346e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            {
19356e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                M4OSA_TRACE1_1("M4xVSS_SendCommand: M4xVSS_internalConvertFromUTF8\
19366e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                     returns err: 0x%x",
19376e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                    err);
19386e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                /* Free Send command */
19396e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                M4xVSS_freeCommand(xVSS_context);
19406e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                return err;
19416e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            }
19426e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pDecodedPath =
19436e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                xVSS_context->UTFConversionContext.pTempOutConversionBuffer;
19446e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        }
19457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
19466e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /**
19476e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        * End of the UTF conversion, use the converted file path*/
19486e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        pParams->pFileTemp = (M4OSA_Void *)M4OSA_32bitAlignedMalloc((length + 1), M4VS,
19496e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            (M4OSA_Char *)"Pto3GPP Params: file temp");
19506e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury
19516e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        if( pParams->pFileTemp == M4OSA_NULL )
19527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
19537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
19546e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /*FB: to avoid leaks when there is an error in the send command*/
19556e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /* Free Send command */
19567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_freeCommand(xVSS_context);
19576e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /**/
19586e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            return M4ERR_ALLOC;
19597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
19606e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        memcpy((void *)pParams->pFileTemp, (void *)pDecodedPath,
19616e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            (length + 1)); /* Copy temporary file path */
19627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
19636e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    #endif                         /*M4xVSS_RESERVED_MOOV_DISK_SPACE*/
19647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
19656e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /* Fill PanAndZoom settings if needed */
19667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
19676e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        if( M4OSA_TRUE
19686e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            == xVSS_context->pSettings->pClipList[i]->xVSS.isPanZoom )
19696e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        {
19706e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pParams->isPanZoom =
19716e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                xVSS_context->pSettings->pClipList[i]->xVSS.isPanZoom;
19726e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /* Check that Pan & Zoom parameters are corrects */
19736e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            if( xVSS_context->pSettings->pClipList[i]->xVSS.PanZoomXa > 1000
19746e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                || xVSS_context->pSettings->pClipList[i]->xVSS.PanZoomXa
19756e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                <= 0 || xVSS_context->pSettings->pClipList[i]->xVSS.
19766e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                PanZoomTopleftXa > 1000
19776e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                || xVSS_context->pSettings->pClipList[i]->xVSS.
19786e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                PanZoomTopleftYa > 1000
19796e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                || xVSS_context->pSettings->pClipList[i]->xVSS.PanZoomXb
19806e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                > 1000
19816e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                || xVSS_context->pSettings->pClipList[i]->xVSS.PanZoomXb
19826e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                <= 0 || xVSS_context->pSettings->pClipList[i]->xVSS.
19836e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                PanZoomTopleftXb > 1000
19846e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                || xVSS_context->pSettings->pClipList[i]->xVSS.
19856e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                PanZoomTopleftYb > 1000)
19866e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            {
19876e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
19886e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                M4xVSS_freeCommand(xVSS_context);
19896e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                return M4ERR_PARAMETER;
19906e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            }
19917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
19926e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pParams->PanZoomXa =
19936e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                xVSS_context->pSettings->pClipList[i]->xVSS.PanZoomXa;
19946e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pParams->PanZoomTopleftXa =
19956e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                xVSS_context->pSettings->
19966e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                pClipList[i]->xVSS.PanZoomTopleftXa;
19976e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pParams->PanZoomTopleftYa =
19986e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                xVSS_context->pSettings->
19996e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                pClipList[i]->xVSS.PanZoomTopleftYa;
20006e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pParams->PanZoomXb =
20016e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                xVSS_context->pSettings->pClipList[i]->xVSS.PanZoomXb;
20026e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pParams->PanZoomTopleftXb =
20036e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                xVSS_context->pSettings->
20046e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                pClipList[i]->xVSS.PanZoomTopleftXb;
20056e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pParams->PanZoomTopleftYb =
20066e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                xVSS_context->pSettings->
20076e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                pClipList[i]->xVSS.PanZoomTopleftYb;
20086e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        }
20096e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        else
20106e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        {
20116e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pParams->isPanZoom = M4OSA_FALSE;
20126e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        }
20136e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /*+ PR No: blrnxpsw#223*/
20146e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /*Intializing the Video Frame Rate as it may not be intialized*/
20156e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /*Other changes made is @ M4xVSS_Internal.c @ line 1518 in
20166e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        M4xVSS_internalStartConvertPictureTo3gp*/
20176e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        switch( xVSS_context->pSettings->videoFrameRate )
20186e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        {
20196e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            case M4VIDEOEDITING_k30_FPS:
20206e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                pParams->framerate = 33;
20216e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                break;
20227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
20236e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            case M4VIDEOEDITING_k25_FPS:
20246e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                pParams->framerate = 40;
20256e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                break;
20267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
20276e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            case M4VIDEOEDITING_k20_FPS:
20286e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                pParams->framerate = 50;
20296e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                break;
20307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
20316e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            case M4VIDEOEDITING_k15_FPS:
20326e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                pParams->framerate = 66;
20336e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                break;
20347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
20356e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            case M4VIDEOEDITING_k12_5_FPS:
20366e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                pParams->framerate = 80;
20376e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                break;
20387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
20396e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            case M4VIDEOEDITING_k10_FPS:
20406e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                pParams->framerate = 100;
20416e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                break;
20427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
20436e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            case M4VIDEOEDITING_k7_5_FPS:
20446e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                pParams->framerate = 133;
20456e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                break;
20467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
20476e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            case M4VIDEOEDITING_k5_FPS:
20486e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                pParams->framerate = 200;
20496e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                break;
20507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
20516e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            default:
20526e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                /*Making Default Frame Rate @ 15 FPS*/
20536e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                pParams->framerate = 66;
20546e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                break;
20556e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        }
20566e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /*-PR No: blrnxpsw#223*/
20576e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        if( xVSS_context->pSettings->pClipList[i]->xVSS.MediaRendering
20586e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            == M4xVSS_kCropping
20596e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            || xVSS_context->pSettings->pClipList[i]->xVSS.
20606e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            MediaRendering == M4xVSS_kBlackBorders
20616e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            || xVSS_context->pSettings->pClipList[i]->xVSS.
20626e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            MediaRendering == M4xVSS_kResizing )
20636e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        {
20646e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pParams->MediaRendering =
20656e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                xVSS_context->pSettings->pClipList[i]->xVSS.MediaRendering;
20666e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        }
20677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
20686e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        pParams->pNext = M4OSA_NULL;
20696e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        pParams->isCreated = M4OSA_FALSE;
20706e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        xVSS_context->nbStepTotal++;
2071c8d53b6147249440e6b99f88adc795ac82e1a050Hong Teng                       /* Set bTranscodingRequired to TRUE to indicate the kenburn video has
2072c8d53b6147249440e6b99f88adc795ac82e1a050Hong Teng                        * been generated in analysis phase, and does not need to be tanscoded again
2073c8d53b6147249440e6b99f88adc795ac82e1a050Hong Teng                        * in saving phase */
2074c8d53b6147249440e6b99f88adc795ac82e1a050Hong Teng                        xVSS_context->pSettings->pClipList[i]->bTranscodingRequired =
2075c8d53b6147249440e6b99f88adc795ac82e1a050Hong Teng                           M4OSA_TRUE;
20767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
20776e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury    replaceARGB_3GP:
20786e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /* Update total duration */
20796e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        totalDuration += pParams->duration;
20807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
20816e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /* Replacing in VSS structure the JPG file by the 3gp file */
20826e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        xVSS_context->pSettings->pClipList[i]->FileType =
20836e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            M4VIDEOEDITING_kFileType_3GPP;
20847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
20856e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        if( xVSS_context->pSettings->pClipList[i]->pFile != M4OSA_NULL )
20867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
20876e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            free(xVSS_context->pSettings->pClipList[i]->pFile);
20886e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            xVSS_context->pSettings->pClipList[i]->pFile = M4OSA_NULL;
20896e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        }
20906e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury
20916e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /**
20926e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        * UTF conversion: convert into UTF8, before being used*/
20936e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        pDecodedPath = pParams->pFileOut;
20946e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury
20956e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        if( xVSS_context->UTFConversionContext.pConvToUTF8Fct != M4OSA_NULL
20966e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            && xVSS_context->UTFConversionContext.pTempOutConversionBuffer
20976e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            != M4OSA_NULL )
20986e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        {
20996e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            err = M4xVSS_internalConvertToUTF8(xVSS_context,
21006e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                (M4OSA_Void *)pParams->pFileOut,
21016e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                (M4OSA_Void *)xVSS_context->
21026e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                UTFConversionContext.pTempOutConversionBuffer,
21036e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                &length);
21046e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury
21056e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            if( err != M4NO_ERROR )
21066e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            {
21076e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                M4OSA_TRACE1_1(
21086e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                    "M4xVSS_SendCommand: M4xVSS_internalConvertToUTF8 returns err: \
21096e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                    0x%x",err);
21106e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                /* Free Send command */
21116e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                M4xVSS_freeCommand(xVSS_context);
21126e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                return err;
21136e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            }
21146e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            pDecodedPath =
21156e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                xVSS_context->UTFConversionContext.pTempOutConversionBuffer;
21166e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        }
21176e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        else
21186e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        {
21196e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            length = strlen(pDecodedPath);
21206e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        }
21216e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /**
21226e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        * End of the UTF conversion, use the converted file path*/
21236e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        xVSS_context->pSettings->pClipList[i]->pFile = M4OSA_32bitAlignedMalloc((length
21246e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            + 1), M4VS, (M4OSA_Char *)"xVSS file path of ARGB to 3gp");
21256e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury
21266e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        if( xVSS_context->pSettings->pClipList[i]->pFile == M4OSA_NULL )
21276e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        {
21286e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
21296e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /*FB: to avoid leaks when there is an error in the send command*/
21307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* Free Send command */
21317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_freeCommand(xVSS_context);
21326e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            /**/
21336e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            return M4ERR_ALLOC;
21347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
21356e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        memcpy((void *)xVSS_context->pSettings->pClipList[i]->pFile,
21366e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            (void *)pDecodedPath, (length + 1));
21376e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        /*FB: add file path size because of UTF16 conversion*/
21386e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        xVSS_context->pSettings->pClipList[i]->filePathSize = length+1;
21396e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury            }
21407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
21417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /************************
21427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        3GP input file type case
21437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        *************************/
21447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        else if( xVSS_context->pSettings->pClipList[i]->FileType
21457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4VIDEOEDITING_kFileType_3GPP
21467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            || xVSS_context->pSettings->pClipList[i]->FileType
2147e1f105895f913b19ad848cc90a3cd57dad657abfDharmaray Kundargi            == M4VIDEOEDITING_kFileType_MP4
2148e1f105895f913b19ad848cc90a3cd57dad657abfDharmaray Kundargi            || xVSS_context->pSettings->pClipList[i]->FileType
2149e1f105895f913b19ad848cc90a3cd57dad657abfDharmaray Kundargi            == M4VIDEOEDITING_kFileType_M4V )
21507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
21517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*UTF conversion support*/
21527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_Void *pDecodedPath = M4OSA_NULL;
21537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
21547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Need to call MCS in case 3GP video/audio types are not compatible
21557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (H263/MPEG4 or AMRNB/AAC) */
21567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* => Need to fill MCS_Params structure with the right parameters ! */
21577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Need also to parse MCS params struct to check if file has already been transcoded */
21587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
21597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIDEOEDITING_ClipProperties fileProperties;
21607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_MCS_params *pParams;
21617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_Bool audioIsDifferent = M4OSA_FALSE;
21627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_Bool videoIsDifferent = M4OSA_FALSE;
21637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_Bool bAudioMono;
21647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Initialize file properties structure */
21657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
216632ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu            memset((void *) &fileProperties,0,
216732ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                sizeof(M4VIDEOEDITING_ClipProperties));
21687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
21697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            //fileProperties.AudioStreamType = M4VIDEOEDITING_kNoneAudio;
21707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
21717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Prevent from bad initializing of percentage cut time */
21727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->pClipList[i]->xVSS.uiEndCutPercent
21737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            > 100 || xVSS_context->pSettings->pClipList[i]->xVSS.
21747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            uiBeginCutPercent > 100 )
21757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
21767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* These percentage cut time have probably not been initialized */
21777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Let's not use them by setting them to 0 */
21787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->pClipList[i]->xVSS.uiEndCutPercent = 0;
21797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->pClipList[i]->xVSS.uiBeginCutPercent =
21807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    0;
21817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
21827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
21837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /**
21847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            * UTF conversion: convert into the customer format, before being used*/
21857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pDecodedPath = xVSS_context->pSettings->pClipList[i]->pFile;
21867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
21877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct
21887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                != M4OSA_NULL && xVSS_context->
21897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                UTFConversionContext.pTempOutConversionBuffer
21907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                != M4OSA_NULL )
21917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
21927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                err = M4xVSS_internalConvertFromUTF8(xVSS_context, (M4OSA_Void
21937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    *)xVSS_context->pSettings->pClipList[i]->pFile,
21947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (M4OSA_Void *)xVSS_context->
21957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    UTFConversionContext.pTempOutConversionBuffer,
21967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    &length);
21977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
21987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( err != M4NO_ERROR )
21997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
22007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_1(
22017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        "M4xVSS_SendCommand: M4xVSS_internalConvertFromUTF8 returns err: 0x%x",
22027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err);
22037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
22047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
22057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return err;
22067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
22077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pDecodedPath =
22087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->UTFConversionContext.pTempOutConversionBuffer;
22097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
22107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /**
22117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            * End of the UTF conversion, use the converted file path*/
22127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            err = M4xVSS_internalGetProperties(xVSS_context, pDecodedPath,
22137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                &fileProperties);
22147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
22157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( err != M4NO_ERROR )
22167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
22177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_freeCommand(xVSS_context);
22187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_1(
22197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    "M4xVSS_sendCommand: M4xVSS_internalGetProperties returned 0x%x",
22207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err);
22217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* TODO: Translate error code of MCS to an xVSS error code */
22227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return err;
22237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
22247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
22257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Parse MCS params chained list to know if input file has already been converted */
22267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pMCSparamsList != M4OSA_NULL )
22277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
22287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_UInt32 pCmpResult = 0;
22297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
22307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams = xVSS_context->pMCSparamsList;
22317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* We parse all MCS Param chained list */
22327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                while( pParams != M4OSA_NULL )
22337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
22347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
22357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**
22367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    * UTF conversion: convert into UTF8, before being used*/
22377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pDecodedPath = pParams->pFileIn;
22387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
22397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( xVSS_context->UTFConversionContext.pConvToUTF8Fct
22407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        != M4OSA_NULL && xVSS_context->
22417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        UTFConversionContext.pTempOutConversionBuffer
22427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        != M4OSA_NULL )
22437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
22447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err = M4xVSS_internalConvertToUTF8(xVSS_context,
22457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            (M4OSA_Void *)pParams->pFileIn,
22467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            (M4OSA_Void *)xVSS_context->
22477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            UTFConversionContext.
22487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pTempOutConversionBuffer, &length);
22497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
22507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( err != M4NO_ERROR )
22517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
22527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRACE1_1(
22537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                "M4xVSS_SendCommand: M4xVSS_internalConvertToUTF8 returns err:\
22547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                 0x%x", err);
22557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* Free Send command */
22567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_freeCommand(xVSS_context);
22577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            return err;
22587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
22597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pDecodedPath = xVSS_context->
22607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            UTFConversionContext.pTempOutConversionBuffer;
22617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
22627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
22637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**
22647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    * End of the UTF conversion, use the converted file path*/
2265947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                    pCmpResult = strcmp((const char *)pSettings->pClipList[i]->pFile,
2266947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                        (const char *)pDecodedPath);
22677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
22687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* If input filenames are the same, and if this is not a BGM, we can reuse
22697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    the transcoded file */
22707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( pCmpResult == 0 && pParams->isBGM == M4OSA_FALSE
22717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        && pParams->BeginCutTime
22727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        == pSettings->pClipList[i]->uiBeginCutTime
22737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        && (pParams->EndCutTime
22747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        == pSettings->pClipList[i]->uiEndCutTime
22757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        || pParams->EndCutTime
22767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        == pSettings->pClipList[i]->uiBeginCutTime
22777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        + pSettings->pClipList[i]->xVSS.uiDuration)
22787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        && pSettings->pClipList[i]->xVSS.MediaRendering
22797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        == pParams->MediaRendering )
22807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
22817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( pSettings->xVSS.pBGMtrack != M4OSA_NULL )
22827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
22837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            if( pSettings->xVSS.pBGMtrack->uiAddVolume == 100
22847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                || (pParams->OutputAudioFormat
22857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                == M4VIDEOEDITING_kNullAudio
22867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                && fileProperties.AudioStreamType
22877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                == pSettings->xVSS.outputAudioFormat)
22887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                || pParams->OutputAudioFormat
22897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                == pSettings->xVSS.outputAudioFormat
22907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                || fileProperties.AudioStreamType
22917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                == M4VIDEOEDITING_kNoneAudio )
22927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            {
22937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                /* Replace 3GP filename with transcoded 3GP filename */
22947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                goto replace3GP_3GP;
22957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            }
22967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
22977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        else if( ( pParams->OutputAudioFormat
22987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            == M4VIDEOEDITING_kNullAudio
22997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            && fileProperties.AudioStreamType
23007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            == pSettings->xVSS.outputAudioFormat)
23017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            || pParams->OutputAudioFormat
23027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            == pSettings->xVSS.outputAudioFormat
23037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            || fileProperties.AudioStreamType
23047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            == M4VIDEOEDITING_kNoneAudio )
23057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
23067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* Replace 3GP filename with transcoded 3GP filename */
23077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            goto replace3GP_3GP;
23087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
23097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
23107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
23117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* We need to update this variable, in case some 3GP files have been added
23127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    between two */
23137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* calls to M4xVSS_sendCommand */
23147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pMCS_last = pParams;
23157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pParams = pParams->pNext;
23167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
23177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
23187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
23197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* If we have percentage information let's use it... */
23207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->pClipList[i]->xVSS.uiEndCutPercent != 0
23217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                || xVSS_context->pSettings->pClipList[i]->xVSS.uiBeginCutPercent
23227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                != 0 )
23237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
23247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* If percentage information are not correct and if duration field is not filled */
23257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( ( xVSS_context->pSettings->pClipList[i]->xVSS.
23267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    uiEndCutPercent
23277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    <= xVSS_context->pSettings->pClipList[i]->xVSS.
23287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    uiBeginCutPercent)
23297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    && xVSS_context->pSettings->pClipList[i]->xVSS.uiDuration
23307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == 0 )
23317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
23327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0(
23337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        "M4xVSS_sendCommand: Bad percentage for begin and end cut time !");
23347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
23357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_PARAMETER;
23367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
23377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
23387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* We transform the percentage into absolute time */
23397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->pClipList[i]->uiBeginCutTime
23407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    = (M4OSA_UInt32)(
23417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->pClipList[i]->xVSS.
23427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    uiBeginCutPercent
23437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    * fileProperties.uiClipDuration / 100);
23447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->pClipList[i]->uiEndCutTime
23457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    = (M4OSA_UInt32)(
23467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->pClipList[i]->xVSS.
23477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    uiEndCutPercent
23487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    * fileProperties.uiClipDuration / 100);
23497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
23507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* ...Otherwise, we use absolute time. */
23517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else
23527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
23537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* If endCutTime == 0, it means all the file is taken. Let's change to the file
23547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                duration, to accurate preview. */
23557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pSettings->pClipList[i]->uiEndCutTime == 0
23567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    || xVSS_context->pSettings->pClipList[i]->uiEndCutTime
23577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    > fileProperties.uiClipDuration )
23587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
23597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->pClipList[i]->uiEndCutTime =
23607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        fileProperties.uiClipDuration;
23617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
23627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
23637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
23647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* If duration field is filled, it has priority on other fields on EndCutTime,
23657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi             so let's use it */
23667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->pClipList[i]->xVSS.uiDuration != 0 )
23677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
23687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->pClipList[i]->uiEndCutTime =
23697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->pClipList[i]->uiBeginCutTime
23707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    +xVSS_context->pSettings->pClipList[i]->xVSS.uiDuration;
23717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
23727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pSettings->pClipList[i]->uiEndCutTime
23737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    > fileProperties.uiClipDuration )
23747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
23757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->pClipList[i]->uiEndCutTime =
23767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        fileProperties.uiClipDuration;
23777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
23787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
23797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
23807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* If output video format is not set, we take video format of the first 3GP video */
23817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->xVSS.outputVideoFormat
23827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                == M4VIDEOEDITING_kNoneVideo )
23837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
23847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                //xVSS_context->pSettings->xVSS.outputVideoFormat = fileProperties.VideoStreamType;
23857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                //M4OSA_TRACE2_1("Output video format is not set, set it to current clip: %d",
23867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                // xVSS_context->pSettings->xVSS.outputVideoFormat);
23877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_0(
23887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    "Output video format is not set, an error parameter is returned.");
23897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_freeCommand(xVSS_context);
23907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return M4ERR_PARAMETER;
23917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
23927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
23937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->xVSS.outputAudioFormat
23947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                == M4VIDEOEDITING_kNoneAudio )
23957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
23967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                //xVSS_context->pSettings->xVSS.outputAudioFormat = fileProperties.AudioStreamType;
23977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE2_1(
23987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    "Output audio format is not set -> remove audio track of clip: %d",
23997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    i);
24007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
24017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
24027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( fileProperties.uiNbChannels == 1 )
24037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
24047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                bAudioMono = M4OSA_TRUE;
24057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
24067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else
24077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
24087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                bAudioMono = M4OSA_FALSE;
24097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
24107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
24117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( fileProperties.AudioStreamType
24127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                != xVSS_context->pSettings->xVSS.outputAudioFormat
24137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                || (fileProperties.AudioStreamType == M4VIDEOEDITING_kAAC
24147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                && (fileProperties.uiSamplingFrequency != samplingFreq
24157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                || bAudioMono
24167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                != xVSS_context->pSettings->xVSS.bAudioMono)) )
24177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
24187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                audioIsDifferent = M4OSA_TRUE;
24197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* If we want to replace audio, there is no need to transcode audio */
24207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( pSettings->xVSS.pBGMtrack != M4OSA_NULL )
24217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
24227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* temp fix :PT volume not herad in the second clip */
24237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( /*(pSettings->xVSS.pBGMtrack->uiAddVolume == 100
24247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        && xVSS_context->pSettings->xVSS.outputFileSize == 0)
24257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        ||*/
24267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        fileProperties.AudioStreamType
24277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        == M4VIDEOEDITING_kNoneAudio ) /*11/12/2008 CR 3283 VAL for the MMS
24287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        use case, we need to transcode except the media without audio*/
24297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
24307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        audioIsDifferent = M4OSA_FALSE;
24317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
24327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
24337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else if( fileProperties.AudioStreamType
24347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4VIDEOEDITING_kNoneAudio )
24357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
24367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    audioIsDifferent = M4OSA_FALSE;
24377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
24387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
2439eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury            /* Here check the clip video profile and level, if it exceeds
2440c65d276d201f85c2ea99e79ede7b5d2bc08d25fbHong Teng             * the profile and level of export file, then the file needs
2441c65d276d201f85c2ea99e79ede7b5d2bc08d25fbHong Teng             * to be transcoded(do not do compress domain trim).
2442c65d276d201f85c2ea99e79ede7b5d2bc08d25fbHong Teng             * Also for MPEG4 fomart, always do transcoding since HW encoder
2443c65d276d201f85c2ea99e79ede7b5d2bc08d25fbHong Teng             * may use different time scale value than the input clip*/
2444eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury           if ((fileProperties.uiVideoProfile >
2445eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury                     xVSS_context->pSettings->xVSS.outputVideoProfile) ||
2446eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury                (fileProperties.uiVideoLevel >
2447c65d276d201f85c2ea99e79ede7b5d2bc08d25fbHong Teng                     xVSS_context->pSettings->xVSS.outputVideoLevel) ||
2448c65d276d201f85c2ea99e79ede7b5d2bc08d25fbHong Teng                (fileProperties.VideoStreamType == M4VIDEOEDITING_kMPEG4)) {
2449eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury               /* Set bTranscodingRequired to TRUE to indicate the video will be
2450eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury                * transcoded in MCS. */
2451eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury               xVSS_context->pSettings->pClipList[i]->bTranscodingRequired =
2452eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury                   M4OSA_TRUE;
2453eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury               videoIsDifferent = M4OSA_TRUE;
2454eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury           }
24557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
24563b25fdc4a33b53cfcf67315c2d42ad699b8cefe2hongteng            if( videoIsDifferent == M4OSA_TRUE || audioIsDifferent == M4OSA_TRUE)
24577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
24585d33cc161e7d13459b4833dbc8b769093c3f80b0Dheeraj Sharma                M4OSA_Char out_3gp[M4XVSS_MAX_PATH_LEN];
24595d33cc161e7d13459b4833dbc8b769093c3f80b0Dheeraj Sharma                M4OSA_Char out_3gp_tmp[M4XVSS_MAX_PATH_LEN];
24607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
24617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Construct output temporary 3GP filename */
24625d33cc161e7d13459b4833dbc8b769093c3f80b0Dheeraj Sharma                err = M4OSA_chrSPrintf(out_3gp, M4XVSS_MAX_PATH_LEN - 1, (M4OSA_Char *)"%svid%d.3gp",
24637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pTempPath, xVSS_context->tempFileIndex);
24647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
24657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( err != M4NO_ERROR )
24667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
24677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_1("Error in M4OSA_chrSPrintf: 0x%x", err);
24687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return err;
24697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
24707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
24717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4xVSS_RESERVED_MOOV_DISK_SPACE
24727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
24735d33cc161e7d13459b4833dbc8b769093c3f80b0Dheeraj Sharma                err = M4OSA_chrSPrintf(out_3gp_tmp, M4XVSS_MAX_PATH_LEN - 1, "%svid%d.tmp",
24747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pTempPath, xVSS_context->tempFileIndex);
24757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
24767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( err != M4NO_ERROR )
24777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
24787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_1("Error in M4OSA_chrSPrintf: 0x%x", err);
24797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return err;
24807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
24817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
24827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*M4xVSS_RESERVED_MOOV_DISK_SPACE*/
24837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
24847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->tempFileIndex++;
24857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
24867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams =
2487694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    (M4xVSS_MCS_params *)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_MCS_params),
24887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4VS, (M4OSA_Char *)"Element of MCS Params (for 3GP)");
24897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
24907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( pParams == M4OSA_NULL )
24917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
24927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0(
24937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        "M4xVSS_sendCommand: Problem when allocating one element MCS Params");
24947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
24957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
24967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
24977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
24987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_ALLOC;
24997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
25007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->MediaRendering = M4xVSS_kResizing;
25016e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                pParams->videoclipnumber = i; // Indicates video clip index
25027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
25037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pMCSparamsList
25047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4OSA_NULL ) /* Means it is the first element of the list */
25057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
25067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Initialize the xVSS context with the first element of the list */
25077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pMCSparamsList = pParams;
25087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
25097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else
25107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
25117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Update next pointer of the previous last element of the chain */
25127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pMCS_last->pNext = pParams;
25137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
25147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
25157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Save this element in case of other file to convert */
25167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pMCS_last = pParams;
25177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
25187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Fill the last M4xVSS_MCS_params element */
25197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->InputFileType = M4VIDEOEDITING_kFileType_3GPP;
25207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->OutputFileType = M4VIDEOEDITING_kFileType_3GPP;
25217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
25227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->OutputVideoTimescale = xVSS_context->targetedTimescale;
25237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
25247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* We do not need to reencode video if its parameters do not differ */
25257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* from output settings parameters */
25267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( videoIsDifferent == M4OSA_TRUE )
25277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
25287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pParams->OutputVideoFormat =
25297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->xVSS.outputVideoFormat;
25300a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury                    pParams->outputVideoProfile =
25310a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury                        xVSS_context->pSettings->xVSS.outputVideoProfile;
25320a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury                    pParams->outputVideoLevel =
25330a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury                        xVSS_context->pSettings->xVSS.outputVideoLevel;
25347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pParams->OutputVideoFrameRate =
25357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->videoFrameRate;
25367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pParams->OutputVideoFrameSize =
25377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->xVSS.outputVideoSize;
25387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
25397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: VAL CR P4ME00003076
25407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    The output video bitrate is now directly given by the user in the edition
25417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    settings structure If the bitrate given by the user is irrelevant
25427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (the MCS minimum and maximum video bitrate are used),
25437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    the output video bitrate is hardcoded according to the output video size*/
25447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( xVSS_context->pSettings->xVSS.outputVideoBitrate
25457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        >= M4VIDEOEDITING_k16_KBPS
25467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        && xVSS_context->pSettings->xVSS.outputVideoBitrate
25477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        <= M4VIDEOEDITING_k8_MBPS ) /*+ New Encoder bitrates */
25487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
25497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams->OutputVideoBitrate =
25507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS_context->pSettings->xVSS.outputVideoBitrate;
25517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
25527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    else
25537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
25547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        switch( xVSS_context->pSettings->xVSS.outputVideoSize )
25557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
25567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            case M4VIDEOEDITING_kSQCIF:
25577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pParams->OutputVideoBitrate =
25587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    M4VIDEOEDITING_k48_KBPS;
25597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                break;
25607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
25617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            case M4VIDEOEDITING_kQQVGA:
25627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pParams->OutputVideoBitrate =
25637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    M4VIDEOEDITING_k64_KBPS;
25647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                break;
25657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
25667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            case M4VIDEOEDITING_kQCIF:
25677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pParams->OutputVideoBitrate =
25687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    M4VIDEOEDITING_k128_KBPS;
25697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                break;
25707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
25717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            case M4VIDEOEDITING_kQVGA:
25727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pParams->OutputVideoBitrate =
25737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    M4VIDEOEDITING_k384_KBPS;
25747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                break;
25757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
25767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            case M4VIDEOEDITING_kCIF:
25777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pParams->OutputVideoBitrate =
25787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    M4VIDEOEDITING_k384_KBPS;
25797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                break;
25807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
25817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            case M4VIDEOEDITING_kVGA:
25827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pParams->OutputVideoBitrate =
25837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    M4VIDEOEDITING_k512_KBPS;
25847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                break;
25857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
25867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            default: /* Should not happen !! */
25877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pParams->OutputVideoBitrate =
25887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    M4VIDEOEDITING_k64_KBPS;
25897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                break;
25907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
25917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
25927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
25937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else
25947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
259572425b1109ddd092048b5280889f972626a61b7eHong Teng                    pParams->outputVideoProfile =
259672425b1109ddd092048b5280889f972626a61b7eHong Teng                        xVSS_context->pSettings->xVSS.outputVideoProfile;
259772425b1109ddd092048b5280889f972626a61b7eHong Teng                    pParams->outputVideoLevel =
259872425b1109ddd092048b5280889f972626a61b7eHong Teng                        xVSS_context->pSettings->xVSS.outputVideoLevel;
25997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pParams->OutputVideoFormat = M4VIDEOEDITING_kNullVideo;
26007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pParams->OutputVideoFrameRate =
26017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4VIDEOEDITING_k15_FPS; /* Must be set, otherwise, MCS returns an error */
26027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
26037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
26047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( audioIsDifferent == M4OSA_TRUE )
26057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
26067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pParams->OutputAudioFormat =
26077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->xVSS.outputAudioFormat;
26087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
26097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    switch( xVSS_context->pSettings->xVSS.outputAudioFormat )
26107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
26117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        case M4VIDEOEDITING_kNoneAudio:
26127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            break;
26137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
26147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        case M4VIDEOEDITING_kAMR_NB:
26157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pParams->OutputAudioBitrate =
26167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4VIDEOEDITING_k12_2_KBPS;
26177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pParams->bAudioMono = M4OSA_TRUE;
26187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pParams->OutputAudioSamplingFrequency =
26197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4VIDEOEDITING_kDefault_ASF;
26207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            break;
26217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
26227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        case M4VIDEOEDITING_kAAC:
26237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            {
26247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                /*FB: VAL CR P4ME00003076
26257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                The output audio bitrate in the AAC case is now directly given by
26267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                the user in the edition settings structure
26277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                If the bitrate given by the user is irrelevant or undefined
26287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                (the MCS minimum and maximum audio bitrate are used),
26297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                the output audio bitrate is hard coded according to the output
26307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                audio sampling frequency*/
26317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
26327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                /*Check if the audio bitrate is correctly defined*/
26337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
26347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                /*Mono
26357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                MCS values for AAC Mono are min: 16kbps and max: 192 kbps*/
26367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                if( xVSS_context->pSettings->xVSS.outputAudioBitrate
26377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    >= M4VIDEOEDITING_k16_KBPS
26387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    && xVSS_context->pSettings->
26397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    xVSS.outputAudioBitrate
26407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    <= M4VIDEOEDITING_k192_KBPS
26417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    && xVSS_context->pSettings->xVSS.bAudioMono
26427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    == M4OSA_TRUE )
26437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                {
26447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pParams->OutputAudioBitrate =
26457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        xVSS_context->pSettings->
26467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        xVSS.outputAudioBitrate;
26477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                }
26487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                /*Stereo
26497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                MCS values for AAC Mono are min: 32kbps and max: 192 kbps*/
26507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                else if( xVSS_context->pSettings->
26517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    xVSS.outputAudioBitrate
26527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    >= M4VIDEOEDITING_k32_KBPS
26537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    && xVSS_context->pSettings->
26547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    xVSS.outputAudioBitrate
26557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    <= M4VIDEOEDITING_k192_KBPS
26567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    && xVSS_context->pSettings->xVSS.bAudioMono
26577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    == M4OSA_FALSE )
26587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                {
26597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pParams->OutputAudioBitrate =
26607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        xVSS_context->pSettings->
26617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        xVSS.outputAudioBitrate;
26627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                }
26637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
26647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                /*The audio bitrate is hard coded according to the output audio
26657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                 sampling frequency*/
26667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                else
26677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                {
26687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    switch( xVSS_context->pSettings->
26697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        xVSS.outputAudioSamplFreq )
26707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    {
26717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        case M4VIDEOEDITING_k16000_ASF:
26727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            pParams->OutputAudioBitrate =
26737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                M4VIDEOEDITING_k24_KBPS;
26747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            break;
26757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
26767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        case M4VIDEOEDITING_k22050_ASF:
26777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        case M4VIDEOEDITING_k24000_ASF:
26787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            pParams->OutputAudioBitrate =
26797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                M4VIDEOEDITING_k32_KBPS;
26807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            break;
26817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
26827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        case M4VIDEOEDITING_k32000_ASF:
26837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            pParams->OutputAudioBitrate =
26847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                M4VIDEOEDITING_k48_KBPS;
26857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            break;
26867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
26877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        case M4VIDEOEDITING_k44100_ASF:
26887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        case M4VIDEOEDITING_k48000_ASF:
26897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            pParams->OutputAudioBitrate =
26907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                M4VIDEOEDITING_k64_KBPS;
26917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            break;
26927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
26937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        default:
26947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            pParams->OutputAudioBitrate =
26957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                M4VIDEOEDITING_k64_KBPS;
26967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            break;
26977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    }
26987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
26997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    if( xVSS_context->pSettings->xVSS.bAudioMono
27007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        == M4OSA_FALSE )
27017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    {
27027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        /* Output bitrate have to be doubled */
27037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        pParams->OutputAudioBitrate +=
27047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            pParams->OutputAudioBitrate;
27057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    }
27067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                }
27077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
27087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pParams->bAudioMono =
27097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    xVSS_context->pSettings->xVSS.bAudioMono;
27107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
27117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                if( xVSS_context->pSettings->
27127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    xVSS.outputAudioSamplFreq
27137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    == M4VIDEOEDITING_k8000_ASF )
27147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                {
27157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    /* Prevent from unallowed sampling frequencies */
27167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pParams->OutputAudioSamplingFrequency =
27177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        M4VIDEOEDITING_kDefault_ASF;
27187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                }
27197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                else
27207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                {
27217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pParams->OutputAudioSamplingFrequency =
27227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        xVSS_context->pSettings->
27237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        xVSS.outputAudioSamplFreq;
27247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                }
27257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                break;
27267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            }
27277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
27287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        default: /* Should not happen !! */
27297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pParams->OutputAudioFormat = M4VIDEOEDITING_kAMR_NB;
27307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pParams->OutputAudioBitrate =
27317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4VIDEOEDITING_k12_2_KBPS;
27327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pParams->bAudioMono = M4OSA_TRUE;
27337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pParams->OutputAudioSamplingFrequency =
27347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4VIDEOEDITING_kDefault_ASF;
27357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            break;
27367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
27377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
27387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else
27397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
27407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pParams->OutputAudioFormat = M4VIDEOEDITING_kNullAudio;
27417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
27427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
27437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**
27447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                * UTF conversion: convert into the customer format, before being used*/
27457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pDecodedPath = xVSS_context->pSettings->pClipList[i]->pFile;
2746947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                length = strlen(pDecodedPath);
27477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
27487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct
27497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    != M4OSA_NULL && xVSS_context->
27507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    UTFConversionContext.pTempOutConversionBuffer
27517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    != M4OSA_NULL )
27527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
27537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err = M4xVSS_internalConvertFromUTF8(xVSS_context,
27547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        (M4OSA_Void *)xVSS_context->pSettings->
27557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pClipList[i]->pFile,
27567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        (M4OSA_Void *)xVSS_context->
27577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        UTFConversionContext.pTempOutConversionBuffer,
27587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        &length);
27597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
27607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( err != M4NO_ERROR )
27617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
27627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1(
27637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "M4xVSS_SendCommand: M4xVSS_internalConvertFromUTF8 returns err: 0x%x",
27647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err);
27657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Free Send command */
27667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4xVSS_freeCommand(xVSS_context);
27677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return err;
27687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
27697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pDecodedPath = xVSS_context->
27707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        UTFConversionContext.pTempOutConversionBuffer;
27717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
27727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
27737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**
27747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                * End of the UTF conversion, use the converted file path*/
27757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->pFileIn =
2776694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    (M4OSA_Void *)M4OSA_32bitAlignedMalloc((length + 1), M4VS,
27777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (M4OSA_Char *)"MCS 3GP Params: file in");
27787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
27797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( pParams->pFileIn == M4OSA_NULL )
27807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
27817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
27827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
27837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
27847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
27857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
27867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_ALLOC;
27877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
278832ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                memcpy((void *)pParams->pFileIn, (void *)pDecodedPath,
27897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (length + 1)); /* Copy input file path */
27907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
27917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**
27927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                * UTF conversion: convert into the customer format, before being used*/
27937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pDecodedPath = out_3gp;
2794947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                length = strlen(pDecodedPath);
27957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
27967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct
27977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    != M4OSA_NULL && xVSS_context->
27987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    UTFConversionContext.pTempOutConversionBuffer
27997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    != M4OSA_NULL )
28007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
28017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err = M4xVSS_internalConvertFromUTF8(xVSS_context,
28027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        (M4OSA_Void *)out_3gp, (M4OSA_Void *)xVSS_context->
28037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        UTFConversionContext.pTempOutConversionBuffer,
28047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        &length);
28057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
28067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( err != M4NO_ERROR )
28077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
28087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1(
28097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "M4xVSS_SendCommand: M4xVSS_internalConvertFromUTF8 returns err: 0x%x",
28107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err);
28117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Free Send command */
28127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4xVSS_freeCommand(xVSS_context);
28137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return err;
28147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
28157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pDecodedPath = xVSS_context->
28167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        UTFConversionContext.pTempOutConversionBuffer;
28177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
28187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
28197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**
28207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                * End of the UTF conversion, use the converted file path*/
28217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->pFileOut =
2822694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    (M4OSA_Void *)M4OSA_32bitAlignedMalloc((length + 1), M4VS,
28237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (M4OSA_Char *)"MCS 3GP Params: file out");
28247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
28257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( pParams->pFileOut == M4OSA_NULL )
28267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
28277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
28287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
28297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
28307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
28317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
28327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_ALLOC;
28337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
283432ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                memcpy((void *)pParams->pFileOut, (void *)pDecodedPath,
28357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (length + 1)); /* Copy output file path */
28367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
28377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef M4xVSS_RESERVED_MOOV_DISK_SPACE
28387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**
28397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                * UTF conversion: convert into the customer format, before being used*/
28407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
28417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pDecodedPath = out_3gp_tmp;
2842947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                length = strlen(pDecodedPath);
28437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
28447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct
28457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    != M4OSA_NULL && xVSS_context->
28467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    UTFConversionContext.pTempOutConversionBuffer
28477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    != M4OSA_NULL )
28487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
28497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err = M4xVSS_internalConvertFromUTF8(xVSS_context,
28507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        (M4OSA_Void *)out_3gp_tmp,
28517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        (M4OSA_Void *)xVSS_context->
28527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        UTFConversionContext.pTempOutConversionBuffer,
28537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        &length);
28547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
28557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( err != M4NO_ERROR )
28567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
28577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1(
28587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "M4xVSS_SendCommand: M4xVSS_internalConvertFromUTF8 returns err: 0x%x",
28597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err);
28607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Free Send command */
28617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4xVSS_freeCommand(xVSS_context);
28627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return err;
28637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
28647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pDecodedPath = xVSS_context->
28657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        UTFConversionContext.pTempOutConversionBuffer;
28667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
28677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
28687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**
28697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                * End of the UTF conversion, use the converted file path*/
28707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->pFileTemp =
2871694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    (M4OSA_Void *)M4OSA_32bitAlignedMalloc((length + 1), M4VS,
28727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (M4OSA_Char *)"MCS 3GP Params: file temp");
28737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
28747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( pParams->pFileTemp == M4OSA_NULL )
28757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
28767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
28777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
28787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
28797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
28807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
28817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_ALLOC;
28827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
288332ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                memcpy((void *)pParams->pFileTemp, (void *)pDecodedPath,
28847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (length + 1)); /* Copy temporary file path */
28857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
28867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#else
28877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
28887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->pFileTemp = M4OSA_NULL;
28897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
28907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*M4xVSS_RESERVED_MOOV_DISK_SPACE*/
28917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
28927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*FB 2008/10/20 keep media aspect ratio, add media rendering parameter*/
28937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
28947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pSettings->pClipList[i]->xVSS.MediaRendering
28957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4xVSS_kCropping
28967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    || xVSS_context->pSettings->pClipList[i]->xVSS.
28977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    MediaRendering == M4xVSS_kBlackBorders
28987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    || xVSS_context->pSettings->pClipList[i]->xVSS.
28997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    MediaRendering == M4xVSS_kResizing )
29007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
29017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pParams->MediaRendering =
29027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->pClipList[i]->xVSS.
29037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        MediaRendering;
29047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
29057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
29067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*FB: transcoding per parts*/
29077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->BeginCutTime =
29087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->pClipList[i]->uiBeginCutTime;
29097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->EndCutTime =
29107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->pClipList[i]->uiEndCutTime;
29117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
29127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->pNext = M4OSA_NULL;
29137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->isBGM = M4OSA_FALSE;
29147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->isCreated = M4OSA_FALSE;
29157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->nbStepTotal++;
29167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                bIsTranscoding = M4OSA_TRUE;
29177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
29187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargireplace3GP_3GP:
29197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Update total duration */
29207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                totalDuration +=
29217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->pClipList[i]->uiEndCutTime
29227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    - xVSS_context->pSettings->pClipList[i]->uiBeginCutTime;
29237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
29247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Replacing in VSS structure the original 3GP file by the transcoded 3GP file */
29257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->pClipList[i]->FileType =
29267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4VIDEOEDITING_kFileType_3GPP;
29277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
29287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pSettings->pClipList[i]->pFile != M4OSA_NULL )
29297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
2930694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    free(xVSS_context->pSettings->pClipList[i]->pFile);
29317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->pClipList[i]->pFile = M4OSA_NULL;
29327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
29337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
29347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**
29357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                * UTF conversion: convert into the customer format, before being used*/
29367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pDecodedPath = pParams->pFileOut;
29377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
29387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->UTFConversionContext.pConvToUTF8Fct
29397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    != M4OSA_NULL && xVSS_context->
29407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    UTFConversionContext.pTempOutConversionBuffer
29417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    != M4OSA_NULL )
29427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
29437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err = M4xVSS_internalConvertToUTF8(xVSS_context,
29447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        (M4OSA_Void *)pParams->pFileOut,
29457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        (M4OSA_Void *)xVSS_context->
29467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        UTFConversionContext.pTempOutConversionBuffer,
29477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        &length);
29487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
29497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( err != M4NO_ERROR )
29507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
29517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1(
29527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "M4xVSS_SendCommand: M4xVSS_internalConvertToUTF8 returns err: 0x%x",
29537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err);
29547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Free Send command */
29557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4xVSS_freeCommand(xVSS_context);
29567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return err;
29577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
29587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pDecodedPath = xVSS_context->
29597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        UTFConversionContext.pTempOutConversionBuffer;
29607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
29617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else
29627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
2963947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                    length = strlen(pDecodedPath);
29647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
29657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**
29667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                * End of the UTF conversion, use the converted file path*/
2967694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                xVSS_context->pSettings->pClipList[i]->pFile = M4OSA_32bitAlignedMalloc(
29687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (length + 1),
29697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4VS, (M4OSA_Char *)"xVSS file path of 3gp to 3gp");
29707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
29717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pSettings->pClipList[i]->pFile == M4OSA_NULL )
29727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
29737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
29747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
29757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
29767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
29777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
29787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_ALLOC;
29797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
298032ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                memcpy((void *)xVSS_context->pSettings->pClipList[i]->pFile,
298132ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                    (void *)pDecodedPath, (length + 1));
29827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*FB: add file path size because of UTF 16 conversion*/
29837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->pClipList[i]->filePathSize = length+1;
29847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
29857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* We define master clip as first 3GP input clip */
29867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*if(xVSS_context->pSettings->uiMasterClip == 0 && fileProperties.
29877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                AudioStreamType != M4VIDEOEDITING_kNoneAudio)
29887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
29897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->uiMasterClip = i;
29907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }*/
29917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
29927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else
29937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
29947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Update total duration */
29957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                totalDuration +=
29967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->pClipList[i]->uiEndCutTime
29977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    - xVSS_context->pSettings->pClipList[i]->uiBeginCutTime;
29987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
29997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* We define master clip as first 3GP input clip */
30007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( masterClip == -1
30017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                && fileProperties.AudioStreamType != M4VIDEOEDITING_kNoneAudio )
30027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
30037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                masterClip = i;
30047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->uiMasterClip = i;
30057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
30067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
30077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
30087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /**************************
30097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        Other input file type case
30107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        ***************************/
30117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        else
30127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
30137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Bad file type as input clip");
30147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*FB: to avoid leaks when there is an error in the send command*/
30157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Free Send command */
30167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
30177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /**/
30187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_PARAMETER;
30197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
30207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
30217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
30227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*********************************************************
30237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    * Parse all effects to make some adjustment for framing, *
30247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    * text and to transform relative time into absolute time *
30257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    **********************************************************/
30267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    for ( j = 0; j < xVSS_context->pSettings->nbEffects; j++ )
30277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
30287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Copy effect to "local" structure */
302932ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        memcpy((void *) &(xVSS_context->pSettings->Effects[j]),
303032ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu            (void *) &(pSettings->Effects[j]),
30317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            sizeof(M4VSS3GPP_EffectSettings));
30327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
30337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Prevent from bad initializing of effect percentage time */
30347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->Effects[j].xVSS.uiDurationPercent > 100
30357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            || xVSS_context->pSettings->Effects[j].xVSS.uiStartPercent > 100 )
30367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
30377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* These percentage time have probably not been initialized */
30387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Let's not use them by setting them to 0 */
30397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->Effects[j].xVSS.uiDurationPercent = 0;
30407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->Effects[j].xVSS.uiStartPercent = 0;
30417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
30427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
30437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* If we have percentage information let's use it... Otherwise, we use absolute time. */
30447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->Effects[j].xVSS.uiDurationPercent != 0 )
30457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
30467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->
30477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                Effects[j].uiStartTime = (M4OSA_UInt32)(totalDuration
30487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                * xVSS_context->pSettings->Effects[j].xVSS.uiStartPercent
30497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                / 100);
30507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* The percentage of effect duration is based on the duration of the clip -
30517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            start time */
30527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->
30537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                Effects[j].uiDuration = (M4OSA_UInt32)(totalDuration
30547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                * xVSS_context->pSettings->Effects[j].xVSS.uiDurationPercent
30557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                / 100);
30567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
30577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
30587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* If there is a framing effect, we need to allocate framing effect structure */
30597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->Effects[j].VideoEffectType
30607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4xVSS_kVideoEffectType_Framing )
30617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
30627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef DECODE_GIF_ON_SAVING
30637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
30647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_FramingContext *framingCtx;
30657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*UTF conversion support*/
30667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_Void *pDecodedPath = M4OSA_NULL;
30677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
30687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#else
30697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
30707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_FramingStruct *framingCtx;
30717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
30727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*DECODE_GIF_ON_SAVING*/
30737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
30747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_Char *pExt2 = M4OSA_NULL;
30757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VIFI_ImagePlane *pPlane =
30767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->Effects[j].xVSS.pFramingBuffer;
30777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_Int32 result1, result2;
30787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
30797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Copy framing file path */
30807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( pSettings->Effects[j].xVSS.pFramingFilePath != M4OSA_NULL )
30817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
30827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->
3083694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    Effects[j].xVSS.pFramingFilePath = M4OSA_32bitAlignedMalloc(
3084947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                    strlen(pSettings->Effects[j].xVSS.pFramingFilePath)
30857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    + 1, M4VS, (M4OSA_Char *)"Local Framing file path");
30867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
30877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pSettings->Effects[j].xVSS.pFramingFilePath
30887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4OSA_NULL )
30897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
30907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
30917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
30927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
30937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
30947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
30957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_ALLOC;
30967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
309732ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                memcpy((void *)xVSS_context->pSettings->
30987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    Effects[j].xVSS.pFramingFilePath,
309932ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                    (void *)pSettings->
3100947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                    Effects[j].xVSS.pFramingFilePath, strlen(
31017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pSettings->Effects[j].xVSS.pFramingFilePath) + 1);
31027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
31037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pExt2 =
31047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.pFramingFilePath;
31057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
31067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
31077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef DECODE_GIF_ON_SAVING
31087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
31097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx = (M4xVSS_FramingContext
3110694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                *)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_FramingContext),
31117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4VS, (M4OSA_Char *)"Context of the framing effect");
31127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
31137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( framingCtx == M4OSA_NULL )
31147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
31157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
31167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*FB: to avoid leaks when there is an error in the send command*/
31177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Free Send command */
31187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_freeCommand(xVSS_context);
31197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**/
31207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return M4ERR_ALLOC;
31217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
31227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->aFramingCtx = M4OSA_NULL;
31237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->aFramingCtx_last = M4OSA_NULL;
31247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->pSPSContext = M4OSA_NULL;
31257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->outputVideoSize =
31267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->xVSS.outputVideoSize;
31277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->topleft_x =
31287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->Effects[j].xVSS.topleft_x;
31297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->topleft_y =
31307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->Effects[j].xVSS.topleft_y;
31317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->bEffectResize =
31327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->Effects[j].xVSS.bResize;
31337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->pEffectFilePath =
31347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->Effects[j].xVSS.pFramingFilePath;
31357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->pFileReadPtr = xVSS_context->pFileReadPtr;
31367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->pFileWritePtr = xVSS_context->pFileWritePtr;
31377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->effectDuration =
31387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->Effects[j].uiDuration;
31397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->b_IsFileGif = M4OSA_FALSE;
31407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->alphaBlendingStruct = M4OSA_NULL;
31417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->b_animated = M4OSA_FALSE;
31427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
31437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Output ratio for the effect is stored in uiFiftiesOutFrameRate parameters of the
31447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            extended xVSS effects structure */
31457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->Effects[j].xVSS.uiFiftiesOutFrameRate
31467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                != 0 )
31477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
31487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->frameDurationRatio =
31497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (M4OSA_Float)(( xVSS_context->pSettings->
31507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    Effects[j].xVSS.uiFiftiesOutFrameRate) / 1000.0);
31517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
31527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else
31537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
31547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->frameDurationRatio = 1.0;
31557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
31567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
31577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*Alpha blending*/
31587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*Check if the alpha blending parameters are corrects*/
3159d67e9da63323d965760337913f86de28024531a4Basavapatna Dattaguru            if( pSettings->Effects[j].xVSS.uialphaBlendingFadeInTime > 100 )
31607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
31617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->Effects[j].xVSS.uialphaBlendingFadeInTime = 0;
31627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
31637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3164d67e9da63323d965760337913f86de28024531a4Basavapatna Dattaguru            if( pSettings->Effects[j].xVSS.uialphaBlendingFadeOutTime > 100 )
31657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
31667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->Effects[j].xVSS.uialphaBlendingFadeOutTime = 0;
31677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
31687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3169d67e9da63323d965760337913f86de28024531a4Basavapatna Dattaguru            if( pSettings->Effects[j].xVSS.uialphaBlendingEnd > 100 )
31707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
31717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->Effects[j].xVSS.uialphaBlendingEnd = 100;
31727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
31737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3174d67e9da63323d965760337913f86de28024531a4Basavapatna Dattaguru            if( pSettings->Effects[j].xVSS.uialphaBlendingMiddle > 100 )
31757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
31767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->Effects[j].xVSS.uialphaBlendingMiddle = 100;
31777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
31787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3179d67e9da63323d965760337913f86de28024531a4Basavapatna Dattaguru            if( pSettings->Effects[j].xVSS.uialphaBlendingStart > 100 )
31807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
31817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pSettings->Effects[j].xVSS.uialphaBlendingStart = 100;
31827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
31837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
31847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( pSettings->Effects[j].xVSS.uialphaBlendingFadeInTime > 0
31857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                || pSettings->Effects[j].xVSS.uialphaBlendingFadeOutTime > 0 )
31867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
31877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*Allocate the alpha blending structure*/
31887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->alphaBlendingStruct =
3189694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    (M4xVSS_internalEffectsAlphaBlending *)M4OSA_32bitAlignedMalloc(
31907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    sizeof(M4xVSS_internalEffectsAlphaBlending),
31917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4VS, (M4OSA_Char *)"alpha blending structure");
31927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
31937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( framingCtx->alphaBlendingStruct == M4OSA_NULL )
31947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
31957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
31967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
31977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_ALLOC;
31987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
31997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*Fill the alpha blending structure*/
32007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->alphaBlendingStruct->m_fadeInTime =
32017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pSettings->Effects[j].xVSS.uialphaBlendingFadeInTime;
32027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->alphaBlendingStruct->m_fadeOutTime =
32037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pSettings->Effects[j].xVSS.uialphaBlendingFadeOutTime;
32047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->alphaBlendingStruct->m_end =
32057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pSettings->Effects[j].xVSS.uialphaBlendingEnd;
32067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->alphaBlendingStruct->m_middle =
32077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pSettings->Effects[j].xVSS.uialphaBlendingMiddle;
32087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->alphaBlendingStruct->m_start =
32097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pSettings->Effects[j].xVSS.uialphaBlendingStart;
32107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
32117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( pSettings->Effects[j].xVSS.uialphaBlendingFadeInTime
32127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    + pSettings->Effects[j].xVSS.uialphaBlendingFadeOutTime
32137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        > 100 )
32147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
32157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->alphaBlendingStruct->m_fadeOutTime =
32167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        100 - framingCtx->alphaBlendingStruct->m_fadeInTime;
32177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
32187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
32197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
32207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /**
32217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            * UTF conversion: convert into the customer format, before being used*/
32227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pDecodedPath =
32237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->Effects[j].xVSS.pFramingFilePath;
3224947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma            length = strlen(pDecodedPath);
32257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
32267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct
32277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                != M4OSA_NULL && xVSS_context->
32287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                UTFConversionContext.pTempOutConversionBuffer
32297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                != M4OSA_NULL )
32307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
32317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                err = M4xVSS_internalConvertFromUTF8(xVSS_context,
32327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (M4OSA_Void *)xVSS_context->pSettings->
32337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    Effects[j].xVSS.pFramingFilePath,
32347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (M4OSA_Void *)xVSS_context->
32357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    UTFConversionContext.pTempOutConversionBuffer,
32367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    &length);
32377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
32387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( err != M4NO_ERROR )
32397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
32407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_1(
32417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        "M4xVSS_SendCommand: M4xVSS_internalConvertFromUTF8 returns err: 0x%x",
32427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err);
32437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
32447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
32457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return err;
32467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
32477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pDecodedPath =
32487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->UTFConversionContext.pTempOutConversionBuffer;
32497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
32507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
32517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /**
32527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            * End of the UTF conversion, use the converted file path*/
3253694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            framingCtx->pEffectFilePath = M4OSA_32bitAlignedMalloc(length + 1, M4VS,
32547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                (M4OSA_Char *)"Local Framing file path");
32557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
32567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( framingCtx->pEffectFilePath == M4OSA_NULL )
32577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
32587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
32597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*FB: to avoid leaks when there is an error in the send command*/
32607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Free Send command */
32617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_freeCommand(xVSS_context);
32627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**/
32637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return M4ERR_ALLOC;
32647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
326532ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu            memcpy((void *)framingCtx->pEffectFilePath,
326632ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                (void *)pDecodedPath, length + 1);
32677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
32687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Save framing structure associated with corresponding effect */
32697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->Effects[j].pExtVideoEffectFctCtxt =
32707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx;
32717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
32727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#else
32737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
32747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx = (M4xVSS_FramingStruct
3275694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                *)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_FramingStruct),
32767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4VS, (M4OSA_Char *)"Context of the framing effect");
32777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
32787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( framingCtx == M4OSA_NULL )
32797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
32807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
32817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*FB: to avoid leaks when there is an error in the send command*/
32827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Free Send command */
32837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_freeCommand(xVSS_context);
32847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**/
32857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return M4ERR_ALLOC;
32867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
32877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
32887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->topleft_x =
32897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->Effects[j].xVSS.topleft_x;
32907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->topleft_y =
32917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->Effects[j].xVSS.topleft_y;
32927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
32937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* BugFix 1.2.0: Leak when decoding error */
32947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->FramingRgb = M4OSA_NULL;
32957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->FramingYuv = M4OSA_NULL;
32967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            framingCtx->pNext = framingCtx;
32977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Save framing structure associated with corresponding effect */
32987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->Effects[j].pExtVideoEffectFctCtxt =
32997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx;
33007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
33017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*DECODE_GIF_ON_SAVING*/
33027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
33037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( pExt2 != M4OSA_NULL )
33047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
33057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Decode the image associated to the effect, and fill framing structure */
3306947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                pExt2 += (strlen((const char *)pExt2) - 4);
33077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3308947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                result1 = strcmp((const char *)pExt2,(const char *)".rgb");
3309947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                result2 = strcmp((const char *)pExt2,(const char *)".RGB");
33107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
33117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( 0 == result1 || 0 == result2 )
33127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
33137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef DECODE_GIF_ON_SAVING
33147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
33157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->aFramingCtx =
33167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        (M4xVSS_FramingStruct
3317694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        *)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_FramingStruct),
33187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4VS,
33197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        (M4OSA_Char
33207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        *)
33217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        "M4xVSS_internalDecodeGIF: Context of the framing effect");
33227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
33237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( framingCtx->aFramingCtx == M4OSA_NULL )
33247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
33257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_0(
33267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "Allocation error in M4xVSS_SendCommand");
33277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* TODO: Translate error code of SPS to an xVSS error code */
33287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4xVSS_freeCommand(xVSS_context);
33297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return M4ERR_ALLOC;
33307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
33317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->aFramingCtx->pCurrent =
33327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_NULL; /* Only used by the first element of the chain */
33337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->aFramingCtx->previousClipTime = -1;
33347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->aFramingCtx->FramingYuv = M4OSA_NULL;
33357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->aFramingCtx->FramingRgb = M4OSA_NULL;
33367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->aFramingCtx->topleft_x =
33377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->Effects[j].xVSS.topleft_x;
33387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->aFramingCtx->topleft_y =
33397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->Effects[j].xVSS.topleft_y;
33407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*To support ARGB8888 : get the width and height */
33417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
33427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->aFramingCtx->width =
33437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->Effects[j].xVSS.width;
33447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->aFramingCtx->height =
33457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->Effects[j].xVSS.height;
33467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_1("FRAMMING BEFORE M4xVSS_SendCommand  %d",
33477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        framingCtx->aFramingCtx->width);
33487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_1("FRAMMING BEFORE M4xVSS_SendCommand  %d",
33497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        framingCtx->aFramingCtx->height);
33507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
33517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
33527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
33537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err = M4xVSS_internalConvertARGB888toYUV420_FrammingEffect(
33547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context,
33557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        &(xVSS_context->pSettings->Effects[j]),
33567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        framingCtx->aFramingCtx,xVSS_context->pSettings->xVSS.outputVideoSize);
3357bb337b471658b7c2264c6ff1bb613739db851baaSantosh Madhava                    M4OSA_TRACE3_1("FRAMING WIDTH BEFORE M4xVSS_SendCommand  %d",
33587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        framingCtx->aFramingCtx->width);
3359bb337b471658b7c2264c6ff1bb613739db851baaSantosh Madhava                    M4OSA_TRACE3_1("FRAMING HEIGHT BEFORE M4xVSS_SendCommand  %d",
33607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        framingCtx->aFramingCtx->height);
33617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
33627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( err != M4NO_ERROR )
33637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
33647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1(
33657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "M4xVSS_SendCommand: M4xVSS_internalDecodePNG returned 0x%x",
33667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err);
33677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* TODO: Translate error code of SPS to an xVSS error code */
33687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4xVSS_freeCommand(xVSS_context);
33697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return err;
33707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
33717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
33727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else
33737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
33747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_1(
33757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        "M4xVSS_SendCommand: Not supported still picture format 0x%x",
33767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err);
33777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
33787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
33797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
33807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
33817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_PARAMETER;
33827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
33837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
33847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else if( pPlane != M4OSA_NULL )
33857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
33867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef DECODE_GIF_ON_SAVING
33877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
33887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx = (M4xVSS_FramingStruct
3389694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    *)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_FramingStruct),
33907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4VS, (M4OSA_Char *)"Context of the framing effect");
33917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
33927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( framingCtx->aFramingCtx == M4OSA_NULL )
33937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
33947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
33957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
33967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
33977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
33987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
33997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_ALLOC;
34007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
34017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
34027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->topleft_x =
34037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.topleft_x;
34047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->topleft_y =
34057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.topleft_y;
34067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
34077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* BugFix 1.2.0: Leak when decoding error */
34087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->FramingRgb = M4OSA_NULL;
34097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->FramingYuv = M4OSA_NULL;
34107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->pNext = framingCtx->aFramingCtx;
34117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->pCurrent = framingCtx->aFramingCtx;
34127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->duration = 0;
34137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->previousClipTime = -1;
34147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->FramingRgb =
34157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.pFramingBuffer;
34167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Force input RGB buffer to even size to avoid errors in YUV conversion */
34177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->FramingRgb->u_width =
34187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->aFramingCtx->FramingRgb->u_width & ~1;
34197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->FramingRgb->u_height =
34207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->aFramingCtx->FramingRgb->u_height & ~1;
34217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Input RGB plane is provided, let's convert it to YUV420, and update framing
34227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                structure  */
34237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                err = M4xVSS_internalConvertRGBtoYUV(framingCtx->aFramingCtx);
34247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
34257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#else
34267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
34277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->FramingRgb =
34287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.pFramingBuffer;
34297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Force input RGB buffer to even size to avoid errors in YUV conversion */
34307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->FramingRgb.u_width =
34317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->FramingRgb.u_width & ~1;
34327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->FramingRgb.u_height =
34337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->FramingRgb.u_height & ~1;
34347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Input RGB plane is provided, let's convert it to YUV420, and update framing
34357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                 structure  */
34367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                err = M4xVSS_internalConvertRGBtoYUV(framingCtx);
34377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
34387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
34397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
34407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( err != M4NO_ERROR )
34417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
34427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_1(
34437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        "M4xVSS_sendCommand: error when converting RGB to YUV: 0w%x",
34447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err);
34457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
34467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
34477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
34487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
34497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return err;
34507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
34517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
34527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else
34537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
34547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_0(
34557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    "M4xVSS_sendCommand: No input image/plane provided for framing effect.");
34567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*FB: to avoid leaks when there is an error in the send command*/
34577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Free Send command */
34587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_freeCommand(xVSS_context);
34597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**/
34607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return M4ERR_PARAMETER;
34617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
34627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
34637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* CR: Add text handling with external text interface */
34647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* If effect type is text, we call external text function to get RGB 565 buffer */
34657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->Effects[j].VideoEffectType
34667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4xVSS_kVideoEffectType_Text )
34677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
34687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Call the font engine function pointer to get RGB565 buffer */
34697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* We transform text effect into framing effect from buffer */
34707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->xVSS.pTextRenderingFct != M4OSA_NULL )
34717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
34727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*FB: add UTF convertion for text buffer*/
34737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_Void *pDecodedPath = M4OSA_NULL;
34747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef DECODE_GIF_ON_SAVING
34757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
34767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_FramingContext *framingCtx;
34777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
34787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#else
34797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
34807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_FramingStruct *framingCtx;
34817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
34827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*DECODE_GIF_ON_SAVING*/
34837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
34847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef DECODE_GIF_ON_SAVING
34857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
34867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx = (M4xVSS_FramingContext
3487694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    *)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_FramingContext),
34887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4VS, (M4OSA_Char *)"Context of the framing effect");
34897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
34907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( framingCtx == M4OSA_NULL )
34917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
34927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
34937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
34947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
34957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
34967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
34977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_ALLOC;
34987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
34997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx = M4OSA_NULL;
35007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx_last = M4OSA_NULL;
35017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->pSPSContext = M4OSA_NULL;
35027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->outputVideoSize =
35037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->xVSS.outputVideoSize;
35047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->topleft_x =
35057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.topleft_x;
35067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->topleft_y =
35077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.topleft_y;
35087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->bEffectResize =
35097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.bResize;
35107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->pEffectFilePath =
35117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.pFramingFilePath;
35127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->pFileReadPtr = xVSS_context->pFileReadPtr;
35137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->pFileWritePtr = xVSS_context->pFileWritePtr;
35147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->effectDuration =
35157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].uiDuration;
35167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->b_IsFileGif = M4OSA_FALSE;
35177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->b_animated = M4OSA_FALSE;
35187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->alphaBlendingStruct = M4OSA_NULL;
35197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
35207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Save framing structure associated with corresponding effect */
35217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->Effects[j].pExtVideoEffectFctCtxt =
35227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx;
35237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
35247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx = (M4xVSS_FramingStruct
3525694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    *)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_FramingStruct),
35267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4VS, (M4OSA_Char *)"Context of the framing effect");
35277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
35287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( framingCtx->aFramingCtx == M4OSA_NULL )
35297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
35307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
35317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
35327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
35337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
35347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
35357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_ALLOC;
35367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
35377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
35387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->topleft_x =
35397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.topleft_x;
35407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->topleft_y =
35417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.topleft_y;
35427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
35437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* BugFix 1.2.0: Leak when decoding error */
35447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->FramingRgb = M4OSA_NULL;
35457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->FramingYuv = M4OSA_NULL;
35467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->pNext = framingCtx->aFramingCtx;
35477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->pCurrent = framingCtx->aFramingCtx;
35487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->duration = 0;
35497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->previousClipTime = -1;
35507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
35517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*Alpha blending*/
35527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*Check if the alpha blending parameters are corrects*/
3553d67e9da63323d965760337913f86de28024531a4Basavapatna Dattaguru                if( pSettings->Effects[j].xVSS.uialphaBlendingFadeInTime > 100 )
35547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
35557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pSettings->Effects[j].xVSS.uialphaBlendingFadeInTime = 0;
35567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
35577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3558d67e9da63323d965760337913f86de28024531a4Basavapatna Dattaguru                if( pSettings->Effects[j].xVSS.uialphaBlendingFadeOutTime > 100 )
35597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
35607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pSettings->Effects[j].xVSS.uialphaBlendingFadeOutTime = 0;
35617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
35627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3563d67e9da63323d965760337913f86de28024531a4Basavapatna Dattaguru                if( pSettings->Effects[j].xVSS.uialphaBlendingEnd > 100 )
35647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
35657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pSettings->Effects[j].xVSS.uialphaBlendingEnd = 100;
35667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
35677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3568d67e9da63323d965760337913f86de28024531a4Basavapatna Dattaguru                if( pSettings->Effects[j].xVSS.uialphaBlendingMiddle > 100 )
35697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
35707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pSettings->Effects[j].xVSS.uialphaBlendingMiddle = 100;
35717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
35727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
3573d67e9da63323d965760337913f86de28024531a4Basavapatna Dattaguru                if( pSettings->Effects[j].xVSS.uialphaBlendingStart > 100 )
35747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
35757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pSettings->Effects[j].xVSS.uialphaBlendingStart = 100;
35767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
35777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
35787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( pSettings->Effects[j].xVSS.uialphaBlendingFadeInTime > 0
35797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    || pSettings->Effects[j].xVSS.uialphaBlendingFadeOutTime
35807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    > 0 )
35817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
35827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*Allocate the alpha blending structure*/
35837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->alphaBlendingStruct =
3584694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        (M4xVSS_internalEffectsAlphaBlending *)M4OSA_32bitAlignedMalloc(
35857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        sizeof(M4xVSS_internalEffectsAlphaBlending),
35867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4VS, (M4OSA_Char *)"alpha blending structure");
35877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
35887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( framingCtx->alphaBlendingStruct == M4OSA_NULL )
35897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
35907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_0(
35917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "Allocation error in M4xVSS_SendCommand");
35927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4xVSS_freeCommand(xVSS_context);
35937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return M4ERR_ALLOC;
35947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
35957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*Fill the alpha blending structure*/
35967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->alphaBlendingStruct->m_fadeInTime =
35977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pSettings->Effects[j].xVSS.uialphaBlendingFadeInTime;
35987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->alphaBlendingStruct->m_fadeOutTime =
35997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pSettings->Effects[j].xVSS.uialphaBlendingFadeOutTime;
36007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->alphaBlendingStruct->m_end =
36017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pSettings->Effects[j].xVSS.uialphaBlendingEnd;
36027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->alphaBlendingStruct->m_middle =
36037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pSettings->Effects[j].xVSS.uialphaBlendingMiddle;
36047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->alphaBlendingStruct->m_start =
36057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pSettings->Effects[j].xVSS.uialphaBlendingStart;
36067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
36077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( pSettings->Effects[j].xVSS.uialphaBlendingFadeInTime
36087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        + pSettings->Effects[j].xVSS.uialphaBlendingFadeOutTime
36097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            > 100 )
36107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
36117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        framingCtx->alphaBlendingStruct->m_fadeOutTime =
36127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            100 - framingCtx->alphaBlendingStruct->m_fadeInTime;
36137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
36147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
36157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#else
36167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
36177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx = (M4xVSS_FramingStruct
3618694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    *)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_FramingStruct),
36197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4VS, (M4OSA_Char
36207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    *)"Context of the framing effect (for text)");
36217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
36227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( framingCtx == M4OSA_NULL )
36237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
36247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
36257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
36267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
36277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
36287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
36297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_ALLOC;
36307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
36317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
36327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->topleft_x =
36337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.topleft_x;
36347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->topleft_y =
36357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.topleft_y;
36367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->FramingRgb = M4OSA_NULL;
36377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
36387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* BugFix 1.2.0: Leak when decoding error */
36397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->FramingYuv = M4OSA_NULL;
36407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->pNext = framingCtx;
36417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
36427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
36437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Save framing structure associated with corresponding effect */
36447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
36457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->Effects[j].pExtVideoEffectFctCtxt =
36467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx;
36477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
36487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* FB: changes for Video Artist: memcopy pTextBuffer so that it can be changed
36497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                after a complete analysis*/
36507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( pSettings->Effects[j].xVSS.pTextBuffer == M4OSA_NULL )
36517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
36527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("M4xVSS_SendCommand: pTextBuffer is null");
36537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
36547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_PARAMETER;
36557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
36567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
36577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*Convert text buffer into customer format before being used*/
36587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**
36597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                * UTF conversion: convert into the customer format, before being used*/
36607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pDecodedPath = pSettings->Effects[j].xVSS.pTextBuffer;
36617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->Effects[j].xVSS.textBufferSize =
36627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pSettings->Effects[j].xVSS.textBufferSize;
36637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
36647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct
36657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    != M4OSA_NULL && xVSS_context->
36667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    UTFConversionContext.pTempOutConversionBuffer
36677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    != M4OSA_NULL )
36687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
36697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err = M4xVSS_internalConvertFromUTF8(xVSS_context,
36707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        (M4OSA_Void *)pSettings->
36717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        Effects[j].xVSS.pTextBuffer,
36727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        (M4OSA_Void *)xVSS_context->
36737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        UTFConversionContext.pTempOutConversionBuffer,
36747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        &length);
36757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
36767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( err != M4NO_ERROR )
36777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
36787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1(
36797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "M4xVSS_SendCommand: M4xVSS_internalConvertFromUTF8 returns err: 0x%x",
36807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err);
36817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Free Send command */
36827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4xVSS_freeCommand(xVSS_context);
36837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return err;
36847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
36857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pDecodedPath = xVSS_context->
36867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        UTFConversionContext.pTempOutConversionBuffer;
36877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.textBufferSize =
36887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        length;
36897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
36907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**
36917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                * End of the UTF conversion, use the converted file path*/
36927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
36937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->
3694694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    Effects[j].xVSS.pTextBuffer = M4OSA_32bitAlignedMalloc(
36957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.textBufferSize + 1,
36967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4VS, (M4OSA_Char *)"Local text buffer effect");
36977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
36987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                //xVSS_context->pSettings->Effects[j].xVSS.pTextBuffer =
3699694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                // M4OSA_32bitAlignedMalloc(strlen(pSettings->Effects[j].xVSS.pTextBuffer)+1,
37007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                // M4VS, "Local text buffer effect");
37017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pSettings->Effects[j].xVSS.pTextBuffer
37027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4OSA_NULL )
37037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
37047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
37057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
37067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
37077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
37087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
37097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_ALLOC;
37107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
37117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
37127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( pSettings->Effects[j].xVSS.pTextBuffer != M4OSA_NULL )
37137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
371432ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                    //memcpy((M4OSA_MemAddr8)xVSS_context->pSettings->Effects[j]
37157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    //.xVSS.pTextBuffer, (M4OSA_MemAddr8)pSettings->Effects[j].xVSS.pTextBuffer,
371632ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                    // strlen(pSettings->Effects[j].xVSS.pTextBuffer)+1);
371732ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                    memcpy((void *)xVSS_context->pSettings->
37187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        Effects[j].xVSS.pTextBuffer,
371932ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                        (void *)pDecodedPath, xVSS_context->pSettings->
37207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        Effects[j].xVSS.textBufferSize + 1);
37217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
37227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
37237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /*Allocate the text RGB buffer*/
37247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->FramingRgb =
3725694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    (M4VIFI_ImagePlane *)M4OSA_32bitAlignedMalloc(sizeof(M4VIFI_ImagePlane),
37267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4VS,
37277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (M4OSA_Char *)"RGB structure for the text effect");
37287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
37297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( framingCtx->aFramingCtx->FramingRgb == M4OSA_NULL )
37307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
37317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
37327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
37337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
37347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
37357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
37367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_ALLOC;
37377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
37387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
37397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pSettings->Effects[j].xVSS.uiTextBufferWidth
37407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == 0 || xVSS_context->pSettings->
37417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    Effects[j].xVSS.uiTextBufferHeight == 0 )
37427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
37437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0(
37447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        "M4xVSS_SendCommand: text plane width and height are not defined");
37457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
37467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
37477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
37487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
37497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_PARAMETER;
37507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
37517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Allocate input RGB text buffer and force it to even size to avoid errors in
37527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                 YUV conversion */
37537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->FramingRgb->u_width =
37547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->
37557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    Effects[j].xVSS.uiTextBufferWidth & ~1;
37567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->FramingRgb->u_height =
37577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->
37587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    Effects[j].xVSS.uiTextBufferHeight & ~1;
37597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->FramingRgb->u_stride =
37607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    2 * framingCtx->aFramingCtx->FramingRgb->u_width;
37617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->FramingRgb->u_topleft = 0;
37627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                framingCtx->aFramingCtx->FramingRgb->pac_data =
3763694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    (M4VIFI_UInt8 *)M4OSA_32bitAlignedMalloc(
37647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    framingCtx->aFramingCtx->FramingRgb->u_height
37657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    * framingCtx->aFramingCtx->FramingRgb->u_stride,
37667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4VS, (M4OSA_Char *)"Text RGB plane->pac_data");
37677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
37687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( framingCtx->aFramingCtx->FramingRgb->pac_data
37697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4OSA_NULL )
37707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
37717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
37727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*FB: to avoid leaks when there is an error in the send command*/
37737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Send command */
37747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
37757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**/
37767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_ALLOC;
37777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
37787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
37797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef DECODE_GIF_ON_SAVING
37807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**/
37817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Call text rendering function */
37827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
37837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                err = xVSS_context->pSettings->xVSS.pTextRenderingFct(
37847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.pRenderingData,
37857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->
37867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    Effects[j].xVSS.pTextBuffer,
37877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->
37887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    Effects[j].xVSS.textBufferSize,
37897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    &(framingCtx->aFramingCtx->FramingRgb));
37907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
37917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( err != M4NO_ERROR )
37927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
37937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Text rendering external function failed\n");
37947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
37957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return err;
37967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
37977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
37987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Check that RGB buffer is set */
37997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( framingCtx->aFramingCtx->FramingRgb == M4OSA_NULL )
38007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
38017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0(
38027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        "Text rendering function did not set RGB buffer correctly !");
38037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
38047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_PARAMETER;
38057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
38067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
38077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Convert RGB plane to YUV420 and update framing structure */
38087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                err = M4xVSS_internalConvertRGBtoYUV(framingCtx->aFramingCtx);
38097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
38107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( err != M4NO_ERROR )
38117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
38127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_1(
38137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        "M4xVSS_sendCommand: error when converting RGB to YUV: 0w%x",
38147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err);
38157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
38167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return err;
38177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
38187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
38197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#else
38207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**/
38217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Call text rendering function */
38227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
38237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                err = xVSS_context->pSettings->xVSS.pTextRenderingFct(
38247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.pRenderingData,
38257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->
38267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    Effects[j].xVSS.pTextBuffer,
38277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->
38287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    Effects[j].xVSS.textBufferSize,
38297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    &(framingCtx->FramingRgb));
38307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
38317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( err != M4NO_ERROR )
38327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
38337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Text rendering external function failed\n");
38347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
38357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return err;
38367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
38377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
38387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Check that RGB buffer is set */
38397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( framingCtx->FramingRgb == M4OSA_NULL )
38407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
38417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0(
38427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        "Text rendering function did not set RGB buffer correctly !");
38437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
38447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_PARAMETER;
38457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
38467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
38477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Convert RGB plane to YUV420 and update framing structure */
38487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                err = M4xVSS_internalConvertRGBtoYUV(framingCtx);
38497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
38507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( err != M4NO_ERROR )
38517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
38527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_1(
38537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        "M4xVSS_sendCommand: error when converting RGB to YUV: 0w%x",
38547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err);
38557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_freeCommand(xVSS_context);
38567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return err;
38577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
38587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
38597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*DECODE_GIF_ON_SAVING*/
38607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
38617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Change internally effect type from "text" to framing */
38627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
38637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->Effects[j].VideoEffectType =
38647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_kVideoEffectType_Framing;
38657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->Effects[j].xVSS.bResize = M4OSA_FALSE;
38667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
38677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else
38687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
38697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_0(
38707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    "M4xVSS_sendCommand: No text rendering function set !!");
38717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_freeCommand(xVSS_context);
38727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return M4ERR_PARAMETER;
38737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
38747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
38757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
38767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Allocate the structure to store the data needed by the Fifties effect */
38777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        else if( xVSS_context->pSettings->Effects[j].VideoEffectType
38787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4xVSS_kVideoEffectType_Fifties )
38797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
38807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_FiftiesStruct *fiftiesCtx;
38817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
38827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Check the expected frame rate for the fifties effect (must be above 0) */
38837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( 0 == xVSS_context->pSettings->
38847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                Effects[j].xVSS.uiFiftiesOutFrameRate )
38857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
38867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_0(
38877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    "The frame rate for the fifties effect must be greater than 0 !");
38887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_freeCommand(xVSS_context);
38897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return M4ERR_PARAMETER;
38907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
38917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
38927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            fiftiesCtx = (M4xVSS_FiftiesStruct
3893694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                *)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_FiftiesStruct),
38947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4VS, (M4OSA_Char *)"Context of the fifties effect");
38957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
38967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( fiftiesCtx == M4OSA_NULL )
38977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
38987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
38997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Free Send command */
39007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_freeCommand(xVSS_context);
39017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return M4ERR_ALLOC;
39027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
39037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
39047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            fiftiesCtx->previousClipTime = -1;
39057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            fiftiesCtx->fiftiesEffectDuration = 1000 / xVSS_context->pSettings->
39067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                Effects[j].xVSS.uiFiftiesOutFrameRate;
39077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            fiftiesCtx->shiftRandomValue = 0;
39087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            fiftiesCtx->stripeRandomValue = 0;
39097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
39107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Save the structure associated with corresponding effect */
39117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->Effects[j].pExtVideoEffectFctCtxt =
39127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                fiftiesCtx;
39137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
39147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
39157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Allocate the structure to store the data needed by the Color effect */
39167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        else if( xVSS_context->pSettings->Effects[j].VideoEffectType
39177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4xVSS_kVideoEffectType_ColorRGB16
39187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            || xVSS_context->pSettings->Effects[j].VideoEffectType
39197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4xVSS_kVideoEffectType_BlackAndWhite
39207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            || xVSS_context->pSettings->Effects[j].VideoEffectType
39217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4xVSS_kVideoEffectType_Pink
39227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            || xVSS_context->pSettings->Effects[j].VideoEffectType
39237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4xVSS_kVideoEffectType_Green
39247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            || xVSS_context->pSettings->Effects[j].VideoEffectType
39257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4xVSS_kVideoEffectType_Sepia
39267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            || xVSS_context->pSettings->Effects[j].VideoEffectType
39277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4xVSS_kVideoEffectType_Negative
39287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            || xVSS_context->pSettings->Effects[j].VideoEffectType
39297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4xVSS_kVideoEffectType_Gradient )
39307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
39317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_ColorStruct *ColorCtx;
39327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
39337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            ColorCtx =
3934694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                (M4xVSS_ColorStruct *)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_ColorStruct),
39357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4VS, (M4OSA_Char *)"Context of the color effect");
39367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
39377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( ColorCtx == M4OSA_NULL )
39387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
39397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
39407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Free Send command */
39417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_freeCommand(xVSS_context);
39427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return M4ERR_ALLOC;
39437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
39447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
39457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            ColorCtx->colorEffectType =
39467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->Effects[j].VideoEffectType;
39477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
39487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->Effects[j].VideoEffectType
39497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                == M4xVSS_kVideoEffectType_ColorRGB16
39507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                || xVSS_context->pSettings->Effects[j].VideoEffectType
39517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                == M4xVSS_kVideoEffectType_Gradient )
39527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
39537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                ColorCtx->rgb16ColorData =
39547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->Effects[j].xVSS.uiRgb16InputColor;
39557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
39567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else
39577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
39587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                ColorCtx->rgb16ColorData = 0;
39597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
39607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
39617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Save the structure associated with corresponding effect */
39627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->Effects[j].pExtVideoEffectFctCtxt =
39637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                ColorCtx;
39647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
39657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
39667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
39677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**********************************
39687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    Background music registering
39697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    **********************************/
39707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( pSettings->xVSS.pBGMtrack != M4OSA_NULL && isNewBGM == M4OSA_TRUE )
39717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
39727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef PREVIEW_ENABLED
39737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
39747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4xVSS_MCS_params *pParams;
39757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_Char *out_pcm;
39767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /*UTF conversion support*/
39777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_Void *pDecodedPath = M4OSA_NULL;
39787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
39797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif
39807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
39817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* We save output file pointer, because we will need to use it when saving audio mixed
39827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         file (last save step) */
39837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
39847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pOutputFile = xVSS_context->pSettings->pOutputFile;
39857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pTemporaryFile = xVSS_context->pSettings->pTemporaryFile;
39867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
39877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* If a previous BGM has already been registered, delete it */
39887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Here can be implemented test to know if the same BGM is registered */
39897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->xVSS.pBGMtrack != M4OSA_NULL )
39907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
39917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->xVSS.pBGMtrack->pFile != M4OSA_NULL )
39927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
3993694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                free(xVSS_context->pSettings->xVSS.pBGMtrack->
39947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pFile);
39957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->xVSS.pBGMtrack->pFile = M4OSA_NULL;
39967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
3997694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            free(xVSS_context->pSettings->xVSS.pBGMtrack);
39987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->xVSS.pBGMtrack = M4OSA_NULL;
39997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
40007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
40017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Allocate BGM */
40027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->xVSS.pBGMtrack =
4003694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            (M4xVSS_BGMSettings *)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_BGMSettings), M4VS,
40047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (M4OSA_Char *)"xVSS_context->pSettings->xVSS.pBGMtrack");
40057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
40067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->xVSS.pBGMtrack == M4OSA_NULL )
40077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
40087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
40097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
40107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
40117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
40127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
40137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Copy input structure to our structure */
401432ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        memcpy((void *)xVSS_context->pSettings->xVSS.pBGMtrack,
401532ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu            (void *)pSettings->xVSS.pBGMtrack,
40167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            sizeof(M4xVSS_BGMSettings));
40177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Allocate file name, and copy file name buffer to our structure */
40187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->xVSS.pBGMtrack->pFile =
4019694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            M4OSA_32bitAlignedMalloc((strlen(pSettings->xVSS.pBGMtrack->pFile)
40207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            + 1), M4VS, (M4OSA_Char *)"xVSS BGM file path");
40217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
40227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->xVSS.pBGMtrack->pFile == M4OSA_NULL )
40237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
40247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
40257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
40267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
40277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
402832ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        memcpy((void *)xVSS_context->pSettings->xVSS.pBGMtrack->pFile,
4029947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma            (void *)pSettings->xVSS.pBGMtrack->pFile,
4030947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma            strlen(pSettings->xVSS.pBGMtrack->pFile) + 1);
40317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
40327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef PREVIEW_ENABLED
40337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Decode BGM track to pcm output file */
40347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
40357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams =
4036694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            (M4xVSS_MCS_params *)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_MCS_params), M4VS,
40377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (M4OSA_Char *)"Element of MCS Params (for BGM)");
40387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
40397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( pParams == M4OSA_NULL )
40407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
40417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
40427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0(
40437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                "M4xVSS_sendCommand: Problem when allocating one element MCS Params");
40447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
40457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
40467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
40477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Initialize the pointers in case of problem (PR 2273) */
40487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams->pFileIn = M4OSA_NULL;
40497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams->pFileOut = M4OSA_NULL;
40507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams->pFileTemp = M4OSA_NULL;
40517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams->pNext = M4OSA_NULL;
40527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams->BeginCutTime = 0;
40537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams->EndCutTime = 0;
40547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
40557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pMCSparamsList
40567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4OSA_NULL ) /* Means it is the first element of the list */
40577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
40587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Initialize the xVSS context with the first element of the list */
40597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pMCSparamsList = pParams;
40607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
40617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
40627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        else
40637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
40647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_MCS_params *pParams_temp = xVSS_context->pMCSparamsList;
40657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_MCS_params *pParams_prev = M4OSA_NULL;
40667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
40677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Parse MCS params chained list to find and delete BGM element */
40687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            while( pParams_temp != M4OSA_NULL )
40697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
40707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( pParams_temp->isBGM == M4OSA_TRUE )
40717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
40727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Remove this element */
40737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( pParams_temp->pFileIn != M4OSA_NULL )
40747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
4075694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(pParams_temp->pFileIn);
40767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams_temp->pFileIn = M4OSA_NULL;
40777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
40787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
40797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( pParams_temp->pFileOut != M4OSA_NULL )
40807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
40817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Remove PCM temporary file */
4082947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                        remove((const char *)pParams_temp->pFileOut);
4083694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(pParams_temp->pFileOut);
40847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams_temp->pFileOut = M4OSA_NULL;
40857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
40867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Chain previous element with next element = remove BGM chained
40877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                         list element */
40887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( pParams_prev != M4OSA_NULL )
40897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
40907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams_prev->pNext = pParams_temp->pNext;
40917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
40927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* If current pointer is the first of the chained list and next pointer of
40937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    the chained list is NULL */
40947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* it means that there was only one element in the list */
40957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* => we put the context variable to NULL to reaffect the first chained list
40967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                     element */
40977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( pParams_temp == xVSS_context->pMCSparamsList
40987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        && pParams_temp->pNext == M4OSA_NULL )
40997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
41007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pMCSparamsList = M4OSA_NULL;
41017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
41027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* In that case, BGM pointer is the first one, but there are others elements
41037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                     after it */
41047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* So, we need to change first chained list element */
41057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    else if( pParams_temp->pNext != M4OSA_NULL
41067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        && pParams_prev == M4OSA_NULL )
41077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
41087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pMCSparamsList = pParams_temp->pNext;
41097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
41107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
41117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( pParams_temp->pNext != M4OSA_NULL )
41127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
41137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams_prev = pParams_temp->pNext;
4114694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(pParams_temp);
41157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams_temp = M4OSA_NULL;
41167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams_temp = pParams_prev;
41177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
41187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    else
41197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
4120694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(pParams_temp);
41217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams_temp = M4OSA_NULL;
41227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
41237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
41247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else
41257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
41267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pParams_prev = pParams_temp;
41277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pParams_temp = pParams_temp->pNext;
41287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
41297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
41307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* We need to initialize the last element of the chained list to be able to add new
41317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi             BGM element */
41327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pMCS_last = pParams_prev;
41337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
41347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pMCSparamsList == M4OSA_NULL )
41357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
41367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* In that case, it means that there was only one element in the chained list */
41377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* So, we need to save the new params*/
41387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pMCSparamsList = pParams;
41397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
41407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else
41417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
41427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Update next pointer of the previous last element of the chain */
41437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pMCS_last->pNext = pParams;
41447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
41457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
41467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
41477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
41487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Fill the last M4xVSS_MCS_params element */
41497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams->InputFileType =
41507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->xVSS.pBGMtrack->FileType;
41517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams->OutputFileType = M4VIDEOEDITING_kFileType_PCM;
41527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams->OutputVideoFormat = M4VIDEOEDITING_kNoneVideo;
41537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams->OutputVideoFrameSize = M4VIDEOEDITING_kQCIF;
41547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams->OutputVideoFrameRate = M4VIDEOEDITING_k15_FPS;
41557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
41567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->xVSS.outputAudioFormat
41577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4VIDEOEDITING_kAAC )
41587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
41597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pParams->OutputAudioFormat = M4VIDEOEDITING_kAAC;
41607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pParams->OutputAudioSamplingFrequency = M4VIDEOEDITING_kDefault_ASF;
41617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
41627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*FB: VAL CR P4ME00003076
41637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            The output audio bitrate in the AAC case is now directly given by the user*/
41647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*Check if the audio bitrate is correctly defined*/
41657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*Mono
41667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            MCS values for AAC Mono are min: 16kbps and max: 192 kbps*/
41677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->xVSS.outputAudioBitrate
41687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                >= M4VIDEOEDITING_k16_KBPS
41697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                && xVSS_context->pSettings->xVSS.outputAudioBitrate
41707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                <= M4VIDEOEDITING_k192_KBPS
41717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                && xVSS_context->pSettings->xVSS.bAudioMono == M4OSA_TRUE )
41727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
41737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->OutputAudioBitrate =
41747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->xVSS.outputAudioBitrate;
41757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
41767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*Stereo
41777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            MCS values for AAC Mono are min: 32kbps and max: 192 kbps*/
41787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else if( xVSS_context->pSettings->xVSS.outputAudioBitrate
41797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                >= M4VIDEOEDITING_k32_KBPS
41807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                && xVSS_context->pSettings->xVSS.outputAudioBitrate
41817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                <= M4VIDEOEDITING_k192_KBPS
41827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                && xVSS_context->pSettings->xVSS.bAudioMono == M4OSA_FALSE )
41837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
41847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->OutputAudioBitrate =
41857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->xVSS.outputAudioBitrate;
41867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
41877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else
41887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
41897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams->OutputAudioBitrate = M4VIDEOEDITING_k32_KBPS;
41907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
41917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pParams->bAudioMono = xVSS_context->pSettings->xVSS.bAudioMono;
41927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
41937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        else
41947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
41957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pParams->OutputAudioFormat = M4VIDEOEDITING_kAMR_NB;
41967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pParams->OutputAudioSamplingFrequency = M4VIDEOEDITING_kDefault_ASF;
41977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pParams->OutputAudioBitrate = M4VIDEOEDITING_k12_2_KBPS;
41987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pParams->bAudioMono = M4OSA_TRUE;
41997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
42007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams->OutputVideoBitrate = M4VIDEOEDITING_kUndefinedBitrate;
42017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
42027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Prepare output filename */
42037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* 21 is the size of "preview_16000_2.pcm" + \0 */
42047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        out_pcm =
4205694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            (M4OSA_Char *)M4OSA_32bitAlignedMalloc(strlen(xVSS_context->pTempPath)
42067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            + 21, M4VS, (M4OSA_Char *)"Temp char* for pcmPreviewFile");
42077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
42087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( out_pcm == M4OSA_NULL )
42097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
42107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
42117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_Init");
42127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
42137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
42147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
42157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Copy temporary path to final preview path string */
42167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_chrNCopy(out_pcm, xVSS_context->pTempPath,
4217947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma            strlen(xVSS_context->pTempPath) + 1);
42187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
42197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Depending of the output sample frequency and nb of channels, we construct preview
42207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        output filename */
42217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->xVSS.outputAudioFormat
42227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4VIDEOEDITING_kAAC )
42237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
42247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Construct output temporary PCM filename */
42257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->xVSS.bAudioMono == M4OSA_TRUE )
42267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
4227947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                strncat((char *)out_pcm, (const char *)"preview_16000_1.pcm\0",
42287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    20);
42297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
42307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            else
42317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
4232947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                strncat((char *)out_pcm, (const char *)"preview_16000_2.pcm\0",
42337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    20);
42347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
42357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
42367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        else if( xVSS_context->pSettings->xVSS.outputAudioFormat
42377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4VIDEOEDITING_kAMR_NB )
42387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
42397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Construct output temporary PCM filename */
4240947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma            strncat((char *)out_pcm, (const char *)"preview_08000_1.pcm\0", 20);
42417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
42427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        else
42437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
42447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( out_pcm != M4OSA_NULL )
42457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
4246694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                free(out_pcm);
42477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                out_pcm = M4OSA_NULL;
42487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
42497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
42507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Bad audio output format \n");
42517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_PARAMETER;
42527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
42537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
42547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pcmPreviewFile = out_pcm;
42557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
42567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /**
42577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        * UTF conversion: convert into the customer format, before being used*/
42587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pDecodedPath = out_pcm;
4259947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma        length = strlen(pDecodedPath);
42607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
42617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct != M4OSA_NULL
42627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            && xVSS_context->UTFConversionContext.pTempOutConversionBuffer
42637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            != M4OSA_NULL )
42647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
42657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            err = M4xVSS_internalConvertFromUTF8(xVSS_context,
42667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                (M4OSA_Void *)out_pcm, (M4OSA_Void *)xVSS_context->
42677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                UTFConversionContext.pTempOutConversionBuffer, &length);
42687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
42697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( err != M4NO_ERROR )
42707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
42717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_1(
42727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    "M4xVSS_SendCommand: M4xVSS_internalConvertFromUTF8 returns err: 0x%x",
42737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err);
42747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Free Send command */
42757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_freeCommand(xVSS_context);
42767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return err;
42777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
42787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pDecodedPath =
42797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->UTFConversionContext.pTempOutConversionBuffer;
42807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
42817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
42827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /**
42837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        * End of the UTF conversion, use the converted file path*/
42847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pcmPreviewFile =
4285694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            (M4OSA_Void *)M4OSA_32bitAlignedMalloc(length + 1, M4VS,
42867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (M4OSA_Char *)"pcmPreviewFile");
42877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
42887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pcmPreviewFile == M4OSA_NULL )
42897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
42907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
4291694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            free(out_pcm);
42927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            out_pcm = M4OSA_NULL;
42937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*FB: to avoid leaks when there is an error in the send command*/
42947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Free Send command */
42957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
42967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /**/
42977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
42987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
429932ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        memcpy((void *)xVSS_context->pcmPreviewFile, (void *)pDecodedPath, length + 1);
43007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
43017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Free temporary output filename */
43027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( out_pcm != M4OSA_NULL )
43037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
4304694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            free(out_pcm);
43057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            out_pcm = M4OSA_NULL;
43067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
43077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
4308694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu        pParams->pFileOut = M4OSA_32bitAlignedMalloc((length + 1), M4VS,
43097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (M4OSA_Char *)"MCS BGM Params: file out");
43107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
43117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( pParams->pFileOut == M4OSA_NULL )
43127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
43137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
43147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
43157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
43167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
43177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams->pFileTemp = M4OSA_NULL;
43187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
431932ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        memcpy((void *)pParams->pFileOut,(void *) xVSS_context->pcmPreviewFile,
43207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (length + 1)); /* Copy output file path */
43217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
43227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /**
43237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        * UTF conversion: convert into the customer format, before being used*/
43247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
43257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pDecodedPath = xVSS_context->pSettings->xVSS.pBGMtrack->pFile;
4326947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma        length = strlen(pDecodedPath);
43277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
43287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct != M4OSA_NULL
43297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            && xVSS_context->UTFConversionContext.pTempOutConversionBuffer
43307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            != M4OSA_NULL )
43317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
43327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            err = M4xVSS_internalConvertFromUTF8(xVSS_context,
43337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                (M4OSA_Void *)xVSS_context->pSettings->xVSS.pBGMtrack->
43347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pFile, (M4OSA_Void *)xVSS_context->
43357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                UTFConversionContext.pTempOutConversionBuffer, &length);
43367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
43377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( err != M4NO_ERROR )
43387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
43397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_1(
43407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    "M4xVSS_SendCommand: M4xVSS_internalConvertFromUTF8 returns err: 0x%x",
43417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err);
43427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Free Send command */
43437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4xVSS_freeCommand(xVSS_context);
43447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return err;
43457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
43467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pDecodedPath =
43477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->UTFConversionContext.pTempOutConversionBuffer;
43487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
43497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
43507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /**
43517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        * End of the UTF conversion, use the converted file path*/
4352694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu        pParams->pFileIn = (M4OSA_Void *)M4OSA_32bitAlignedMalloc((length + 1), M4VS,
43537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (M4OSA_Char *)"MCS BGM Params: file in");
43547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
43557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( pParams->pFileIn == M4OSA_NULL )
43567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
43577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
43587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SendCommand");
43597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
43607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
436132ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        memcpy((void *)pParams->pFileIn, (void *)pDecodedPath,
43627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (length + 1)); /* Copy input file path */
43637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
43647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams->isBGM = M4OSA_TRUE;
43657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pParams->isCreated = M4OSA_FALSE;
43667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->nbStepTotal++;
43677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        bIsTranscoding = M4OSA_TRUE;
43687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* PREVIEW_ENABLED */
43697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
43707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
43717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    else if( pSettings->xVSS.pBGMtrack != M4OSA_NULL
43727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        && isNewBGM == M4OSA_FALSE )
43737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
43747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef PREVIEW_ENABLED
43757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* BGM is the same as previously, no need to redecode audio */
43767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Need to update MCS params chained list, to signal M4xVSS_step function to skip
43777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        BGM decoding */
43787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
43797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4xVSS_MCS_params *pParams_temp = xVSS_context->pMCSparamsList;
43807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4xVSS_MCS_params *pParams_prev = M4OSA_NULL;
43817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
43827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* PREVIEW_ENABLED */
43837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* We save output file pointer, because we will need to use it when saving audio
43847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         mixed file (last save step) */
43857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
43867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pOutputFile = xVSS_context->pSettings->pOutputFile;
43877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pTemporaryFile = xVSS_context->pSettings->pTemporaryFile;
43887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
43897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Re-write BGM settings in case they have changed between two sendCommand */
43907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->xVSS.pBGMtrack->uiAddCts =
43917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pSettings->xVSS.pBGMtrack->uiAddCts;
43927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->xVSS.pBGMtrack->uiAddVolume =
43937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pSettings->xVSS.pBGMtrack->uiAddVolume;
43947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->xVSS.pBGMtrack->uiBeginLoop =
43957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pSettings->xVSS.pBGMtrack->uiBeginLoop;
43967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->xVSS.pBGMtrack->uiEndLoop =
43977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pSettings->xVSS.pBGMtrack->uiEndLoop;
43987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
43997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef PREVIEW_ENABLED
44007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Parse MCS params chained list to find and delete BGM element */
44017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
44027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        while( pParams_temp != M4OSA_NULL )
44037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
44047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( pParams_temp->isBGM == M4OSA_TRUE )
44057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
44067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams_temp->isCreated = M4OSA_TRUE;
44077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
44087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
44097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pParams_prev = pParams_temp;
44107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pParams_temp = pParams_temp->pNext;
44117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
44127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
44137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* PREVIEW_ENABLED */
44147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
44157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE2_0("M4xVSS_SendCommand has been recalled, BGM is the same");
44167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
44177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    else
44187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
44197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("No BGM in this xVSS command");
44207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
44217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->xVSS.pBGMtrack != M4OSA_NULL )
44227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
44237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef PREVIEW_ENABLED
44247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Need to remove MCS previous params chained list */
44257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
44267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_MCS_params *pParams_temp = xVSS_context->pMCSparamsList;
44277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_MCS_params *pParams_prev = M4OSA_NULL;
44287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
44297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Parse MCS params chained list to find and delete BGM element */
44307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            while( pParams_temp != M4OSA_NULL )
44317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
44327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( pParams_temp->isBGM == M4OSA_TRUE )
44337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
44347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Remove this element */
44357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( pParams_temp->pFileIn != M4OSA_NULL )
44367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
4437694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(pParams_temp->pFileIn);
44387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams_temp->pFileIn = M4OSA_NULL;
44397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
44407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
44417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( pParams_temp->pFileOut != M4OSA_NULL )
44427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
4443694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(pParams_temp->pFileOut);
44447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams_temp->pFileOut = M4OSA_NULL;
44457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
44467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Chain previous element with next element */
44477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( pParams_prev != M4OSA_NULL )
44487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
44497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams_prev->pNext = pParams_temp->pNext;
44507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
44517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* If current pointer is the first of the chained list and next pointer
44527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                     of the chained list is NULL */
44537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* it means that there was only one element in the list */
44547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* => we put the context variable to NULL */
44557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( pParams_temp == xVSS_context->pMCSparamsList
44567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        && pParams_temp->pNext == M4OSA_NULL )
44577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
4458694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(pParams_temp);
44597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pMCSparamsList = M4OSA_NULL;
44607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
44617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* In that case, BGM pointer is the first one, but there are others
44627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                     elements after it */
44637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* So, we need to change first chained list element */
44647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    else if( pParams_temp->pNext != M4OSA_NULL )
44657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
44667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pMCSparamsList = pParams_temp->pNext;
4467694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(pParams_temp);
44687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams_temp = M4OSA_NULL;
44697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
44707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* In all other cases, nothing else to do except freeing the chained
44717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    list element */
44727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    else
44737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
4474694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(pParams_temp);
44757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pParams_temp = M4OSA_NULL;
44767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
44777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    break;
44787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
44797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams_prev = pParams_temp;
44807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pParams_temp = pParams_temp->pNext;
44817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
44827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
44837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* PREVIEW_ENABLED */
44847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Here, we unallocate all BGM components and put xVSS_context->pSettings->
44857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS.pBGMtrack to NULL */
44867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
44877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->xVSS.pBGMtrack != M4OSA_NULL )
44887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
44897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pSettings->xVSS.pBGMtrack->pFile
44907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    != M4OSA_NULL )
44917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
4492694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    free(xVSS_context->pSettings->xVSS.pBGMtrack->pFile);
44937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->xVSS.pBGMtrack->pFile = M4OSA_NULL;
44947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
4495694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                free(xVSS_context->pSettings->xVSS.pBGMtrack);
44967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->xVSS.pBGMtrack = M4OSA_NULL;
44977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
44987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
44997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
45007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
45017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Changed to be able to mix with video only files -> in case no master clip is found
45027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    (i.e only JPG input or video only input) */
45037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* and if there is a BGM, we force the added volume to 100 (i.e replace audio) */
45047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
45057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( masterClip == -1
45067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        && xVSS_context->pSettings->xVSS.pBGMtrack != M4OSA_NULL )
45077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
45087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* In that case, it means that no input 3GP file has a video track.
45097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        Therefore, if a mixing is asked, it will fail. Thus, we force replace audio. */
45107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->xVSS.pBGMtrack->uiAddVolume = 100;
45117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
45127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
45137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Save clip number to know if a M4xVSS_sendCommand has already been called */
45147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->previousClipNumber = xVSS_context->pSettings->uiClipNumber;
45157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
45167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Change state */
45177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->m_state = M4xVSS_kStateAnalyzing;
45187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
45197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* In case of MMS use case, we compute here the max video bitrate */
45207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* In case of too low bitrate, a specific warning is returned */
45217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->pSettings->xVSS.outputFileSize != 0 && totalDuration > 0 )
45227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
45237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_UInt32 targetedBitrate = 0;
45247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VIDEOEDITING_ClipProperties fileProperties;
45257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_Double ratio;
45267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
45277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->xVSS.pBGMtrack != M4OSA_NULL )
45287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
45297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pSettings->xVSS.pBGMtrack->uiAddVolume
45307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                == 100 ) /* We are in "replace audio mode, need to check the filetype */
45317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
45327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pSettings->xVSS.pBGMtrack->FileType
45337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4VIDEOEDITING_kFileType_3GPP )
45347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
45357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_Void *pDecodedPath;
45367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**
45377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    * UTF conversion: convert into the customer format, before being used*/
45387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pDecodedPath =
45397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pSettings->xVSS.pBGMtrack->pFile;
4540947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                    length = strlen(pDecodedPath);
45417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
45427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct
45437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        != M4OSA_NULL && xVSS_context->
45447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        UTFConversionContext.pTempOutConversionBuffer
45457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        != M4OSA_NULL )
45467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
45477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err = M4xVSS_internalConvertFromUTF8(xVSS_context,
45487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            (M4OSA_Void *)xVSS_context->pSettings->
45497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS.pBGMtrack->pFile,
45507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            (M4OSA_Void *)xVSS_context->
45517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            UTFConversionContext.
45527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pTempOutConversionBuffer, &length);
45537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
45547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( err != M4NO_ERROR )
45557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
45567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRACE1_1("M4xVSS_SendCommand: \
45577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4xVSS_internalConvertFromUTF8 returns err: 0x%x",
45587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                err);
45597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* Free Send command */
45607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_freeCommand(xVSS_context);
45617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            return err;
45627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
45637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        pDecodedPath = xVSS_context->
45647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            UTFConversionContext.pTempOutConversionBuffer;
45657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
45667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
45677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /**
45687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    * End of the UTF conversion, use the converted file path*/
45697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err =
45707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4xVSS_internalGetProperties(xVSS_context, pDecodedPath,
45717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        &fileProperties);
45727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
45737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Get the properties of the BGM track */
45747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*err = M4xVSS_internalGetProperties(xVSS_context, xVSS_context->pSettings->
45757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS.pBGMtrack->pFile, &fileProperties);*/
45767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( err != M4NO_ERROR )
45777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
45787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1(
45797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "M4xVSS_sendCommand: M4xVSS_internalGetProperties returned an error:\
45807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                             0x%x", err);
45817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return err;
45827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
45837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
45847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( fileProperties.AudioStreamType
45857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        != M4VIDEOEDITING_kAMR_NB )
45867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
45877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_0(
45887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "M4xVSS_sendCommand: Impossible to use MMS mode with BGM != AMR-NB");
45897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return M4ERR_PARAMETER;
45907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
45917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
45927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else if( xVSS_context->pSettings->xVSS.pBGMtrack->FileType
45937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    != M4VIDEOEDITING_kFileType_AMR
45947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    && xVSS_context->pSettings->xVSS.pBGMtrack->FileType
45957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    != M4VIDEOEDITING_kFileType_MP3 )
45967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
45977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("M4xVSS_sendCommand: Bad input BGM file");
45987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_PARAMETER;
45997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
46007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
46017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
46027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
46037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Compute targeted bitrate, with 8% margin (moov) */
46047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( totalDuration > 1000 )
46057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
46067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            targetedBitrate =
46077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                (M4OSA_UInt32)(( xVSS_context->pSettings->xVSS.outputFileSize
46087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                * 8 * 0.84) / (totalDuration / 1000));
46097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
46107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        else
46117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
46127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            targetedBitrate = 0;
46137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
46147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
46157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Remove audio bitrate */
46167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( targetedBitrate >= 12200 )
46177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
46187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            targetedBitrate -= 12200; /* Only AMR is supported in MMS case */
46197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
46207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        else
46217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
46227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            targetedBitrate = 0;
46237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
46247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
46257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Compute an indicator of "complexity" depending on nb of sequences and total duration */
46267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* The highest is the number of sequences, the more there are some I frames */
46277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* In that case, it is necessary to reduce the target bitrate */
46287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        ratio =
46297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (M4OSA_Double)((M4OSA_Double)(xVSS_context->pSettings->uiClipNumber
46307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            * 100000) / (M4OSA_Double)(totalDuration));
46317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE2_3(
46327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            "Ratio clip_nb/duration = %f\nTargeted bitrate = %d\nTotal duration: %d",
46337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (M4OSA_Double)((M4OSA_Double)(xVSS_context->pSettings->uiClipNumber
46347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            * 100000) / (M4OSA_Double)(totalDuration)),
46357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            targetedBitrate, totalDuration);
46367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
46377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( ratio > 50 && ratio <= 75 )
46387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
46397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* It means that there is a potential risk of having a higher file size
46407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            than specified */
46417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            targetedBitrate -= (M4OSA_UInt32)(targetedBitrate * 0.1);
46427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE2_2(
46437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                "New bitrate1 !!\nRatio clip_nb/duration = %f\nTargeted bitrate = %d",
46447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                ratio, targetedBitrate);
46457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
46467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        else if( ratio > 75 )
46477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
46487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            targetedBitrate -= (M4OSA_UInt32)(targetedBitrate * 0.15);
46497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE2_2(
46507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                "New bitrate2 !!\nRatio clip_nb/duration = %f\nTargeted bitrate = %d",
46517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                ratio, targetedBitrate);
46527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
46537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
46547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /*CR 3283 MMS use case for VAL:
46557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        Decrease the output file size to keep a margin of 5%
46567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        The writer will stop when the targeted output file size will be reached*/
46577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->xVSS.outputFileSize -=
46587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (M4OSA_UInt32)(xVSS_context->pSettings->xVSS.outputFileSize * 0.05);
46597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
46607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        switch( xVSS_context->pSettings->xVSS.outputVideoSize )
46617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
46627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case M4VIDEOEDITING_kSQCIF:
46637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( targetedBitrate < 32000 )
46647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
46657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->targetedBitrate = 32000;
46667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4VSS3GPP_WAR_OUTPUTFILESIZE_EXCEED;
46677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
46687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
46697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
46707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case M4VIDEOEDITING_kQQVGA:
46717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( targetedBitrate < 32000 )              /*48000)*/
46727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
46737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->targetedBitrate = 32000; /*48000;*/
46747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4VSS3GPP_WAR_OUTPUTFILESIZE_EXCEED;
46757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
46767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
46777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
46787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case M4VIDEOEDITING_kQCIF:
46797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( targetedBitrate < 48000 )              /*64000)*/
46807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
46817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->targetedBitrate = 48000; /*64000;*/
46827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4VSS3GPP_WAR_OUTPUTFILESIZE_EXCEED;
46837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
46847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
46857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
46867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case M4VIDEOEDITING_kQVGA:
46877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( targetedBitrate < 64000 )              /*128000)*/
46887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
46897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->targetedBitrate = 64000; /*128000;*/
46907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4VSS3GPP_WAR_OUTPUTFILESIZE_EXCEED;
46917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
46927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
46937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
46947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case M4VIDEOEDITING_kCIF:
46957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( targetedBitrate < 128000 )
46967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
46977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->targetedBitrate = 128000;
46987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4VSS3GPP_WAR_OUTPUTFILESIZE_EXCEED;
46997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
47007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
47017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
47027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            case M4VIDEOEDITING_kVGA:
47037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( targetedBitrate < 192000 )
47047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
47057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->targetedBitrate = 192000;
47067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4VSS3GPP_WAR_OUTPUTFILESIZE_EXCEED;
47077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
47087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
47097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
47107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            default:
47117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* Cannot happen */
47127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_0(
47137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    "M4xVSS_sendCommand: Error in output fileSize !");
47147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return M4ERR_PARAMETER;
47157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                break;
47167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
47177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->targetedBitrate = (M4OSA_UInt32)targetedBitrate;
47187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
47197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
47207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( bIsTranscoding )
47217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
47227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4VSS3GPP_WAR_TRANSCODING_NECESSARY;
47237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
47247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    else
47257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
47267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4NO_ERROR;
47277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
47287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
47297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
47307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
47317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
47327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * prototype    M4OSA_ERR M4xVSS_SaveStart(M4OSA_Context pContext, M4OSA_Char* pFilePath)
47337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This function prepare the save
47347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        The xVSS create 3GP edited final file
47357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                This function must be called once M4xVSS_Step has returned
47367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                M4VSS3GPP_WAR_ANALYZING_DONE
47377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                After this function, the user must call M4xVSS_Step until
47387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                it returns another error than M4NO_ERROR.
47397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
47407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext            (IN) Pointer on the xVSS edit context
47417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pFilePath            (IN) If the user wants to provide a different
47427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                                output filename, else can be NULL (allocated by the user)
47437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR:            No error
47447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER:    At least one parameter is M4OSA_NULL
47457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_ALLOC:        Memory allocation has failed
47467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_STATE:        This function cannot not be called at this time
47477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
47487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
47497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4xVSS_SaveStart( M4OSA_Context pContext, M4OSA_Void *pFilePath,
47507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                           M4OSA_UInt32 filePathSize )
47517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
47527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4xVSS_Context *xVSS_context = (M4xVSS_Context *)pContext;
47537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_ERR err;
47547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
47557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*Add for UTF conversion: copy the pSettings structure into a new pCurrentEditSettings*/
47567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VSS3GPP_EditSettings *pEditSavingSettings = M4OSA_NULL;
47577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt8 i, j;
47587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32 offset = 0;
47597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt8 nbEffects = 0;
47607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*only for UTF conversion support*/
47617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_Void *pDecodedPath = M4OSA_NULL;
47627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt32 length = 0;
47637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**/
47647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
47657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Check state */
47667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->m_state != M4xVSS_kStateOpened )
47677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
47687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_1(
47697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            "Bad state when calling M4xVSS_SaveStart function! State is %d",
47707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->m_state);
47717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_STATE;
47727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
47737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
47747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* RC: to temporary handle changing of output filepath */
47757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* TO BE CHANGED CLEANLY WITH A MALLOC/MEMCPY !!!! */
47767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( pFilePath != M4OSA_NULL )
47777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
47787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pSettings->pOutputFile != M4OSA_NULL )
47797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
47807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*it means that pOutputFile has been allocated in M4xVSS_sendCommand()*/
4781694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            free(xVSS_context->pSettings->pOutputFile);
47827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->pOutputFile = M4OSA_NULL;
47837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pSettings->uiOutputPathSize = 0;
47847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
47857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
47867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pDecodedPath = pFilePath;
47877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /*As all inputs of the xVSS are in UTF8, convert the output file path into the customer
47887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi         format*/
47897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct != M4OSA_NULL
47907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            && xVSS_context->UTFConversionContext.pTempOutConversionBuffer
47917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            != M4OSA_NULL )
47927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
47937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            err = M4xVSS_internalConvertFromUTF8(xVSS_context,
47947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                (M4OSA_Void *)pFilePath, (M4OSA_Void *)xVSS_context->
47957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                UTFConversionContext.pTempOutConversionBuffer, &length);
47967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
47977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( err != M4NO_ERROR )
47987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
47997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_1(
48007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    "M4xVSS_SaveStart: M4xVSS_internalConvertFromUTF8 returns err: 0x%x",
48017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err);
48027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return err;
48037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
48047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pDecodedPath =
48057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->UTFConversionContext.pTempOutConversionBuffer;
48067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            filePathSize = length;
48077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
48087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
48097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pOutputFile =
4810694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            (M4OSA_Void *)M4OSA_32bitAlignedMalloc(filePathSize + 1, M4VS,
48117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (M4OSA_Char *)"M4xVSS_SaveStart: output file");
48127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
48137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pOutputFile == M4OSA_NULL )
48147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
48157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SaveStart");
48167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
48177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
481832ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        memcpy((void *)xVSS_context->pOutputFile, (void *)pDecodedPath, filePathSize + 1);
48197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pOutputFile[filePathSize] = '\0';
48207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->pOutputFile = xVSS_context->pOutputFile;
48217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->uiOutputPathSize = filePathSize;
48227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
48237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
48247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
48257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    ***/
48267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
48277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*FB: Add for UTF conversion: copy the pSettings structure into a new pCurrentEditSettings*/
48287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*It is the same principle as in the PreviewStart()*/
48297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pEditSavingSettings =
4830694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu        (M4VSS3GPP_EditSettings *)M4OSA_32bitAlignedMalloc(sizeof(M4VSS3GPP_EditSettings),
48317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VS, (M4OSA_Char *)"Saving, copy of VSS structure");
48327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
48337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( pEditSavingSettings == M4OSA_NULL )
48347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
48357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("Allocation error in M4xVSS_SaveStart");
48367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
48377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pOutputFile != M4OSA_NULL )
48387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
4839694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            free(xVSS_context->pOutputFile);
48407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pOutputFile = M4OSA_NULL;
48417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
48427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_ALLOC;
48437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
48447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
48457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Copy settings from input structure */
484632ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu    memcpy((void *) &(pEditSavingSettings->xVSS),
484732ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        (void *) &(xVSS_context->pSettings->xVSS),
48487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        sizeof(M4xVSS_EditSettings));
48497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
48507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Initialize pEditSavingSettings structure */
48517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pEditSavingSettings->xVSS.pBGMtrack = M4OSA_NULL;
48527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
48537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pEditSavingSettings->videoFrameRate =
48547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->videoFrameRate;
48557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pEditSavingSettings->uiClipNumber = xVSS_context->pSettings->uiClipNumber;
48567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pEditSavingSettings->uiMasterClip =
48577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pSettings->uiMasterClip; /* VSS2.0 mandatory parameter */
48587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
48597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Allocate savingSettings.pClipList/pTransitions structure */
48607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pEditSavingSettings->pClipList = (M4VSS3GPP_ClipSettings *
4861694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu        * )M4OSA_32bitAlignedMalloc(sizeof(M4VSS3GPP_ClipSettings *)
48627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        *pEditSavingSettings->uiClipNumber,
48637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4VS, (M4OSA_Char *)"xVSS, saving , copy of pClipList");
48647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
48657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( pEditSavingSettings->pClipList == M4OSA_NULL )
48667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
48677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_0("Allocation error in M4xVSS_SaveStart");
48687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
48697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pOutputFile != M4OSA_NULL )
48707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
4871694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            free(xVSS_context->pOutputFile);
48727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pOutputFile = M4OSA_NULL;
48737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
48747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_ALLOC;
48757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
48767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
48777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( pEditSavingSettings->uiClipNumber > 1 )
48787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
48797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pEditSavingSettings->pTransitionList = (M4VSS3GPP_TransitionSettings *
4880694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            * )M4OSA_32bitAlignedMalloc(sizeof(M4VSS3GPP_TransitionSettings *)
48817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            *(pEditSavingSettings->uiClipNumber - 1),
48827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VS, (M4OSA_Char *)"xVSS, saving, copy of pTransitionList");
48837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
48847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( pEditSavingSettings->pTransitionList == M4OSA_NULL )
48857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
48867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SaveStart");
48877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
48887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pOutputFile != M4OSA_NULL )
48897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
4890694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                free(xVSS_context->pOutputFile);
48917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pOutputFile = M4OSA_NULL;
48927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
48937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
48947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
48957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
48967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    else
48977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
48987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pEditSavingSettings->pTransitionList = M4OSA_NULL;
48997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
49007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
49017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    for ( i = 0; i < pEditSavingSettings->uiClipNumber; i++ )
49027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
49037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pEditSavingSettings->pClipList[i] = (M4VSS3GPP_ClipSettings
4904694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            *)M4OSA_32bitAlignedMalloc(sizeof(M4VSS3GPP_ClipSettings),
49057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VS, (M4OSA_Char *)"saving clip settings");
49067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
49077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( pEditSavingSettings->pClipList[i] == M4OSA_NULL )
49087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
49097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SaveStart");
49107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
49117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pOutputFile != M4OSA_NULL )
49127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
4913694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                free(xVSS_context->pOutputFile);
49147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pOutputFile = M4OSA_NULL;
49157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
49167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
49177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
49187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
49197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( i < pEditSavingSettings->uiClipNumber
49207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            - 1 ) /* Because there is 1 less transition than clip number */
49217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
49227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pEditSavingSettings->pTransitionList[i] =
49237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                (M4VSS3GPP_TransitionSettings
4924694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                *)M4OSA_32bitAlignedMalloc(sizeof(M4VSS3GPP_TransitionSettings),
49257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4VS, (M4OSA_Char *)"saving transition settings");
49267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
49277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( pEditSavingSettings->pTransitionList[i] == M4OSA_NULL )
49287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
49297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_0("Allocation error in M4xVSS_SaveStart");
49307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
49317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pOutputFile != M4OSA_NULL )
49327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
4933694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    free(xVSS_context->pOutputFile);
49347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pOutputFile = M4OSA_NULL;
49357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
49367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return M4ERR_ALLOC;
49377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
49387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
49397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
49407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
49417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    for ( i = 0; i < xVSS_context->pSettings->uiClipNumber; i++ )
49427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
49437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        // Add MP4 file support
49447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
49457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( ( xVSS_context->pSettings->pClipList[i]->FileType
49467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            == M4VIDEOEDITING_kFileType_3GPP)
49477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            || (xVSS_context->pSettings->pClipList[i]->FileType
4948e1f105895f913b19ad848cc90a3cd57dad657abfDharmaray Kundargi            == M4VIDEOEDITING_kFileType_MP4)
4949e1f105895f913b19ad848cc90a3cd57dad657abfDharmaray Kundargi            || (xVSS_context->pSettings->pClipList[i]->FileType
49506e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury            == M4VIDEOEDITING_kFileType_M4V)
49516e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury            || (xVSS_context->pSettings->pClipList[i]->FileType
49526e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury            == M4VIDEOEDITING_kFileType_ARGB8888))
49537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
49547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
49557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Copy data from given structure to our saving structure */
49567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_DuplicateClipSettings(pEditSavingSettings->pClipList[i],
49577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pSettings->pClipList[i],
49587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_FALSE /* remove effects */);
49597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
49607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /**
49617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            * UTF conversion: convert into the customer format, before being used*/
49627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pDecodedPath = pEditSavingSettings->pClipList[i]->pFile;
4963947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma            length = strlen(pDecodedPath);
49647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
49657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct
49667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                != M4OSA_NULL && xVSS_context->
49677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                UTFConversionContext.pTempOutConversionBuffer
49687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                != M4OSA_NULL )
49697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
49707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                err =
49717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_internalConvertFromUTF8(xVSS_context, (M4OSA_Void
49727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    *)pEditSavingSettings->pClipList[i]->pFile,
49737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    (M4OSA_Void *)xVSS_context->
49747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    UTFConversionContext.pTempOutConversionBuffer,
49757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    &length);
49767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
49777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( err != M4NO_ERROR )
49787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
49797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_1(
49807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        "M4xVSS_SaveStart: M4xVSS_internalConvertFromUTF8 returns err: 0x%x",
49817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err);
49827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
49837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( xVSS_context->pOutputFile != M4OSA_NULL )
49847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
4985694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(xVSS_context->pOutputFile);
49867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pOutputFile = M4OSA_NULL;
49877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
49887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return err;
49897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
49907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pDecodedPath = xVSS_context->
49917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    UTFConversionContext.pTempOutConversionBuffer;
49927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
49937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /**
49947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                * End of the UTF conversion, use the converted file path*/
4995694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                free(
49967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pEditSavingSettings->pClipList[i]->pFile);
49977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pEditSavingSettings->pClipList[i]->pFile = (M4OSA_Void
4998694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    *)M4OSA_32bitAlignedMalloc((length + 1),
49997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4VS, (M4OSA_Char *)"saving transition settings");
50007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
50017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( pEditSavingSettings->pClipList[i]->pFile == M4OSA_NULL )
50027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
50037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Allocation error in M4xVSS_SaveStart");
50047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
50057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( xVSS_context->pOutputFile != M4OSA_NULL )
50067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
5007694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                        free(xVSS_context->pOutputFile);
50087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pOutputFile = M4OSA_NULL;
50097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
50107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_ALLOC;
50117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
501232ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                memcpy((void *)pEditSavingSettings->pClipList[i]->pFile,
501332ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                    (void *)pDecodedPath, length + 1);
50147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
50157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /*FB: add file path size because of UTF 16 conversion*/
50167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pEditSavingSettings->pClipList[i]->filePathSize = length+1;
50177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
50187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( i
50197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                < xVSS_context->pSettings->uiClipNumber
50207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                - 1 ) /* Because there is 1 less transition than clip number */
50217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
502232ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                memcpy(
502332ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                    (void *)pEditSavingSettings->pTransitionList[i],
502432ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                    (void *)xVSS_context->pSettings->
50257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    pTransitionList[i],
50267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    sizeof(M4VSS3GPP_TransitionSettings));
50277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
50287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
50297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        else
50307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
50317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0(
50327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                "M4xVSS_SaveStart: Error when parsing xVSS_context->pSettings->pClipList[i]:\
50337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                 Bad file type");
50347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
50357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pOutputFile != M4OSA_NULL )
50367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
5037694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                free(xVSS_context->pOutputFile);
50387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pOutputFile = M4OSA_NULL;
50397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
50407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_PARAMETER;
50417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
50427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
50437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
50447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Count the number of video effects, used to know how much memory is needed to allocate*/
50457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* FB 2008/10/15: removed : not compatible with M4VSS3GPP_kVideoEffectType_None
50467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    for(j=0;j<xVSS_context->pSettings->nbEffects;j++)
50477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
50487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if(xVSS_context->pSettings->Effects[j].VideoEffectType != M4VSS3GPP_kVideoEffectType_None)
50497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
50507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    nbEffects++;
50517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
50527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }*/
50537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    nbEffects = xVSS_context->pSettings->nbEffects;
50547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
50557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Allocate effects saving structure with correct number of effects */
50567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( nbEffects != 0 )
50577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
50587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pEditSavingSettings->Effects =
5059694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            (M4VSS3GPP_EffectSettings *)M4OSA_32bitAlignedMalloc(nbEffects
50607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            * sizeof(M4VSS3GPP_EffectSettings), M4VS, (M4OSA_Char
50617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            *)"Saving settings, effects table of structure settings");
50627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
50637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( pEditSavingSettings->Effects == M4OSA_NULL )
50647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
50657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SaveStart");
50667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
50677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pOutputFile != M4OSA_NULL )
50687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
5069694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                free(xVSS_context->pOutputFile);
50707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pOutputFile = M4OSA_NULL;
50717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
50727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
50737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
50747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
50757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Just copy effect structure to saving structure, as effects time are now */
50767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* relative to output clip time*/
507732ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        memcpy((void *)pEditSavingSettings->Effects,
507832ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu            (void *)xVSS_context->pSettings->Effects,
50797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            nbEffects * sizeof(M4VSS3GPP_EffectSettings));
50807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
50817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    else
50827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
50837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pEditSavingSettings->Effects = M4OSA_NULL;
50847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pEditSavingSettings->nbEffects = 0;
50857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
50867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pEditSavingSettings->nbEffects = nbEffects;
50877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
50887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( pFilePath != M4OSA_NULL )
50897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
50907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pEditSavingSettings->pOutputFile = pFilePath;
50917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
50927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
50937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Save pointer of saving video editor to use in step function */
50947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pCurrentEditSettings = pEditSavingSettings;
50957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
50967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Change output file name to temporary output file name, because final file will be
50977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi     generated by audio mixer */
50987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->pSettings->xVSS.pBGMtrack != M4OSA_NULL )
50997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
51007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
51015d33cc161e7d13459b4833dbc8b769093c3f80b0Dheeraj Sharma        M4OSA_Char out_3gp[M4XVSS_MAX_PATH_LEN];
51025d33cc161e7d13459b4833dbc8b769093c3f80b0Dheeraj Sharma        M4OSA_Char out_3gp_tmp[M4XVSS_MAX_PATH_LEN];
51037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
51047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /**/
51057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pEditSavingSettings->xVSS.pBGMtrack =
5106694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            (M4xVSS_BGMSettings *)M4OSA_32bitAlignedMalloc(sizeof(M4xVSS_BGMSettings), M4VS,
51077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (M4OSA_Char
51087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            *)"Saving settings, effects table of structure settings");
51097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
51107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( pEditSavingSettings->xVSS.pBGMtrack == M4OSA_NULL )
51117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
51127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SaveStart");
51137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
51147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pOutputFile != M4OSA_NULL )
51157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
5116694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                free(xVSS_context->pOutputFile);
51177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pOutputFile = M4OSA_NULL;
51187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
51197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
51207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
51217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
51227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Just copy effect structure to saving structure, as effects time are now */
51237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* relative to output clip time*/
512432ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        memcpy((void *)pEditSavingSettings->xVSS.pBGMtrack,
512532ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu            (void *)xVSS_context->pSettings->xVSS.pBGMtrack,
51267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            sizeof(M4xVSS_BGMSettings));
51277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
51287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Allocate file name, and copy file name buffer to our structure */
5129694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu        pEditSavingSettings->xVSS.pBGMtrack->pFile = M4OSA_32bitAlignedMalloc(
5130947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma            (strlen(xVSS_context->pSettings->xVSS.pBGMtrack->pFile)
51317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            + 1),
51327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4VS, (M4OSA_Char *)"Saving struct xVSS BGM file path");
51337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
51347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( pEditSavingSettings->xVSS.pBGMtrack->pFile == M4OSA_NULL )
51357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
51367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4xVSS_freeCommand(xVSS_context);
51377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SaveStart");
51387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
51397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pOutputFile != M4OSA_NULL )
51407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
5141694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                free(xVSS_context->pOutputFile);
51427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pOutputFile = M4OSA_NULL;
51437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
51447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
51457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
514632ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        memcpy((void *)pEditSavingSettings->xVSS.pBGMtrack->pFile,
514732ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu            (void *)xVSS_context->pSettings->xVSS.pBGMtrack->pFile,
5148947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma            strlen(xVSS_context->pSettings->xVSS.pBGMtrack->pFile)
51497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            + 1);
51507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
51517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /*Copy BGM track file path*/
51527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
51537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /**
51547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        * UTF conversion*/
51557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct != M4OSA_NULL
51567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            && xVSS_context->UTFConversionContext.pTempOutConversionBuffer
51577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            != M4OSA_NULL )
51587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
51597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            err = M4xVSS_internalConvertFromUTF8(xVSS_context,
51607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                (M4OSA_Void *)pEditSavingSettings->xVSS.pBGMtrack->pFile,
51617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                (M4OSA_Void *)xVSS_context->
51627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                UTFConversionContext.pTempOutConversionBuffer, &length);
51637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
51647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( err != M4NO_ERROR )
51657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
51667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_1(
51677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    "M4xVSS_SaveStart: M4xVSS_internalConvertFromUTF8 returns err: 0x%x",
51687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err);
51697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
51707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pOutputFile != M4OSA_NULL )
51717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
5172694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    free(xVSS_context->pOutputFile);
51737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pOutputFile = M4OSA_NULL;
51747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
51757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return err;
51767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
51777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pDecodedPath =
51787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->UTFConversionContext.pTempOutConversionBuffer;
51797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5180694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            free(pEditSavingSettings->xVSS.pBGMtrack->pFile);
51817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pEditSavingSettings->xVSS.pBGMtrack->pFile =
5182694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                (M4OSA_Void *)M4OSA_32bitAlignedMalloc(length + 1, M4VS, (M4OSA_Char
51837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                *)"M4xVSS_SaveStart: Temp filename in case of BGM");
51847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
51857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( pEditSavingSettings->xVSS.pBGMtrack->pFile == M4OSA_NULL )
51867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
51877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_0("Allocation error in M4xVSS_SaveStart");
51887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
51897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pOutputFile != M4OSA_NULL )
51907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
5191694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    free(xVSS_context->pOutputFile);
51927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pOutputFile = M4OSA_NULL;
51937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
51947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return M4ERR_ALLOC;
51957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
519632ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu            memcpy((void *)pEditSavingSettings->xVSS.pBGMtrack->pFile,
519732ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                (void *)pDecodedPath, length + 1);
51987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
51997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /**/
52017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52025d33cc161e7d13459b4833dbc8b769093c3f80b0Dheeraj Sharma        M4OSA_chrNCopy(out_3gp, xVSS_context->pTempPath, M4XVSS_MAX_PATH_LEN - 1);
52035d33cc161e7d13459b4833dbc8b769093c3f80b0Dheeraj Sharma        M4OSA_chrNCopy(out_3gp_tmp, xVSS_context->pTempPath, M4XVSS_MAX_PATH_LEN - 1);
52047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Construct output temporary 3GP filename */
5206947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma        strncat((char *)out_3gp, (const char *)"savetemp.3gp\0", 13);
5207947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma        strncat((char *)out_3gp_tmp, (const char *)"savetemp.tmp\0", 13);
52087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /**
52107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        * UTF conversion: convert into the customer format, before being used*/
52117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pDecodedPath = out_3gp;
5212947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma        length = strlen(pDecodedPath);
52137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct != M4OSA_NULL
52157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            && xVSS_context->UTFConversionContext.pTempOutConversionBuffer
52167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            != M4OSA_NULL )
52177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
52187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            err = M4xVSS_internalConvertFromUTF8(xVSS_context,
52197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                (M4OSA_Void *)out_3gp, (M4OSA_Void *)xVSS_context->
52207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                UTFConversionContext.pTempOutConversionBuffer, &length);
52217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( err != M4NO_ERROR )
52237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
52247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_1(
52257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    "M4xVSS_SaveStart: M4xVSS_internalConvertFromUTF8 returns err: 0x%x",
52267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err);
52277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pOutputFile != M4OSA_NULL )
52297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
5230694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    free(xVSS_context->pOutputFile);
52317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pOutputFile = M4OSA_NULL;
52327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
52337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return err;
52347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
52357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pDecodedPath =
52367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->UTFConversionContext.pTempOutConversionBuffer;
52377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
52387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /**
52407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        * End of the UTF conversion, use the converted file path*/
52417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pCurrentEditSettings->pOutputFile =
5242694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            (M4OSA_Void *)M4OSA_32bitAlignedMalloc(length + 1, M4VS,
52437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (M4OSA_Char *)"M4xVSS_SaveStart: Temp filename in case of BGM");
52447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pCurrentEditSettings->pOutputFile == M4OSA_NULL )
52467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
52477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SaveStart");
52487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pOutputFile != M4OSA_NULL )
52507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
5251694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                free(xVSS_context->pOutputFile);
52527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pOutputFile = M4OSA_NULL;
52537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
52547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
52557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
525632ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        memcpy((void *)xVSS_context->pCurrentEditSettings->pOutputFile,
525732ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu            (void *)pDecodedPath, length + 1);
52587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pCurrentEditSettings->uiOutputPathSize = length + 1;
52597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /**
52617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        * UTF conversion: convert into the customer format, before being used*/
52627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pDecodedPath = out_3gp_tmp;
5263947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma        length = strlen(pDecodedPath);
52647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->UTFConversionContext.pConvFromUTF8Fct != M4OSA_NULL
52667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            && xVSS_context->UTFConversionContext.pTempOutConversionBuffer
52677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            != M4OSA_NULL )
52687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
52697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            err = M4xVSS_internalConvertFromUTF8(xVSS_context,
52707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                (M4OSA_Void *)out_3gp_tmp, (M4OSA_Void *)xVSS_context->
52717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                UTFConversionContext.pTempOutConversionBuffer, &length);
52727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( err != M4NO_ERROR )
52747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
52757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                M4OSA_TRACE1_1(
52767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    "M4xVSS_SaveStart: M4xVSS_internalConvertFromUTF8 returns err: 0x%x",
52777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err);
52787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pOutputFile != M4OSA_NULL )
52807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
5281694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    free(xVSS_context->pOutputFile);
52827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pOutputFile = M4OSA_NULL;
52837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
52847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                return err;
52857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
52867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            pDecodedPath =
52877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->UTFConversionContext.pTempOutConversionBuffer;
52887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
52897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /**
52917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        * End of the UTF conversion, use the converted file path*/
52927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pCurrentEditSettings->pTemporaryFile =
5293694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            (M4OSA_Void *)M4OSA_32bitAlignedMalloc(length + 1, M4VS,
52947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            (M4OSA_Char *)"M4xVSS_SaveStart: Temporary file");
52957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
52967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pCurrentEditSettings->pTemporaryFile == M4OSA_NULL )
52977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
52987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_0("Allocation error in M4xVSS_SaveStart");
52997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
53007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            if( xVSS_context->pOutputFile != M4OSA_NULL )
53017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
5302694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                free(xVSS_context->pOutputFile);
53037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->pOutputFile = M4OSA_NULL;
53047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
53057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_ALLOC;
53067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
530732ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu        memcpy((void *)xVSS_context->pCurrentEditSettings->pTemporaryFile,
530832ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu            (void *)pDecodedPath, length + 1);
53097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
53107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Put nb of step for progression monitoring to 2, because audio mixing is needed */
53117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->nbStepTotal = 2;
53127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
53137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    else
53147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
53157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pCurrentEditSettings->pOutputFile =
53167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pOutputFile;
53177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pCurrentEditSettings->pTemporaryFile = M4OSA_NULL;
53187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
53197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* Put nb of step for progression monitoring to 1, because no audio mixing is needed */
53207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->nbStepTotal = 1;
53217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
53227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
53237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
53247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    ***/
53257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
53267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4xVSS_internalGenerateEditedFile(xVSS_context);
53277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
53287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( err != M4NO_ERROR )
53297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
53307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_1(
53317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            "M4xVSS_SaveStart: M4xVSS_internalGenerateEditedFile returned an error: 0x%x",
53327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            err);
53337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
53347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /**/
53357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pCurrentEditSettings->pOutputFile != M4OSA_NULL
53367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            && xVSS_context->pSettings->xVSS.pBGMtrack == M4OSA_NULL )
53377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
5338694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            free(xVSS_context->pCurrentEditSettings->
53397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pOutputFile);
53407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pCurrentEditSettings->pOutputFile = M4OSA_NULL;
53417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pOutputFile = M4OSA_NULL;
53427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
53437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
53447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pCurrentEditSettings->pTemporaryFile != M4OSA_NULL
53457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            && xVSS_context->pSettings->xVSS.pBGMtrack != M4OSA_NULL )
53467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
5347694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            free(xVSS_context->pCurrentEditSettings->
53487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                pTemporaryFile);
53497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pCurrentEditSettings->pTemporaryFile = M4OSA_NULL;
53507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
53517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
53527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( xVSS_context->pOutputFile != M4OSA_NULL )
53537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
5354694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu            free(xVSS_context->pOutputFile);
53557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->pOutputFile = M4OSA_NULL;
53567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
53577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        /* TODO: Translate error code of VSS to an xVSS error code */
53587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
53597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
53607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
53617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Reinitialize current step number for progression monitoring */
53627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->currentStep = 0;
53637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
53647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Change xVSS state */
53657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->m_state = M4xVSS_kStateSaving;
53667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
53677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return M4NO_ERROR;
53687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
53697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
53707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
53717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
53727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * prototype    M4OSA_ERR M4xVSS_SaveStop(M4OSA_Context pContext)
53737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This function unallocate save ressources and change xVSS
53747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                internal state.
53757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        This function must be called once M4xVSS_Step has returned
53767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                M4VSS3GPP_WAR_SAVING_DONE
53777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
53787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext            (IN) Pointer on the xVSS edit context
53797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR:            No error
53807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER:    At least one parameter is M4OSA_NULL
53817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_STATE:        This function cannot not be called at this time
53827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
53837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
53847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4xVSS_SaveStop( M4OSA_Context pContext )
53857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
53867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4xVSS_Context *xVSS_context = (M4xVSS_Context *)pContext;
53877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_ERR err = M4NO_ERROR;
53887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
53897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Check state */
53907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->m_state != M4xVSS_kStateSaving )
53917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
53927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_1(
53937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            "Bad state when calling M4xVSS_SaveStop function! State is %d",
53947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->m_state);
53957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_STATE;
53967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
53977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
53987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Free saving structures */
53997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4xVSS_internalFreeSaving(xVSS_context);
54007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
54017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->pOutputFile != M4OSA_NULL )
54027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
5403694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu        free(xVSS_context->pOutputFile);
54047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pOutputFile = M4OSA_NULL;
54057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
54067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
54077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Change xVSS state */
54087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->m_state = M4xVSS_kStateSaved;
54097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
54107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return M4NO_ERROR;
54117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
54127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
54137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
54147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
54157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * prototype    M4OSA_ERR M4xVSS_Step(M4OSA_Context pContext, M4OSA_UInt8 *pProgress)
54167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This function executes differents tasks, depending of xVSS
54177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                internal state.
54187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        This function:
54197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                    - analyses editing structure if called after M4xVSS_SendCommand
54207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                    - generates preview file if called after M4xVSS_PreviewStart
54217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                    - generates final edited file if called after M4xVSS_SaveStart
54227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
54237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext                        (IN) Pointer on the xVSS edit context
54247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pProgress                        (IN/OUT) Pointer on an integer giving a
54257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                                            progress indication (between 0-100)
54267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR:                        No error, the user must call M4xVSS_Step again
54277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER:                At least one parameter is M4OSA_NULL
54287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_STATE:                    This function cannot not be called at this time
54297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4VSS3GPP_WAR_PREVIEW_READY:    Preview file is generated
54307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4VSS3GPP_WAR_SAVING_DONE:        Final edited file is generated
54317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4VSS3GPP_WAR_ANALYZING_DONE:    Analyse is done
54327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
54337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
54347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4xVSS_Step( M4OSA_Context pContext, M4OSA_UInt8 *pProgress )
54357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
54367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4xVSS_Context *xVSS_context = (M4xVSS_Context *)pContext;
54377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VSS3GPP_EditContext pVssCtxt = xVSS_context->pCurrentEditContext;
54387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VSS3GPP_AudioMixingContext pAudioMixingCtxt =
54397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->pAudioMixContext;
54407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_ERR err = M4NO_ERROR;
54417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_UInt8 uiProgress = 0;
54427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
54437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    switch( xVSS_context->m_state )
54447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
54457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4xVSS_kStateSaving:
54467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        //case M4xVSS_kStateGeneratingPreview:
54477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
54487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->editingStep
54497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4xVSS_kMicroStateEditing ) /* VSS -> creating effects, transitions ... */
54507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
54517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* RC: to delete unecessary temp files on the fly */
54527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4VSS3GPP_InternalEditContext *pVSSContext =
54537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        (M4VSS3GPP_InternalEditContext *)pVssCtxt;
54547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
54557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err = M4VSS3GPP_editStep(pVssCtxt, &uiProgress);
54567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
54577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( ( err != M4NO_ERROR) && (err != M4VSS3GPP_WAR_EDITING_DONE)
54587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        && (err != M4VSS3GPP_WAR_SWITCH_CLIP) )
54597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
54607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1(
54617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "M4xVSS_Step: M4VSS3GPP_editStep returned 0x%x\n", err);
54627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4VSS3GPP_editCleanUp(pVssCtxt);
54637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* TODO ? : Translate error code of VSS to an xVSS error code ? */
54647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pCurrentEditContext = M4OSA_NULL;
54657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return err;
54667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
54677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
54687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* RC: to delete unecessary temp files on the fly */
54697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( err == M4VSS3GPP_WAR_SWITCH_CLIP )
54707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
54717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef DO_NOT_REMOVE_TEMP_FILES
54727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* It means we can delete the temporary file */
54737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* First step, check the temp file is not use somewhere else after */
54747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
54757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_UInt32 i;
54767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_Int32 cmpResult = -1;
54777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
54787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        for ( i = pVSSContext->uiCurrentClip;
54797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            i < pVSSContext->uiClipNumber; i++ )
54807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
54817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            if( pVSSContext->pClipList[pVSSContext->uiCurrentClip
54827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                - 1].filePathSize
54837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                == pVSSContext->pClipList[i].filePathSize )
54847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            {
548532ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                                cmpResult = memcmp((void *)pVSSContext->
54867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pClipList[pVSSContext->uiCurrentClip
548732ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu                                    - 1].pFile, (void *)pVSSContext->pClipList[i].pFile,
54887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pVSSContext->
54897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pClipList[pVSSContext->uiCurrentClip
54907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    - 1].filePathSize);
54917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
54927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                if( cmpResult == 0 )
54937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                {
54947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    /* It means we found a corresponding file, we do not delete
54957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    this temporary file */
54967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    break;
54977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                }
54987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            }
54997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
55007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
55017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( cmpResult != 0 )
55027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
55037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_UInt32 ConvertedSize = 0;
55047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_Char *toto;
55057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_Char *pTmpStr;
55067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
55077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* Convert result in UTF8 to check if we can delete it or not */
55087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            if( xVSS_context->UTFConversionContext.pConvToUTF8Fct
55097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                != M4OSA_NULL && xVSS_context->
55107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                UTFConversionContext.
55117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pTempOutConversionBuffer != M4OSA_NULL )
55127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            {
55137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4xVSS_internalConvertToUTF8(xVSS_context,
55147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    (M4OSA_Void *)pVSSContext->
55157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pClipList[pVSSContext->uiCurrentClip
55167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    - 1].pFile, (M4OSA_Void *)xVSS_context->
55177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    UTFConversionContext.
55187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pTempOutConversionBuffer, &ConvertedSize);
5519947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                                toto = (M4OSA_Char *)strstr((const char *)xVSS_context->
55207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    UTFConversionContext.
55217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pTempOutConversionBuffer,
5522947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                                    (const char *)xVSS_context->pTempPath);
55237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pTmpStr =
55247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    xVSS_context->UTFConversionContext.
55257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pTempOutConversionBuffer;
55267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            }
55277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            else
55287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            {
5529947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                                toto = (M4OSA_Char *)strstr((const char *)pVSSContext->
55307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pClipList[pVSSContext->uiCurrentClip
5531947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                                    - 1].pFile, (const char *)xVSS_context->pTempPath);
55327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pTmpStr = pVSSContext->
55337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    pClipList[pVSSContext->uiCurrentClip
55347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    - 1].pFile;
55357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            }
55367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5537947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                            if( toto != M4OSA_NULL )
55387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            {
55397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                /* As temporary files can be imgXXX.3gp or vidXXX.3gp */
55407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                pTmpStr +=
5541947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                                    (strlen((const char *)pTmpStr)
55427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    - 10); /* Because temporary files have a length at most of
55437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    10 bytes */
5544947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                                toto = (M4OSA_Char *)strstr((const char *)pTmpStr,
5545947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                                    (const char *)"img");
55467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
5547947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                                if( toto != M4OSA_NULL )
55487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                {
5549947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                                    toto = (M4OSA_Char *)strstr((const char *)pTmpStr,
5550947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                                        (const char *)"vid");
55517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                }
55527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
55537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                if( err
55547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    == M4NO_ERROR ) /* It means the file is a temporary file, we
55557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    can delete it */
55567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                {
5557947721ba962c19913b76658cdbb19ae8c77c9c50Dheeraj Sharma                                    remove((const char *)pVSSContext->
55587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        pClipList[pVSSContext->uiCurrentClip
55597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        - 1].pFile);
55607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                }
55617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            }
55627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
55637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
55647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* DO_NOT_REMOVE_TEMP_FILES*/
55657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* */
55667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
55677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err = M4NO_ERROR;
55687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
55697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
55707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( err == M4VSS3GPP_WAR_EDITING_DONE )
55717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
55727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->currentStep++;
55737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* P4ME00003276: When a step is complete, increment currentStep and reset
55747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        uiProgress unless progress would be wrong */
55757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        uiProgress = 0;
55767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err = M4xVSS_internalCloseEditedFile(xVSS_context);
55777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Fix for  blrnxpsw#234---> */
55787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( err != M4NO_ERROR )
55797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
55807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            if( err == ((M4OSA_UInt32)M4ERR_FILE_INVALID_POSITION) )
55817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            {
55827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                err = M4xVSSERR_NO_MORE_SPACE;
55837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            }
55847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRACE1_1(
55857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                "M4xVSS_internalCloseEditedFile returned an error: 0x%x",
55867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                err);
55877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            return err;
55887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
55897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /*<---- Fix for  blrnxpsw#234 */
55907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( xVSS_context->pCurrentEditSettings->xVSS.pBGMtrack
55917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            != M4OSA_NULL )
55927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
55937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS_context->editingStep =
55947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4xVSS_kMicroStateAudioMixing;
55957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* Open Audio mixing component */
55967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err = M4xVSS_internalGenerateAudioMixFile(xVSS_context);
55977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
55987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            if( err != M4NO_ERROR )
55997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            {
56007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4OSA_TRACE1_1(
56017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    "M4xVSS_internalGenerateAudioMixFile returned an error: 0x%x",
56027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    err);
56037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                /* TODO ? : Translate error code of VSS to an xVSS error code */
56047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                return err;
56057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            }
56067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err = M4NO_ERROR;
56077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            goto end_step;
56087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
56097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        else
56107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
56117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
56127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err = M4VSS3GPP_WAR_SAVING_DONE;
56137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            goto end_step;
56147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
56157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
56167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
56177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
56187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else if( xVSS_context->editingStep
56197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4xVSS_kMicroStateAudioMixing ) /* Audio mixing: mix/replace audio track
56207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    with given BGM */
56217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
56227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err = M4VSS3GPP_audioMixingStep(pAudioMixingCtxt, &uiProgress);
56237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
56247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( ( err != M4NO_ERROR)
56257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        && (err != M4VSS3GPP_WAR_END_OF_AUDIO_MIXING) )
56267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
56277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1(
56287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "M4VSS3GPP_audioMixingMain: M4VSS3GPP_audioMixingStep returned 0x%x\n",
56297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err);
56307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* TODO ? : Translate error code of VSS to an xVSS error code */
56317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return err;
56327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
56337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
56347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( err == M4VSS3GPP_WAR_END_OF_AUDIO_MIXING )
56357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
56367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->currentStep++;
56377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* P4ME00003276: When a step is complete, increment currentStep and reset
56387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        uiProgress unless progress would be wrong */
56397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        uiProgress = 0;
56407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err = M4xVSS_internalCloseAudioMixedFile(xVSS_context);
56417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
56427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( err != M4NO_ERROR )
56437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
56447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRACE1_1(
56457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                "M4xVSS_internalCloseAudioMixedFile returned an error: 0x%x",
56467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                err);
56477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* TODO ? : Translate error code of VSS to an xVSS error code */
56487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            return err;
56497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
56507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
56517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err = M4VSS3GPP_WAR_SAVING_DONE;
56527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            goto end_step;
56537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
56547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
56557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
56567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else
56577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
56587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Bad state in step function !");
56597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    return M4ERR_STATE;
56607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
56617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
56627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
56637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
56647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4xVSS_kStateAnalyzing:
56657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
56667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->analyseStep
56677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4xVSS_kMicroStateAnalysePto3GPP ) /* Pto3GPP, analysing input parameters */
56687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
56697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( xVSS_context->pPTo3GPPcurrentParams == M4OSA_NULL
56707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        && xVSS_context->pPTo3GPPparamsList != M4OSA_NULL )
56717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
56727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pPTo3GPPcurrentParams =
56737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS_context->
56747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pPTo3GPPparamsList; /* Current Pto3GPP Parameter is the first element
56757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            of the list */
56767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
56777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    else if( xVSS_context->pPTo3GPPcurrentParams != M4OSA_NULL
56787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        && xVSS_context->pPTo3GPPparamsList != M4OSA_NULL )
56797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
56807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pPTo3GPPcurrentParams =
56817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS_context->pPTo3GPPcurrentParams->
56827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pNext; /* Current Pto3GPP Parameter is the next element of the list */
56837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
56847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( xVSS_context->pPTo3GPPcurrentParams
56857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            == M4OSA_NULL ) /* It means there is no next image to convert */
56867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
56877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* We step to MCS phase */
56887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS_context->analyseStep =
56897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4xVSS_kMicroStateAnalyzeMCS;
56907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err = M4NO_ERROR;
56917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            goto end_step;
56927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
56937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
56947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    else if( xVSS_context->pPTo3GPPparamsList == M4OSA_NULL )
56957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
56967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->analyseStep =
56977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_kMicroStateAnalyzeMCS; /* Change Analyzing micro state to
56987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                             MCS phase */
56997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err = M4NO_ERROR;
57007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        goto end_step;
57017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
57027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
57037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Check if this file has to be converted or not */
57047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* If not, we just return M4NO_ERROR, and go to next file */
57057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( xVSS_context->pPTo3GPPcurrentParams->isCreated
57067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        == M4OSA_FALSE )
57077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
57087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Opening Pto3GPP */
57097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err = M4xVSS_internalStartConvertPictureTo3gp(xVSS_context);
57107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
57117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( err != M4NO_ERROR )
57127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
57137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRACE1_1("M4xVSS_Step: M4xVSS_internalStartConvertPictureTo3gp \
57147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            returned error: 0x%x",
57157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                err)
57167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                /* TODO ? : Translate error code of VSS to an xVSS error code */
57177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                return err;
57187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
57197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->analyseStep =
57207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_kMicroStateConvertPto3GPP;
57217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
57227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
57237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else if( xVSS_context->analyseStep
57247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4xVSS_kMicroStateConvertPto3GPP ) /* Pto3GPP, converting */
57257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
57267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err = M4PTO3GPP_Step(xVSS_context->pM4PTO3GPP_Ctxt);
572712db816fa13a3963183e45e397954a32418c3ee3Danny Fernandes                    /* update progress bar */
572812db816fa13a3963183e45e397954a32418c3ee3Danny Fernandes                    if(xVSS_context->pCallBackCtxt->m_NbImage > 1)
572912db816fa13a3963183e45e397954a32418c3ee3Danny Fernandes                    {
573012db816fa13a3963183e45e397954a32418c3ee3Danny Fernandes                        uiProgress = (xVSS_context->pCallBackCtxt->m_ImageCounter * 100) / (xVSS_context->pCallBackCtxt->m_NbImage -1);
573112db816fa13a3963183e45e397954a32418c3ee3Danny Fernandes                    }
57327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
57337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( ( err != M4NO_ERROR) && (err
57347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        != ((M4OSA_UInt32)M4PTO3GPP_WAR_END_OF_PROCESSING)) )
57357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
57367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* TO BE CHECKED NO LEAKS  !!!!! */
57377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1(
57387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            "M4xVSS_Step: M4PTO3GPP_Step returned 0x%x\n", err);
57397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* TODO ? : Translate error code of VSS to an xVSS error code */
57407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return err;
57417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
57427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    else if( err
57437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        == ((M4OSA_UInt32)M4PTO3GPP_WAR_END_OF_PROCESSING) )
57447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
57457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->currentStep++;
57467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* P4ME00003276: When a step is complete, increment currentStep and reset
57477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                         uiProgress unless progress would be wrong */
57487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        uiProgress = 0;
57497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->analyseStep =
57507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_kMicroStateAnalysePto3GPP; /* We go back to analyze parameters
57517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            to see if there is a next file to convert */
57527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* RC !!!!!!!! */
57537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pPTo3GPPcurrentParams->isCreated =
57547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRUE; /* To avoid reconverting it if another SendCommand is
57557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            called */
57567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err = M4xVSS_internalStopConvertPictureTo3gp(xVSS_context);
57577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /*SS:blrnxpsw#  234 */
57587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( err == ((M4OSA_UInt32)M4ERR_FILE_INVALID_POSITION) )
57597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
57607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err = M4xVSSERR_NO_MORE_SPACE;
57617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
57627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
57637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( err != M4NO_ERROR )
57647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
57657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRACE1_1("M4xVSS_Step:\
57667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                           M4xVSS_internalStopConvertPictureTo3gp returned 0x%x",
57677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            err);
57687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* TODO ? : Translate error code of VSS to an xVSS error code */
57697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            return err;
57707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
57717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
57727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
57737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else if( xVSS_context->analyseStep
57747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    ==
57757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4xVSS_kMicroStateAnalyzeMCS ) /* MCS: analyzing input parameters */
57767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
57777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( xVSS_context->pMCScurrentParams == M4OSA_NULL \
57787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        && xVSS_context->pMCSparamsList != M4OSA_NULL )
57797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
57807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pMCScurrentParams = xVSS_context->
57817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pMCSparamsList; /* Current MCS Parameter is the first
57827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                            element of the list */
57837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
57847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    else if( xVSS_context->pMCScurrentParams != M4OSA_NULL \
57857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        && xVSS_context->pMCSparamsList != M4OSA_NULL )
57867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
57877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pMCScurrentParams =
57887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS_context->pMCScurrentParams->
57897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            pNext; /* Current MCS Parameter
57907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                   is the next element of the list */
57917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
57927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( xVSS_context->pMCScurrentParams == M4OSA_NULL )
57937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* It means there is no next image to convert */
57947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
57957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS_context->analyseStep =
57967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4xVSS_kMicroStateAnalysePto3GPP; /* Reinit Analyzing micro state */
57977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            xVSS_context->m_state =
57987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4xVSS_kStateOpened; /* Change xVSS state */
57997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err = M4VSS3GPP_WAR_ANALYZING_DONE;
58007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            goto end_step; /* End of Analysis */
58017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
58027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
58037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    else if( xVSS_context->pMCSparamsList == M4OSA_NULL )
58047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
58057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->analyseStep =
58067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_kMicroStateAnalysePto3GPP; /* Reinit Analyzing micro state */
58077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->m_state =
58087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_kStateOpened; /* Change xVSS state */
58097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err = M4VSS3GPP_WAR_ANALYZING_DONE;
58107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        goto end_step;                        /* End of Analysis */
58117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
58127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
58137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Check if this file has to be transcoded or not */
58147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* If not, we just return M4NO_ERROR, and go to next file */
58157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( xVSS_context->pMCScurrentParams->isCreated == M4OSA_FALSE )
58167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
58177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Opening MCS */
5818e9eec0e0975c57c0dac91eb5b4cbb052b7dd011aRajneesh Chowdury                        M4OSA_UInt32 rotationDegree = 0;
5819e9eec0e0975c57c0dac91eb5b4cbb052b7dd011aRajneesh Chowdury                        err = M4xVSS_internalStartTranscoding(xVSS_context, &rotationDegree);
58207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
58217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( err != M4NO_ERROR )
58227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
58237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRACE1_1("M4xVSS_Step: M4xVSS_internalStartTranscoding returned\
5824e9eec0e0975c57c0dac91eb5b4cbb052b7dd011aRajneesh Chowdury                                 error: 0x%x", err);
5825e9eec0e0975c57c0dac91eb5b4cbb052b7dd011aRajneesh Chowdury                            return err;
5826e9eec0e0975c57c0dac91eb5b4cbb052b7dd011aRajneesh Chowdury                        }
5827e9eec0e0975c57c0dac91eb5b4cbb052b7dd011aRajneesh Chowdury                        int32_t index = xVSS_context->pMCScurrentParams->videoclipnumber;
5828eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury
5829eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury                        /* The cuts are done in the MCS, so we need to replace
5830eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury                           the beginCutTime and endCutTime to keep the entire video*/
5831eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury                        xVSS_context->pSettings->pClipList[index]->uiBeginCutTime = 0;
5832eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury                        xVSS_context->pSettings->pClipList[index]->uiEndCutTime = 0;
5833eaf349aaffc89c3ff754ddef856c80097b5a79a2Rajneesh Chowdury
58346e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury
58356e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        M4OSA_TRACE1_1("M4xVSS_Step: \
58366e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            M4xVSS_internalStartTranscoding returned \
58377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                success; MCS context: 0x%x",
58386e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                                 xVSS_context->pMCS_Ctxt);
58396e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                        xVSS_context->analyseStep =
58406e779fda8a4f6258f9b910290b2f296d18fb2585Rajneesh Chowdury                            M4xVSS_kMicroStateTranscodeMCS;
5841e9eec0e0975c57c0dac91eb5b4cbb052b7dd011aRajneesh Chowdury
5842e9eec0e0975c57c0dac91eb5b4cbb052b7dd011aRajneesh Chowdury                        // Retain rotation info of trimmed / transcoded file
5843e9eec0e0975c57c0dac91eb5b4cbb052b7dd011aRajneesh Chowdury                        xVSS_context->pSettings->pClipList[index]->\
5844e9eec0e0975c57c0dac91eb5b4cbb052b7dd011aRajneesh Chowdury                            ClipProperties.videoRotationDegrees = rotationDegree;
58457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
58467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
58477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else if( xVSS_context->analyseStep
58487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4xVSS_kMicroStateTranscodeMCS )
58497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* MCS: transcoding file */
58507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
58517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err = M4MCS_step(xVSS_context->pMCS_Ctxt, &uiProgress);
58527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*SS:blrnxpsw#  234 */
58537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( err == ((M4OSA_UInt32)M4MCS_ERR_NOMORE_SPACE) )
58547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
58557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err = M4xVSSERR_NO_MORE_SPACE;
58567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
58577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
58587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( ( err != M4NO_ERROR)
58597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        && (err != M4MCS_WAR_TRANSCODING_DONE) )
58607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
58617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* TO BE CHECKED NO LEAKS  !!!!! */
58627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1("M4xVSS_Step: M4MCS_step returned 0x%x\n",
58637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err);
58647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* TODO ? : Translate error code of MCS to an xVSS error code ? */
58657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return err;
58667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
58677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    else if( err == M4MCS_WAR_TRANSCODING_DONE )
58687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
58697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->currentStep++;
58707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* P4ME00003276: When a step is complete, increment currentStep and reset
58717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        uiProgress unless progress would be wrong */
58727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        uiProgress = 0;
58737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->analyseStep =
58747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4xVSS_kMicroStateAnalyzeMCS; /* We go back to
58757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                          analyze parameters to see if there is
58767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                                           a next file to transcode */
58777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* RC !!!!!!!!!*/
58787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        xVSS_context->pMCScurrentParams->isCreated =
58797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRUE; /* To avoid
58807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        reconverting it if another SendCommand is called */
58817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        err = M4xVSS_internalStopTranscoding(xVSS_context);
58827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
58837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( err != M4NO_ERROR )
58847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
58857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            M4OSA_TRACE1_1("M4xVSS_Step:\
58867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                           M4xVSS_internalStopTranscoding returned 0x%x", err);
58877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            /* TODO ? : Translate error code of MCS to an xVSS error code ? */
58887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            return err;
58897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
58907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
58917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
58927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else
58937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
58947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    M4OSA_TRACE1_0("Bad micro state in analyzing state")
58957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        return M4ERR_STATE;
58967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
58977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
58987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
58997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
59007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        default:
59017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_1(
59027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                "Bad state when calling M4xVSS_Step function! State is %d",
59037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->m_state);
59047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_STATE;
59057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
59067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
59077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargiend_step:
59087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Compute progression */
59097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->nbStepTotal != 0 )
59107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
59117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        *pProgress = (M4OSA_UInt8)(( ( xVSS_context->currentStep * 100) \
59127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            / (xVSS_context->nbStepTotal))
59137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            + (uiProgress / (xVSS_context->nbStepTotal)));
59147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
59157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        if( *pProgress > 100 )
59167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        {
59177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            *pProgress = 100;
59187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        }
59197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
59207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    else
59217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
59227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        *pProgress = 100;
59237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
59247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
59257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return err;
59267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
59277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
59287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
59297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
59307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * prototype    M4OSA_ERR M4xVSS_CloseCommand(M4OSA_Context pContext)
59317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This function deletes current editing profile, unallocate
59327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                ressources and change xVSS internal state.
59337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        After this function, the user can call a new M4xVSS_SendCommand
59347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
59357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext            (IN) Pointer on the xVSS edit context
59367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR:            No error
59377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER:    At least one parameter is M4OSA_NULL
59387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_STATE:        This function cannot not be called at this time
59397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
59407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
59417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4xVSS_CloseCommand( M4OSA_Context pContext )
59427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
59437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4xVSS_Context *xVSS_context = (M4xVSS_Context *)pContext;
59447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_ERR err = M4NO_ERROR;
59457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
59467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Check state */
59477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Depending of the state, differents things have to be done */
59487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    switch( xVSS_context->m_state )
59497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
59507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4xVSS_kStateOpened:
59517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            /* Nothing to do here */
59527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            err = M4xVSS_internalFreeSaving(xVSS_context);
59537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
59547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
59557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4xVSS_kStateSaving:
59567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
59577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->editingStep == M4xVSS_kMicroStateEditing )
59587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
59597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err = M4xVSS_internalCloseEditedFile(xVSS_context);
59607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
59617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( err != M4NO_ERROR )
59627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
59637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Fix for blrnxpsw#234---->*/
59647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( err == ((M4OSA_UInt32)M4ERR_FILE_INVALID_POSITION) )
59657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
59667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err = M4xVSSERR_NO_MORE_SPACE;
59677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
59687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1("M4xVSS_CloseCommand:\
59697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                       M4xVSS_internalCloseEditedFile returned an error: 0x%x",
59707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        err);
59717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* we are retaining error here and returning error  in the end of the
59727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        function  as to aviod memory leak*/
59737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        //return err;
59747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
59757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
59767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else if( xVSS_context->editingStep
59777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4xVSS_kMicroStateAudioMixing )
59787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
59797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err = M4xVSS_internalCloseAudioMixedFile(xVSS_context);
59807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
59817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( err != M4NO_ERROR )
59827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
59837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* Fix for blrnxpsw#234---->*/
59847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( err == ((M4OSA_UInt32)M4ERR_FILE_INVALID_POSITION) )
59857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
59867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err = M4xVSSERR_NO_MORE_SPACE;
59877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
59887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1("M4xVSS_CloseCommand: \
59897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                M4xVSS_internalCloseAudioMixedFile returned an error: 0x%x", err);
59907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* we are retaining error here and returning error  in the end of
59917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        the function  as to aviod memory leak*/
59927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        //return err;
59937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* <----Fix for blrnxpsw#234*/
59947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
59957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
59967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                err = M4xVSS_internalFreeSaving(xVSS_context);
59977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                /* We free this pointer only if a BGM track is present, because in that case,
59987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                this pointer owns to us */
59997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->pSettings->xVSS.pBGMtrack != M4OSA_NULL ) {
60007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*if(M4OSA_NULL != xVSS_context->pSettings->pOutputFile)
60017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
6002694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    free(xVSS_context->pSettings->pOutputFile);
60037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->pOutputFile = M4OSA_NULL;
60047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }*/
60057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /*if(M4OSA_NULL != xVSS_context->pSettings->pTemporaryFile)
60067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
6007694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu                    free(xVSS_context->pSettings->pTemporaryFile);
60087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    xVSS_context->pSettings->pTemporaryFile = M4OSA_NULL;
60097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }*/
60107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
60117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
60127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
60137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
60147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4xVSS_kStateSaved:
60157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
60167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
60177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        case M4xVSS_kStateAnalyzing:
60187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            {
60197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                if( xVSS_context->analyseStep == M4xVSS_kMicroStateConvertPto3GPP )
60207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
60217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free Pto3GPP module */
60227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err = M4xVSS_internalStopConvertPictureTo3gp(xVSS_context);
60237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Fix for blrnxpsw#234---->*/
60247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( err != M4NO_ERROR )
60257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
60267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( err == ((M4OSA_UInt32)M4ERR_FILE_INVALID_POSITION) )
60277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
60287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err = M4xVSSERR_NO_MORE_SPACE;
60297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
60307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1("M4xVSS_Step: \
60317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                       M4xVSS_internalStopConvertPictureTo3gp returned 0x%x", err);
60327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* we are retaining error here and returning error  in the end of the
60337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        function  as to aviod memory leak*/
60347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        //return err;
60357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
60367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* <-----Fix for blrnxpsw#234>*/
60377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
60387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                else if( xVSS_context->analyseStep
60397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    == M4xVSS_kMicroStateTranscodeMCS )
60407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                {
60417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Free MCS module */
60427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    err = M4MCS_abort(xVSS_context->pMCS_Ctxt);
60437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* Fix for blrnxpsw#234---->*/
60447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    if( err != M4NO_ERROR )
60457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    {
60467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        if( err == ((M4OSA_UInt32)M4ERR_FILE_INVALID_POSITION) )
60477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        {
60487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err = M4xVSSERR_NO_MORE_SPACE;
60497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        }
60507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        M4OSA_TRACE1_1("M4xVSS_Step: M4MCS_abort returned 0x%x",
60517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                            err);
60527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        /* we are retaining error here and returning error  in the end of the
60537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        function  as to aviod memory leak*/
60547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                        //return err;
60557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    }
60567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                    /* <---Fix for blrnxpsw#234*/
60577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                }
60587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            }
60597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            break;
60607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
60617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        default:
60627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_TRACE1_1(
60637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                "Bad state when calling M4xVSS_CloseCommand function! State is %d",
60647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                xVSS_context->m_state);
60657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            return M4ERR_STATE;
60667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
60677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
60687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Free Send command */
60697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4xVSS_freeCommand(xVSS_context);
60707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
60717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->m_state = M4xVSS_kStateInitialized; /* Change xVSS state */
60727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
60737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return err;
60747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
60757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
60767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
60777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
60787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * prototype    M4OSA_ERR M4xVSS_CleanUp(M4OSA_Context pContext)
60797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This function deletes all xVSS ressources
60807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        This function must be called after M4xVSS_CloseCommand.
60817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
60827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext            (IN) Pointer on the xVSS edit context
60837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR:            No error
60847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER:    At least one parameter is M4OSA_NULL
60857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_STATE:        This function cannot not be called at this time
60867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
60877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
60887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4xVSS_CleanUp( M4OSA_Context pContext )
60897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
60907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4xVSS_Context *xVSS_context = (M4xVSS_Context *)pContext;
60917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_TRACE3_0("M4xVSS_CleanUp:entering");
60927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
60937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Check state */
60947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->m_state != M4xVSS_kStateInitialized )
60957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
60967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_1(\
60977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            "Bad state when calling M4xVSS_CleanUp function! State is %d",\
60987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->m_state);
60997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_STATE;
61007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
61017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
61027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
61037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    * UTF conversion: free temporary buffer*/
61047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->UTFConversionContext.pTempOutConversionBuffer
61057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        != M4OSA_NULL )
61067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
6107694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu        free(xVSS_context->
61087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            UTFConversionContext.pTempOutConversionBuffer);
61097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        xVSS_context->UTFConversionContext.pTempOutConversionBuffer =
61107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            M4OSA_NULL;
61117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
61127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6113694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu    free(xVSS_context->pTempPath);
61147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pTempPath = M4OSA_NULL;
61157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6116694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu    free(xVSS_context->pSettings);
61177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context->pSettings = M4OSA_NULL;
61187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
6119694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu    free(xVSS_context);
61207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    xVSS_context = M4OSA_NULL;
61217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_TRACE3_0("M4xVSS_CleanUp:leaving ");
61227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
61237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return M4NO_ERROR;
61247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
61257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
61267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
61277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
61287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * prototype    M4xVSS_GetVersion(M4_VersionInfo *pVersion)
61297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This function get the version of the Video Studio 2.1
61307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
61317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pVersion            (IN) Pointer on the version info struct
61327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR:            No error
61337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER:    At least one parameter is M4OSA_NULL
61347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
61357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
61367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4xVSS_GetVersion( M4_VersionInfo *pVersion )
61377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
61387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Just used for a grep in code */
61397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* CHANGE_VERSION_HERE */
61407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    static const M4OSA_Char cVersion[26] = "NXPSW_VideoStudio21_1_3_0";
61417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
61427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( M4OSA_NULL == pVersion )
61437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
61447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_PARAMETER;
61457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
61467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
61477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pVersion->m_major = M4_xVSS_MAJOR;
61487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pVersion->m_minor = M4_xVSS_MINOR;
61497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pVersion->m_revision = M4_xVSS_REVISION;
61507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pVersion->m_structSize = sizeof(M4_VersionInfo);
61517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
61527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return M4NO_ERROR;
61537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
61547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
61557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
61567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
61577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_ERR M4xVSS_CreateClipSettings()
61587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Allows filling a clip settings structure with default values
61597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
61607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note    WARNING: pClipSettings->Effects[ ] will be allocated in this function.
61617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                   pClipSettings->pFile      will be allocated in this function.
61627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
61637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pClipSettings        (IN) Pointer to a valid M4VSS3GPP_ClipSettings structure
61647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param   pFile               (IN) Clip file name
61657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param   filePathSize        (IN) Size of the clip path (needed for the UTF16 conversion)
61667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    nbEffects           (IN) Nb of effect settings to allocate
61677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR:            No error
61687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER:    pClipSettings is M4OSA_NULL (debug only)
61697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
61707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
61717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4xVSS_CreateClipSettings( M4VSS3GPP_ClipSettings *pClipSettings,
61727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                    M4OSA_Void *pFile, M4OSA_UInt32 filePathSize,
61737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                     M4OSA_UInt8 nbEffects )
61747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
61757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_ERR err = M4NO_ERROR;
61767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
61777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_TRACE3_1("M4xVSS_CreateClipSettings called with pClipSettings=0x%p",
61787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pClipSettings);
61797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
61807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
61817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    *    Check input parameter */
61827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF2((M4OSA_NULL == pClipSettings), M4ERR_PARAMETER,
61837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4xVSS_CreateClipSettings: pClipSettings is NULL");
61847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
61857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Create inherited VSS3GPP stuff */
61867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*err = M4VSS3GPP_editCreateClipSettings(pClipSettings, pFile,nbEffects);*/
61877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /*FB: add clip path size (needed for UTF 16 conversion)*/
61887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_editCreateClipSettings(pClipSettings, pFile, filePathSize,
61897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        nbEffects);
61907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
61917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( M4NO_ERROR != err )
61927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
61937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_1("M4xVSS_CreateClipSettings :\
61947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                       ERROR in M4VSS3GPP_editCreateClipSettings = 0x%x", err);
61957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
61967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
61977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
61987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Set the clip settings to default */
61997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pClipSettings->xVSS.uiBeginCutPercent = 0;
62007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pClipSettings->xVSS.uiEndCutPercent = 0;
62017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pClipSettings->xVSS.uiDuration = 0;
62027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pClipSettings->xVSS.isPanZoom = M4OSA_FALSE;
62037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pClipSettings->xVSS.PanZoomTopleftXa = 0;
62047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pClipSettings->xVSS.PanZoomTopleftYa = 0;
62057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pClipSettings->xVSS.PanZoomTopleftXb = 0;
62067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pClipSettings->xVSS.PanZoomTopleftYb = 0;
62077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pClipSettings->xVSS.PanZoomXa = 0;
62087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    pClipSettings->xVSS.PanZoomXb = 0;
62097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
62107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
62117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    * Return with no error */
62127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_TRACE3_0("M4xVSS_CreateClipSettings(): returning M4NO_ERROR");
62137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
62147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return M4NO_ERROR;
62157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
62167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
62177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
62187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
62197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_ERR M4xVSS_DuplicateClipSettings()
62207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Duplicates a clip settings structure, performing allocations if required
62217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
62227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pClipSettingsDest    (IN) Pointer to a valid M4VSS3GPP_ClipSettings structure
62237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pClipSettingsOrig    (IN) Pointer to a valid M4VSS3GPP_ClipSettings structure
62247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param   bCopyEffects        (IN) Flag to know if we have to duplicate effects
62257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR:            No error
62267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER:    pClipSettings is M4OSA_NULL (debug only)
62277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
62287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
62297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4xVSS_DuplicateClipSettings( M4VSS3GPP_ClipSettings
62307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                       *pClipSettingsDest,
62317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                       M4VSS3GPP_ClipSettings *pClipSettingsOrig,
62327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                        M4OSA_Bool bCopyEffects )
62337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
62347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_ERR err = M4NO_ERROR;
62357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
62367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_TRACE3_2(
62377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4xVSS_DuplicateClipSettings called with dest=0x%p src=0x%p",
62387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pClipSettingsDest, pClipSettingsOrig);
62397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
62407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Check input parameter */
62417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF2((M4OSA_NULL == pClipSettingsDest), M4ERR_PARAMETER,
62427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4xVSS_DuplicateClipSettings: pClipSettingsDest is NULL");
62437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF2((M4OSA_NULL == pClipSettingsOrig), M4ERR_PARAMETER,
62447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4xVSS_DuplicateClipSettings: pClipSettingsOrig is NULL");
62457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
62467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Call inherited VSS3GPP duplication */
62477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    err = M4VSS3GPP_editDuplicateClipSettings(pClipSettingsDest,
62487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        pClipSettingsOrig, bCopyEffects);
62497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
62507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( M4NO_ERROR != err )
62517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
62527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_1("M4xVSS_CreateClipSettings :\
62537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                       ERROR in M4VSS3GPP_editDuplicateClipSettings = 0x%x", err);
62547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return err;
62557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
62567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
62577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Return with no error */
62587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_TRACE3_0("M4xVSS_DuplicateClipSettings(): returning M4NO_ERROR");
62597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
62607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return M4NO_ERROR;
62617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
62627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
62637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
62647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
62657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * M4OSA_ERR M4xVSS_FreeClipSettings()
62667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief    Free the pointers allocated in the ClipSetting structure (pFile, Effects, ...).
62677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
62687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pClipSettings        (IN) Pointer to a valid M4VSS3GPP_ClipSettings structure
62697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR:            No error
62707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER:    pClipSettings is M4OSA_NULL (debug only)
62717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
62727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
62737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4xVSS_FreeClipSettings( M4VSS3GPP_ClipSettings *pClipSettings )
62747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
62757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
62767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    *    Check input parameter */
62777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF2((M4OSA_NULL == pClipSettings), M4ERR_PARAMETER,
62787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4xVSS_FreeClipSettings: pClipSettings is NULL");
62797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
62807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /* Free inherited VSS3GPP stuff */
62817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4VSS3GPP_editFreeClipSettings(pClipSettings);
62827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
62837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return M4NO_ERROR;
62847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
62857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
62867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
62877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
62887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * prototype    M4OSA_ERR M4xVSS_getMCSContext(M4OSA_Context pContext, M4OSA_Context* mcsContext)
62897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This function returns the MCS context within the xVSS internal context
62907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        This function must be called only after VSS state has moved to analyzing state or
62917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * beyond
62927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *
62937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext            (IN) Pointer on the xVSS edit context
62947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    mcsContext        (OUT) Pointer to pointer of mcs context to return
62957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR:        No error
62967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER:    At least one parameter is M4OSA_NULL
62977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_STATE:        This function cannot not be called at this time
62987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
62997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
63007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4xVSS_getMCSContext( M4OSA_Context pContext,
63017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                               M4OSA_Context *mcsContext )
63027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
63037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4xVSS_Context *xVSS_context = (M4xVSS_Context *)pContext;
63047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_ERR err = M4NO_ERROR;
63057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
63067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
63077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    *    Check input parameter */
63087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF2((M4OSA_NULL == pContext), M4ERR_PARAMETER,
63097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4xVSS_getMCSContext: pContext is NULL");
63107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
63117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->m_state == M4xVSS_kStateInitialized )
63127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
63137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_1("M4xVSS_getMCSContext: Bad state! State is %d",\
63147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->m_state);
63157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_STATE;
63167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
63177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
63187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    *mcsContext = xVSS_context->pMCS_Ctxt;
63197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
63207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return err;
63217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
63227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
63237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**
63247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
63257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * prototype    M4OSA_ERR M4xVSS_getVSS3GPPContext(M4OSA_Context pContext,
63267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *                                                   M4OSA_Context* mcsContext)
63277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief        This function returns the VSS3GPP context within the xVSS internal context
63287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @note        This function must be called only after VSS state has moved to Generating preview
63297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *              or beyond
63307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    pContext            (IN) Pointer on the xVSS edit context
63317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @param    vss3gppContext        (OUT) Pointer to pointer of vss3gpp context to return
63327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4NO_ERROR:        No error
63337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_PARAMETER:    At least one parameter is M4OSA_NULL
63347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @return    M4ERR_STATE:        This function cannot not be called at this time
63357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ******************************************************************************
63367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */
63377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4xVSS_getVSS3GPPContext( M4OSA_Context pContext,
63387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi                                   M4OSA_Context *vss3gppContext )
63397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{
63407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4xVSS_Context *xVSS_context = (M4xVSS_Context *)pContext;
63417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_ERR err = M4NO_ERROR;
63427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
63437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    /**
63447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    *    Check input parameter */
63457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    M4OSA_DEBUG_IF2((M4OSA_NULL == pContext), M4ERR_PARAMETER,
63467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        "M4xVSS_getVSS3GPPContext: pContext is NULL");
63477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
63487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    if( xVSS_context->m_state < M4xVSS_kStateSaving )
63497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    {
63507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        M4OSA_TRACE1_1("M4xVSS_getVSS3GPPContext: Bad state! State is %d",\
63517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi            xVSS_context->m_state);
63527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi        return M4ERR_STATE;
63537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    }
63547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
63557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    *vss3gppContext = xVSS_context->pCurrentEditContext;
63567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi
63577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi    return err;
63587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi}
63590a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury
63600a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh ChowduryM4OSA_ERR M4xVSS_getVideoDecoderCapabilities(M4DECODER_VideoDecoders **decoders) {
63610a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    M4OSA_ERR err = M4NO_ERROR;
63620a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury
63630a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    // Call the decoder api directly
63640a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    // to get all the video decoder capablities.
63650a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    err = VideoEditorVideoDecoder_getVideoDecodersAndCapabilities(decoders);
63660a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury    return err;
63670a25bd5bacf5408ca205b15e53cfb6dc2fc1d171Rajneesh Chowdury}
6368