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