18d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/****************************************************************************** 28d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 38d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Copyright (C) 2015 The Android Open Source Project 48d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 58d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Licensed under the Apache License, Version 2.0 (the "License"); 68d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * you may not use this file except in compliance with the License. 78d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * You may obtain a copy of the License at: 88d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 98d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * http://www.apache.org/licenses/LICENSE-2.0 108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Unless required by applicable law or agreed to in writing, software 128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * distributed under the License is distributed on an "AS IS" BASIS, 138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * See the License for the specific language governing permissions and 158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * limitations under the License. 168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ***************************************************************************** 188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/ 208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* File Includes */ 238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* System include files */ 268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include <stdio.h> 278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include <stdlib.h> 288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include <stddef.h> 298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include <assert.h> 308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include <string.h> 317497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar 327497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar#ifndef IOS 338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include <malloc.h> 347497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar#endif 358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifdef WINDOWS_TIMER 378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "windows.h" 38a932f734ab7fbb48b1245611d876388b7d90ed90Martin Storsjo#else 39a932f734ab7fbb48b1245611d876388b7d90ed90Martin Storsjo#include <sys/time.h> 408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif 418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* User include files */ 428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264_typedefs.h" 438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "iv2.h" 448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ive2.h" 458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "ih264e.h" 468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "app.h" 478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#include "psnr.h" 488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function declarations */ 508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifndef MD5_DISABLE 518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid calc_md5_cksum(UWORD8 *pu1_inbuf,UWORD32 u4_stride,UWORD32 u4_width,UWORD32 u4_height,UWORD8 *pu1_cksum_p ); 528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#else 538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define calc_md5_cksum(a, b, c, d, e) 548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif 558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Enums */ 588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef enum 608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S INVALID, 628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S HELP, 638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S INPUT_FILE, 648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S OUTPUT_FILE, 658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S RECON_FILE, 668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S RECON_ENABLE, 678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHKSUM_ENABLE, 688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHKSUM_FILE, 698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S INPUT_CHROMA_FORMAT, 708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S RECON_CHROMA_FORMAT, 718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MAX_WD, 728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MAX_HT, 738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WD, 748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S HT, 758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MAX_LEVEL, 768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ENC_SPEED, 778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ME_SPEED, 788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S START_FRM, 798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S NUM_FRMS, 808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MAX_FRAMERATE, 818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S SRC_FRAMERATE, 828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S TGT_FRAMERATE, 838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S RC, 848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MAX_BITRATE, 858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S BITRATE, 868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S I_QP, 878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S P_QP, 888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S B_QP, 898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S I_QP_MAX, 908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S P_QP_MAX, 918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S B_QP_MAX, 928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S I_QP_MIN, 938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S P_QP_MIN, 948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S B_QP_MIN, 953749f6f435e79624f72841e866245d84195551cdHarinarayanan K K ENTROPY, 968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S AIR, 978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S AIR_REFRESH_PERIOD, 988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ARCH, 998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S SOC, 1008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S NUMCORES, 1018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PRE_ENC_ME, 1028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PRE_ENC_IPE, 1038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S HPEL, 1048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S QPEL, 1058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S SRCH_RNG_X, 1068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S SRCH_RNG_Y, 1078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S I_INTERVAL, 1088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IDR_INTERVAL, 1098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S B_FRMS, 1103749f6f435e79624f72841e866245d84195551cdHarinarayanan K K NUM_B_FRMS, 1118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S DISABLE_DBLK, 1128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PROFILE, 1138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S FAST_SAD, 1148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ALT_REF, 1158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S DISABLE_DEBLOCK_LEVEL, 1168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PSNR, 1178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S SLICE_MODE, 1188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S SLICE_PARAM, 1198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CONFIG, 1208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S LOOPBACK, 1218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S VBV_DELAY, 1228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S VBV_SIZE, 1238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S INTRA_4x4_ENABLE, 1248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MB_INFO_FILE, 1258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MB_INFO_TYPE, 1268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PIC_INFO_FILE, 1278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S PIC_INFO_TYPE, 1288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} ARGUMENT_T; 1298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Stypedef struct 1318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 1328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR argument_shortname[8]; 1338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR argument_name[128]; 1348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ARGUMENT_T argument; 1358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR description[512]; 1368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} argument_t; 1378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sstatic const argument_t argument_mapping[] = 1398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 1408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--help", HELP, "Print this help\n" }, 1418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "-i", "--input", INPUT_FILE, "Input file\n" }, 1428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "-o", "--output", OUTPUT_FILE, "Output file\n" }, 1438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--recon_enable", RECON_ENABLE, "Recon enable flag\n" }, 1448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "-r", "--recon", RECON_FILE, "Recon file \n" }, 1458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--input_chroma_format", INPUT_CHROMA_FORMAT, 1468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S "Input Chroma format Supported values YUV_420P, YUV_420SP_UV, YUV_420SP_VU\n" }, 1478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--recon_chroma_format", RECON_CHROMA_FORMAT, 1488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S "Recon Chroma format Supported values YUV_420P, YUV_420SP_UV, YUV_420SP_VU\n" }, 1498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "-w", "--width", WD, "Width of input file\n" }, 1508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "-h", "--height", HT, "Height file\n" }, 1518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--start_frame", START_FRM, "Starting frame number\n" }, 1528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "-f", "--num_frames", NUM_FRMS, "Number of frames to be encoded\n" }, 1538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--rc", RC, "Rate control mode 0: Constant Qp, 1: Storage, 2: CBR non low delay, 3: CBR low delay \n" }, 1548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--max_framerate", MAX_FRAMERATE, "Maximum frame rate \n" }, 1558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--tgt_framerate", TGT_FRAMERATE, "Target frame rate \n" }, 1568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--src_framerate", SRC_FRAMERATE, "Source frame rate \n" }, 1578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--i_interval", I_INTERVAL, "Intra frame interval \n" }, 1588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--idr_interval", IDR_INTERVAL, "IDR frame interval \n" }, 1593749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { "--", "--bframes", NUM_B_FRMS, "Maximum number of consecutive B frames \n" }, 1608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--speed", ENC_SPEED, "Encoder speed preset 0 (slowest) and 100 (fastest)\n" }, 1618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--me_speed", ME_SPEED, "Encoder speed preset 0 (slowest) and 100 (fastest)\n" }, 1628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--fast_sad", FAST_SAD, " Flag for faster sad execution\n" }, 1638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--alt_ref", ALT_REF , "Flag to enable alternate refernce frames"}, 1648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--hpel", HPEL, "Flag to enable/disable Quarter pel estimation \n" }, 1658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--qpel", QPEL, "Flag to enable/disable Quarter pel estimation \n" }, 1668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--disable_deblock_level", DISABLE_DEBLOCK_LEVEL, 1678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S "Disable deblock level - 0 : Enables deblock completely, 1: enables for I and 8th frame , 2: Enables for I only, 3 : disables completely\n" }, 1688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--search_range_x", SRCH_RNG_X, "Search range for X \n" }, 1698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--search_range_y", SRCH_RNG_Y, "Search range for Y \n" }, 1708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--psnr", PSNR, "Enable PSNR computation (Disable while benchmarking performance) \n" }, 1718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--pre_enc_me", PRE_ENC_ME, "Flag to enable/disable Pre Enc Motion Estimation\n" }, 1728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--pre_enc_ipe", PRE_ENC_IPE, "Flag to enable/disable Pre Enc Intra prediction Estimation\n" }, 1738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "-n", "--num_cores", NUMCORES, "Number of cores to be used\n" }, 1748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--adaptive_intra_refresh", AIR ,"Adaptive Intra Refresh enable/disable\n"}, 1758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--air_refresh_period", AIR_REFRESH_PERIOD,"adaptive intra refresh period\n"}, 1768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--slice", SLICE_MODE, "Slice mode- 0 :No slice, 1: Bytes per slice, 2: MB/CTB per slice \n" }, 1778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--slice_param", SLICE_PARAM, "Slice param value based on slice mode. Slice mode of 1 implies number of bytes per slice, 2 implies number of MBs/CTBs, for 0 value is neglected \n" }, 1788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--max_wd", MAX_WD, "Maximum width (Default: 1920) \n" }, 1798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--max_ht", MAX_HT, "Maximum height (Default: 1088)\n" }, 1808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--max_level", MAX_LEVEL, "Maximum Level (Default: 50)\n" }, 1818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--arch", ARCH, "Set Architecture. Supported values ARM_NONEON, ARM_A9Q, ARM_A7, ARM_A5, ARM_NEONINTR, X86_GENERIC, X86_SSSE3, X86_SSE4 \n" }, 1828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--soc", SOC, "Set SOC. Supported values GENERIC, HISI_37X \n" }, 1838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--chksum", CHKSUM_FILE, "Save Check sum file for recon data\n" }, 1848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--chksum_enable", CHKSUM_ENABLE, "Recon MD5 Checksum file\n"}, 1858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "-c", "--config", CONFIG, "config file (Default: enc.cfg)\n" }, 1868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--loopback", LOOPBACK, "Enable encoding in a loop\n" }, 1878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--profile", PROFILE, "Profile mode: Supported values BASE, MAIN, HIGH\n" }, 1888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--max_bitrate", MAX_BITRATE, "Max bitrate\n"}, 1898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--bitrate", BITRATE, "Target bitrate\n"}, 1908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--qp_i", I_QP, "QP for I frames\n"}, 1918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--qp_p", P_QP, "QP for P frames\n"}, 1928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--qp_b", B_QP, "QP for B frames\n"}, 1938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--qp_i_max", I_QP_MAX, "Max QP for I frames\n"}, 1948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--qp_p_max", P_QP_MAX, "Max QP for P frames\n"}, 1958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--qp_b_max", B_QP_MAX, "Max QP for B frames\n"}, 1968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--qp_i_min", I_QP_MIN, "Min QP for I frames\n"}, 1978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--qp_p_min", P_QP_MIN, "Min QP for P frames\n"}, 1988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--qp_b_min", B_QP_MIN, "Min QP for B frames\n"}, 1993749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { "--", "--entropy", ENTROPY, "Entropy coding mode(0: CAVLC or 1: CABAC)\n"}, 2008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--vbv_delay", VBV_DELAY, "VBV buffer delay\n"}, 2018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--vbv_size", VBV_SIZE, "VBV buffer size\n"}, 2028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "-i4", "--intra_4x4_enable", INTRA_4x4_ENABLE, "Intra 4x4 enable \n" }, 2038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--mb_info_file", MB_INFO_FILE, "MB info file\n"}, 2048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--mb_info_type", MB_INFO_TYPE, "MB info type\n"}, 2058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--pic_info_file", PIC_INFO_FILE, "Pic info file\n"}, 2068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { "--", "--pic_info_type", PIC_INFO_TYPE, "Pic info type\n"}, 2078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S }; 2088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 2128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function Declarations */ 2138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 2148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 2188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function Definitions */ 2198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 2208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#if(defined X86) && (defined X86_MINGW) 2238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 2248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function to print library calls */ 2258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 2268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 2278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 2288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function Name : memalign */ 2298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 2308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Description : Returns malloc data. Ideally should return aligned memory*/ 2318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* support alignment will be added later */ 2328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 2338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Inputs : alignment */ 2348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* size */ 2358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Globals : */ 2368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Processing : */ 2378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 2388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Outputs : */ 2398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Returns : */ 2408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 2418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Issues : */ 2428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 2438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Revision History: */ 2448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 2458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* DD MM YYYY Author(s) Changes */ 2468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* 07 09 2012 100189 Initial Version */ 2478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 2488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 2498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid * ih264a_aligned_malloc(WORD32 alignment, WORD32 size) 2518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 2528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return _aligned_malloc(size, alignment); 2538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 2548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264a_aligned_free(void *pv_buf) 2568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 2578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S _aligned_free(pv_buf); 2588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 2598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 2608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#elif IOS 2628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid * ih264a_aligned_malloc(WORD32 alignment, WORD32 size) 2648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 2658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return malloc(size); 2668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 2678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264a_aligned_free(void *pv_buf) 2698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 2708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S free(pv_buf); 2718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 2728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 2738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#else 2758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid * ih264a_aligned_malloc(WORD32 alignment, WORD32 size) 2778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 2788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return memalign(alignment, size); 2798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 2808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid ih264a_aligned_free(void *pv_buf) 2828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 2838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S free(pv_buf); 2848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 2858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 2868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif 2888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 2908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 2918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function Name : codec_exit */ 2928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 2938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Description : handles unrecoverable errors */ 2948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Inputs : Error message */ 2958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Globals : None */ 2968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Processing : Prints error message to console and exits. */ 2978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Outputs : Error message to the console */ 2988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Returns : None */ 2998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Issues : */ 3018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Revision History: */ 3038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* DD MM YYYY Author(s) Changes (Describe the changes made) */ 3058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* 07 06 2006 Sankar Creation */ 3068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 3088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid codec_exit(CHAR *pc_err_message) 3098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 3108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("%s\n", pc_err_message); 3118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S exit(-1); 3128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 3138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 3158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function Name : codec_exit */ 3178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Description : handles unrecoverable errors */ 3198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Inputs : Error message */ 3208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Globals : None */ 3218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Processing : Prints error message to console and exits. */ 3228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Outputs : Error mesage to the console */ 3238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Returns : None */ 3248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Issues : */ 3268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Revision History: */ 3288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* DD MM YYYY Author(s) Changes (Describe the changes made) */ 3308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* 07 06 2006 Sankar Creation */ 3318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 3338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIV_COLOR_FORMAT_T get_chroma_fmt(CHAR *value) 3348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 3358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_COLOR_FORMAT_T e_chroma_format; 3368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((strcmp(value, "YUV_420P")) == 0) 3378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S e_chroma_format = IV_YUV_420P; 3388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "YUV_422ILE")) == 0) 3398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S e_chroma_format = IV_YUV_422ILE; 3408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "RGB_565")) == 0) 3418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S e_chroma_format = IV_RGB_565; 3428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "RGBA_8888")) == 0) 3438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S e_chroma_format = IV_RGBA_8888; 3448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "YUV_420SP_UV")) == 0) 3458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S e_chroma_format = IV_YUV_420SP_UV; 3468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "YUV_420SP_VU")) == 0) 3478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S e_chroma_format = IV_YUV_420SP_VU; 3488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 3498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 3508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("\nInvalid colour format setting it to IV_YUV_420P\n"); 3518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S e_chroma_format = IV_YUV_420P; 3528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 3538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return e_chroma_format; 3548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 3558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 3578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function Name : codec_exit */ 3598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Description : handles unrecoverable errors */ 3618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Inputs : Error message */ 3628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Globals : None */ 3638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Processing : Prints error message to console and exits. */ 3648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Outputs : Error mesage to the console */ 3658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Returns : None */ 3668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Issues : */ 3688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Revision History: */ 3708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* DD MM YYYY Author(s) Changes (Describe the changes made) */ 3728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* 07 06 2006 Sankar Creation */ 3738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 3748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 3758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SIVE_SPEED_CONFIG get_speed_preset(CHAR *value) 3768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 3778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IVE_SPEED_CONFIG e_enc_speed_preset; 3788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((strcmp(value, "CONFIG")) == 0) 3798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S e_enc_speed_preset = IVE_CONFIG; 3808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "SLOWEST")) == 0) 3818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S e_enc_speed_preset = IVE_SLOWEST; 3828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "NORMAL")) == 0) 3838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S e_enc_speed_preset = IVE_NORMAL; 3848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "FAST")) == 0) 3858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S e_enc_speed_preset = IVE_FAST; 3868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "HIGH_SPEED")) == 0) 3878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S e_enc_speed_preset = IVE_HIGH_SPEED; 3888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "FASTEST")) == 0) 3898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S e_enc_speed_preset = IVE_FASTEST; 3908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 3918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 3928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("\nInvalid speed preset, setting it to IVE_FASTEST\n"); 3938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S e_enc_speed_preset = IVE_FASTEST; 3948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 3958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return e_enc_speed_preset; 3968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 3978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 3998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function Name : print_usage */ 4018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Description : Prints argument format */ 4038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Inputs : */ 4068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Globals : */ 4078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Processing : Prints argument format */ 4088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Outputs : */ 4108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Returns : */ 4118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Issues : */ 4138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Revision History: */ 4158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* DD MM YYYY Author(s) Changes */ 4178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* 07 09 2012 100189 Initial Version */ 4188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 4208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid print_usage(void) 4228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 4238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i = 0; 4248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 num_entries = sizeof(argument_mapping) / sizeof(argument_t); 4258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("\nUsage:\n"); 4268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S while(i < num_entries) 4278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 4288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("%-32s\t %s", argument_mapping[i].argument_name, 4298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S argument_mapping[i].description); 4308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i++; 4318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 4328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 4338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 4358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function Name : get_argument */ 4378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Description : Gets argument for a given string */ 4398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Inputs : name */ 4428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Globals : */ 4438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Processing : Searches the given string in the array and returns */ 4448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* appropriate argument ID */ 4458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Outputs : Argument ID */ 4478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Returns : Argument ID */ 4488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Issues : */ 4508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Revision History: */ 4528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* DD MM YYYY Author(s) Changes */ 4548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* 07 09 2012 100189 Initial Version */ 4558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 4578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha SARGUMENT_T get_argument(CHAR *name) 4588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 4598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i = 0; 4608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 num_entries = sizeof(argument_mapping) / sizeof(argument_t); 4618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S while(i < num_entries) 4628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 4638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((0 == strcmp(argument_mapping[i].argument_name, name)) || 4648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ((0 == strcmp(argument_mapping[i].argument_shortname, name)) && 4658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (0 != strcmp(argument_mapping[i].argument_shortname, "--")))) 4668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 4678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return argument_mapping[i].argument; 4688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 4698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i++; 4708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 4718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return INVALID; 4728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 4738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 4758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function Name : get_argument */ 4778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Description : Gets argument for a given string */ 4798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Inputs : name */ 4828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Globals : */ 4838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Processing : Searches the given string in the array and returns */ 4848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* appropriate argument ID */ 4858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Outputs : Argument ID */ 4878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Returns : Argument ID */ 4888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Issues : */ 4908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Revision History: */ 4928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* DD MM YYYY Author(s) Changes */ 4948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* 07 09 2012 100189 Initial Version */ 4958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 4968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 4978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid parse_argument(app_ctxt_t *ps_app_ctxt, CHAR *argument, CHAR *value) 4988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 4998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ARGUMENT_T arg; 5008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S arg = get_argument(argument); 5028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S switch(arg) 5038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 5048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case HELP: 5058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S print_usage(); 5068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S exit(-1); 5078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case SLICE_MODE: 5098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_slice_mode); 5108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case SLICE_PARAM: 5128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_slice_param); 5138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case INPUT_FILE: 5158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%s", ps_app_ctxt->ac_ip_fname); 5168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case OUTPUT_FILE: 5198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%s", ps_app_ctxt->ac_op_fname); 5208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case RECON_FILE: 5238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%s", ps_app_ctxt->ac_recon_fname); 5248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case RECON_ENABLE: 5278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_recon_enable); 5288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case CHKSUM_FILE: 5318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%s", ps_app_ctxt->ac_chksum_fname); 5328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case CHKSUM_ENABLE: 5358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_chksum_enable); 5368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case MB_INFO_FILE: 5398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%s", ps_app_ctxt->ac_mb_info_fname); 5408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case MB_INFO_TYPE: 5438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_mb_info_type); 5448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case PIC_INFO_FILE: 5478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%s", ps_app_ctxt->ac_pic_info_fname); 5488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case PIC_INFO_TYPE: 5518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_pic_info_type); 5528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case INPUT_CHROMA_FORMAT: 5558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_inp_color_fmt = get_chroma_fmt(value); 5568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case RECON_CHROMA_FORMAT: 5598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_recon_color_fmt = get_chroma_fmt(value); 5608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case MAX_WD: 5638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_max_wd); 5648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case MAX_HT: 5678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_max_ht); 5688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case WD: 5718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_wd); 5728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case HT: 5758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_ht); 5768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case MAX_LEVEL: 5798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_max_level); 5808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case ENC_SPEED: 5838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_enc_speed = get_speed_preset(value); 5848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case ME_SPEED: 5878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_me_speed); 5888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case START_FRM: 5918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_start_frm); 5928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case NUM_FRMS: 5958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_max_num_frms); 5968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 5978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case MAX_FRAMERATE: 5998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_max_frame_rate); 6008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_app_ctxt->u4_max_frame_rate <= 0) 6018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_max_frame_rate = DEFAULT_MAX_FRAMERATE; 6028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case SRC_FRAMERATE: 6058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_src_frame_rate); 6068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_app_ctxt->u4_src_frame_rate <= 0) 6078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_src_frame_rate = DEFAULT_SRC_FRAME_RATE; 6088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case TGT_FRAMERATE: 6118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_tgt_frame_rate); 6128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_app_ctxt->u4_tgt_frame_rate <= 0) 6138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_tgt_frame_rate = DEFAULT_TGT_FRAME_RATE; 6148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case RC: 6178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_rc); 6188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case MAX_BITRATE: 6218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_max_bitrate); 6228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case BITRATE: 6258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_bitrate); 6268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case I_QP: 6298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_i_qp); 6308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case I_QP_MAX: 6338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_i_qp_max); 6348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case I_QP_MIN: 6378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_i_qp_min); 6388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case P_QP: 6418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_p_qp); 6428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case P_QP_MAX: 6458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_p_qp_max); 6468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case P_QP_MIN: 6498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_p_qp_min); 6508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case B_QP: 6538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_b_qp); 6548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case B_QP_MAX: 6578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_b_qp_max); 6588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case B_QP_MIN: 6618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_b_qp_min); 6628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6643749f6f435e79624f72841e866245d84195551cdHarinarayanan K K case ENTROPY: 6653749f6f435e79624f72841e866245d84195551cdHarinarayanan K K sscanf(value, "%d", &ps_app_ctxt->u4_entropy_coding_mode); 6663749f6f435e79624f72841e866245d84195551cdHarinarayanan K K break; 6673749f6f435e79624f72841e866245d84195551cdHarinarayanan K K 6688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case AIR: 6698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_air); 6708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 6718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case ARCH: 6738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((strcmp(value, "ARM_NONEON")) == 0) 6748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_arch = ARCH_ARM_NONEON; 6758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "ARM_A9Q")) == 0) 6768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_arch = ARCH_ARM_A9Q; 6778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "ARM_A7")) == 0) 6788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_arch = ARCH_ARM_A7; 6798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "ARM_A5")) == 0) 6808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_arch = ARCH_ARM_A5; 6818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "ARM_NEONINTR")) == 0) 6828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_arch = ARCH_ARM_NEONINTR; 6838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "X86_GENERIC")) == 0) 6848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_arch = ARCH_X86_GENERIC; 6858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "X86_SSSE3")) == 0) 6868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_arch = ARCH_X86_SSSE3; 6878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "X86_SSE42")) == 0) 6888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_arch = ARCH_X86_SSE42; 6898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "ARM_A53")) == 0) 6908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_arch = ARCH_ARM_A53; 6918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "ARM_A57")) == 0) 6928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_arch = ARCH_ARM_A57; 6938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "ARM_V8_NEON")) == 0) 6948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_arch = ARCH_ARM_V8_NEON; 6958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 6968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 6978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("\nInvalid Arch. Setting it to ARM_A9Q\n"); 6988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_arch = ARCH_ARM_A9Q; 6998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 7008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case SOC: 7038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((strcmp(value, "GENERIC")) == 0) 7048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_soc = SOC_GENERIC; 7058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "HISI_37X")) == 0) 7068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_soc = SOC_HISI_37X; 7078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 7088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 7098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_soc = SOC_GENERIC; 7108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 7118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case NUMCORES: 7148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_num_cores); 7158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case LOOPBACK: 7188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_loopback); 7198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case PRE_ENC_ME: 7228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_pre_enc_me); 7238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case PRE_ENC_IPE: 7268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_pre_enc_ipe); 7278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case HPEL: 7308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_hpel); 7318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case QPEL: 7348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_qpel); 7358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case SRCH_RNG_X: 7388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_srch_rng_x); 7398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case SRCH_RNG_Y: 7428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_srch_rng_y); 7438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case I_INTERVAL: 7468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_i_interval); 7478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case IDR_INTERVAL: 7508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_idr_interval); 7518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7533749f6f435e79624f72841e866245d84195551cdHarinarayanan K K case NUM_B_FRMS: 7543749f6f435e79624f72841e866245d84195551cdHarinarayanan K K sscanf(value, "%d", &ps_app_ctxt->u4_num_bframes); 7558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case DISABLE_DEBLOCK_LEVEL: 7588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_disable_deblk_level); 7598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case VBV_DELAY: 7628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_vbv_buffer_delay); 7638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case VBV_SIZE: 7668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_vbv_buf_size); 7678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case FAST_SAD: 7708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_enable_fast_sad); 7718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case ALT_REF: 7748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_enable_alt_ref); 7758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case AIR_REFRESH_PERIOD: 7788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_air_refresh_period); 7798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case PROFILE: 7828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((strcmp(value, "BASE")) == 0) 7838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_profile = IV_PROFILE_BASE; 7848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "MAIN")) == 0) 7858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_profile = IV_PROFILE_MAIN; 7868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if((strcmp(value, "HIGH")) == 0) 7878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_profile = IV_PROFILE_HIGH; 7888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 7898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 7908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("\nInvalid profile. Setting it to BASE\n"); 7918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_profile = IV_PROFILE_BASE; 7928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 7938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case PSNR: 7968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_psnr_enable); 7978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 7988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 7998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case INTRA_4x4_ENABLE: 8008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(value, "%d", &ps_app_ctxt->u4_enable_intra_4x4); 8018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 8028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S case INVALID: 8058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S default: 8068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("Ignoring argument : %s\n", argument); 8078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 8088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 8108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 8128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 8138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function Name : read_cfg_file */ 8148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 8158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Description : Reads arguments from a configuration file */ 8168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 8178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 8188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Inputs : ps_app_ctxt : Application context */ 8198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* fp_cfg_file : Configuration file handle */ 8208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Globals : */ 8218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Processing : Parses the arguments and fills in the application context*/ 8228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 8238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Outputs : Arguments parsed */ 8248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Returns : None */ 8258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 8268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Issues : */ 8278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 8288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Revision History: */ 8298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 8308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* DD MM YYYY Author(s) Changes */ 8318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* 07 09 2012 100189 Initial Version */ 8328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 8338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 8348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid read_cfg_file(app_ctxt_t *ps_app_ctxt, FILE *fp_cfg) 8358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 8368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR line[STRLENGTH]; 8378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR description[STRLENGTH]; 8388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR value[STRLENGTH]; 8398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR argument[STRLENGTH]; 8408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S while(0 == (feof(fp_cfg))) 8428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 8438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S line[0] = '\0'; 8448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S fgets(line, STRLENGTH, fp_cfg); 8458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S argument[0] = '\0'; 8468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Reading Input File Name */ 8478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sscanf(line, "%s %s %s", argument, value, description); 8488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(argument[0] == '\0') 8498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S continue; 8508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S parse_argument(ps_app_ctxt, argument, value); 8528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 8548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid invalid_argument_exit(CHAR *pc_err_message) 8568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 8578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S print_usage(); 8588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(pc_err_message); 8598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 8608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid validate_params(app_ctxt_t *ps_app_ctxt) 8628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 8638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 8648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_app_ctxt->ac_ip_fname[0] == '\0') 8668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 8678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S invalid_argument_exit("Specify input file"); 8688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_app_ctxt->ac_op_fname[0] == '\0') 8708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 8718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S invalid_argument_exit("Specify output file"); 8728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((1 == ps_app_ctxt->u4_recon_enable) && (ps_app_ctxt->ac_recon_fname[0] == '\0')) 8748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 8758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S invalid_argument_exit("Specify recon file"); 8768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((1 == ps_app_ctxt->u4_chksum_enable) && (ps_app_ctxt->ac_chksum_fname[0] == '\0')) 8788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 8798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S invalid_argument_exit("Specify checksum file"); 8808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(0 >= (WORD32)ps_app_ctxt->u4_wd) 8828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 8838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Invalid width: %d", ps_app_ctxt->u4_wd); 8848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S invalid_argument_exit(ac_error); 8858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(0 >= (WORD32)ps_app_ctxt->u4_ht) 8878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 8888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Invalid height: %d", ps_app_ctxt->u4_ht); 8898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S invalid_argument_exit(ac_error); 8908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 8928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(0 == (WORD32)ps_app_ctxt->u4_max_num_frms) 8938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 8948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Invalid number of frames to be encoded: %d", ps_app_ctxt->u4_max_num_frms); 8958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S invalid_argument_exit(ac_error); 8968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 8973749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if ((0 != (WORD32)ps_app_ctxt->u4_entropy_coding_mode) 8983749f6f435e79624f72841e866245d84195551cdHarinarayanan K K && (1 != (WORD32)ps_app_ctxt->u4_entropy_coding_mode)) 8993749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 9003749f6f435e79624f72841e866245d84195551cdHarinarayanan K K sprintf(ac_error, "Invalid entropy codeing mode: %d", 9013749f6f435e79624f72841e866245d84195551cdHarinarayanan K K ps_app_ctxt->u4_entropy_coding_mode); 9023749f6f435e79624f72841e866245d84195551cdHarinarayanan K K invalid_argument_exit(ac_error); 9033749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 9048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 9058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 9068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid init_default_params(app_ctxt_t *ps_app_ctxt) 9088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 9098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->ps_enc = NULL; 9118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->ps_mem_rec = NULL; 9128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_num_mem_rec = DEFAULT_MEM_REC_CNT; 9138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_recon_enable = DEFAULT_RECON_ENABLE; 9148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_chksum_enable = DEFAULT_CHKSUM_ENABLE; 9158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_mb_info_type = 0; 9168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_pic_info_type = 0; 9178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_mb_info_size = 0; 9188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_pic_info_size = 0; 9198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_start_frm = DEFAULT_START_FRM; 9208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_max_num_frms = DEFAULT_NUM_FRMS; 921dc4c6140a935c949b888e5cb16a198444a24d031Martin Storsjo ps_app_ctxt->avg_time = 0; 9228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_total_bytes = 0; 9238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_pics_cnt = 0; 9248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_inp_color_fmt = DEFAULT_INP_COLOR_FMT; 9258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_recon_color_fmt = DEFAULT_RECON_COLOR_FMT; 9263a52efd36102c9a4cb8e8f23b6f9131b8b01eef5Harish Mahendrakar ps_app_ctxt->e_arch = ARCH_ARM_A9Q; 9278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_soc = SOC_GENERIC; 9288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->header_generated = 0; 9298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->pv_codec_obj = NULL; 9308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_num_cores = DEFAULT_NUM_CORES; 9318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_pre_enc_me = 0; 9328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_pre_enc_ipe = 0; 9338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->ac_ip_fname[0] = '\0'; 9348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->ac_op_fname[0] = '\0'; 9358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->ac_recon_fname[0] = '\0'; 9368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->ac_chksum_fname[0] = '\0'; 9378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->ac_mb_info_fname[0] = '\0'; 9388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->fp_ip = NULL; 9398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->fp_op = NULL; 9408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->fp_recon = NULL; 9418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->fp_chksum = NULL; 9428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->fp_psnr_ip = NULL; 9438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->fp_mb_info = NULL; 9448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->fp_pic_info = NULL; 9458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_loopback = DEFAULT_LOOPBACK; 9468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_max_frame_rate = DEFAULT_MAX_FRAMERATE; 9478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_src_frame_rate = DEFAULT_SRC_FRAME_RATE; 9488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_tgt_frame_rate = DEFAULT_TGT_FRAME_RATE; 9498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_max_wd = DEFAULT_MAX_WD; 9508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_max_ht = DEFAULT_MAX_HT; 9518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_max_level = DEFAULT_MAX_LEVEL; 9528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_strd = DEFAULT_STRIDE; 9538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_wd = DEFAULT_WD; 9548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_ht = DEFAULT_HT; 9558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_psnr_enable = DEFAULT_PSNR_ENABLE; 9568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_enc_speed = IVE_FASTEST; 9578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_me_speed = DEFAULT_ME_SPEED; 9588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_enable_fast_sad = DEFAULT_ENABLE_FAST_SAD; 9598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_enable_alt_ref = DEFAULT_ENABLE_ALT_REF; 9608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_rc = DEFAULT_RC; 9618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_max_bitrate = DEFAULT_MAX_BITRATE; 9623749f6f435e79624f72841e866245d84195551cdHarinarayanan K K ps_app_ctxt->u4_num_bframes = DEFAULT_NUM_BFRAMES; 9638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_bitrate = DEFAULT_BITRATE; 9648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_i_qp = DEFAULT_I_QP; 9658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_p_qp = DEFAULT_P_QP; 9668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_b_qp = DEFAULT_B_QP; 9678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_i_qp_min = DEFAULT_QP_MIN; 9688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_i_qp_max = DEFAULT_QP_MAX; 9698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_p_qp_min = DEFAULT_QP_MIN; 9708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_p_qp_max = DEFAULT_QP_MAX; 9718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_b_qp_min = DEFAULT_QP_MIN; 9728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_b_qp_max = DEFAULT_QP_MAX; 9738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_air = DEFAULT_AIR; 9748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_air_refresh_period = DEFAULT_AIR_REFRESH_PERIOD; 9758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_srch_rng_x = DEFAULT_SRCH_RNG_X; 9768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_srch_rng_y = DEFAULT_SRCH_RNG_Y; 9778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_i_interval = DEFAULT_I_INTERVAL; 9788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_idr_interval = DEFAULT_IDR_INTERVAL; 9798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_disable_deblk_level = DEFAULT_DISABLE_DEBLK_LEVEL; 9808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_hpel = DEFAULT_HPEL; 9818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_qpel = DEFAULT_QPEL; 9828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_enable_intra_4x4 = DEFAULT_I4; 9838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->e_profile = DEFAULT_EPROFILE; 9848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_slice_mode = DEFAULT_SLICE_MODE; 9858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_slice_param = DEFAULT_SLICE_PARAM; 9868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->pv_input_thread_handle = NULL; 9878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->pv_output_thread_handle = NULL; 9888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->pv_recon_thread_handle = NULL; 9898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_vbv_buf_size = 0; 9908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_vbv_buffer_delay = 1000; 9918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->adbl_psnr[0] = 0.0; 9928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->adbl_psnr[1] = 0.0; 9938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->adbl_psnr[2] = 0.0; 9948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_psnr_cnt = 0; 9958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->pu1_psnr_buf = NULL; 9968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_psnr_buf_size = 0; 9973749f6f435e79624f72841e866245d84195551cdHarinarayanan K K ps_app_ctxt->u4_entropy_coding_mode = DEFAULT_ENTROPY_CODING_MODE; 9988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 9998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 10008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 10018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid set_dimensions(app_ctxt_t *ps_app_ctxt, 10038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_low, 10048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_high) 10058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 10068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_dimensions_ip_t s_frame_dimensions_ip; 10078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_dimensions_op_t s_frame_dimensions_op; 10088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T status; 10098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_dimensions_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 10118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_dimensions_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_SET_DIMENSIONS; 10128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_dimensions_ip.s_ive_ip.u4_ht = ps_app_ctxt->u4_ht; 10148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_dimensions_ip.s_ive_ip.u4_wd = ps_app_ctxt->u4_wd; 10158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_dimensions_ip.s_ive_ip.u4_timestamp_high = u4_timestamp_high; 10178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_dimensions_ip.s_ive_ip.u4_timestamp_low = u4_timestamp_low; 10188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_dimensions_ip.s_ive_ip.u4_size = 10208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sizeof(ih264e_ctl_set_dimensions_ip_t); 10218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_dimensions_op.s_ive_op.u4_size = 10228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sizeof(ih264e_ctl_set_dimensions_op_t); 10238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_app_ctxt->ps_enc, 10258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S &s_frame_dimensions_ip, 10268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S &s_frame_dimensions_op); 10278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 10288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 10298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 10308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to set frame dimensions = 0x%x\n", 10318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_dimensions_op.s_ive_op.u4_error_code); 10328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 10338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 10348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 10358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 10368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid set_frame_rate(app_ctxt_t *ps_app_ctxt, 10388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_low, 10398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_high) 10408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 10418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_frame_rate_ip_t s_frame_rate_ip; 10428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_frame_rate_op_t s_frame_rate_op; 10438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T status; 10448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_rate_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 10468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_rate_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_SET_FRAMERATE; 10478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_rate_ip.s_ive_ip.u4_src_frame_rate = 10498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_src_frame_rate; 10508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_rate_ip.s_ive_ip.u4_tgt_frame_rate = 10518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_tgt_frame_rate; 10528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_rate_ip.s_ive_ip.u4_timestamp_high = u4_timestamp_high; 10548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_rate_ip.s_ive_ip.u4_timestamp_low = u4_timestamp_low; 10558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_rate_ip.s_ive_ip.u4_size = sizeof(ih264e_ctl_set_frame_rate_ip_t); 10578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_rate_op.s_ive_op.u4_size = sizeof(ih264e_ctl_set_frame_rate_op_t); 10588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_app_ctxt->ps_enc,&s_frame_rate_ip,&s_frame_rate_op); 10608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 10618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 10628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 10638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to set frame rate = 0x%x\n", 10648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_rate_op.s_ive_op.u4_error_code); 10658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 10668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 10678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 10688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 10698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid set_ipe_params(app_ctxt_t *ps_app_ctxt, 10728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_low, 10738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_high) 10748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 10758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_ipe_params_ip_t s_ipe_params_ip; 10768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_ipe_params_op_t s_ipe_params_op; 10778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T status; 10788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ipe_params_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 10808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ipe_params_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_SET_IPE_PARAMS; 10818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ipe_params_ip.s_ive_ip.u4_enable_intra_4x4 = ps_app_ctxt->u4_enable_intra_4x4; 10838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ipe_params_ip.s_ive_ip.u4_enc_speed_preset = ps_app_ctxt->u4_enc_speed; 10848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ipe_params_ip.s_ive_ip.u4_timestamp_high = u4_timestamp_high; 10868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ipe_params_ip.s_ive_ip.u4_timestamp_low = u4_timestamp_low; 10878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ipe_params_ip.s_ive_ip.u4_size = sizeof(ih264e_ctl_set_ipe_params_ip_t); 10898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ipe_params_op.s_ive_op.u4_size = sizeof(ih264e_ctl_set_ipe_params_op_t); 10908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 10918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_app_ctxt->ps_enc,&s_ipe_params_ip,&s_ipe_params_op); 10928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 10938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 10948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 10958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to set ipe params = 0x%x\n", 10968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ipe_params_op.s_ive_op.u4_error_code); 10978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 10988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 10998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 11008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 11018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid set_bit_rate(app_ctxt_t *ps_app_ctxt, 11038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_low, UWORD32 u4_timestamp_high) 11048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 11058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_bitrate_ip_t s_bitrate_ip; 11068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_bitrate_op_t s_bitrate_op; 11078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T status; 11088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_bitrate_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 11108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_bitrate_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_SET_BITRATE; 11118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_bitrate_ip.s_ive_ip.u4_target_bitrate = ps_app_ctxt->u4_bitrate; 11138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_bitrate_ip.s_ive_ip.u4_timestamp_high = u4_timestamp_high; 11158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_bitrate_ip.s_ive_ip.u4_timestamp_low = u4_timestamp_low; 11168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_bitrate_ip.s_ive_ip.u4_size = sizeof(ih264e_ctl_set_bitrate_ip_t); 11188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_bitrate_op.s_ive_op.u4_size = sizeof(ih264e_ctl_set_bitrate_op_t); 11198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_app_ctxt->ps_enc,&s_bitrate_ip,&s_bitrate_op); 11218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 11228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 11238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 11248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to set bit rate = 0x%x\n", 11258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_bitrate_op.s_ive_op.u4_error_code); 11268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 11278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 11288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 11298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 11308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid set_frame_type(app_ctxt_t *ps_app_ctxt, 11338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_low, 11348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_high, 11358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_PICTURE_CODING_TYPE_T e_frame_type) 11368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 11378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_frame_type_ip_t s_frame_type_ip; 11388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_frame_type_op_t s_frame_type_op; 11398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T status; 11408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_type_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 11428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_type_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_SET_FRAMETYPE; 11438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_type_ip.s_ive_ip.e_frame_type = e_frame_type; 11458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_type_ip.s_ive_ip.u4_timestamp_high = u4_timestamp_high; 11478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_type_ip.s_ive_ip.u4_timestamp_low = u4_timestamp_low; 11488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_type_ip.s_ive_ip.u4_size = sizeof(ih264e_ctl_set_frame_type_ip_t); 11508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_type_op.s_ive_op.u4_size = sizeof(ih264e_ctl_set_frame_type_op_t); 11518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_app_ctxt->ps_enc,&s_frame_type_ip,&s_frame_type_op); 11538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 11548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 11558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 11568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to set frame type = 0x%x\n", 11578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_frame_type_op.s_ive_op.u4_error_code); 11588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 11598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 11608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 11618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 11628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid set_qp(app_ctxt_t *ps_app_ctxt, 11648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_low, UWORD32 u4_timestamp_high) 11658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 11668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_qp_ip_t s_qp_ip; 11678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_qp_op_t s_qp_op; 11688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T status; 11698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 11718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_SET_QP; 11728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_ip.s_ive_ip.u4_i_qp = ps_app_ctxt->u4_i_qp; 11748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_ip.s_ive_ip.u4_i_qp_max = ps_app_ctxt->u4_i_qp_max; 11758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_ip.s_ive_ip.u4_i_qp_min = ps_app_ctxt->u4_i_qp_min; 11768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_ip.s_ive_ip.u4_p_qp = ps_app_ctxt->u4_p_qp; 11788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_ip.s_ive_ip.u4_p_qp_max = ps_app_ctxt->u4_p_qp_max; 11798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_ip.s_ive_ip.u4_p_qp_min = ps_app_ctxt->u4_p_qp_min; 11808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_ip.s_ive_ip.u4_b_qp = ps_app_ctxt->u4_b_qp; 11828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_ip.s_ive_ip.u4_b_qp_max = ps_app_ctxt->u4_b_qp_max; 11838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_ip.s_ive_ip.u4_b_qp_min = ps_app_ctxt->u4_b_qp_min; 11848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_ip.s_ive_ip.u4_timestamp_high = u4_timestamp_high; 11868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_ip.s_ive_ip.u4_timestamp_low = u4_timestamp_low; 11878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_ip.s_ive_ip.u4_size = sizeof(ih264e_ctl_set_qp_ip_t); 11898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_op.s_ive_op.u4_size = sizeof(ih264e_ctl_set_qp_op_t); 11908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 11918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_app_ctxt->ps_enc,&s_qp_ip,&s_qp_op); 11928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 11938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 11948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 11958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to set qp 0x%x\n", 11968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_qp_op.s_ive_op.u4_error_code); 11978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 11988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 11998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 12008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 12018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid set_enc_mode(app_ctxt_t *ps_app_ctxt, 12038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_low, UWORD32 u4_timestamp_high, 12048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IVE_ENC_MODE_T e_enc_mode) 12058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 12068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T status; 12078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_enc_mode_ip_t s_enc_mode_ip; 12098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_enc_mode_op_t s_enc_mode_op; 12108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_enc_mode_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 12128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_enc_mode_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_SET_ENC_MODE; 12138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_enc_mode_ip.s_ive_ip.e_enc_mode = e_enc_mode; 12158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_enc_mode_ip.s_ive_ip.u4_timestamp_high = u4_timestamp_high; 12178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_enc_mode_ip.s_ive_ip.u4_timestamp_low = u4_timestamp_low; 12188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_enc_mode_ip.s_ive_ip.u4_size = sizeof(ih264e_ctl_set_enc_mode_ip_t); 12208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_enc_mode_op.s_ive_op.u4_size = sizeof(ih264e_ctl_set_enc_mode_op_t); 12218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_app_ctxt->ps_enc, &s_enc_mode_ip, 12238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S &s_enc_mode_op); 12248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 12258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 12268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 12278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to set in header encode mode = 0x%x\n", 12288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_enc_mode_op.s_ive_op.u4_error_code); 12298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 12308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 12318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 12328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 12338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid set_vbv_params(app_ctxt_t *ps_app_ctxt, 12368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_low, 12378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_high) 12388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 12398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_vbv_params_ip_t s_vbv_ip; 12408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_vbv_params_op_t s_vbv_op; 12418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T status; 12428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_vbv_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 12448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_vbv_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_SET_VBV_PARAMS; 12458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_vbv_ip.s_ive_ip.u4_vbv_buf_size = ps_app_ctxt->u4_vbv_buf_size; 12478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_vbv_ip.s_ive_ip.u4_vbv_buffer_delay = 12488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_vbv_buffer_delay; 12498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_vbv_ip.s_ive_ip.u4_timestamp_high = u4_timestamp_high; 12518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_vbv_ip.s_ive_ip.u4_timestamp_low = u4_timestamp_low; 12528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_vbv_ip.s_ive_ip.u4_size = sizeof(ih264e_ctl_set_vbv_params_ip_t); 12548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_vbv_op.s_ive_op.u4_size = sizeof(ih264e_ctl_set_vbv_params_op_t); 12558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_app_ctxt->ps_enc,&s_vbv_ip,&s_vbv_op); 12578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 12588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 12598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 12608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to set VBC params = 0x%x\n", 12618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_vbv_op.s_ive_op.u4_error_code); 12628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 12638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 12648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 12658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 12668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid set_air_params(app_ctxt_t *ps_app_ctxt, 12688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_low, 12698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_high) 12708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 12718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_air_params_ip_t s_air_ip; 12728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_air_params_op_t s_air_op; 12738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T status; 12748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_air_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 12768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_air_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_SET_AIR_PARAMS; 12778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_air_ip.s_ive_ip.e_air_mode = ps_app_ctxt->u4_air; 12798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_air_ip.s_ive_ip.u4_air_refresh_period = ps_app_ctxt->u4_air_refresh_period; 12808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_air_ip.s_ive_ip.u4_timestamp_high = u4_timestamp_high; 12828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_air_ip.s_ive_ip.u4_timestamp_low = u4_timestamp_low; 12838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_air_ip.s_ive_ip.u4_size = sizeof(ih264e_ctl_set_air_params_ip_t); 12858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_air_op.s_ive_op.u4_size = sizeof(ih264e_ctl_set_air_params_op_t); 12868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_app_ctxt->ps_enc,&s_air_ip,&s_air_op); 12888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 12898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 12908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 12918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to set air params = 0x%x\n", 12928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_air_op.s_ive_op.u4_error_code); 12938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 12948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 12958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 12968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 12978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 12988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid set_me_params(app_ctxt_t *ps_app_ctxt, 12998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_low, 13008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_high) 13018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 13028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T status; 13038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_me_params_ip_t s_me_params_ip; 13058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_me_params_op_t s_me_params_op; 13068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_me_params_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 13088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_me_params_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_SET_ME_PARAMS; 13098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_me_params_ip.s_ive_ip.u4_enable_fast_sad = ps_app_ctxt->u4_enable_fast_sad; 13118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_me_params_ip.s_ive_ip.u4_enable_alt_ref = ps_app_ctxt->u4_enable_alt_ref; 13128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_me_params_ip.s_ive_ip.u4_enable_hpel = ps_app_ctxt->u4_hpel; 13148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_me_params_ip.s_ive_ip.u4_enable_qpel = ps_app_ctxt->u4_qpel; 13158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_me_params_ip.s_ive_ip.u4_me_speed_preset = ps_app_ctxt->u4_me_speed; 13168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_me_params_ip.s_ive_ip.u4_srch_rng_x = ps_app_ctxt->u4_srch_rng_x; 13178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_me_params_ip.s_ive_ip.u4_srch_rng_y = ps_app_ctxt->u4_srch_rng_y; 13188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_me_params_ip.s_ive_ip.u4_timestamp_high = u4_timestamp_high; 13208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_me_params_ip.s_ive_ip.u4_timestamp_low = u4_timestamp_low; 13218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_me_params_ip.s_ive_ip.u4_size = sizeof(ih264e_ctl_set_me_params_ip_t); 13238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_me_params_op.s_ive_op.u4_size = sizeof(ih264e_ctl_set_me_params_op_t); 13248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_app_ctxt->ps_enc, &s_me_params_ip, 13268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S &s_me_params_op); 13278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 13288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 13298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 13308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to set me params = 0x%x\n", 13318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_me_params_op.s_ive_op.u4_error_code); 13328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 13338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 13348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 13358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 13368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid set_gop_params(app_ctxt_t *ps_app_ctxt, 13398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_low, 13408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_high) 13418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 13428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T status; 13438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_gop_params_ip_t s_gop_params_ip; 13458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_gop_params_op_t s_gop_params_op; 13468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_gop_params_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 13488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_gop_params_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_SET_GOP_PARAMS; 13498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_gop_params_ip.s_ive_ip.u4_i_frm_interval = ps_app_ctxt->u4_i_interval; 13518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_gop_params_ip.s_ive_ip.u4_idr_frm_interval = ps_app_ctxt->u4_idr_interval; 13528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_gop_params_ip.s_ive_ip.u4_timestamp_high = u4_timestamp_high; 13548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_gop_params_ip.s_ive_ip.u4_timestamp_low = u4_timestamp_low; 13558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_gop_params_ip.s_ive_ip.u4_size = sizeof(ih264e_ctl_set_gop_params_ip_t); 13578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_gop_params_op.s_ive_op.u4_size = sizeof(ih264e_ctl_set_gop_params_op_t); 13588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_app_ctxt->ps_enc, &s_gop_params_ip, 13608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S &s_gop_params_op); 13618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 13628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 13638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 13648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to set ME params = 0x%x\n", 13658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_gop_params_op.s_ive_op.u4_error_code); 13668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 13678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 13688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 13698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 13708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid set_profile_params(app_ctxt_t *ps_app_ctxt, 13728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_low, 13738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_high) 13748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 13758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T status; 13768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_profile_params_ip_t s_profile_params_ip; 13788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_profile_params_op_t s_profile_params_op; 13798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_profile_params_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 13818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_profile_params_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_SET_PROFILE_PARAMS; 13828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_profile_params_ip.s_ive_ip.e_profile = ps_app_ctxt->e_profile; 13848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13853749f6f435e79624f72841e866245d84195551cdHarinarayanan K K s_profile_params_ip.s_ive_ip.u4_entropy_coding_mode = ps_app_ctxt->u4_entropy_coding_mode; 13863749f6f435e79624f72841e866245d84195551cdHarinarayanan K K 13878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_profile_params_ip.s_ive_ip.u4_timestamp_high = u4_timestamp_high; 13888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_profile_params_ip.s_ive_ip.u4_timestamp_low = u4_timestamp_low; 13898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_profile_params_ip.s_ive_ip.u4_size = sizeof(ih264e_ctl_set_profile_params_ip_t); 13918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_profile_params_op.s_ive_op.u4_size = sizeof(ih264e_ctl_set_profile_params_op_t); 13928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 13938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_app_ctxt->ps_enc, &s_profile_params_ip, 13948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S &s_profile_params_op); 13958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 13968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 13978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 13988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to set profile params = 0x%x\n", 13998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_profile_params_op.s_ive_op.u4_error_code); 14008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 14018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 14028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 14038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 14048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid set_deblock_params(app_ctxt_t *ps_app_ctxt, 14068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_low, 14078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_high) 14088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 14098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T status; 14108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_deblock_params_ip_t s_deblock_params_ip; 14128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_deblock_params_op_t s_deblock_params_op; 14138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_deblock_params_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 14158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_deblock_params_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_SET_DEBLOCK_PARAMS; 14168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_deblock_params_ip.s_ive_ip.u4_disable_deblock_level = 14188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_disable_deblk_level; 14198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_deblock_params_ip.s_ive_ip.u4_timestamp_high = u4_timestamp_high; 14218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_deblock_params_ip.s_ive_ip.u4_timestamp_low = u4_timestamp_low; 14228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_deblock_params_ip.s_ive_ip.u4_size = sizeof(ih264e_ctl_set_deblock_params_ip_t); 14248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_deblock_params_op.s_ive_op.u4_size = sizeof(ih264e_ctl_set_deblock_params_op_t); 14258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_app_ctxt->ps_enc, &s_deblock_params_ip, 14278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S &s_deblock_params_op); 14288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 14298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 14308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 14318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to enable/disable deblock params = 0x%x\n", 14328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_deblock_params_op.s_ive_op.u4_error_code); 14338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 14348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 14358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 14368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 14378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PEAK_WINDOW_SIZE 8 14398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid synchronous_encode(iv_obj_t *ps_enc, app_ctxt_t *ps_app_ctxt) 14418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 14428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_video_encode_ip_t ih264e_video_encode_ip; 14438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_video_encode_op_t ih264e_video_encode_op; 14448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ive_video_encode_ip_t *ps_video_encode_ip = &ih264e_video_encode_ip.s_ive_ip; 14468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ive_video_encode_op_t *ps_video_encode_op = &ih264e_video_encode_op.s_ive_op; 14478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S iv_raw_buf_t *ps_inp_raw_buf = &ps_video_encode_ip->s_inp_buf; 14498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T status = IV_SUCCESS; 14518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14523749f6f435e79624f72841e866245d84195551cdHarinarayanan K K WORD32 i, is_last = 0, buff_size = 0, num_bytes = 0; 14538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_total_time = 0; 14548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD8 *pu1_buf = NULL; 14558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S UWORD32 u4_timestamp_low, u4_timestamp_high; 14568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S void *pv_mb_info = NULL, *pv_pic_info = NULL; 14578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S TIMER curtime ; 14598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifdef WINDOWS_TIMER 14608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S TIMER frequency; 14618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif 14628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 peak_window[PEAK_WINDOW_SIZE] = {0}; 14638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 peak_window_idx = 0; 14648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 peak_avg_max = 0, timetaken = 0; 14658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S iv_raw_buf_t s_inp_buf, s_recon_buf; 14668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 14678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 end_of_frames=0; 14683749f6f435e79624f72841e866245d84195551cdHarinarayanan K K WORD32 i4_inp_done =0; 14698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_timestamp_low = 0; 14718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_timestamp_high = 0; 14728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 14748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Allocate I/O Buffers */ 14758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 14768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S allocate_input(ps_app_ctxt); 14778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S allocate_output(ps_app_ctxt); 14788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S allocate_recon(ps_app_ctxt); 14798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* init psnr */ 14818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S init_psnr(ps_app_ctxt); 14828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* open file pointers */ 14848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->fp_ip = fopen(ps_app_ctxt->ac_ip_fname, "rb"); 14858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(NULL == ps_app_ctxt->fp_ip) 14868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 14878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to open input file for reading: %s", ps_app_ctxt->ac_ip_fname); 14888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S invalid_argument_exit(ac_error); 14898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 14908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->fp_op = fopen(ps_app_ctxt->ac_op_fname, "wb"); 14928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(NULL == ps_app_ctxt->fp_op) 14938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 14948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to open output file for writing: %s", ps_app_ctxt->ac_op_fname); 14958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S invalid_argument_exit(ac_error); 14968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 14978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 14988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(1 == ps_app_ctxt->u4_recon_enable) 14998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->fp_recon = fopen(ps_app_ctxt->ac_recon_fname, "wb"); 15018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(NULL == ps_app_ctxt->fp_recon) 15028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to open recon file for writing: %s", ps_app_ctxt->ac_recon_fname); 15048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S invalid_argument_exit(ac_error); 15058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(1 == ps_app_ctxt->u4_chksum_enable) 15098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->fp_chksum = fopen(ps_app_ctxt->ac_chksum_fname, "wb"); 15118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(NULL == ps_app_ctxt->fp_chksum) 15128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to open checksum file for writing: %s", ps_app_ctxt->ac_chksum_fname); 15148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S invalid_argument_exit(ac_error); 15158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* If PSNR is enabled, open input file again and hold a different file pointer 15198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * This makes it easy to compute PSNR without adding dependency between input and recon threads 15208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 15218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(1 == ps_app_ctxt->u4_psnr_enable) 15228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->fp_psnr_ip = fopen(ps_app_ctxt->ac_ip_fname, "rb"); 15248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(NULL == ps_app_ctxt->fp_psnr_ip) 15258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to open input file for reading: %s", ps_app_ctxt->ac_ip_fname); 15278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S invalid_argument_exit(ac_error); 15288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(0 != ps_app_ctxt->u4_mb_info_type) 15328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->fp_mb_info = fopen(ps_app_ctxt->ac_mb_info_fname, "rb"); 15348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(NULL == ps_app_ctxt->fp_mb_info) 15358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to open MB info file for reading: %s", ps_app_ctxt->ac_mb_info_fname); 15378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S invalid_argument_exit(ac_error); 15388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if (ps_app_ctxt->u4_pic_info_type) 15418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->fp_pic_info = fopen(ps_app_ctxt->ac_pic_info_fname, "rb"); 15438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(NULL == ps_app_ctxt->fp_pic_info) 15448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to open Pic info file for reading: %s", ps_app_ctxt->ac_pic_info_fname); 15468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S invalid_argument_exit(ac_error); 15478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S GETTIME(&ps_app_ctxt->enc_start_time); 15518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->enc_last_time = ps_app_ctxt->enc_start_time; 15528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S while(1) 15548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /******************************************************************************/ 15578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /****************** Input Initialization **************************************/ 15588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /******************************************************************************/ 15598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i = 0; i < DEFAULT_MAX_INPUT_BUFS; i++) 15618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_app_ctxt->as_input_buf[i].u4_is_free) 15638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_buf = ps_app_ctxt->as_input_buf[i].pu1_buf; 15658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pv_mb_info = ps_app_ctxt->as_input_buf[i].pv_mb_info; 15668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pv_pic_info = ps_app_ctxt->as_input_buf[i].pv_pic_info; 15678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->as_input_buf[i].u4_is_free = 0; 15688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 15698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 15718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15723749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if (i == DEFAULT_MAX_INPUT_BUFS) 15733749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 15743749f6f435e79624f72841e866245d84195551cdHarinarayanan K K printf("\n Unable to find a free input buffer!!"); 15753749f6f435e79624f72841e866245d84195551cdHarinarayanan K K exit(0); 15763749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 15773749f6f435e79624f72841e866245d84195551cdHarinarayanan K K 15788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_ip->u4_size = sizeof(ih264e_video_encode_ip_t); 15798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_op->u4_size = sizeof(ih264e_video_encode_op_t); 15808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_ip->e_cmd = IVE_CMD_VIDEO_ENCODE; 15828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_ip->pv_bufs = pu1_buf; 15838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_ip->pv_mb_info = pv_mb_info; 15848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_ip->pv_pic_info = pv_pic_info; 15858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_ip->u4_pic_info_type = ps_app_ctxt->u4_pic_info_type; 15868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* 15878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Since the buffers are used for reading, 15888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * And after each row we have a stride we nned to calculate 15898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * the luma size according to the stride 15908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 15918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->e_color_fmt = ps_app_ctxt->e_inp_color_fmt; 15928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 15938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Initialize for 420SP */ 15948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(IV_YUV_420SP_UV == ps_app_ctxt->e_inp_color_fmt|| 15958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_YUV_420SP_VU == ps_app_ctxt->e_inp_color_fmt) 15968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 15978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*init luma buffer*/ 15988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->apv_bufs[0] = pu1_buf; 15998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*Init chroma buffer*/ 1601cf91c87b25ad49fc7e307932754d188e3ba2a479Harish Mahendrakar pu1_buf += ps_app_ctxt->u4_strd * ps_app_ctxt->u4_ht; 16028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->apv_bufs[1] = pu1_buf; 16038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_wd[0] = ps_app_ctxt->u4_wd; 16058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_wd[1] = ps_app_ctxt->u4_wd; 16068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_ht[0] = ps_app_ctxt->u4_ht; 16088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_ht[1] = ps_app_ctxt->u4_ht / 2; 16098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_strd[0] = ps_app_ctxt->u4_strd; 16118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_strd[1] = ps_app_ctxt->u4_strd; 16128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 16138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if(IV_YUV_420P == ps_app_ctxt->e_inp_color_fmt) 16148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 16158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* init buffers */ 16168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->apv_bufs[0] = pu1_buf; 16173a52efd36102c9a4cb8e8f23b6f9131b8b01eef5Harish Mahendrakar pu1_buf += (ps_app_ctxt->u4_wd) * ps_app_ctxt->u4_ht; 16188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->apv_bufs[1] = pu1_buf; 16193a52efd36102c9a4cb8e8f23b6f9131b8b01eef5Harish Mahendrakar pu1_buf += (ps_app_ctxt->u4_wd >> 1) * (ps_app_ctxt->u4_ht >> 1); 16208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->apv_bufs[2] = pu1_buf; 16218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_wd[0] = ps_app_ctxt->u4_wd; 16238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_wd[1] = ps_app_ctxt->u4_wd / 2; 16248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_wd[2] = ps_app_ctxt->u4_wd / 2; 16258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_ht[0] = ps_app_ctxt->u4_ht; 16278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_ht[1] = ps_app_ctxt->u4_ht / 2; 16288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_ht[2] = ps_app_ctxt->u4_ht / 2; 16298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_strd[0] = ps_app_ctxt->u4_strd; 16318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_strd[1] = ps_app_ctxt->u4_strd / 2; 16328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_strd[2] = ps_app_ctxt->u4_strd / 2; 16338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 16358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if(IV_YUV_422ILE == ps_app_ctxt->e_inp_color_fmt) 16368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 16378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*init luma buffer*/ 16388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->apv_bufs[0] = pu1_buf; 16398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_wd[0] = ps_app_ctxt->u4_wd * 2; 16418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_ht[0] = ps_app_ctxt->u4_ht; 16438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->au4_strd[0] = ps_app_ctxt->u4_strd *2; 16458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 16468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16473749f6f435e79624f72841e866245d84195551cdHarinarayanan K K /* 16483749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * Here we read input and other associated buffers. Regardless of success 16493749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * we will proceed from here as we will need extra calls to flush out 16503749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * input queue in encoder. Note that this is not necessary. You can just 16513749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * send encode calls till with valid output and recon buffers till the 16523749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * queue is flushed. 16533749f6f435e79624f72841e866245d84195551cdHarinarayanan K K */ 16548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S while(1) 16558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 16568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T mb_info_status = IV_SUCCESS, pic_info_status = IV_SUCCESS; 16573749f6f435e79624f72841e866245d84195551cdHarinarayanan K K 16588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = read_input(ps_app_ctxt->fp_ip, ps_inp_raw_buf); 16593749f6f435e79624f72841e866245d84195551cdHarinarayanan K K 16608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if (ps_app_ctxt->u4_mb_info_type != 0) 16618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 16628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S mb_info_status = read_mb_info(ps_app_ctxt, pv_mb_info); 16638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 16648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if (ps_app_ctxt->u4_pic_info_type != 0) 16658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 16668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pic_info_status = read_pic_info(ps_app_ctxt, pv_pic_info); 16678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 16688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((IV_SUCCESS != status) || (IV_SUCCESS != mb_info_status) 16698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S || (IV_SUCCESS != pic_info_status)) 16708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 16718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(0 == ps_app_ctxt->u4_loopback) 16728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 16738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S is_last = 1; 16748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 16758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 16768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 16778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S fseek(ps_app_ctxt->fp_ip, 0, SEEK_SET); 16788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 16793749f6f435e79624f72841e866245d84195551cdHarinarayanan K K break; 16808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 16818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /******************************************************************************/ 16838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /****************** Output Initialization *************************************/ 16848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /******************************************************************************/ 16858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 16868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i = 0; i < DEFAULT_MAX_OUTPUT_BUFS; i++) 16878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 16888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_app_ctxt->as_output_buf[i].u4_is_free) 16898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 16908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_buf = ps_app_ctxt->as_output_buf[i].pu1_buf; 16918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S buff_size = ps_app_ctxt->as_output_buf[i].u4_buf_size; 16928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->as_output_buf[i].u4_is_free = 0; 16938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 16948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 16958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 16968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_ip->s_out_buf.pv_buf = pu1_buf; 16978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_ip->s_out_buf.u4_bytes = 0; 16988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_ip->s_out_buf.u4_bufsize = buff_size; 16998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /******************************************************************************/ 17018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /****************** Recon Initialization **************************************/ 17028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /******************************************************************************/ 17038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S init_raw_buf_descr(ps_app_ctxt, &s_recon_buf, ps_app_ctxt->as_recon_buf[0].pu1_buf, ps_app_ctxt->e_recon_color_fmt); 17048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_app_ctxt->u4_psnr_enable) 17068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S init_raw_buf_descr(ps_app_ctxt, &s_inp_buf, ps_app_ctxt->pu1_psnr_buf, ps_app_ctxt->e_inp_color_fmt); 17078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_ip->s_recon_buf = s_recon_buf; 17098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /******************************************************************************/ 17118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /************************* Un Initialized *************************************/ 17128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /******************************************************************************/ 17138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(0 == ps_app_ctxt->u4_loopback) 17148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 17158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* If input file is read completely and loopback is not enabled, 17168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * then exit the loop */ 17178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(feof(ps_app_ctxt->fp_ip)) 17188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 17198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S is_last = 1; 17208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 17218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 17228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* If last frame, send input null to get back encoded frames */ 17258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if ( is_last == 1 || ((ps_app_ctxt->u4_max_num_frms) <= u4_timestamp_low) ) 17268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 17278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S is_last = 1; 17288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->apv_bufs[0] = NULL; 17298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->apv_bufs[1] = NULL; 17308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_inp_raw_buf->apv_bufs[2] = NULL; 17318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 17328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_ip->u4_is_last = is_last; 17348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_ip->u4_mb_info_type = ps_app_ctxt->u4_mb_info_type; 17358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_ip->u4_pic_info_type = ps_app_ctxt->u4_pic_info_type;; 17363749f6f435e79624f72841e866245d84195551cdHarinarayanan K K ps_video_encode_op->s_out_buf.pv_buf= NULL; 17378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_ip->u4_timestamp_high = u4_timestamp_high; 17388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_video_encode_ip->u4_timestamp_low = u4_timestamp_low; 17398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S GETTIME(&ps_app_ctxt->enc_last_time); 17428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_enc, &ih264e_video_encode_ip, &ih264e_video_encode_op); 17448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if (IV_SUCCESS != status) 17468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 17478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("Encode Frame failed = 0x%x\n", ih264e_video_encode_op.s_ive_op.u4_error_code); 17488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 17498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 17508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifdef WINDOWS_TIMER 17528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S QueryPerformanceFrequency ( &frequency); 17538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif 17548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S GETTIME(&curtime); 17558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ELAPSEDTIME(ps_app_ctxt->enc_last_time, curtime, timetaken, frequency); 17568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->enc_last_time = curtime; 17578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifdef PROFILE_ENABLE 17598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 17608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 peak_avg, id; 17618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S u4_total_time += timetaken; 17628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S peak_window[peak_window_idx++] = timetaken; 17638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(peak_window_idx == PEAK_WINDOW_SIZE) 17648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S peak_window_idx = 0; 17658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S peak_avg = 0; 17668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(id = 0; id < PEAK_WINDOW_SIZE; id++) 17678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 17688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S peak_avg += peak_window[id]; 17698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 17708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S peak_avg /= PEAK_WINDOW_SIZE; 17718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if (peak_avg > peak_avg_max) 17728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S peak_avg_max = peak_avg; 17738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 17748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif 17758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /******************************************************************************/ 17778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /****************** Writing Output ********************************************/ 17788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /******************************************************************************/ 17798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S num_bytes = 0; 17803749f6f435e79624f72841e866245d84195551cdHarinarayanan K K 17818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(1 == ps_video_encode_op->output_present) 17828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 17838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S num_bytes = ps_video_encode_op->s_out_buf.u4_bytes; 17848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S buff_size = ps_video_encode_op->s_out_buf.u4_bufsize; 17858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S pu1_buf = (UWORD8*)ps_video_encode_op->s_out_buf.pv_buf; 17868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = write_output(ps_app_ctxt->fp_op, pu1_buf, num_bytes); 17888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(IV_SUCCESS != status) 17898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 17908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("Error: Unable to write to output file\n"); 17918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 17928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 17933749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 17948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 17953749f6f435e79624f72841e866245d84195551cdHarinarayanan K K /* free input bufer if codec returns a valid input buffer */ 17963749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if (ps_video_encode_op->s_inp_buf.apv_bufs[0]) 17973749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 17988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Reuse of freed input buffer */ 17998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i = 0; i < DEFAULT_MAX_INPUT_BUFS; i++) 18008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 18018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_app_ctxt->as_input_buf[i].pu1_buf == ps_video_encode_op->s_inp_buf.apv_bufs[0]) 18028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 18038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->as_input_buf[i].u4_is_free = 1; 18048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 18058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 18068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 18073749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 18088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18093749f6f435e79624f72841e866245d84195551cdHarinarayanan K K /* free output buffer if codec returns a valid output buffer */ 18103749f6f435e79624f72841e866245d84195551cdHarinarayanan K K // if(ps_video_encode_op->s_out_buf.pv_buf) 18113749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 18128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i = 0; i < DEFAULT_MAX_OUTPUT_BUFS; i++) 18138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 18148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_app_ctxt->as_output_buf[i].pu1_buf == ps_video_encode_op->s_out_buf.pv_buf) 18158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 18168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->as_output_buf[i].u4_is_free = 1; 18178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 18188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 18198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 18208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 18218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18223749f6f435e79624f72841e866245d84195551cdHarinarayanan K K /********************************************************************** 18233749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * Print stats 18243749f6f435e79624f72841e866245d84195551cdHarinarayanan K K **********************************************************************/ 18258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 18263749f6f435e79624f72841e866245d84195551cdHarinarayanan K K UWORD8 u1_pic_type[][5] = 18273749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { "IDR", "I", "P", "B", "NA" }; 18283749f6f435e79624f72841e866245d84195551cdHarinarayanan K K WORD32 lookup_idx = 0; 18298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18303749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if (ih264e_video_encode_op.s_ive_op.u4_encoded_frame_type 18313749f6f435e79624f72841e866245d84195551cdHarinarayanan K K == IV_IDR_FRAME) 18323749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 18333749f6f435e79624f72841e866245d84195551cdHarinarayanan K K lookup_idx = 0; 18343749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 18353749f6f435e79624f72841e866245d84195551cdHarinarayanan K K else if(ih264e_video_encode_op.s_ive_op.u4_encoded_frame_type 18363749f6f435e79624f72841e866245d84195551cdHarinarayanan K K == IV_I_FRAME) 18373749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 18383749f6f435e79624f72841e866245d84195551cdHarinarayanan K K lookup_idx = 1; 18393749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 18403749f6f435e79624f72841e866245d84195551cdHarinarayanan K K else if(ih264e_video_encode_op.s_ive_op.u4_encoded_frame_type 18413749f6f435e79624f72841e866245d84195551cdHarinarayanan K K == IV_P_FRAME) 18428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 18433749f6f435e79624f72841e866245d84195551cdHarinarayanan K K lookup_idx = 2; 18443749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 18453749f6f435e79624f72841e866245d84195551cdHarinarayanan K K else if(ih264e_video_encode_op.s_ive_op.u4_encoded_frame_type 18463749f6f435e79624f72841e866245d84195551cdHarinarayanan K K == IV_B_FRAME) 18473749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 18483749f6f435e79624f72841e866245d84195551cdHarinarayanan K K lookup_idx = 3; 18493749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 18503749f6f435e79624f72841e866245d84195551cdHarinarayanan K K else if(ih264e_video_encode_op.s_ive_op.u4_encoded_frame_type 18513749f6f435e79624f72841e866245d84195551cdHarinarayanan K K == IV_NA_FRAME) 18523749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 18533749f6f435e79624f72841e866245d84195551cdHarinarayanan K K lookup_idx = 4; 18543749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 18558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18563749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if (ih264e_video_encode_op.s_ive_op.u4_encoded_frame_type 18573749f6f435e79624f72841e866245d84195551cdHarinarayanan K K != IV_NA_FRAME) 18583749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 18593749f6f435e79624f72841e866245d84195551cdHarinarayanan K K ps_app_ctxt->u4_pics_cnt++; 18603749f6f435e79624f72841e866245d84195551cdHarinarayanan K K ps_app_ctxt->avg_time = u4_total_time / ps_app_ctxt->u4_pics_cnt; 18613749f6f435e79624f72841e866245d84195551cdHarinarayanan K K ps_app_ctxt->u4_total_bytes += num_bytes; 18623749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 18638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18643749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if (ps_app_ctxt->u4_psnr_enable == 0) 18653749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 18663749f6f435e79624f72841e866245d84195551cdHarinarayanan K K printf("[%s] PicNum %4d Bytes Generated %6d TimeTaken(microsec): %6d AvgTime: %6d PeakAvgTimeMax: %6d\n", 18673749f6f435e79624f72841e866245d84195551cdHarinarayanan K K u1_pic_type[lookup_idx], ps_app_ctxt->u4_pics_cnt, 18683749f6f435e79624f72841e866245d84195551cdHarinarayanan K K num_bytes, timetaken, ps_app_ctxt->avg_time, 18693749f6f435e79624f72841e866245d84195551cdHarinarayanan K K peak_avg_max); 18708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 18713749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 18723749f6f435e79624f72841e866245d84195551cdHarinarayanan K K 18738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 18743749f6f435e79624f72841e866245d84195551cdHarinarayanan K K /* For psnr computation, we need to read the correct input frame and 18753749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * compare with recon. The difficulty with doing it is that we only know 18763749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * that the frame number of recon is monotonically increasing. There 18773749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * may be gaps in the recon if any pre or post enc skip happens. There are 18783749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * 3 senarios 18793749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * 1) A frame is encoded -> returns the pic type 18803749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * 2) A frame is not encoded -> Encoder is waiting, the frame may get 18813749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * encoded later 18823749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * 3) A frame is not encoded -> A post enc or pre enc skip happend. The 18833749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * frame is not going to be encoded 18843749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * 18853749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * The 1st and 2nd scenarios are easy, since we just needs to increment 18863749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * recon cnt whenever we get a valid recon. This cnt can we used to 18873749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * sync the recon and input 18883749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * 3rd scenario in conjuction with 2nd will pose problems. Even if 18893749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * the returning frame is NA, we donot know we should increment the 18903749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * recon cnt or not becasue it can be case 2 or case 3. 18913749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * 18923749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * Solutions: 18933749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * ------------------------- 18943749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * One way to over come this will be to return more information as of 18953749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * the frame type. We can send if a frame was skipped as a part of the 18963749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * return frame type. 18973749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * This will not work. Since the output and recon are not in sync, we 18983749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * cannot use the current output frame type to determine if a recon 18993749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * is present currently or not. We need some other way to acheive this. 19003749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * 19013749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * Other way to do this which is cleaner and maintains the seperation 19023749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * between recon and the ouptut is to set the width [& height] of output recon 19033749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * buffer to be zero. Hence we will in effect be saying :"look there 19043749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * is a recon, but due to frame not being encoded it is having a width 0". 19053749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * To be more clear we need to make height also to be zero. 19063749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * 19073749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * But are we using these variables for allocating and deallocating 19083749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * the buffers some where ? No we are not. The buffer gets re-init 19093749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * at every encode call 19103749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * 19113749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * Fixes 19123749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * ------------------------ 19133749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * Currently the recon buff width and height are set in the encoder. 19143749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * This will not work now because since recon and input are not 19153749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * in sync. Hence a recon buff sent at time stamp x will get used to 19163749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * fill recon of input at time stamp y (x > y). If we reduced the 19173749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * frame dimensions in between, the recon buffer will not have enough 19183749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * space. Hence we need to set the with and height appropriatley inside 19193749f6f435e79624f72841e866245d84195551cdHarinarayanan K K * lib itself. 19203749f6f435e79624f72841e866245d84195551cdHarinarayanan K K */ 19218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 19223749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if (ps_app_ctxt->u4_recon_enable || ps_app_ctxt->u4_chksum_enable 19233749f6f435e79624f72841e866245d84195551cdHarinarayanan K K || ps_app_ctxt->u4_psnr_enable) 19243749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 19253749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if (ps_video_encode_op->dump_recon) 19268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 19278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_recon_buf = ps_video_encode_op->s_recon_buf; 19288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 19293749f6f435e79624f72841e866245d84195551cdHarinarayanan K K /* Read input for psnr computuation */ 19303749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if (ps_app_ctxt->u4_psnr_enable) 19318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S read_input(ps_app_ctxt->fp_psnr_ip, &s_inp_buf); 19328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 19333749f6f435e79624f72841e866245d84195551cdHarinarayanan K K /* if we have a valid recon buffer do the assocated tasks */ 19343749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if (s_recon_buf.au4_wd[0]) 19358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 19363749f6f435e79624f72841e866245d84195551cdHarinarayanan K K /* Dump recon when enabled, and output bytes != 0 */ 19373749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if (ps_app_ctxt->u4_recon_enable) 19383749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 19393749f6f435e79624f72841e866245d84195551cdHarinarayanan K K status = write_recon(ps_app_ctxt->fp_recon, &s_recon_buf); 19403749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if (IV_SUCCESS != status) 19413749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 19423749f6f435e79624f72841e866245d84195551cdHarinarayanan K K printf("Error: Unable to write to recon file\n"); 19433749f6f435e79624f72841e866245d84195551cdHarinarayanan K K break; 19443749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 19453749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 19468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 19473749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if (ps_app_ctxt->u4_psnr_enable) 19488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 19493749f6f435e79624f72841e866245d84195551cdHarinarayanan K K compute_psnr(ps_app_ctxt, &s_recon_buf, &s_inp_buf); 19503749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 19518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 19528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 19533749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if (ps_app_ctxt->u4_chksum_enable) 19543749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 19553749f6f435e79624f72841e866245d84195551cdHarinarayanan K K WORD32 comp, num_comp = 2; 19563749f6f435e79624f72841e866245d84195551cdHarinarayanan K K 19573749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if (IV_YUV_420P == s_recon_buf.e_color_fmt) 19583749f6f435e79624f72841e866245d84195551cdHarinarayanan K K num_comp = 3; 19593749f6f435e79624f72841e866245d84195551cdHarinarayanan K K 19603749f6f435e79624f72841e866245d84195551cdHarinarayanan K K for (comp = 0; comp < num_comp; comp++) 19613749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 19623749f6f435e79624f72841e866245d84195551cdHarinarayanan K K UWORD8 au1_chksum[16]; 19633749f6f435e79624f72841e866245d84195551cdHarinarayanan K K calc_md5_cksum((UWORD8 *)s_recon_buf.apv_bufs[comp], 19643749f6f435e79624f72841e866245d84195551cdHarinarayanan K K s_recon_buf.au4_strd[comp], 19653749f6f435e79624f72841e866245d84195551cdHarinarayanan K K s_recon_buf.au4_wd[comp], 19663749f6f435e79624f72841e866245d84195551cdHarinarayanan K K s_recon_buf.au4_ht[comp], 19673749f6f435e79624f72841e866245d84195551cdHarinarayanan K K au1_chksum); 19683749f6f435e79624f72841e866245d84195551cdHarinarayanan K K fwrite(au1_chksum, sizeof(UWORD8), 16, ps_app_ctxt->fp_chksum); 19693749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 19708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 19718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 19728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 19738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 19748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 19753749f6f435e79624f72841e866245d84195551cdHarinarayanan K K u4_timestamp_low++; 19768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 19773749f6f435e79624f72841e866245d84195551cdHarinarayanan K K /* Break if all the encoded frames are taken from encoder */ 19783749f6f435e79624f72841e866245d84195551cdHarinarayanan K K if (1 == ps_video_encode_op->u4_is_last) 19793749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 19808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S break; 19813749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 19828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 19838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 19843749f6f435e79624f72841e866245d84195551cdHarinarayanan K K /* Pic count is 1 more than actual num frames encoded, because last call is to just get the output */ 19858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_app_ctxt->u4_pics_cnt--; 19868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 19878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_app_ctxt->u4_psnr_enable) 19888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 19898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S print_average_psnr(ps_app_ctxt); 19908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 19918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 19928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* house keeping operations */ 19938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S fclose(ps_app_ctxt->fp_ip); 19948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S fclose(ps_app_ctxt->fp_op); 19958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(1 == ps_app_ctxt->u4_recon_enable) 19968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 19978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S fclose(ps_app_ctxt->fp_recon); 19988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 19998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(1 == ps_app_ctxt->u4_chksum_enable) 20008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 20018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S fclose(ps_app_ctxt->fp_chksum); 20028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 20038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(1 == ps_app_ctxt->u4_psnr_enable) 20048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 20058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S fclose(ps_app_ctxt->fp_psnr_ip); 20068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 20078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 20088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(0 != ps_app_ctxt->u4_mb_info_type) 20098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 20108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S fclose(ps_app_ctxt->fp_mb_info); 20118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 20128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if (ps_app_ctxt->u4_pic_info_type) 20138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 20148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S fclose(ps_app_ctxt->fp_pic_info); 20158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 20168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 20178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S free_input(ps_app_ctxt); 20188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S free_output(ps_app_ctxt); 20198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S free_recon(ps_app_ctxt); 20208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 20218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 20228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 20238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 20248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Function Name : main */ 20258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 20268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Description : Application to demonstrate codec API */ 20278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 20288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 20298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Inputs : argc - Number of arguments */ 20308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* argv[] - Arguments */ 20318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Globals : */ 20328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Processing : Shows how to use create, process, control and delete */ 20338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 20348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Outputs : Codec output in a file */ 20358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Returns : */ 20368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 20378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Issues : Assumes both PROFILE_ENABLE to be */ 20388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* defined for multithread decode-display working */ 20398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 20408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Revision History: */ 20418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* */ 20428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* DD MM YYYY Author(s) Changes */ 20438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* 20 11 2013 100189 Initial Version */ 20448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 20458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifdef IOS 20467497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakarint h264enc_main(char * homedir,char *documentdir, int screen_wd, int screen_ht) 20478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#else 20488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sint main(int argc, char *argv[]) 20498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif 20508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 20518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Config Parameters for Encoding */ 20528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S app_ctxt_t s_app_ctxt; 20538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 20548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* error string */ 20558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_error[STRLENGTH]; 20568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 20578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* config file name */ 20588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_cfg_fname[STRLENGTH]; 20598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 20608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* error status */ 20618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S IV_STATUS_T status = IV_SUCCESS; 20623749f6f435e79624f72841e866245d84195551cdHarinarayanan K K#ifdef IOS 20638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* temp var */ 20648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR filename_with_path[STRLENGTH]; 20653749f6f435e79624f72841e866245d84195551cdHarinarayanan K K#endif 20668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 num_mem_recs; 20678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S iv_obj_t *ps_enc; 20688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 i; 20698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S FILE *fp_cfg = NULL; 20708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 20718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifdef X86_MINGW 20728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 20738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* For getting printfs without any delay in eclipse */ 20748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S setvbuf(stdout, NULL, _IONBF, 0); 20758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S setvbuf(stderr, NULL, _IONBF, 0); 20768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 20778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif 20788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 20798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S init_default_params(&s_app_ctxt); 20808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 20818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifndef IOS 20828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 20838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Usage */ 20848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(argc < 2) 20858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 20868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("Using enc.cfg as configuration file \n"); 20878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S strcpy(ac_cfg_fname, "enc.cfg"); 20888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 20898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else if(argc == 2) 20908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 2091c4355642ba8504d2fcfe3431ee9367d050e1c436Martin Storsjo if (!strcmp(argv[1], "--help")) 2092c4355642ba8504d2fcfe3431ee9367d050e1c436Martin Storsjo { 2093c4355642ba8504d2fcfe3431ee9367d050e1c436Martin Storsjo print_usage(); 2094c4355642ba8504d2fcfe3431ee9367d050e1c436Martin Storsjo exit(-1); 2095c4355642ba8504d2fcfe3431ee9367d050e1c436Martin Storsjo } 20968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S strcpy(ac_cfg_fname, argv[1]); 20978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 20988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 20997497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar#else 21007497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar strcpy(ac_cfg_fname, "test.cfg"); 21017497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar 21028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif 21038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 21058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Parse arguments */ 21068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 21078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifndef IOS 21098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Read command line arguments */ 21118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(argc > 2) 21128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 211385783df9840a6bc58a2a71081990797ac3af0976Martin Storsjo for(i = 1; i + 1 < argc; i += 2) 21148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 21158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(CONFIG == get_argument(argv[i])) 21168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 21178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S strcpy(ac_cfg_fname, argv[i + 1]); 21188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((fp_cfg = fopen(ac_cfg_fname, "r")) == NULL) 21198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 21208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, 21218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S "Could not open Configuration file %s", 21228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ac_cfg_fname); 21238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 21248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 21258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S read_cfg_file(&s_app_ctxt, fp_cfg); 21268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S fclose(fp_cfg); 21278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 21288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 21298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 21308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S parse_argument(&s_app_ctxt, argv[i], argv[i + 1]); 21318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 21328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 21338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 21348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 21358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 21368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((fp_cfg = fopen(ac_cfg_fname, "r")) == NULL) 21378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 21388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Could not open Configuration file %s", 21398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ac_cfg_fname); 21408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 21418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 21428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S read_cfg_file(&s_app_ctxt, fp_cfg); 21438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S fclose(fp_cfg); 21448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 21458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#else 21478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(filename_with_path, "%s/%s", homedir, "enc.cfg"); 21498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if((fp_cfg = fopen(filename_with_path, "r")) == NULL) 21508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 21518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Could not open Configuration file %s", 21528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ac_cfg_fname); 21538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 21548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 21568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S read_cfg_file(&s_app_ctxt, fp_cfg); 21578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S fclose(fp_cfg); 21588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif 21608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S validate_params(&s_app_ctxt); 21638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 21668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Getting Number of MemRecords */ 21678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 21688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 21698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_num_mem_rec_ip_t s_num_mem_rec_ip; 21708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_num_mem_rec_op_t s_num_mem_rec_op; 21718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_num_mem_rec_ip.s_ive_ip.u4_size = sizeof(ih264e_num_mem_rec_ip_t); 21738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_num_mem_rec_op.s_ive_op.u4_size = sizeof(ih264e_num_mem_rec_op_t); 21748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_num_mem_rec_ip.s_ive_ip.e_cmd = IV_CMD_GET_NUM_MEM_REC; 21768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(0, &s_num_mem_rec_ip, &s_num_mem_rec_op); 21788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 21808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 21818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Get number of memory records failed = 0x%x\n", s_num_mem_rec_op.s_ive_op.u4_error_code); 21828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 21838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 21848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_app_ctxt.u4_num_mem_rec = num_mem_recs = s_num_mem_rec_op.s_ive_op.u4_num_mem_rec; 21868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 21878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Allocate array to hold memory records */ 21898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_app_ctxt.ps_mem_rec = (iv_mem_rec_t *) malloc(num_mem_recs * sizeof(iv_mem_rec_t)); 21908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(NULL == s_app_ctxt.ps_mem_rec) 21918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 21928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to allocate memory for hold memory records: Size %d", (WORD32)(num_mem_recs * sizeof(iv_mem_rec_t))); 21948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 21958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 21968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 21978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 21988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S iv_mem_rec_t *ps_mem_rec; 21998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_mem_rec = s_app_ctxt.ps_mem_rec; 22008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i = 0; i < num_mem_recs; i++) 22018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 22028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_mem_rec->u4_size = sizeof(iv_mem_rec_t); 22038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_mem_rec->pv_base = NULL; 22048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_mem_rec->u4_mem_size = 0; 22058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_mem_rec->u4_mem_alignment = 0; 22068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_mem_rec->e_mem_type = IV_NA_MEM_TYPE; 22078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 22088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_mem_rec++; 22098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 22108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 22118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 22128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 22138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Getting MemRecords Attributes */ 22148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 22158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 22168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_fill_mem_rec_ip_t s_fill_mem_rec_ip; 22178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_fill_mem_rec_op_t s_fill_mem_rec_op; 22188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 22198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_fill_mem_rec_ip.s_ive_ip.u4_size = sizeof(ih264e_fill_mem_rec_ip_t); 22208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_fill_mem_rec_op.s_ive_op.u4_size = sizeof(ih264e_fill_mem_rec_op_t); 22218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 22228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_fill_mem_rec_ip.s_ive_ip.e_cmd = IV_CMD_FILL_NUM_MEM_REC; 22238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_fill_mem_rec_ip.s_ive_ip.ps_mem_rec = s_app_ctxt.ps_mem_rec; 22248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_fill_mem_rec_ip.s_ive_ip.u4_num_mem_rec = s_app_ctxt.u4_num_mem_rec; 22258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_fill_mem_rec_ip.s_ive_ip.u4_max_wd = s_app_ctxt.u4_max_wd; 22268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_fill_mem_rec_ip.s_ive_ip.u4_max_ht = s_app_ctxt.u4_max_ht; 22278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_fill_mem_rec_ip.s_ive_ip.u4_max_level = s_app_ctxt.u4_max_level; 22288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_fill_mem_rec_ip.s_ive_ip.e_color_format = DEFAULT_INP_COLOR_FMT; 22298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_fill_mem_rec_ip.s_ive_ip.u4_max_ref_cnt = DEFAULT_MAX_REF_FRM; 22308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_fill_mem_rec_ip.s_ive_ip.u4_max_reorder_cnt = DEFAULT_MAX_REORDER_FRM; 22318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_fill_mem_rec_ip.s_ive_ip.u4_max_srch_rng_x = DEFAULT_MAX_SRCH_RANGE_X; 22328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_fill_mem_rec_ip.s_ive_ip.u4_max_srch_rng_y = DEFAULT_MAX_SRCH_RANGE_Y; 22338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 22348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(0, &s_fill_mem_rec_ip, &s_fill_mem_rec_op); 22358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 22368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 22378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 22388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Fill memory records failed = 0x%x\n", 22398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_fill_mem_rec_op.s_ive_op.u4_error_code); 22408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 22418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 22428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 22438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 22448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 22458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Allocating Memory for Mem Records */ 22468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 22478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 22488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 total_size; 22498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S iv_mem_rec_t *ps_mem_rec; 22508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S total_size = 0; 22518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 22528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_mem_rec = s_app_ctxt.ps_mem_rec; 22538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i = 0; i < num_mem_recs; i++) 22548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 22558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_mem_rec->pv_base = ih264a_aligned_malloc(ps_mem_rec->u4_mem_alignment, 22568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_mem_rec->u4_mem_size); 22578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(ps_mem_rec->pv_base == NULL) 22588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 22598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Allocation failure for mem record id %d size %d\n", 22608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S i, ps_mem_rec->u4_mem_size); 22618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 22628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 22638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S total_size += ps_mem_rec->u4_mem_size; 22648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 22658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_mem_rec++; 22668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 22678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("\nTotal memory for codec %d\n", total_size); 22688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 22698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 22708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 22718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 22728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Codec Instance Creation */ 22738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 22748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 22758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_init_ip_t s_init_ip; 22768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_init_op_t s_init_op; 22778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 22788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_enc = s_app_ctxt.ps_mem_rec[0].pv_base; 22798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_enc->u4_size = sizeof(iv_obj_t); 22808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_enc->pv_fxns = ih264e_api_function; 22818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_app_ctxt.ps_enc = ps_enc; 22828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 22838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.u4_size = sizeof(ih264e_init_ip_t); 22848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_op.s_ive_op.u4_size = sizeof(ih264e_init_op_t); 22858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 22868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.e_cmd = IV_CMD_INIT; 22878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.u4_num_mem_rec = s_app_ctxt.u4_num_mem_rec; 22888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.ps_mem_rec = s_app_ctxt.ps_mem_rec; 22898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.u4_max_wd = s_app_ctxt.u4_max_wd; 22908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.u4_max_ht = s_app_ctxt.u4_max_ht; 22918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.u4_max_ref_cnt = DEFAULT_MAX_REF_FRM; 22928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.u4_max_reorder_cnt = DEFAULT_MAX_REORDER_FRM; 22938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.u4_max_level = s_app_ctxt.u4_max_level; 22948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.e_inp_color_fmt = s_app_ctxt.e_inp_color_fmt; 22958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(s_app_ctxt.u4_recon_enable || s_app_ctxt.u4_psnr_enable || s_app_ctxt.u4_chksum_enable) 22968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 22978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.u4_enable_recon = 1; 22988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 22998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 23008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 23018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.u4_enable_recon = 0; 23028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 23038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.e_recon_color_fmt = s_app_ctxt.e_recon_color_fmt; 23048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.e_rc_mode = s_app_ctxt.u4_rc; 23058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.u4_max_framerate = s_app_ctxt.u4_max_frame_rate; 23068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.u4_max_bitrate = s_app_ctxt.u4_max_bitrate; 23073749f6f435e79624f72841e866245d84195551cdHarinarayanan K K s_init_ip.s_ive_ip.u4_num_bframes = s_app_ctxt.u4_num_bframes; 23088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.e_content_type = IV_PROGRESSIVE; 23098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.u4_max_srch_rng_x = DEFAULT_MAX_SRCH_RANGE_X; 23108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.u4_max_srch_rng_y = DEFAULT_MAX_SRCH_RANGE_Y; 23118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.e_slice_mode = s_app_ctxt.u4_slice_mode; 23128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.u4_slice_param = s_app_ctxt.u4_slice_param; 23138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.e_arch = s_app_ctxt.e_arch; 23148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_ip.s_ive_ip.e_soc = s_app_ctxt.e_soc; 23158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 23168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_enc, &s_init_ip, &s_init_op); 23178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 23188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 23198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 23208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Init memory records failed = 0x%x\n", 23218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_init_op.s_ive_op.u4_error_code); 23228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 23238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 23248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 23258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 23268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 23278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* set processor details */ 23288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 23298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 23308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_num_cores_ip_t s_ctl_set_num_cores_ip; 23318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_set_num_cores_op_t s_ctl_set_num_cores_op; 23328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ctl_set_num_cores_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 23338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ctl_set_num_cores_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_SET_NUM_CORES; 23348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ctl_set_num_cores_ip.s_ive_ip.u4_num_cores = s_app_ctxt.u4_num_cores; 23358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ctl_set_num_cores_ip.s_ive_ip.u4_timestamp_high = 0; 23368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ctl_set_num_cores_ip.s_ive_ip.u4_timestamp_low = 0; 23378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ctl_set_num_cores_ip.s_ive_ip.u4_size = sizeof(ih264e_ctl_set_num_cores_ip_t); 23388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 23398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ctl_set_num_cores_op.s_ive_op.u4_size = sizeof(ih264e_ctl_set_num_cores_op_t); 23408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 23418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_enc, (void *) &s_ctl_set_num_cores_ip, 23428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (void *) &s_ctl_set_num_cores_op); 23438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 23448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 23458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to set processor params = 0x%x\n", 23468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ctl_set_num_cores_op.s_ive_op.u4_error_code); 23478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 23488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 23498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 23508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 23518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 23528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 23538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Get Codec Version */ 23548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 23558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 23568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_getversioninfo_ip_t s_ctl_set_getversioninfo_ip; 23578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_getversioninfo_op_t s_ctl_set_getversioninfo_op; 23588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S CHAR ac_version_string[STRLENGTH]; 23598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ctl_set_getversioninfo_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 23608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ctl_set_getversioninfo_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_GETVERSION; 23618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ctl_set_getversioninfo_ip.s_ive_ip.pu1_version = (UWORD8 *)ac_version_string; 23628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ctl_set_getversioninfo_ip.s_ive_ip.u4_version_bufsize = sizeof(ac_version_string); 23638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ctl_set_getversioninfo_ip.s_ive_ip.u4_size = sizeof(ih264e_ctl_getversioninfo_ip_t); 23648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ctl_set_getversioninfo_op.s_ive_op.u4_size = sizeof(ih264e_ctl_getversioninfo_op_t); 23658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 23668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_enc, (void *) &s_ctl_set_getversioninfo_ip, 23678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S (void *) &s_ctl_set_getversioninfo_op); 23688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 23698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 23708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to get codec version = 0x%x\n", 23718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_ctl_set_getversioninfo_op.s_ive_op.u4_error_code); 23728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 23738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 23748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("CODEC VERSION %s\n", ac_version_string); 23758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 23768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 23778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 23788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Get I/O Buffer Requirement */ 23798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 23808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 23818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_getbufinfo_ip_t s_get_buf_info_ip; 23828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_ctl_getbufinfo_op_t s_get_buf_info_op; 23838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 23848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_get_buf_info_ip.s_ive_ip.u4_size = sizeof(ih264e_ctl_getbufinfo_ip_t); 23858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_get_buf_info_op.s_ive_op.u4_size = sizeof(ih264e_ctl_getbufinfo_op_t); 23868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 23878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_get_buf_info_ip.s_ive_ip.e_cmd = IVE_CMD_VIDEO_CTL; 23888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_get_buf_info_ip.s_ive_ip.e_sub_cmd = IVE_CMD_CTL_GETBUFINFO; 23898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_get_buf_info_ip.s_ive_ip.u4_max_ht = s_app_ctxt.u4_max_ht; 23908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_get_buf_info_ip.s_ive_ip.u4_max_wd = s_app_ctxt.u4_max_wd; 23918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_get_buf_info_ip.s_ive_ip.e_inp_color_fmt = s_app_ctxt.e_inp_color_fmt; 23928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 23938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_enc, &s_get_buf_info_ip, &s_get_buf_info_op); 23948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 23958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if (status != IV_SUCCESS) 23968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 23978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to get I/O buffer requirements = 0x%x\n", 23988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_get_buf_info_op.s_ive_op.u4_error_code); 23998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 24008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 24018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_app_ctxt.s_get_buf_info_op = s_get_buf_info_op; 24028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 24038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Add the following initializations based on the parameters in context */ 24068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Video control Set Frame dimensions */ 24118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24123a52efd36102c9a4cb8e8f23b6f9131b8b01eef5Harish Mahendrakar s_app_ctxt.u4_strd = s_app_ctxt.u4_wd; 24138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S set_dimensions(&s_app_ctxt, 0, 0); 24148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Video control Set Frame rates */ 24178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S set_frame_rate(&s_app_ctxt, 0, 0); 24198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Video control Set IPE Params */ 24228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S set_ipe_params(&s_app_ctxt, 0, 0); 24248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Video control Set Bitrate */ 24278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S set_bit_rate(&s_app_ctxt, 0, 0); 24298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Video control Set QP */ 24328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S set_qp(&s_app_ctxt,0,0); 24348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Video control Set AIR params */ 24378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S set_air_params(&s_app_ctxt,0,0); 24398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Video control Set VBV params */ 24428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S set_vbv_params(&s_app_ctxt,0,0); 24448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Video control Set Motion estimation params */ 24478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S set_me_params(&s_app_ctxt,0,0); 24498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Video control Set GOP params */ 24528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S set_gop_params(&s_app_ctxt, 0, 0); 24548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Video control Set Deblock params */ 24578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S set_deblock_params(&s_app_ctxt, 0, 0); 24598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Video control Set Profile params */ 24628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S set_profile_params(&s_app_ctxt, 0, 0); 24648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Video control Set in Encode header mode */ 24678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*****************************************************************************/ 24688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S set_enc_mode(&s_app_ctxt, 0, 0, IVE_ENC_MODE_PICTURE); 24698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifdef IOS 24718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Correct file paths */ 24727497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar sprintf(filename_with_path, "%s/%s", documentdir, s_app_ctxt.ac_ip_fname); 24738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S strcpy (s_app_ctxt.ac_ip_fname, filename_with_path); 24748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24757497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar sprintf(filename_with_path, "%s/%s", documentdir, s_app_ctxt.ac_op_fname); 24768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S strcpy (s_app_ctxt.ac_op_fname, filename_with_path); 24778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24787497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar sprintf(filename_with_path, "%s/%s", documentdir, s_app_ctxt.ac_recon_fname); 24798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S strcpy (s_app_ctxt.ac_recon_fname, filename_with_path); 24808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24817497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar sprintf(filename_with_path, "%s/%s", documentdir, s_app_ctxt.ac_chksum_fname); 24828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S strcpy (s_app_ctxt.ac_chksum_fname, filename_with_path); 24838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24847497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar sprintf(filename_with_path, "%s/%s", documentdir, s_app_ctxt.ac_mb_info_fname); 24858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S strcpy (s_app_ctxt.ac_mb_info_fname, filename_with_path); 24868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24877497191460a9504f8b4f64df169ab633f0b74353Harish Mahendrakar sprintf(filename_with_path, "%s/%s", documentdir, s_app_ctxt.ac_pic_info_fname); 24888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S strcpy (s_app_ctxt.ac_pic_info_fname, filename_with_path); 24898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif 24908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 24928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* begin encoding */ 24938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 24948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S synchronous_encode(ps_enc, &s_app_ctxt); 24968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 24978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 24988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S DOUBLE bytes_per_frame; 24998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S DOUBLE bytes_per_second; 25008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S WORD32 achieved_bitrate; 25018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 25028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(s_app_ctxt.u4_pics_cnt != 0) 25033749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 25048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S bytes_per_frame = (s_app_ctxt.u4_total_bytes) / (s_app_ctxt.u4_pics_cnt); 25053749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 25068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S else 25073749f6f435e79624f72841e866245d84195551cdHarinarayanan K K { 25088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S bytes_per_frame = 0; 25093749f6f435e79624f72841e866245d84195551cdHarinarayanan K K } 25108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S bytes_per_second = (bytes_per_frame * s_app_ctxt.u4_tgt_frame_rate); 25118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 25128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S achieved_bitrate = bytes_per_second * 8; 25138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 25148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("\nEncoding Completed\n"); 25158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("Summary\n"); 25168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("Input filename : %s\n", s_app_ctxt.ac_ip_fname); 25178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("Output filename : %s\n", s_app_ctxt.ac_op_fname); 25188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("Output Width : %-4d\n", s_app_ctxt.u4_wd); 25198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("Output Height : %-4d\n", s_app_ctxt.u4_ht); 25208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("Target Bitrate (bps) : %-4d\n", s_app_ctxt.u4_bitrate); 25218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("Achieved Bitrate (bps) : %-4d\n", achieved_bitrate); 25228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("Average Time per Frame : %-4d\n", s_app_ctxt.avg_time); 25238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("Achieved FPS : %-4.2f\n", 1000000.0 / s_app_ctxt.avg_time); 25248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 25258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 25268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 25278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 25288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Close Codec Instance */ 25298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*************************************************************************/ 25308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 25318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_retrieve_mem_rec_ip_t s_retrieve_mem_ip; 25328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264e_retrieve_mem_rec_op_t s_retrieve_mem_op; 25338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S iv_mem_rec_t *ps_mem_rec; 25348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_retrieve_mem_ip.s_ive_ip.u4_size = 25358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sizeof(ih264e_retrieve_mem_rec_ip_t); 25368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_retrieve_mem_op.s_ive_op.u4_size = 25378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sizeof(ih264e_retrieve_mem_rec_op_t); 25388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 25398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_retrieve_mem_ip.s_ive_ip.e_cmd = IV_CMD_RETRIEVE_MEMREC; 25408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_retrieve_mem_ip.s_ive_ip.ps_mem_rec = s_app_ctxt.ps_mem_rec; 25418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 25428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S status = ih264e_api_function(ps_enc, &s_retrieve_mem_ip, 25438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S &s_retrieve_mem_op); 25448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 25458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S if(status != IV_SUCCESS) 25468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 25478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S sprintf(ac_error, "Unable to retrieve memory records = 0x%x\n", 25488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S s_retrieve_mem_op.s_ive_op.u4_error_code); 25498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S codec_exit(ac_error); 25508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 25518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 25528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* Free memory records */ 25538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_mem_rec = s_app_ctxt.ps_mem_rec; 25548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S for(i = 0; i < num_mem_recs; i++) 25558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S { 25568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ih264a_aligned_free(ps_mem_rec->pv_base); 25578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ps_mem_rec++; 25588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 25598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 25608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S free(s_app_ctxt.ps_mem_rec); 25618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 25628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S } 25638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 25648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return 0; 25658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 25668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 25678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 25688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifdef ANDROID_NDK 25698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Sint raise(int a) 25708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 25718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S printf("Divide by zero\n"); 25728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return 0; 25738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 25748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Svoid __aeabi_assert(const char *assertion, const char *file, unsigned int line) 25758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 25768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S return; 25778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 25788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif 2579