1aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/****************************************************************************** 2aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * 3aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Copyright (C) 2015 The Android Open Source Project 4aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * 5aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Licensed under the Apache License, Version 2.0 (the "License"); 6aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * you may not use this file except in compliance with the License. 7aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * You may obtain a copy of the License at: 8aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * 9aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * http://www.apache.org/licenses/LICENSE-2.0 10aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * 11aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Unless required by applicable law or agreed to in writing, software 12aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * distributed under the License is distributed on an "AS IS" BASIS, 13aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * See the License for the specific language governing permissions and 15aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * limitations under the License. 16aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * 17aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ***************************************************************************** 18aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani*/ 20aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 21aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 22aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* File Name : main.c */ 23aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 24aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Contains an application that demonstrates use of HEVC*/ 25aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* decoder API */ 26aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 27aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* List of Functions : */ 28aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 29aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues / Problems : None */ 30aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 31aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History : */ 32aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 33aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 34aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 09 2012 Harish Initial Version */ 35aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 36aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 37aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* File Includes */ 38aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 39aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include <stdio.h> 40aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include <string.h> 41aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include <stdlib.h> 42aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 43aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef X86_MINGW 44aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include <signal.h> 45aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 46aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 47aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifndef IOS 48aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include <malloc.h> 49aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 50aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef IOS_DISPLAY 51aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include "cast_types.h" 52aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 53aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include "iv_datatypedef.h" 54aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 55aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 56aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include "iv.h" 57aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include "ivd.h" 58aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include "impeg2d.h" 59aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include "ithread.h" 60aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 61aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef WINDOWS_TIMER 62aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include <windows.h> 63aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 64aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include <sys/time.h> 65aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 66aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 67aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define ALIGN8(x) ((((x) + 7) >> 3) << 3) 68aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define NUM_DISPLAY_BUFFERS 4 69aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define DEFAULT_FPS 30 70aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 71aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 72aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define ENABLE_DEGRADE 0 73aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define MAX_DISP_BUFFERS 64 74aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define EXTRA_DISP_BUFFERS 0 75aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define STRLENGTH 1000 76aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 77aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani//#define TEST_FLUSH 78aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define FLUSH_FRM_CNT 100 79aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 80aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 81aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef IOS 82aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define PATHLENMAX 500 83aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanichar filename_with_path[PATHLENMAX]; 84aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 85aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 86aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef PROFILE_ENABLE 87aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef WINDOWS_TIMER 88aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef LARGE_INTEGER TIMER; 89aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 90aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef struct timeval TIMER; 91aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 92aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 93aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef WORD32 TIMER; 94aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 95aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 96aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef PROFILE_ENABLE 97aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef WINDOWS_TIMER 98aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define GETTIME(timer) QueryPerformanceCounter(timer); 99aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 100aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define GETTIME(timer) gettimeofday(timer,NULL); 101aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 102aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 103aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef WINDOWS_TIMER 104aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define ELAPSEDTIME(s_start_timer,s_end_timer, s_elapsed_time, frequency) \ 105aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ \ 106aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani TIMER s_temp_time; \ 107aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_temp_time.LowPart = s_end_timer.LowPart - s_start_timer.LowPart ; \ 108aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_elapsed_time = (UWORD32) ( ((DOUBLE)s_temp_time.LowPart / (DOUBLE)frequency.LowPart ) * 1000000); \ 109aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 110aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 111aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define ELAPSEDTIME(s_start_timer,s_end_timer, s_elapsed_time, frequency) \ 112aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_elapsed_time = ((s_end_timer.tv_sec - s_start_timer.tv_sec) * 1000000) + (s_end_timer.tv_usec - s_start_timer.tv_usec); 113aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 114aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 115aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 116aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define GETTIME(timer) 117aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define ELAPSEDTIME(s_start_timer,s_end_timer, s_elapsed_time, frequency) 118aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 119aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 120aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 121aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function declarations */ 122aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifndef MD5_DISABLE 123aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid calc_md5_cksum(UWORD8 *pu1_inbuf, UWORD32 u4_stride, UWORD32 u4_width, UWORD32 u4_height, UWORD8 *pu1_cksum_p); 124aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 125aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define calc_md5_cksum(a, b, c, d, e) 126aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 127aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef SDL_DISPLAY 128aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid* sdl_disp_init(UWORD32, UWORD32, WORD32, WORD32, WORD32, WORD32, WORD32, WORD32 *, WORD32 *); 129aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid sdl_alloc_disp_buffers(void *); 130aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid sdl_display(void *, WORD32); 131aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid sdl_set_disp_buffers(void *, WORD32, UWORD8 **, UWORD8 **, UWORD8 **); 132aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid sdl_disp_deinit(void *); 133aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid sdl_disp_usleep(UWORD32); 134aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniIV_COLOR_FORMAT_T sdl_get_color_fmt(void); 135aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniUWORD32 sdl_get_stride(void); 136aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 137aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 138aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef INTEL_CE5300 139aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid* gdl_disp_init(UWORD32, UWORD32, WORD32, WORD32, WORD32, WORD32, WORD32, WORD32 *, WORD32 *); 140aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid gdl_alloc_disp_buffers(void *); 141aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid gdl_display(void *, WORD32); 142aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid gdl_set_disp_buffers(void *, WORD32, UWORD8 **, UWORD8 **, UWORD8 **); 143aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid gdl_disp_deinit(void *); 144aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid gdl_disp_usleep(UWORD32); 145aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniIV_COLOR_FORMAT_T gdl_get_color_fmt(void); 146aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniUWORD32 gdl_get_stride(void); 147aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 148aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 149aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef FBDEV_DISPLAY 150aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid* fbd_disp_init(UWORD32, UWORD32, WORD32, WORD32, WORD32, WORD32, WORD32, WORD32 *, WORD32 *); 151aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid fbd_alloc_disp_buffers(void *); 152aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid fbd_display(void *, WORD32); 153aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid fbd_set_disp_buffers(void *, WORD32, UWORD8 **, UWORD8 **, UWORD8 **); 154aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid fbd_disp_deinit(void *); 155aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid fbd_disp_usleep(UWORD32); 156aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniIV_COLOR_FORMAT_T fbd_get_color_fmt(void); 157aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniUWORD32 fbd_get_stride(void); 158aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 159aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 160aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef IOS_DISPLAY 161aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid* ios_disp_init(UWORD32, UWORD32, WORD32, WORD32, WORD32, WORD32, WORD32, WORD32 *, WORD32 *); 162aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid ios_alloc_disp_buffers(void *); 163aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid ios_display(void *, WORD32); 164aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid ios_set_disp_buffers(void *, WORD32, UWORD8 **, UWORD8 **, UWORD8 **); 165aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid ios_disp_deinit(void *); 166aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid ios_disp_usleep(UWORD32); 167aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniIV_COLOR_FORMAT_T ios_get_color_fmt(void); 168aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniUWORD32 ios_get_stride(void); 169aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 170aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 171aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef struct 172aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 173aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_piclen_flag; 174aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_file_save_flag; 175aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_chksum_save_flag; 176aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_max_frm_ts; 177aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IV_COLOR_FORMAT_T e_output_chroma_format; 178aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IVD_ARCH_T e_arch; 179aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IVD_SOC_T e_soc; 180aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 dump_q_rd_idx; 181aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 dump_q_wr_idx; 182aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 disp_q_wr_idx; 183aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 disp_q_rd_idx; 184aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 185aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *cocodec_obj; 186aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 share_disp_buf; 187aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 num_disp_buf; 188aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 b_pic_present; 189aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_degrade_type; 190aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_degrade_pics; 191aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_num_cores; 192aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 disp_delay; 193aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 trace_enable; 194aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHAR ac_trace_fname[STRLENGTH]; 195aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHAR ac_piclen_fname[STRLENGTH]; 196aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHAR ac_ip_fname[STRLENGTH]; 197aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHAR ac_op_fname[STRLENGTH]; 198aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHAR ac_op_chksum_fname[STRLENGTH]; 199aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_out_bufdesc_t s_disp_buffers[MAX_DISP_BUFFERS]; 200aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani iv_yuv_buf_t s_disp_frm_queue[MAX_DISP_BUFFERS]; 201aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 s_disp_frm_id_queue[MAX_DISP_BUFFERS]; 202aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 loopback; 203aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 display; 204aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 full_screen; 205aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 fps; 206aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 max_wd; 207aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 max_ht; 208aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 max_level; 209aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 210aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_strd; 211aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 212aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* For signalling to display thread */ 213aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_pic_wd; 214aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_pic_ht; 215aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 216aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* For IOS diplay */ 217aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_screen_wd; 218aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_screen_ht; 219aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 220aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani //UWORD32 u4_output_present; 221aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 quit; 222aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 paused; 223aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 224aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 225aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *pv_disp_ctx; 226aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *display_thread_handle; 227aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 display_thread_created; 228aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani volatile WORD32 display_init_done; 229aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani volatile WORD32 display_deinit_flag; 230aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 231aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void* (*disp_init)(UWORD32, UWORD32, WORD32, WORD32, WORD32, WORD32, WORD32, WORD32 *, WORD32 *); 232aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void (*alloc_disp_buffers)(void *); 233aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void (*display_buffer)(void *, WORD32); 234aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void (*set_disp_buffers)(void *, WORD32, UWORD8 **, UWORD8 **, UWORD8 **); 235aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void (*disp_deinit)(void *); 236aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void (*disp_usleep)(UWORD32); 237aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IV_COLOR_FORMAT_T(*get_color_fmt)(void); 238aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32(*get_stride)(void); 239aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}vid_dec_ctx_t; 240aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 241aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 242aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 243aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef enum 244aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 245aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani INVALID, 246aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani HELP, 247aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani VERSION, 248aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani INPUT_FILE, 249aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani OUTPUT, 250aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHKSUM, 251aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani SAVE_OUTPUT, 252aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani SAVE_CHKSUM, 253aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHROMA_FORMAT, 254aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani NUM_FRAMES, 255aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani NUM_CORES, 256aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 257aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani SHARE_DISPLAY_BUF, 258aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani LOOPBACK, 259aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani DISPLAY, 260aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani FULLSCREEN, 261aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani FPS, 262aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani TRACE, 263aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani MAX_WD, 264aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani MAX_HT, 265aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani MAX_LEVEL, 266aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CONFIG, 267aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 268aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani DEGRADE_TYPE, 269aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani DEGRADE_PICS, 270aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ARCH, 271aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani SOC, 272aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani PICLEN, 273aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani PICLEN_FILE, 274aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}ARGUMENT_T; 275aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 276aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanitypedef struct 277aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 278aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHAR argument_shortname[4]; 279aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHAR argument_name[128]; 280aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ARGUMENT_T argument; 281aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHAR description[512]; 282aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}argument_t; 283aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 284aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanistatic const argument_t argument_mapping[] = 285aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 286aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "-h", "--help", HELP, 287aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Print this help\n" }, 288aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "-c", "--config", CONFIG, 289aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "config file (Default: test.cfg)\n" }, 290aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 291aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "-v", "--version", VERSION, 292aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Version information\n" }, 293aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "-i", "--input", INPUT_FILE, 294aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Input file\n" }, 295aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "-o", "--output", OUTPUT, 296aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Output file\n" }, 297aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--piclen", PICLEN, 298aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Flag to signal if the decoder has to use a file containing number of bytes in each picture to be fed in each call\n" }, 299aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--piclen_file", PICLEN_FILE, 300aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "File containing number of bytes in each picture - each line containing one size\n" }, 301aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--chksum", CHKSUM, 302aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Output MD5 Checksum file\n" }, 303aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "-s", "--save_output", SAVE_OUTPUT, 304aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Save Output file\n" }, 305aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--save_chksum", SAVE_CHKSUM, 306aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Save Check sum file\n" }, 307aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--chroma_format", CHROMA_FORMAT, 308aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Output Chroma format Supported values YUV_420P, YUV_422ILE, RGB_565, YUV_420SP_UV, YUV_420SP_VU\n" }, 309aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "-n", "--num_frames", NUM_FRAMES, 310aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Number of frames to be decoded\n" }, 311aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--num_cores", NUM_CORES, 312aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Number of cores to be used\n" }, 313aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--share_display_buf", SHARE_DISPLAY_BUF, 314aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Enable shared display buffer mode\n" }, 315aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 316aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--loopback", LOOPBACK, 317aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Enable playback in a loop\n" }, 318aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--display", DISPLAY, 319aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Enable display (uses SDL)\n" }, 320aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--fullscreen", FULLSCREEN, 321aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Enable full screen (Only for GDL and SDL)\n" }, 322aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--fps", FPS, 323aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "FPS to be used for display \n" }, 324aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "-i", "--trace", TRACE, 325aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Trace file\n" }, 326aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--max_wd", MAX_WD, 327aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Maximum width (Default: 2560) \n" }, 328aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--max_ht", MAX_HT, 329aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Maximum height (Default: 1600)\n" }, 330aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--arch", ARCH, 331aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Set Architecture. Supported values ARM_NONEON, ARM_A9Q, ARM_A7, ARM_A5, ARM_NEONINTR, X86_GENERIC, X86_SSSE3, X86_SSE4 \n" }, 332aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--soc", SOC, 333aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Set SOC. Supported values GENERIC, HISI_37X \n" }, 334aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 335aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#if 0 336aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--degrade_type", DEGRADE_TYPE, 337aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Degrade type : 0: No degrade 0th bit set : Disable SAO 1st bit set : Disable deblocking 2nd bit set : Faster inter prediction filters 3rd bit set : Fastest inter prediction filters\n" }, 338aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--degrade_pics", DEGRADE_PICS, 339aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Degrade pics : 0 : No degrade 1 : Only on non-reference frames 2 : Do not degrade every 4th or key frames 3 : All non-key frames 4 : All frames" }, 340aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 341aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { "--", "--max_level", MAX_LEVEL, 342aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "Maximum Decoder Level (Default: 50)\n" }, 343aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 344aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani}; 345aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 346aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define PEAK_WINDOW_SIZE 8 347aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define MAX_FRAME_WIDTH 2560 348aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define MAX_FRAME_HEIGHT 1600 349aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define MAX_LEVEL_SUPPORTED 50 350aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define MAX_REF_FRAMES 16 351aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define MAX_REORDER_FRAMES 16 352aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define DEFAULT_SHARE_DISPLAY_BUF 0 353aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define STRIDE 0 354aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define DEFAULT_NUM_CORES 1 355aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 356aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define DUMP_SINGLE_BUF 0 357aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define IV_ISFATALERROR(x) (((x) >> IVD_FATALERROR) & 0x1) 358aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 359aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#define ivd_api_function impeg2d_api_function 360aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 361aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef IOS 362aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanichar filename_trace[PATHLENMAX]; 363aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 364aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 365aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#if ANDROID_NDK 366aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 367aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 368aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : raise */ 369aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 370aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Needed as a workaround when the application is built in */ 371aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Android NDK. This is an exception to be called for divide*/ 372aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* by zero error */ 373aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 374aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : a */ 375aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : */ 376aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : None */ 377aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 378aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : */ 379aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : */ 380aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 381aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : */ 382aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 383aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 384aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 385aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 386aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 09 2012 100189 Initial Version */ 387aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 388aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 389aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniint raise(int a) 390aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 391aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Divide by zero\n"); 392aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return 0; 393aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 394aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 395aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 396aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef _WIN32 397aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 398aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function to print library calls */ 399aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 400aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 401aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 402aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : memalign */ 403aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 404aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Returns malloc data. Ideally should return aligned memory*/ 405aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* support alignment will be added later */ 406aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 407aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : alignment */ 408aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* size */ 409aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : */ 410aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : */ 411aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 412aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : */ 413aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : */ 414aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 415aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : */ 416aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 417aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 418aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 419aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 420aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 09 2012 100189 Initial Version */ 421aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 422aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 423aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 424aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid* app_aligned_malloc(WORD32 alignment, WORD32 size) 425aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 426aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return (void *)_aligned_malloc(size, alignment); 427aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 428aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 429aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid app_aligned_free(void *pv_buf) 430aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 431aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani _aligned_free(pv_buf); 432aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return; 433aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 434aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 435aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 436aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#if IOS 437aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid* app_aligned_malloc(WORD32 alignment, WORD32 size) 438aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 439aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return malloc(size); 440aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 441aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 442aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid app_aligned_free(void *pv_buf) 443aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 444aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani free(pv_buf); 445aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return; 446aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 447aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 448aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 449aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#if (!defined(IOS)) && (!defined(_WIN32)) 450aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid* app_aligned_malloc(WORD32 alignment, WORD32 size) 451aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 452aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return memalign(alignment, size); 453aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 454aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 455aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid app_aligned_free(void *pv_buf) 456aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 457aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani free(pv_buf); 458aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return; 459aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 460aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 461aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 462aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 463aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 464aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : set_degrade */ 465aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 466aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Control call to set degrade level */ 467aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 468aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 469aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : codec_obj - Codec Handle */ 470aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* type - degrade level value between 0 to 4 */ 471aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 0 : No degrade */ 472aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 1st bit : Disable SAO */ 473aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 2nd bit : Disable Deblock */ 474aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 3rd bit : Faster MC for non-ref */ 475aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 4th bit : Fastest MC for non-ref */ 476aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* pics - Pictures that are are degraded */ 477aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 0 : No degrade */ 478aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 1 : Non-ref pictures */ 479aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 2 : Pictures at given interval are not degraded */ 480aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 3 : All non-key pictures */ 481aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 4 : All pictures */ 482aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : */ 483aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : Calls degrade control to the codec */ 484aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 485aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : */ 486aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : Control call return status */ 487aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 488aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : */ 489aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 490aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 491aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 492aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 493aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 09 2012 100189 Initial Version */ 494aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 495aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 496aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 497aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniIV_API_CALL_STATUS_T set_degrade(void *codec_obj, UWORD32 type, WORD32 pics) 498aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 499aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IV_API_CALL_STATUS_T e_dec_status = IV_SUCCESS; 500aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#if 0 501aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_degrade_ip_t s_ctl_ip; 502aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_degrade_op_t s_ctl_op; 503aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *pv_api_ip, *pv_api_op; 504aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 505aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 506aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_size = sizeof(impeg2d_ctl_degrade_ip_t); 507aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.i4_degrade_type = type; 508aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.i4_nondegrade_interval = 4; 509aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.i4_degrade_pics = pics; 510aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 511aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_size = sizeof(impeg2d_ctl_degrade_op_t); 512aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 513aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pv_api_ip = (void *)&s_ctl_ip; 514aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pv_api_op = (void *)&s_ctl_op; 515aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 516aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_cmd = IVD_CMD_VIDEO_CTL; 517aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_sub_cmd = (IVD_CONTROL_API_COMMAND_TYPE_T)IMPEG2D_CMD_CTL_DEGRADE; 518aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 519aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani e_dec_status = ivd_api_function((iv_obj_t *)codec_obj, pv_api_ip, pv_api_op); 520aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 521aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS != e_dec_status) 522aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 523aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Error in setting degrade level \n"); 524aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 525aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 526aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ((void)(codec_obj)); 527aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ((void)(type)); 528aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ((void)(pics)); 529aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return (e_dec_status); 530aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 531aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 532aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 533aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 534aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 535aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : enable_skipb_frames */ 536aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 537aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Control call to enable skipping of b frames */ 538aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 539aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 540aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : codec_obj : Codec handle */ 541aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : */ 542aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : Calls enable skip B frames control */ 543aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 544aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : */ 545aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : Control call return status */ 546aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 547aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : */ 548aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 549aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 550aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 551aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 552aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 09 2012 100189 Initial Version */ 553aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 554aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 555aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 556aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniIV_API_CALL_STATUS_T enable_skipb_frames(void *codec_obj, 557aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vid_dec_ctx_t *ps_app_ctx) 558aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 559aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_set_config_ip_t s_ctl_ip; 560aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_set_config_op_t s_ctl_op; 561aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IV_API_CALL_STATUS_T e_dec_status; 562aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 563aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_disp_wd = ps_app_ctx->u4_strd; 564aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_frm_skip_mode = IVD_SKIP_B; 565aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 566aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_frm_out_mode = IVD_DISPLAY_FRAME_OUT; 567aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_vid_dec_mode = IVD_DECODE_FRAME; 568aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_cmd = IVD_CMD_VIDEO_CTL; 569aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_sub_cmd = IVD_CMD_CTL_SETPARAMS; 570aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_size = sizeof(ivd_ctl_set_config_ip_t); 571aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_size = sizeof(ivd_ctl_set_config_op_t); 572aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 573aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani e_dec_status = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_ip, 574aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_op); 575aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 576aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS != e_dec_status) 577aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 578aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Error in Enable SkipB frames \n"); 579aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 580aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 581aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return e_dec_status; 582aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 583aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 584aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 585aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : disable_skipb_frames */ 586aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 587aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Control call to disable skipping of b frames */ 588aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 589aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 590aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : codec_obj : Codec handle */ 591aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : */ 592aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : Calls disable B frame skip control */ 593aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 594aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : */ 595aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : Control call return status */ 596aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 597aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : */ 598aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 599aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 600aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 601aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 602aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 09 2012 100189 Initial Version */ 603aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 604aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 605aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 606aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniIV_API_CALL_STATUS_T disable_skipb_frames(void *codec_obj, 607aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vid_dec_ctx_t *ps_app_ctx) 608aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 609aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_set_config_ip_t s_ctl_ip; 610aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_set_config_op_t s_ctl_op; 611aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IV_API_CALL_STATUS_T e_dec_status; 612aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 613aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_disp_wd = ps_app_ctx->u4_strd; 614aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_frm_skip_mode = IVD_SKIP_NONE; 615aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 616aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_frm_out_mode = IVD_DISPLAY_FRAME_OUT; 617aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_vid_dec_mode = IVD_DECODE_FRAME; 618aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_cmd = IVD_CMD_VIDEO_CTL; 619aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_sub_cmd = IVD_CMD_CTL_SETPARAMS; 620aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_size = sizeof(ivd_ctl_set_config_ip_t); 621aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_size = sizeof(ivd_ctl_set_config_op_t); 622aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 623aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani e_dec_status = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_ip, 624aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_op); 625aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 626aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS != e_dec_status) 627aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 628aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Error in Disable SkipB frames\n"); 629aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 630aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 631aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return e_dec_status; 632aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 633aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 634aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 635aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 636aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : enable_skippb_frames */ 637aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 638aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Control call to enable skipping of P & B frames */ 639aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 640aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 641aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : codec_obj : Codec handle */ 642aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : */ 643aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : Calls enable skip P and B frames control */ 644aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 645aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : */ 646aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : Control call return status */ 647aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 648aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : */ 649aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 650aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 651aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 652aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 653aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 09 2012 100189 Initial Version */ 654aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 655aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 656aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 657aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniIV_API_CALL_STATUS_T enable_skippb_frames(void *codec_obj, 658aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vid_dec_ctx_t *ps_app_ctx) 659aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 660aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_set_config_ip_t s_ctl_ip; 661aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_set_config_op_t s_ctl_op; 662aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IV_API_CALL_STATUS_T e_dec_status; 663aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 664aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_disp_wd = ps_app_ctx->u4_strd; 665aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_frm_skip_mode = IVD_SKIP_PB; 666aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 667aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_frm_out_mode = IVD_DISPLAY_FRAME_OUT; 668aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_vid_dec_mode = IVD_DECODE_FRAME; 669aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_cmd = IVD_CMD_VIDEO_CTL; 670aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_sub_cmd = IVD_CMD_CTL_SETPARAMS; 671aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_size = sizeof(ivd_ctl_set_config_ip_t); 672aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_size = sizeof(ivd_ctl_set_config_op_t); 673aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 674aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani e_dec_status = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_ip, 675aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_op); 676aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS != e_dec_status) 677aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 678aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Error in Enable SkipPB frames\n"); 679aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 680aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 681aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return e_dec_status; 682aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 683aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 684aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 685aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 686aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : disable_skippb_frames */ 687aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 688aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Control call to disable skipping of P and B frames */ 689aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 690aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 691aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : codec_obj : Codec handle */ 692aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : */ 693aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : Calls disable P and B frame skip control */ 694aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 695aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : */ 696aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : Control call return status */ 697aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 698aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : */ 699aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 700aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 701aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 702aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 703aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 09 2012 100189 Initial Version */ 704aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 705aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 706aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 707aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniIV_API_CALL_STATUS_T disable_skippb_frames(void *codec_obj, 708aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vid_dec_ctx_t *ps_app_ctx) 709aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 710aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_set_config_ip_t s_ctl_ip; 711aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_set_config_op_t s_ctl_op; 712aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IV_API_CALL_STATUS_T e_dec_status; 713aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 714aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_disp_wd = ps_app_ctx->u4_strd; 715aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_frm_skip_mode = IVD_SKIP_NONE; 716aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 717aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_frm_out_mode = IVD_DISPLAY_FRAME_OUT; 718aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_vid_dec_mode = IVD_DECODE_FRAME; 719aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_cmd = IVD_CMD_VIDEO_CTL; 720aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_sub_cmd = IVD_CMD_CTL_SETPARAMS; 721aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_size = sizeof(ivd_ctl_set_config_ip_t); 722aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_size = sizeof(ivd_ctl_set_config_op_t); 723aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 724aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani e_dec_status = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_ip, 725aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_op); 726aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS != e_dec_status) 727aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 728aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Error in Disable SkipPB frames\n"); 729aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 730aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 731aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return e_dec_status; 732aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 733aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 734aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 735aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 736aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : release_disp_frame */ 737aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 738aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Calls release display control - Used to signal to the */ 739aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* decoder that this particular buffer has been displayed */ 740aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* and that the codec is now free to write to this buffer */ 741aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 742aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 743aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : codec_obj : Codec Handle */ 744aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* buf_id : Buffer Id of the buffer to be released */ 745aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* This id would have been returned earlier by */ 746aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* the codec */ 747aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : */ 748aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : Calls Release Display call */ 749aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 750aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : */ 751aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : Status of release display call */ 752aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 753aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : */ 754aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 755aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 756aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 757aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 758aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 09 2012 100189 Initial Version */ 759aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 760aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 761aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 762aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniIV_API_CALL_STATUS_T release_disp_frame(void *codec_obj, UWORD32 buf_id) 763aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 764aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_rel_display_frame_ip_t s_video_rel_disp_ip; 765aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_rel_display_frame_op_t s_video_rel_disp_op; 766aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IV_API_CALL_STATUS_T e_dec_status; 767aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 768aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_rel_disp_ip.e_cmd = IVD_CMD_REL_DISPLAY_FRAME; 769aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_rel_disp_ip.u4_size = sizeof(ivd_rel_display_frame_ip_t); 770aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_rel_disp_op.u4_size = sizeof(ivd_rel_display_frame_op_t); 771aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_rel_disp_ip.u4_disp_buf_id = buf_id; 772aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 773aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani e_dec_status = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_video_rel_disp_ip, 774aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_video_rel_disp_op); 775aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS != e_dec_status) 776aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 777aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Error in Release Disp frame\n"); 778aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 779aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 780aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 781aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return (e_dec_status); 782aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 783aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 784aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 785aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 786aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : get_version */ 787aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 788aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Control call to get codec version */ 789aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 790aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 791aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : codec_obj : Codec handle */ 792aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : */ 793aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : Calls enable skip B frames control */ 794aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 795aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : */ 796aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : Control call return status */ 797aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 798aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : */ 799aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 800aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 801aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 802aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 803aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 09 2012 100189 Initial Version */ 804aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 805aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 806aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 807aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniIV_API_CALL_STATUS_T get_version(void *codec_obj) 808aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 809aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_getversioninfo_ip_t s_ctl_dec_ip; 810aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_getversioninfo_op_t s_ctl_dec_op; 811aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 au1_buf[512]; 812aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IV_API_CALL_STATUS_T status; 813aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_dec_ip.e_cmd = IVD_CMD_VIDEO_CTL; 814aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_dec_ip.e_sub_cmd = IVD_CMD_CTL_GETVERSION; 815aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_dec_ip.u4_size = sizeof(ivd_ctl_getversioninfo_ip_t); 816aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_dec_op.u4_size = sizeof(ivd_ctl_getversioninfo_op_t); 817aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_dec_ip.pv_version_buffer = au1_buf; 818aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_dec_ip.u4_version_buffer_size = sizeof(au1_buf); 819aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 820aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani status = ivd_api_function((iv_obj_t *)codec_obj, 821aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&(s_ctl_dec_ip), 822aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&(s_ctl_dec_op)); 823aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 824aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(status != IV_SUCCESS) 825aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 826aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Error in Getting Version number e_dec_status = %d u4_error_code = %x\n", 827aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani status, s_ctl_dec_op.u4_error_code); 828aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 829aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 830aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 831aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Ittiam Decoder Version number: %s\n", 832aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (char *)s_ctl_dec_ip.pv_version_buffer); 833aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 834aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return status; 835aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 836aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 837aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 838aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : codec_exit */ 839aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 840aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : handles unrecoverable errors */ 841aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : Error message */ 842aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : None */ 843aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : Prints error message to console and exits. */ 844aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : Error mesage to the console */ 845aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : None */ 846aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 847aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : */ 848aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 849aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 850aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 851aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes (Describe the changes made) */ 852aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 06 2006 Sankar Creation */ 853aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 854aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 855aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid codec_exit(CHAR *pc_err_message) 856aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 857aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("%s\n", pc_err_message); 858aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani exit(-1); 859aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 860aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 861aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 862aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 863aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : dump_output */ 864aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 865aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Used to dump output YUV */ 866aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : App context, disp output desc, File pointer */ 867aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : None */ 868aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : Dumps to a file */ 869aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : None */ 870aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 871aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : */ 872aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 873aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 874aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 875aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes (Describe the changes made) */ 876aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 06 2006 Sankar Creation */ 877aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 878aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 879aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid dump_output(vid_dec_ctx_t *ps_app_ctx, 880aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani iv_yuv_buf_t *ps_disp_frm_buf, 881aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_disp_frm_id, 882aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani FILE *ps_op_file, 883aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani FILE *ps_op_chksum_file, 884aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i4_op_frm_ts, 885aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 file_save, 886aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 chksum_save) 887aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 888aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 889aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 890aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 i; 891aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani iv_yuv_buf_t s_dump_disp_frm_buf; 892aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_disp_id; 893aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 894aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani memset(&s_dump_disp_frm_buf, 0, sizeof(iv_yuv_buf_t)); 895aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 896aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ps_app_ctx->share_disp_buf) 897aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 898aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ps_app_ctx->dump_q_wr_idx == MAX_DISP_BUFFERS 899aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ) 900aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->dump_q_wr_idx = 0; 901aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 902aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ps_app_ctx->dump_q_rd_idx == MAX_DISP_BUFFERS 903aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ) 904aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->dump_q_rd_idx = 0; 905aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 906aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->s_disp_frm_queue[ps_app_ctx->dump_q_wr_idx] = 907aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani *ps_disp_frm_buf; 908aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->s_disp_frm_id_queue[ps_app_ctx->dump_q_wr_idx] = 909aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_disp_frm_id; 910aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->dump_q_wr_idx++; 911aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 912aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if((WORD32)i4_op_frm_ts >= (WORD32)(ps_app_ctx->disp_delay - 1)) 913aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 914aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_dump_disp_frm_buf = 915aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->s_disp_frm_queue[ps_app_ctx->dump_q_rd_idx]; 916aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_disp_id = 917aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->s_disp_frm_id_queue[ps_app_ctx->dump_q_rd_idx]; 918aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->dump_q_rd_idx++; 919aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 920aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 921aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 922aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return; 923aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 924aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 925aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 926aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 927aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_dump_disp_frm_buf = *ps_disp_frm_buf; 928aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_disp_id = u4_disp_frm_id; 929aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 930aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == ps_app_ctx->share_disp_buf) 931aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani release_disp_frame(ps_app_ctx->cocodec_obj, u4_disp_id); 932aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 933aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(0 == file_save && 0 == chksum_save) 934aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return; 935aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 936aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(NULL == s_dump_disp_frm_buf.pv_y_buf) 937aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return; 938aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 939aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ps_app_ctx->e_output_chroma_format == IV_YUV_420P) 940aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 941aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#if DUMP_SINGLE_BUF 942aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 943aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 *buf = s_dump_disp_frm_buf.pv_y_buf - 24 - (s_dump_disp_frm_buf.u4_y_strd * 40); 944aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 945aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 size = s_dump_disp_frm_buf.u4_y_strd * ((s_dump_disp_frm_buf.u4_y_ht + 80) + (s_dump_disp_frm_buf.u4_u_ht + 40)); 946aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fwrite(buf, 1, size, ps_op_file); 947aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 948aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 949aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 950aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(0 != file_save) 951aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 952aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 *buf; 953aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 954aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani buf = (UWORD8 *)s_dump_disp_frm_buf.pv_y_buf; 955aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani for(i = 0; i < s_dump_disp_frm_buf.u4_y_ht; i++) 956aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 957aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fwrite(buf, 1, s_dump_disp_frm_buf.u4_y_wd, ps_op_file); 958aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani buf += s_dump_disp_frm_buf.u4_y_strd; 959aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 960aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 961aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani buf = (UWORD8 *)s_dump_disp_frm_buf.pv_u_buf; 962aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani for(i = 0; i < s_dump_disp_frm_buf.u4_u_ht; i++) 963aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 964aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fwrite(buf, 1, s_dump_disp_frm_buf.u4_u_wd, ps_op_file); 965aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani buf += s_dump_disp_frm_buf.u4_u_strd; 966aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 967aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani buf = (UWORD8 *)s_dump_disp_frm_buf.pv_v_buf; 968aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani for(i = 0; i < s_dump_disp_frm_buf.u4_v_ht; i++) 969aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 970aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fwrite(buf, 1, s_dump_disp_frm_buf.u4_v_wd, ps_op_file); 971aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani buf += s_dump_disp_frm_buf.u4_v_strd; 972aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 973aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 974aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 975aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 976aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(0 != chksum_save) 977aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 978aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 au1_y_chksum[16]; 979aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 au1_u_chksum[16]; 980aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 au1_v_chksum[16]; 981aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani calc_md5_cksum((UWORD8 *)s_dump_disp_frm_buf.pv_y_buf, 982aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_dump_disp_frm_buf.u4_y_strd, 983aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_dump_disp_frm_buf.u4_y_wd, 984aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_dump_disp_frm_buf.u4_y_ht, 985aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani au1_y_chksum); 986aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani calc_md5_cksum((UWORD8 *)s_dump_disp_frm_buf.pv_u_buf, 987aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_dump_disp_frm_buf.u4_u_strd, 988aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_dump_disp_frm_buf.u4_u_wd, 989aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_dump_disp_frm_buf.u4_u_ht, 990aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani au1_u_chksum); 991aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani calc_md5_cksum((UWORD8 *)s_dump_disp_frm_buf.pv_v_buf, 992aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_dump_disp_frm_buf.u4_v_strd, 993aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_dump_disp_frm_buf.u4_v_wd, 994aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_dump_disp_frm_buf.u4_v_ht, 995aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani au1_v_chksum); 996aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 997aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fwrite(au1_y_chksum, sizeof(UWORD8), 16, ps_op_chksum_file); 998aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fwrite(au1_u_chksum, sizeof(UWORD8), 16, ps_op_chksum_file); 999aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fwrite(au1_v_chksum, sizeof(UWORD8), 16, ps_op_chksum_file); 1000aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1001aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1002aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1003aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((ps_app_ctx->e_output_chroma_format == IV_YUV_420SP_UV) 1004aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani || (ps_app_ctx->e_output_chroma_format == IV_YUV_420SP_VU)) 1005aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1006aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#if DUMP_SINGLE_BUF 1007aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1008aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1009aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 *buf = s_dump_disp_frm_buf.pv_y_buf - 24 - (s_dump_disp_frm_buf.u4_y_strd * 40); 1010aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1011aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 size = s_dump_disp_frm_buf.u4_y_strd * ((s_dump_disp_frm_buf.u4_y_ht + 80) + (s_dump_disp_frm_buf.u4_u_ht + 40)); 1012aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fwrite(buf, 1, size, ps_op_file); 1013aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1014aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 1015aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1016aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 *buf; 1017aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1018aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani buf = (UWORD8 *)s_dump_disp_frm_buf.pv_y_buf; 1019aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani for(i = 0; i < s_dump_disp_frm_buf.u4_y_ht; i++) 1020aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1021aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fwrite(buf, 1, s_dump_disp_frm_buf.u4_y_wd, ps_op_file); 1022aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani buf += s_dump_disp_frm_buf.u4_y_strd; 1023aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1024aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1025aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani buf = (UWORD8 *)s_dump_disp_frm_buf.pv_u_buf; 1026aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani for(i = 0; i < s_dump_disp_frm_buf.u4_u_ht; i++) 1027aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1028aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fwrite(buf, 1, s_dump_disp_frm_buf.u4_u_wd, ps_op_file); 1029aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani buf += s_dump_disp_frm_buf.u4_u_strd; 1030aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1031aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1032aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1033aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1034aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if(ps_app_ctx->e_output_chroma_format == IV_RGBA_8888) 1035aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1036aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 *buf; 1037aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1038aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani buf = (UWORD8 *)s_dump_disp_frm_buf.pv_y_buf; 1039aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani for(i = 0; i < s_dump_disp_frm_buf.u4_y_ht; i++) 1040aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1041aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fwrite(buf, 1, s_dump_disp_frm_buf.u4_y_wd * 4, ps_op_file); 1042aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani buf += s_dump_disp_frm_buf.u4_y_strd * 4; 1043aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1044aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1045aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 1046aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1047aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 *buf; 1048aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1049aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani buf = (UWORD8 *)s_dump_disp_frm_buf.pv_y_buf; 1050aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani for(i = 0; i < s_dump_disp_frm_buf.u4_y_ht; i++) 1051aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1052aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fwrite(buf, 1, s_dump_disp_frm_buf.u4_y_strd * 2, ps_op_file); 1053aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani buf += s_dump_disp_frm_buf.u4_y_strd * 2; 1054aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1055aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1056aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1057aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fflush(ps_op_file); 1058aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fflush(ps_op_chksum_file); 1059aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1060aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 1061aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1062aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1063aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 1064aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1065aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : print_usage */ 1066aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1067aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Prints argument format */ 1068aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1069aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1070aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : */ 1071aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : */ 1072aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : Prints argument format */ 1073aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1074aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : */ 1075aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : */ 1076aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1077aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : */ 1078aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1079aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 1080aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1081aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 1082aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 09 2012 100189 Initial Version */ 1083aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1084aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 1085aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1086aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid print_usage(void) 1087aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 1088aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i = 0; 1089aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 num_entries = sizeof(argument_mapping) / sizeof(argument_t); 1090aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("\nUsage:\n"); 1091aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani while(i < num_entries) 1092aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1093aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("%-32s\t %s", argument_mapping[i].argument_name, 1094aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani argument_mapping[i].description); 1095aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani i++; 1096aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1097aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 1098aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1099aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 1100aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1101aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : get_argument */ 1102aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1103aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Gets argument for a given string */ 1104aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1105aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1106aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : name */ 1107aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : */ 1108aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : Searches the given string in the array and returns */ 1109aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* appropriate argument ID */ 1110aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1111aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : Argument ID */ 1112aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : Argument ID */ 1113aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1114aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : */ 1115aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1116aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 1117aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1118aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 1119aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 09 2012 100189 Initial Version */ 1120aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1121aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 1122aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1123aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniARGUMENT_T get_argument(CHAR *name) 1124aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 1125aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 i = 0; 1126aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 num_entries = sizeof(argument_mapping) / sizeof(argument_t); 1127aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani while(i < num_entries) 1128aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1129aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if((0 == strcmp(argument_mapping[i].argument_name, name)) || 1130aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ((0 == strcmp(argument_mapping[i].argument_shortname, name)) && 1131aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (0 != strcmp(argument_mapping[i].argument_shortname, "--")))) 1132aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1133aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return argument_mapping[i].argument; 1134aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1135aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani i++; 1136aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1137aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return INVALID; 1138aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 1139aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1140aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 1141aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1142aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : get_argument */ 1143aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1144aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Gets argument for a given string */ 1145aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1146aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1147aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : name */ 1148aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : */ 1149aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : Searches the given string in the array and returns */ 1150aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* appropriate argument ID */ 1151aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1152aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : Argument ID */ 1153aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : Argument ID */ 1154aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1155aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : */ 1156aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1157aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 1158aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1159aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 1160aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 09 2012 100189 Initial Version */ 1161aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1162aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 1163aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1164aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid parse_argument(vid_dec_ctx_t *ps_app_ctx, CHAR *argument, CHAR *value) 1165aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 1166aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ARGUMENT_T arg; 1167aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1168aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani arg = get_argument(argument); 1169aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani switch(arg) 1170aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1171aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case HELP: 1172aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani print_usage(); 1173aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani exit(-1); 1174aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case VERSION: 1175aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1176aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case INPUT_FILE: 1177aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%s", ps_app_ctx->ac_ip_fname); 1178aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani //input_passed = 1; 1179aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1180aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1181aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case OUTPUT: 1182aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%s", ps_app_ctx->ac_op_fname); 1183aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1184aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1185aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case CHKSUM: 1186aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%s", ps_app_ctx->ac_op_chksum_fname); 1187aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1188aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1189aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case SAVE_OUTPUT: 1190aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%d", &ps_app_ctx->u4_file_save_flag); 1191aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1192aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1193aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case SAVE_CHKSUM: 1194aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%d", &ps_app_ctx->u4_chksum_save_flag); 1195aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1196aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1197aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case CHROMA_FORMAT: 1198aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if((strcmp(value, "YUV_420P")) == 0) 1199aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_output_chroma_format = IV_YUV_420P; 1200aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "YUV_422ILE")) == 0) 1201aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_output_chroma_format = IV_YUV_422ILE; 1202aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "RGB_565")) == 0) 1203aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_output_chroma_format = IV_RGB_565; 1204aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "RGBA_8888")) == 0) 1205aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_output_chroma_format = IV_RGBA_8888; 1206aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "YUV_420SP_UV")) == 0) 1207aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_output_chroma_format = IV_YUV_420SP_UV; 1208aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "YUV_420SP_VU")) == 0) 1209aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_output_chroma_format = IV_YUV_420SP_VU; 1210aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 1211aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1212aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("\nInvalid colour format setting it to IV_YUV_420P\n"); 1213aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_output_chroma_format = IV_YUV_420P; 1214aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1215aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1216aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1217aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case NUM_FRAMES: 1218aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%d", &ps_app_ctx->u4_max_frm_ts); 1219aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1220aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1221aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case NUM_CORES: 1222aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%d", &ps_app_ctx->u4_num_cores); 1223aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1224aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case DEGRADE_PICS: 1225aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%d", &ps_app_ctx->i4_degrade_pics); 1226aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->i4_degrade_pics = 0; 1227aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("degrade_pics is not supported. Setting it to zero"); 1228aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1229aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case DEGRADE_TYPE: 1230aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%d", &ps_app_ctx->i4_degrade_type); 1231aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1232aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case SHARE_DISPLAY_BUF: 1233aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%d", &ps_app_ctx->share_disp_buf); 1234aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1235aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case LOOPBACK: 1236aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%d", &ps_app_ctx->loopback); 1237aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1238aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case DISPLAY: 1239aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#if defined(SDL_DISPLAY) || defined(FBDEV_DISPLAY) || defined(INTEL_CE5300) || defined(IOS_DISPLAY) 1240aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%d", &ps_app_ctx->display); 1241aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 1242aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->display = 0; 1243aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1244aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1245aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case FULLSCREEN: 1246aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%d", &ps_app_ctx->full_screen); 1247aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1248aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case FPS: 1249aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%d", &ps_app_ctx->fps); 1250aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ps_app_ctx->fps <= 0) 1251aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->fps = DEFAULT_FPS; 1252aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1253aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case MAX_WD: 1254aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%d", &ps_app_ctx->max_wd); 1255aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1256aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case MAX_HT: 1257aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%d", &ps_app_ctx->max_ht); 1258aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1259aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case MAX_LEVEL: 1260aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%d", &ps_app_ctx->max_level); 1261aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1262aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case ARCH: 1263aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if((strcmp(value, "ARM_NONEON")) == 0) 1264aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_arch = ARCH_ARM_NONEON; 1265aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "ARM_A9Q")) == 0) 1266aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_arch = ARCH_ARM_A9Q; 1267aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "ARM_V8")) == 0) 1268aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_arch = ARCH_ARMV8_GENERIC; 1269aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "ARM_A7")) == 0) 1270aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_arch = ARCH_ARM_A7; 1271aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "ARM_A5")) == 0) 1272aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_arch = ARCH_ARM_A5; 1273aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "ARM_NEONINTR")) == 0) 1274aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_arch = ARCH_ARM_NEONINTR; 1275aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "X86_GENERIC")) == 0) 1276aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_arch = ARCH_X86_GENERIC; 1277aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "X86_SSSE3")) == 0) 1278aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_arch = ARCH_X86_SSSE3; 1279aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "X86_SSE42")) == 0) 1280aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_arch = ARCH_X86_SSE42; 1281aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "X86_AVX2")) == 0) 1282aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_arch = ARCH_X86_AVX2; 1283aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "MIPS_GENERIC")) == 0) 1284aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_arch = ARCH_MIPS_GENERIC; 1285aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "MIPS_32")) == 0) 1286aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_arch = ARCH_MIPS_32; 1287aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 1288aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1289aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("\nInvalid Arch. Setting it to ARM_A9Q\n"); 1290aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_arch = ARCH_ARM_A9Q; 1291aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1292aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1293aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1294aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case SOC: 1295aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if((strcmp(value, "GENERIC")) == 0) 1296aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_soc = SOC_GENERIC; 1297aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if((strcmp(value, "HISI_37X")) == 0) 1298aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_soc = SOC_HISI_37X; 1299aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 1300aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1301aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_soc = atoi(value); 1302aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 1303aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("\nInvalid SOC. Setting it to GENERIC\n"); 1304aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->e_soc = SOC_GENERIC; 1305aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani*/ 1306aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1307aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1308aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case PICLEN: 1309aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%d", &ps_app_ctx->u4_piclen_flag); 1310aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1311aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1312aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case PICLEN_FILE: 1313aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(value, "%s", ps_app_ctx->ac_piclen_fname); 1314aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1315aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1316aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani case INVALID: 1317aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani default: 1318aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Ignoring argument : %s\n", argument); 1319aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1320aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1321aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 1322aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1323aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 1324aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1325aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : read_cfg_file */ 1326aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1327aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Reads arguments from a configuration file */ 1328aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1329aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1330aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : ps_app_ctx : Application context */ 1331aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* fp_cfg_file : Configuration file handle */ 1332aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : */ 1333aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : Parses the arguments and fills in the application context*/ 1334aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1335aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : Arguments parsed */ 1336aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : None */ 1337aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1338aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : */ 1339aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1340aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 1341aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1342aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 1343aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 09 2012 100189 Initial Version */ 1344aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1345aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 1346aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1347aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid read_cfg_file(vid_dec_ctx_t *ps_app_ctx, FILE *fp_cfg_file) 1348aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 1349aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1350aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHAR line[STRLENGTH]; 1351aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHAR description[STRLENGTH]; 1352aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHAR value[STRLENGTH]; 1353aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHAR argument[STRLENGTH]; 1354aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *ret; 1355aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani while(0 == feof(fp_cfg_file)) 1356aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1357aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani line[0] = '\0'; 1358aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = fgets(line, STRLENGTH, fp_cfg_file); 1359aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(NULL == ret) 1360aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1361aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani argument[0] = '\0'; 1362aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Reading Input File Name */ 1363aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sscanf(line, "%s %s %s", argument, value, description); 1364aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(argument[0] == '\0') 1365aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani continue; 1366aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1367aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani parse_argument(ps_app_ctx, argument, value); 1368aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1369aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1370aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1371aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 1372aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1373aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*! 1374aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani************************************************************************** 1375aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \if Function name : dispq_producer_dequeue \endif 1376aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1377aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \brief 1378aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* This function gets a free buffer index where display data can be written 1379aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* This is a blocking call and can be exited by setting quit to true in 1380aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* the application context 1381aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1382aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \param[in] ps_app_ctx : Pointer to application context 1383aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1384aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \return 1385aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* returns Next free buffer index for producer 1386aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1387aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \author 1388aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* Ittiam 1389aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1390aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani************************************************************************** 1391aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani*/ 1392aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniWORD32 dispq_producer_dequeue(vid_dec_ctx_t *ps_app_ctx) 1393aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 1394aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 idx; 1395aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1396aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* If there is no free buffer wait */ 1397aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1398aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani while(((ps_app_ctx->disp_q_wr_idx + 1) % NUM_DISPLAY_BUFFERS) == ps_app_ctx->disp_q_rd_idx) 1399aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1400aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1401aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ithread_msleep(1); 1402aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1403aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ps_app_ctx->quit) 1404aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return (-1); 1405aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1406aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1407aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani idx = ps_app_ctx->disp_q_wr_idx; 1408aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return (idx); 1409aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 1410aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1411aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*! 1412aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani************************************************************************** 1413aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \if Function name : dispq_producer_queue \endif 1414aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1415aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \brief 1416aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* This function adds buffer which can be displayed 1417aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1418aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \param[in] ps_app_ctx : Pointer to application context 1419aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1420aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \return 1421aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* returns Next free buffer index for producer 1422aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1423aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \author 1424aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* Ittiam 1425aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1426aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani************************************************************************** 1427aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani*/ 1428aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniWORD32 dispq_producer_queue(vid_dec_ctx_t *ps_app_ctx) 1429aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 1430aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->disp_q_wr_idx++; 1431aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ps_app_ctx->disp_q_wr_idx == NUM_DISPLAY_BUFFERS) 1432aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->disp_q_wr_idx = 0; 1433aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1434aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return (0); 1435aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 1436aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*! 1437aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani************************************************************************** 1438aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \if Function name : dispq_consumer_dequeue \endif 1439aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1440aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \brief 1441aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* This function gets a free buffer index where display data can be written 1442aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* This is a blocking call and can be exited by setting quit to true in 1443aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* the application context 1444aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1445aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \param[in] ps_app_ctx : Pointer to application context 1446aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1447aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \return 1448aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* returns Next free buffer index for producer 1449aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1450aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \author 1451aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* Ittiam 1452aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1453aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani************************************************************************** 1454aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani*/ 1455aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniWORD32 dispq_consumer_dequeue(vid_dec_ctx_t *ps_app_ctx) 1456aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 1457aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 idx; 1458aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1459aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* If there is no free buffer wait */ 1460aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1461aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani while(ps_app_ctx->disp_q_wr_idx == ps_app_ctx->disp_q_rd_idx) 1462aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1463aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1464aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ithread_msleep(1); 1465aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1466aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ps_app_ctx->quit) 1467aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return (-1); 1468aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1469aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1470aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani idx = ps_app_ctx->disp_q_rd_idx; 1471aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return (idx); 1472aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 1473aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1474aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*! 1475aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani************************************************************************** 1476aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \if Function name : dispq_producer_queue \endif 1477aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1478aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \brief 1479aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* This function adds buffer which can be displayed 1480aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1481aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \param[in] ps_app_ctx : Pointer to application context 1482aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1483aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \return 1484aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* returns Next free buffer index for producer 1485aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1486aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* \author 1487aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* Ittiam 1488aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani* 1489aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani************************************************************************** 1490aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani*/ 1491aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniWORD32 dispq_consumer_queue(vid_dec_ctx_t *ps_app_ctx) 1492aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 1493aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->disp_q_rd_idx++; 1494aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ps_app_ctx->disp_q_rd_idx == NUM_DISPLAY_BUFFERS) 1495aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->disp_q_rd_idx = 0; 1496aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1497aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return (0); 1498aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 1499aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1500aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 1501aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1502aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : display_thread */ 1503aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1504aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Thread to display the frame */ 1505aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1506aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1507aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : pv_ctx : Application context */ 1508aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1509aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : */ 1510aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : Wait for a buffer to get produced by decoder and display */ 1511aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* that frame */ 1512aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1513aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : */ 1514aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : None */ 1515aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1516aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : Pause followed by quit is making some deadlock condn */ 1517aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* If decoder was lagging initially and then fasten up, */ 1518aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* display will also go at faster rate till it reaches */ 1519aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* equilibrium wrt the initial time */ 1520aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1521aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 1522aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1523aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 1524aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 05 2013 100578 Initial Version */ 1525aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1526aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 1527aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1528aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniWORD32 display_thread(void *pv_ctx) 1529aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 1530aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vid_dec_ctx_t *ps_app_ctx = (vid_dec_ctx_t *)pv_ctx; 1531aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1532aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1533aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 frm_duration; /* in us */ 1534aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 current_time; 1535aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 expected_time; 1536aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani TIMER s_end_timer; 1537aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani TIMER s_first_frame_time; 1538aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 first_frame_displayed; 1539aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1540aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef WINDOWS_TIMER 1541aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani TIMER frequency; 1542aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1543aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1544aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1545aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef WINDOWS_TIMER 1546aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani QueryPerformanceFrequency(&frequency); 1547aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1548aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani first_frame_displayed = 0; 1549aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani expected_time = 0; 1550aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani frm_duration = 1000000 / ps_app_ctx->fps; 1551aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1552aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Init display and allocate display buffers */ 1553aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->pv_disp_ctx = (void *)ps_app_ctx->disp_init(ps_app_ctx->u4_pic_wd, 1554aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->u4_pic_ht, 1555aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->i4_screen_wd, 1556aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->i4_screen_ht, 1557aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->max_wd, 1558aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->max_ht, 1559aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->full_screen, 1560aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani &ps_app_ctx->quit, 1561aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani &ps_app_ctx->paused); 1562aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->alloc_disp_buffers(ps_app_ctx->pv_disp_ctx); 1563aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1564aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->display_init_done = 1; 1565aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1566aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani while(1) 1567aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1568aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 rd_idx; 1569aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1570aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani rd_idx = dispq_consumer_dequeue(ps_app_ctx); 1571aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ps_app_ctx->quit) 1572aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1573aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1574aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->display_buffer(ps_app_ctx->pv_disp_ctx, rd_idx); 1575aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1576aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(0 == first_frame_displayed) 1577aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1578aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani GETTIME(&s_first_frame_time); 1579aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani first_frame_displayed = 1; 1580aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1581aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1582aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*********************************************************************/ 1583aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Sleep based on the expected time of arrival of current buffer and */ 1584aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* the Current frame */ 1585aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*********************************************************************/ 1586aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1587aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani GETTIME(&s_end_timer); 1588aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ELAPSEDTIME(s_first_frame_time, s_end_timer, current_time, frequency); 1589aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1590aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* time in micro second */ 1591aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani expected_time += frm_duration; 1592aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1593aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani //printf("current_time %d expected_time %d diff %d \n", current_time, expected_time, (expected_time - current_time)); 1594aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* sleep for the diff. in time */ 1595aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(current_time < expected_time) 1596aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->disp_usleep((expected_time - current_time)); 1597aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 1598aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani expected_time += (current_time - expected_time); 1599aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1600aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani dispq_consumer_queue(ps_app_ctx); 1601aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1602aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1603aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1604aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1605aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani while(0 == ps_app_ctx->display_deinit_flag) 1606aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1607aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->disp_usleep(1000); 1608aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1609aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->disp_deinit(ps_app_ctx->pv_disp_ctx); 1610aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1611aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* destroy the display thread */ 1612aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ithread_exit(ps_app_ctx->display_thread_handle); 1613aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1614aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return 0; 1615aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 1616aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1617aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid flush_output(iv_obj_t *codec_obj, 1618aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vid_dec_ctx_t *ps_app_ctx, 1619aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_out_bufdesc_t *ps_out_buf, 1620aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 *pu1_bs_buf, 1621aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 *pu4_op_frm_ts, 1622aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani FILE *ps_op_file, 1623aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani FILE *ps_op_chksum_file, 1624aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_ip_frm_ts, 1625aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_bytes_remaining) 1626aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 1627aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 ret; 1628aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1629aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani do 1630aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1631aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1632aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_flush_ip_t s_ctl_ip; 1633aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_flush_op_t s_ctl_op; 1634aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1635aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(*pu4_op_frm_ts >= (ps_app_ctx->u4_max_frm_ts + ps_app_ctx->disp_delay)) 1636aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 1637aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1638aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_cmd = IVD_CMD_VIDEO_CTL; 1639aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_sub_cmd = IVD_CMD_CTL_FLUSH; 1640aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_size = sizeof(ivd_ctl_flush_ip_t); 1641aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_size = sizeof(ivd_ctl_flush_op_t); 1642aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_ip, 1643aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_op); 1644aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1645aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ret != IV_SUCCESS) 1646aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1647aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Error in Setting the decoder in flush mode\n"); 1648aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1649aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1650aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS == ret) 1651aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1652aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_video_decode_ip_t s_video_decode_ip; 1653aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_video_decode_op_t s_video_decode_op; 1654aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1655aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.e_cmd = IVD_CMD_VIDEO_DECODE; 1656aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.u4_ts = u4_ip_frm_ts; 1657aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.pv_stream_buffer = pu1_bs_buf; 1658aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.u4_num_Bytes = u4_bytes_remaining; 1659aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.u4_size = sizeof(ivd_video_decode_ip_t); 1660aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.s_out_buffer.u4_min_out_buf_size[0] = 1661aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->u4_min_out_buf_size[0]; 1662aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.s_out_buffer.u4_min_out_buf_size[1] = 1663aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->u4_min_out_buf_size[1]; 1664aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.s_out_buffer.u4_min_out_buf_size[2] = 1665aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->u4_min_out_buf_size[2]; 1666aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1667aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.s_out_buffer.pu1_bufs[0] = 1668aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->pu1_bufs[0]; 1669aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.s_out_buffer.pu1_bufs[1] = 1670aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->pu1_bufs[1]; 1671aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.s_out_buffer.pu1_bufs[2] = 1672aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->pu1_bufs[2]; 1673aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.s_out_buffer.u4_num_bufs = 1674aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->u4_num_bufs; 1675aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1676aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_op.u4_size = sizeof(ivd_video_decode_op_t); 1677aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1678aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 1679aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* API Call: Video Decode */ 1680aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 1681aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_video_decode_ip, 1682aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_video_decode_op); 1683aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1684aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == s_video_decode_op.u4_output_present) 1685aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1686aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani dump_output(ps_app_ctx, &(s_video_decode_op.s_disp_frm_buf), 1687aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_op.u4_disp_buf_id, ps_op_file, 1688aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_op_chksum_file, 1689aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani *pu4_op_frm_ts, ps_app_ctx->u4_file_save_flag, 1690aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_app_ctx->u4_chksum_save_flag); 1691aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1692aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (*pu4_op_frm_ts)++; 1693aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1694aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1695aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani }while(IV_SUCCESS == ret); 1696aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1697aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 1698aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1699aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef X86_MINGW 1700aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhanivoid sigsegv_handler() 1701aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 1702aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Segmentation fault, Exiting.. \n"); 1703aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani exit(-1); 1704aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 1705aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1706aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1707aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniUWORD32 default_get_stride(void) 1708aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 1709aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return 0; 1710aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 1711aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1712aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1713aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama AvadhaniIV_COLOR_FORMAT_T default_get_color_fmt(void) 1714aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 1715aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return IV_YUV_420P; 1716aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 1717aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 1718aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1719aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Function Name : main */ 1720aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1721aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Description : Application to demonstrate codec API */ 1722aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1723aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1724aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Inputs : argc - Number of arguments */ 1725aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* argv[] - Arguments */ 1726aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Globals : */ 1727aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Processing : Shows how to use create, process, control and delete */ 1728aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1729aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Outputs : Codec output in a file */ 1730aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Returns : */ 1731aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1732aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Issues : Assumes both PROFILE_ENABLE to be */ 1733aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* defined for multithread decode-display working */ 1734aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1735aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Revision History: */ 1736aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* */ 1737aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* DD MM YYYY Author(s) Changes */ 1738aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 07 09 2012 100189 Initial Version */ 1739aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 09 05 2013 100578 Multithread decode-display */ 1740aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/ 1741aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef IOS 1742aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniint vdec_main(char *homedir, char *documentdir, int screen_wd, int screen_ht) 1743aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 1744aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniint main(WORD32 argc, CHAR *argv[]) 1745aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1746aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{ 1747aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHAR ac_cfg_fname[STRLENGTH]; 1748aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani FILE *fp_cfg_file = NULL; 1749aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani FILE *ps_piclen_file = NULL; 1750aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani FILE *ps_ip_file = NULL; 1751aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani FILE *ps_op_file = NULL; 1752aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani FILE *ps_op_chksum_file = NULL; 1753aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 ret; 1754aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani CHAR ac_error_str[STRLENGTH]; 1755aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vid_dec_ctx_t s_app_ctx; 1756aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD8 *pu1_bs_buf; 1757aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1758aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_out_bufdesc_t *ps_out_buf; 1759aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_num_bytes_dec = 0; 1760aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 file_pos = 0; 1761aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IV_API_CALL_STATUS_T e_dec_status; 1762aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_ip_frm_ts = 0, u4_op_frm_ts = 0; 1763aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1764aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 u4_bytes_remaining = 0; 1765aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *pv_mem_rec_location; 1766aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_num_mem_recs; 1767aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 i; 1768aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_ip_buf_len; 1769aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 frm_cnt = 0; 1770aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 total_bytes_comsumed; 1771aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1772aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef PROFILE_ENABLE 1773aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_tot_cycles = 0; 1774aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 u4_tot_fmt_cycles = 0; 1775aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 peak_window[PEAK_WINDOW_SIZE]; 1776aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 peak_window_idx = 0; 1777aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 peak_avg_max = 0; 1778aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef INTEL_CE5300 1779aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 time_consumed = 0; 1780aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 bytes_consumed = 0; 1781aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1782aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1783aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef WINDOWS_TIMER 1784aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani TIMER frequency; 1785aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1786aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 width = 0, height = 0; 1787aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani iv_obj_t *codec_obj; 1788aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#if defined(GPU_BUILD) && !defined(X86) 1789aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani// int ioctl_init(); 1790aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani// ioctl_init(); 1791aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1792aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1793aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef X86_MINGW 1794aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani //For getting printfs without any delay 1795aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani setvbuf(stdout, NULL, _IONBF, 0); 1796aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani setvbuf(stderr, NULL, _IONBF, 0); 1797aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1798aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef IOS 1799aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(filename_trace, "%s/iostrace.txt", homedir); 1800aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("\ntrace file name = %s", filename_trace); 1801aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1802aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1803aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef X86_MINGW 1804aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1805aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani signal(SIGSEGV, sigsegv_handler); 1806aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1807aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1808aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1809aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1810aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifndef IOS 1811aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Usage */ 1812aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(argc < 2) 1813aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1814aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Using test.cfg as configuration file \n"); 1815aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani strcpy(ac_cfg_fname, "test.cfg"); 1816aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1817aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if(argc == 2) 1818aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1819aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani strcpy(ac_cfg_fname, argv[1]); 1820aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1821aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1822aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 1823aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani strcpy(ac_cfg_fname, "test.cfg"); 1824aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1825aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1826aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1827aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1828aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 1829aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Initialize Application parameters */ 1830aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 1831aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1832aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani strcpy(s_app_ctx.ac_ip_fname, "\0"); 1833aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.dump_q_wr_idx = 0; 1834aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.dump_q_rd_idx = 0; 1835aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.display_thread_created = 0; 1836aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_q_wr_idx = 0; 1837aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_q_rd_idx = 0; 1838aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_delay = 0; 1839aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.loopback = 0; 1840aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.display = 0; 1841aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.full_screen = 0; 1842aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.u4_piclen_flag = 0; 1843aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.fps = DEFAULT_FPS; 1844aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani file_pos = 0; 1845aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani total_bytes_comsumed = 0; 1846aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_ip_frm_ts = 0; 1847aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_op_frm_ts = 0; 1848aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef PROFILE_ENABLE 1849aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani memset(peak_window, 0, sizeof(WORD32) * PEAK_WINDOW_SIZE); 1850aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1851aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.share_disp_buf = DEFAULT_SHARE_DISPLAY_BUF; 1852aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.u4_num_cores = DEFAULT_NUM_CORES; 1853aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.i4_degrade_type = 0; 1854aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.i4_degrade_pics = 0; 1855aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.max_wd = 0; 1856aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.max_ht = 0; 1857aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.max_level = 0; 1858aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.e_arch = ARCH_ARM_A9Q; 1859aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.e_soc = SOC_GENERIC; 1860aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1861aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.u4_strd = STRIDE; 1862aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1863aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.display_thread_handle = malloc(ithread_get_handle_size()); 1864aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.quit = 0; 1865aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.paused = 0; 1866aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani //s_app_ctx.u4_output_present = 0; 1867aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1868aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.get_stride = &default_get_stride; 1869aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1870aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.get_color_fmt = &default_get_color_fmt; 1871aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1872aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Set function pointers for display */ 1873aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef SDL_DISPLAY 1874aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_init = &sdl_disp_init; 1875aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.alloc_disp_buffers = &sdl_alloc_disp_buffers; 1876aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.display_buffer = &sdl_display; 1877aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.set_disp_buffers = &sdl_set_disp_buffers; 1878aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_deinit = &sdl_disp_deinit; 1879aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_usleep = &sdl_disp_usleep; 1880aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.get_color_fmt = &sdl_get_color_fmt; 1881aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.get_stride = &sdl_get_stride; 1882aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1883aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1884aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef FBDEV_DISPLAY 1885aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_init = &fbd_disp_init; 1886aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.alloc_disp_buffers = &fbd_alloc_disp_buffers; 1887aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.display_buffer = &fbd_display; 1888aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.set_disp_buffers = &fbd_set_disp_buffers; 1889aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_deinit = &fbd_disp_deinit; 1890aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_usleep = &fbd_disp_usleep; 1891aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.get_color_fmt = &fbd_get_color_fmt; 1892aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.get_stride = &fbd_get_stride; 1893aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1894aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1895aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef INTEL_CE5300 1896aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_init = &gdl_disp_init; 1897aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.alloc_disp_buffers = &gdl_alloc_disp_buffers; 1898aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.display_buffer = &gdl_display; 1899aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.set_disp_buffers = &gdl_set_disp_buffers; 1900aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_deinit = &gdl_disp_deinit; 1901aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_usleep = &gdl_disp_usleep; 1902aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.get_color_fmt = &gdl_get_color_fmt; 1903aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.get_stride = &gdl_get_stride; 1904aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1905aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1906aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef IOS_DISPLAY 1907aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_init = &ios_disp_init; 1908aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.alloc_disp_buffers = &ios_alloc_disp_buffers; 1909aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.display_buffer = &ios_display; 1910aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.set_disp_buffers = &ios_set_disp_buffers; 1911aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_deinit = &ios_disp_deinit; 1912aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_usleep = &ios_disp_usleep; 1913aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.get_color_fmt = &ios_get_color_fmt; 1914aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.get_stride = &ios_get_stride; 1915aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1916aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1917aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.display_deinit_flag = 0; 1918aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.e_output_chroma_format = IV_YUV_420SP_UV; 1919aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 1920aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Parse arguments */ 1921aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 1922aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1923aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifndef IOS 1924aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Read command line arguments */ 1925aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(argc > 2) 1926aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1927aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani for(i = 1; i < (UWORD32)argc; i += 2) 1928aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1929aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(CONFIG == get_argument(argv[i])) 1930aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1931aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani strcpy(ac_cfg_fname, argv[i + 1]); 1932aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if((fp_cfg_file = fopen(ac_cfg_fname, "r")) == NULL) 1933aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1934aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Could not open Configuration file %s", 1935aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ac_cfg_fname); 1936aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 1937aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1938aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani read_cfg_file(&s_app_ctx, fp_cfg_file); 1939aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fclose(fp_cfg_file); 1940aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1941aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 1942aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1943aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani parse_argument(&s_app_ctx, argv[i], argv[i + 1]); 1944aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1945aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1946aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1947aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 1948aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1949aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if((fp_cfg_file = fopen(ac_cfg_fname, "r")) == NULL) 1950aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1951aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Could not open Configuration file %s", 1952aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ac_cfg_fname); 1953aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 1954aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1955aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani read_cfg_file(&s_app_ctx, fp_cfg_file); 1956aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fclose(fp_cfg_file); 1957aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1958aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 1959aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(filename_with_path, "%s/%s", homedir, ac_cfg_fname); 1960aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if((fp_cfg_file = fopen(filename_with_path, "r")) == NULL) 1961aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1962aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Could not open Configuration file %s", 1963aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ac_cfg_fname); 1964aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 1965aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1966aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1967aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani read_cfg_file(&s_app_ctx, fp_cfg_file); 1968aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fclose(fp_cfg_file); 1969aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1970aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1971aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef PRINT_PICSIZE 1972aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* If the binary is used for only getting number of bytes in each picture, then disable the following features */ 1973aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.u4_piclen_flag = 0; 1974aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.u4_file_save_flag = 0; 1975aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.u4_chksum_save_flag = 0; 1976aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.i4_degrade_pics = 0; 1977aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.i4_degrade_type = 0; 1978aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.loopback = 0; 1979aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.share_disp_buf = 0; 1980aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.display = 0; 1981aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 1982aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1983aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* If display is enabled, then turn off shared mode and get color format that is supported by display */ 1984aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == s_app_ctx.display) 1985aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1986aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.share_disp_buf = 0; 1987aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.e_output_chroma_format = s_app_ctx.get_color_fmt(); 1988aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1989aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(strcmp(s_app_ctx.ac_ip_fname, "\0") == 0) 1990aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 1991aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("\nNo input file given for decoding\n"); 1992aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani exit(-1); 1993aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 1994aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1995aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 1996aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 1997aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* create the file object for input file */ 1998aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 1999aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef IOS 2000aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(filename_with_path, "%s/%s", homedir, s_app_ctx.ac_ip_fname); 2001aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_ip_file = fopen(filename_with_path, "rb"); 2002aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 2003aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_ip_file = fopen(s_app_ctx.ac_ip_fname, "rb"); 2004aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2005aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(NULL == ps_ip_file) 2006aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2007aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Could not open input file %s", 2008aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.ac_ip_fname); 2009aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2010aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2011aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 2012aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* create the file object for input file */ 2013aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 2014aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == s_app_ctx.u4_piclen_flag) 2015aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2016aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef IOS 2017aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(filename_with_path, "%s/%s", homedir, s_app_ctx.ac_piclen_fname); 2018aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_piclen_file = fopen(filename_with_path, "rb"); 2019aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 2020aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_piclen_file = fopen(s_app_ctx.ac_piclen_fname, "rb"); 2021aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2022aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(NULL == ps_piclen_file) 2023aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2024aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Could not open piclen file %s", 2025aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.ac_piclen_fname); 2026aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2027aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2028aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2029aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2030aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 2031aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* create the file object for output file */ 2032aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 2033aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == s_app_ctx.u4_file_save_flag) 2034aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2035aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef IOS 2036aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(filename_with_path, "%s/%s", documentdir, s_app_ctx.ac_op_fname); 2037aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_op_file = fopen(filename_with_path, "wb"); 2038aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 2039aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_op_file = fopen(s_app_ctx.ac_op_fname, "wb"); 2040aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2041aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2042aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(NULL == ps_op_file) 2043aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2044aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Could not open output file %s", 2045aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.ac_op_fname); 2046aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2047aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2048aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2049aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2050aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 2051aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* create the file object for check sum file */ 2052aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 2053aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == s_app_ctx.u4_chksum_save_flag) 2054aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2055aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#if IOS 2056aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(filename_with_path, "%s/%s", documentdir, s_app_ctx.ac_op_chksum_fname); 2057aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_op_chksum_file = fopen(filename_with_path, "wb"); 2058aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 2059aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_op_chksum_file = fopen(s_app_ctx.ac_op_chksum_fname, "wb"); 2060aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2061aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(NULL == ps_op_chksum_file) 2062aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2063aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Could not open check sum file %s", 2064aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.ac_op_chksum_fname); 2065aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2066aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2067aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2068aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 2069aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Create decoder instance */ 2070aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 2071aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2072aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2073aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf = (ivd_out_bufdesc_t *)malloc(sizeof(ivd_out_bufdesc_t)); 2074aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2075aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2076aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani iv_num_mem_rec_ip_t s_no_of_mem_rec_query_ip; 2077aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani iv_num_mem_rec_op_t s_no_of_mem_rec_query_op; 2078aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2079aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_no_of_mem_rec_query_ip.u4_size = sizeof(s_no_of_mem_rec_query_ip); 2080aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_no_of_mem_rec_query_op.u4_size = sizeof(s_no_of_mem_rec_query_op); 2081aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_no_of_mem_rec_query_ip.e_cmd = IV_CMD_GET_NUM_MEM_REC; 2082aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2083aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2084aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* API Call: Get Number of Mem Records */ 2085aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2086aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani e_dec_status = ivd_api_function( 2087aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani NULL, (void *)&s_no_of_mem_rec_query_ip, 2088aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_no_of_mem_rec_query_op); 2089aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS != e_dec_status) 2090aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2091aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Error in get mem records"); 2092aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2093aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2094aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2095aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_num_mem_recs = s_no_of_mem_rec_query_op.u4_num_mem_rec; 2096aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2097aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2098aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pv_mem_rec_location = malloc(u4_num_mem_recs * sizeof(iv_mem_rec_t)); 2099aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(pv_mem_rec_location == NULL) 2100aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2101aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Allocation failure for mem_rec_location"); 2102aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2103aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2104aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2105aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2106aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2107aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_fill_mem_rec_ip_t s_fill_mem_rec_ip; 2108aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_fill_mem_rec_op_t s_fill_mem_rec_op; 2109aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani iv_mem_rec_t *ps_mem_rec; 2110aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 total_size; 2111aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2112aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_fill_mem_rec_ip.s_ivd_fill_mem_rec_ip_t.e_cmd = 2113aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani IV_CMD_FILL_NUM_MEM_REC; 2114aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_fill_mem_rec_ip.s_ivd_fill_mem_rec_ip_t.pv_mem_rec_location = 2115aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (iv_mem_rec_t *)pv_mem_rec_location; 2116aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_fill_mem_rec_ip.s_ivd_fill_mem_rec_ip_t.u4_max_frm_wd = 2117aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (s_app_ctx.max_wd == 0) ? MAX_FRAME_WIDTH : s_app_ctx.max_wd; 2118aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_fill_mem_rec_ip.s_ivd_fill_mem_rec_ip_t.u4_max_frm_ht = 2119aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (s_app_ctx.max_ht == 0) ? MAX_FRAME_HEIGHT : s_app_ctx.max_ht; 2120aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_fill_mem_rec_ip.u4_share_disp_buf = s_app_ctx.share_disp_buf; 2121aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_fill_mem_rec_ip.e_output_format = 2122aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (IV_COLOR_FORMAT_T)s_app_ctx.e_output_chroma_format; 2123aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2124aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_fill_mem_rec_ip.s_ivd_fill_mem_rec_ip_t.u4_size = 2125aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sizeof(impeg2d_fill_mem_rec_ip_t); 2126aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_fill_mem_rec_op.s_ivd_fill_mem_rec_op_t.u4_size = 2127aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sizeof(impeg2d_fill_mem_rec_op_t); 2128aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2129aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_mem_rec = (iv_mem_rec_t *)pv_mem_rec_location; 2130aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani for(i = 0; i < u4_num_mem_recs; i++) 2131aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_mem_rec[i].u4_size = sizeof(iv_mem_rec_t); 2132aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2133aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2134aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* API Call: Fill Mem Records */ 2135aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2136aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2137aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani e_dec_status = ivd_api_function(NULL, 2138aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_fill_mem_rec_ip, 2139aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_fill_mem_rec_op); 2140aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2141aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_num_mem_recs = 2142aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_fill_mem_rec_op.s_ivd_fill_mem_rec_op_t.u4_num_mem_rec_filled; 2143aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2144aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS != e_dec_status) 2145aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2146aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Error in fill mem records: %x", s_fill_mem_rec_op.s_ivd_fill_mem_rec_op_t.u4_error_code); 2147aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2148aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2149aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2150aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_mem_rec = (iv_mem_rec_t *)pv_mem_rec_location; 2151aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani total_size = 0; 2152aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani for(i = 0; i < u4_num_mem_recs; i++) 2153aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2154aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_mem_rec->pv_base = app_aligned_malloc(ps_mem_rec->u4_mem_alignment, 2155aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_mem_rec->u4_mem_size); 2156aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ps_mem_rec->pv_base == NULL) 2157aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2158aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, 2159aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "\nAllocation failure for mem record id %d size %d\n", 2160aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani i, ps_mem_rec->u4_mem_size); 2161aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2162aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2163aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2164aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani total_size += ps_mem_rec->u4_mem_size; 2165aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2166aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_mem_rec++; 2167aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2168aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani //printf("\nTotal memory for codec %d\n", total_size); 2169aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2170aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2171aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* API Call: Initialize the Decoder */ 2172aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2173aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2174aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_init_ip_t s_init_ip; 2175aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_init_op_t s_init_op; 2176aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani void *fxns = &ivd_api_function; 2177aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani iv_mem_rec_t *mem_tab; 2178aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2179aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani mem_tab = (iv_mem_rec_t *)pv_mem_rec_location; 2180aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_init_ip.s_ivd_init_ip_t.e_cmd = (IVD_API_COMMAND_TYPE_T)IV_CMD_INIT; 2181aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_init_ip.s_ivd_init_ip_t.pv_mem_rec_location = mem_tab; 2182aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_init_ip.s_ivd_init_ip_t.u4_frm_max_wd = (s_app_ctx.max_wd == 0) ? MAX_FRAME_WIDTH : s_app_ctx.max_wd; 2183aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_init_ip.s_ivd_init_ip_t.u4_frm_max_ht = (s_app_ctx.max_ht == 0) ? MAX_FRAME_HEIGHT : s_app_ctx.max_ht; 2184aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2185aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_init_ip.u4_share_disp_buf = s_app_ctx.share_disp_buf; 2186aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2187aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_init_ip.s_ivd_init_ip_t.u4_num_mem_rec = u4_num_mem_recs; 2188aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_init_ip.s_ivd_init_ip_t.e_output_format = 2189aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (IV_COLOR_FORMAT_T)s_app_ctx.e_output_chroma_format; 2190aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_init_ip.s_ivd_init_ip_t.u4_size = sizeof(impeg2d_init_ip_t); 2191aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_init_op.s_ivd_init_op_t.u4_size = sizeof(impeg2d_init_op_t); 2192aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2193aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_obj = (iv_obj_t *)mem_tab[0].pv_base; 2194aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_obj->pv_fxns = fxns; 2195aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_obj->u4_size = sizeof(iv_obj_t); 2196aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2197aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.cocodec_obj = codec_obj; 2198aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2199aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_init_ip, 2200aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_init_op); 2201aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ret != IV_SUCCESS) 2202aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2203aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Error in Init %8x\n", 2204aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_init_op.s_ivd_init_op_t.u4_error_code); 2205aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2206aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2207aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2208aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2209aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Input and output buffer allocation */ 2210aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2211aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2212aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2213aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_getbufinfo_ip_t s_ctl_ip; 2214aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_getbufinfo_op_t s_ctl_op; 2215aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2216aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_cmd = IVD_CMD_VIDEO_CTL; 2217aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_sub_cmd = IVD_CMD_CTL_GETBUFINFO; 2218aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_size = sizeof(ivd_ctl_getbufinfo_ip_t); 2219aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_size = sizeof(ivd_ctl_getbufinfo_op_t); 2220aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_ip, 2221aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_op); 2222aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ret != IV_SUCCESS) 2223aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2224aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Error in Get Buf Info %x", s_ctl_op.u4_error_code); 2225aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2226aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2227aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2228aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Allocate input buffer */ 2229aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_ip_buf_len = s_ctl_op.u4_min_in_buf_size[0]; 2230aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pu1_bs_buf = (UWORD8 *)malloc(u4_ip_buf_len); 2231aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2232aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(pu1_bs_buf == NULL) 2233aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2234aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, 2235aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "\nAllocation failure for input buffer of size %d", 2236aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_ip_buf_len); 2237aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2238aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2239aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.num_disp_buf = s_ctl_op.u4_num_disp_bufs; 2240aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Allocate output buffer only if display buffers are not shared */ 2241aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Or if shared and output is 420P */ 2242aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if((0 == s_app_ctx.share_disp_buf) || (IV_YUV_420P == s_app_ctx.e_output_chroma_format)) 2243aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2244aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 outlen; 2245aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->u4_min_out_buf_size[0] = 2246aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_min_out_buf_size[0]; 2247aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->u4_min_out_buf_size[1] = 2248aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_min_out_buf_size[1]; 2249aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->u4_min_out_buf_size[2] = 2250aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_min_out_buf_size[2]; 2251aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2252aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani outlen = s_ctl_op.u4_min_out_buf_size[0]; 2253aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(s_ctl_op.u4_min_num_out_bufs > 1) 2254aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani outlen += s_ctl_op.u4_min_out_buf_size[1]; 2255aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2256aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(s_ctl_op.u4_min_num_out_bufs > 2) 2257aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani outlen += s_ctl_op.u4_min_out_buf_size[2]; 2258aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2259aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->pu1_bufs[0] = (UWORD8 *)malloc(outlen); 2260aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ps_out_buf->pu1_bufs[0] == NULL) 2261aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2262aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, 2263aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "\nAllocation failure for output buffer of size %d", 2264aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani outlen); 2265aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2266aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2267aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2268aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(s_ctl_op.u4_min_num_out_bufs > 1) 2269aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->pu1_bufs[1] = ps_out_buf->pu1_bufs[0] 2270aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani + (s_ctl_op.u4_min_out_buf_size[0]); 2271aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2272aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(s_ctl_op.u4_min_num_out_bufs > 2) 2273aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->pu1_bufs[2] = ps_out_buf->pu1_bufs[1] 2274aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani + (s_ctl_op.u4_min_out_buf_size[1]); 2275aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2276aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->u4_num_bufs = s_ctl_op.u4_min_num_out_bufs; 2277aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2278aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2279aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2280aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2281aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2282aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2283aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2284aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2285aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2286aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* set num of cores */ 2287aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2288aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2289aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2290aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_set_num_cores_ip_t s_ctl_set_cores_ip; 2291aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_set_num_cores_op_t s_ctl_set_cores_op; 2292aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2293aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_cores_ip.e_cmd = IVD_CMD_VIDEO_CTL; 2294aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_cores_ip.e_sub_cmd = (IVD_CONTROL_API_COMMAND_TYPE_T)IMPEG2D_CMD_CTL_SET_NUM_CORES; 2295aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_cores_ip.u4_num_cores = s_app_ctx.u4_num_cores; 2296aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_cores_ip.u4_size = sizeof(impeg2d_ctl_set_num_cores_ip_t); 2297aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_cores_op.u4_size = sizeof(impeg2d_ctl_set_num_cores_op_t); 2298aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2299aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_set_cores_ip, 2300aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_set_cores_op); 2301aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ret != IV_SUCCESS) 2302aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2303aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "\nError in setting number of cores"); 2304aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2305aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2306aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2307aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2308aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2309aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* set processsor */ 2310aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2311aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2312aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2313aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2314aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_set_processor_ip_t s_ctl_set_num_processor_ip; 2315aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_set_processor_op_t s_ctl_set_num_processor_op; 2316aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2317aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_num_processor_ip.e_cmd = IVD_CMD_VIDEO_CTL; 2318aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_num_processor_ip.e_sub_cmd = (IVD_CONTROL_API_COMMAND_TYPE_T)IMPEG2D_CMD_CTL_SET_PROCESSOR; 2319aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_num_processor_ip.u4_arch = s_app_ctx.e_arch; 2320aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_num_processor_ip.u4_soc = s_app_ctx.e_soc; 2321aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_num_processor_ip.u4_size = sizeof(impeg2d_ctl_set_processor_ip_t); 2322aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_num_processor_op.u4_size = sizeof(impeg2d_ctl_set_processor_op_t); 2323aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2324aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_set_num_processor_ip, 2325aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_set_num_processor_op); 2326aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ret != IV_SUCCESS) 2327aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2328aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "\nError in setting Processor type"); 2329aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2330aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2331aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2332aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2333aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2334aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2335aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2336aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Decode header to get width and height and buffer sizes */ 2337aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2338aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2339aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2340aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_set_config_ip_t s_ctl_ip; 2341aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_set_config_op_t s_ctl_op; 2342aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2343aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_video_decode_ip_t s_video_decode_ip; 2344aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_video_decode_op_t s_video_decode_op; 2345aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2346aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_disp_wd = STRIDE; 2347aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == s_app_ctx.display) 2348aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_disp_wd = s_app_ctx.get_stride(); 2349aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2350aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_frm_skip_mode = IVD_SKIP_NONE; 2351aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_frm_out_mode = IVD_DISPLAY_FRAME_OUT; 2352aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_vid_dec_mode = IVD_DECODE_HEADER; 2353aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_cmd = IVD_CMD_VIDEO_CTL; 2354aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_sub_cmd = IVD_CMD_CTL_SETPARAMS; 2355aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_size = sizeof(ivd_ctl_set_config_ip_t); 2356aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_size = sizeof(ivd_ctl_set_config_op_t); 2357aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2358aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_ip, 2359aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_op); 2360aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ret != IV_SUCCESS) 2361aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2362aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, 2363aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "\nError in setting the codec in header decode mode"); 2364aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2365aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2366aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2367aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani do 2368aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2369aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 numbytes; 2370aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(0 == s_app_ctx.u4_piclen_flag) 2371aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2372aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fseek(ps_ip_file, file_pos, SEEK_SET); 2373aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani numbytes = u4_ip_buf_len; 2374aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2375aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 2376aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2377aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 entries; 2378aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani entries = fscanf(ps_piclen_file, "%d\n", &numbytes); 2379aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 != entries) 2380aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani numbytes = u4_ip_buf_len; 2381aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2382aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2383aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_bytes_remaining = fread(pu1_bs_buf, sizeof(UWORD8), numbytes, 2384aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_ip_file); 2385aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2386aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(0 == u4_bytes_remaining) 2387aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2388aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "\nUnable to read from input file"); 2389aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2390aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2391aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2392aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.e_cmd = IVD_CMD_VIDEO_DECODE; 2393aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.u4_ts = u4_ip_frm_ts; 2394aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.pv_stream_buffer = pu1_bs_buf; 2395aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.u4_num_Bytes = u4_bytes_remaining; 2396aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.u4_size = sizeof(ivd_video_decode_ip_t); 2397aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_op.u4_size = sizeof(ivd_video_decode_op_t); 2398aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2399aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2400aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* API Call: Header Decode */ 2401aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2402aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_video_decode_ip, 2403aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_video_decode_op); 2404aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2405aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ret != IV_SUCCESS) 2406aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2407aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "\nError in header decode %x", 2408aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_op.u4_error_code); 2409aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani // codec_exit(ac_error_str); 2410aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2411aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2412aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_num_bytes_dec = s_video_decode_op.u4_num_bytes_consumed; 2413aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifndef PROFILE_ENABLE 2414aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("%d\n", s_video_decode_op.u4_num_bytes_consumed); 2415aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2416aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani file_pos += u4_num_bytes_dec; 2417aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani total_bytes_comsumed += u4_num_bytes_dec; 2418aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani }while(ret != IV_SUCCESS); 2419aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2420aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* copy pic_wd and pic_ht to initialize buffers */ 2421aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.u4_pic_wd = s_video_decode_op.u4_pic_wd; 2422aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.u4_pic_ht = s_video_decode_op.u4_pic_ht; 2423aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2424aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#if IOS_DISPLAY 2425aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.i4_screen_wd = screen_wd; 2426aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.i4_screen_ht = screen_ht; 2427aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2428aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2429aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Create display thread and wait for the display buffers to be initialized */ 2430aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == s_app_ctx.display) 2431aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2432aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(0 == s_app_ctx.display_thread_created) 2433aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2434aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.display_init_done = 0; 2435aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ithread_create(s_app_ctx.display_thread_handle, NULL, 2436aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&display_thread, (void *)&s_app_ctx); 2437aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.display_thread_created = 1; 2438aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2439aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani while(1) 2440aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2441aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(s_app_ctx.display_init_done) 2442aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 2443aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2444aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ithread_msleep(1); 2445aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2446aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2447aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2448aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.u4_strd = s_app_ctx.get_stride(); 2449aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2450aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2451aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2452aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2453aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Get actual number of output buffers requried, which is dependent */ 2454aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* on stream properties such as width, height and level etc */ 2455aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* This is needed mainly for shared display mode */ 2456aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2457aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani //if(1 == s_app_ctx.share_disp_buf) 2458aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2459aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_getbufinfo_ip_t s_ctl_ip; 2460aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_getbufinfo_op_t s_ctl_op; 2461aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 outlen = 0; 2462aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2463aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_cmd = IVD_CMD_VIDEO_CTL; 2464aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_sub_cmd = IVD_CMD_CTL_GETBUFINFO; 2465aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_size = sizeof(ivd_ctl_getbufinfo_ip_t); 2466aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_size = sizeof(ivd_ctl_getbufinfo_op_t); 2467aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_ip, 2468aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_op); 2469aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ret != IV_SUCCESS) 2470aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2471aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Error in Get Buf Info %x", s_ctl_op.u4_error_code); 2472aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2473aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2474aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2475aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef APP_EXTRA_BUFS 2476aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.disp_delay = EXTRA_DISP_BUFFERS; 2477aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_num_disp_bufs += EXTRA_DISP_BUFFERS; 2478aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2479aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2480aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2481aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* API Call: Allocate display buffers for display buffer shared case */ 2482aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2483aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2484aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani for(i = 0; i < s_ctl_op.u4_num_disp_bufs; i++) 2485aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2486aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2487aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.s_disp_buffers[i].u4_min_out_buf_size[0] = 2488aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_min_out_buf_size[0]; 2489aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.s_disp_buffers[i].u4_min_out_buf_size[1] = 2490aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_min_out_buf_size[1]; 2491aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.s_disp_buffers[i].u4_min_out_buf_size[2] = 2492aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_min_out_buf_size[2]; 2493aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2494aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani outlen = s_ctl_op.u4_min_out_buf_size[0]; 2495aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(s_ctl_op.u4_min_num_out_bufs > 1) 2496aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani outlen += s_ctl_op.u4_min_out_buf_size[1]; 2497aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2498aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(s_ctl_op.u4_min_num_out_bufs > 2) 2499aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani outlen += s_ctl_op.u4_min_out_buf_size[2]; 2500aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2501aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.s_disp_buffers[i].pu1_bufs[0] = (UWORD8 *)malloc(outlen); 2502aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2503aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(s_app_ctx.s_disp_buffers[i].pu1_bufs[0] == NULL) 2504aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2505aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, 2506aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani "\nAllocation failure for output buffer of size %d", 2507aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani outlen); 2508aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2509aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2510aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2511aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(s_ctl_op.u4_min_num_out_bufs > 1) 2512aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.s_disp_buffers[i].pu1_bufs[1] = 2513aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.s_disp_buffers[i].pu1_bufs[0] 2514aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani + (s_ctl_op.u4_min_out_buf_size[0]); 2515aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2516aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(s_ctl_op.u4_min_num_out_bufs > 2) 2517aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.s_disp_buffers[i].pu1_bufs[2] = 2518aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.s_disp_buffers[i].pu1_bufs[1] 2519aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani + (s_ctl_op.u4_min_out_buf_size[1]); 2520aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2521aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.s_disp_buffers[i].u4_num_bufs = 2522aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_min_num_out_bufs; 2523aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2524aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.num_disp_buf = s_ctl_op.u4_num_disp_bufs; 2525aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2526aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2527aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* API Call: Send the allocated display buffers to codec */ 2528aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2529aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == s_app_ctx.share_disp_buf) 2530aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2531aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_set_display_frame_ip_t s_set_display_frame_ip; 2532aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_set_display_frame_op_t s_set_display_frame_op; 2533aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2534aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_set_display_frame_ip.e_cmd = IVD_CMD_SET_DISPLAY_FRAME; 2535aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_set_display_frame_ip.u4_size = sizeof(ivd_set_display_frame_ip_t); 2536aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_set_display_frame_op.u4_size = sizeof(ivd_set_display_frame_op_t); 2537aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2538aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_set_display_frame_ip.num_disp_bufs = s_app_ctx.num_disp_buf; 2539aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2540aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani memcpy(&(s_set_display_frame_ip.s_disp_buffer), 2541aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani &(s_app_ctx.s_disp_buffers), 2542aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_num_disp_bufs * sizeof(ivd_out_bufdesc_t)); 2543aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2544aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, 2545aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_set_display_frame_ip, 2546aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_set_display_frame_op); 2547aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2548aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS != ret) 2549aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2550aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Error in Set display frame"); 2551aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2552aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2553aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2554aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2555aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2556aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2557aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2558aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2559aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Get frame dimensions for display buffers such as x_offset,y_offset */ 2560aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* etc. This information might be needed to set display buffer */ 2561aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* offsets in case of shared display buffer mode */ 2562aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2563aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2564aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2565aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_get_frame_dimensions_ip_t s_ctl_get_frame_dimensions_ip; 2566aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_get_frame_dimensions_op_t s_ctl_get_frame_dimensions_op; 2567aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2568aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_get_frame_dimensions_ip.e_cmd = IVD_CMD_VIDEO_CTL; 2569aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_get_frame_dimensions_ip.e_sub_cmd = 2570aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (IVD_CONTROL_API_COMMAND_TYPE_T)IMPEG2D_CMD_CTL_GET_BUFFER_DIMENSIONS; 2571aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_get_frame_dimensions_ip.u4_size = 2572aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sizeof(impeg2d_ctl_get_frame_dimensions_ip_t); 2573aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_get_frame_dimensions_op.u4_size = 2574aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sizeof(impeg2d_ctl_get_frame_dimensions_op_t); 2575aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2576aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_get_frame_dimensions_ip, 2577aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_get_frame_dimensions_op); 2578aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS != ret) 2579aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2580aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Error in Get buffer Dimensions"); 2581aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2582aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2583aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2584aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* 2585aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Frame offsets due to padding\n"); 2586aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("s_ctl_get_frame_dimensions_op.x_offset[0] %d s_ctl_get_frame_dimensions_op.y_offset[0] %d\n", 2587aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_get_frame_dimensions_op.u4_x_offset[0], 2588aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_get_frame_dimensions_op.u4_y_offset[0]); 2589aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani*/ 2590aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2591aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2592aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Get VUI parameters */ 2593aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2594aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#if 0 2595aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2596aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2597aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_get_vui_params_ip_t s_ctl_get_vui_params_ip; 2598aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_get_vui_params_op_t s_ctl_get_vui_params_op; 2599aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2600aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_get_vui_params_ip.e_cmd = IVD_CMD_VIDEO_CTL; 2601aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_get_vui_params_ip.e_sub_cmd = 2602aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (IVD_CONTROL_API_COMMAND_TYPE_T)IMPEG2D_CMD_CTL_GET_VUI_PARAMS; 2603aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_get_vui_params_ip.u4_size = 2604aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sizeof(impeg2d_ctl_get_vui_params_ip_t); 2605aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_get_vui_params_op.u4_size = 2606aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sizeof(impeg2d_ctl_get_vui_params_op_t); 2607aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2608aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_get_vui_params_ip, 2609aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_get_vui_params_op); 2610aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS != ret) 2611aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2612aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Error in Get VUI params"); 2613aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani //codec_exit(ac_error_str); 2614aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2615aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2616aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2617aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2618aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2619aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2620aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Set the decoder in frame decode mode. It was set in header decode */ 2621aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* mode earlier */ 2622aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2623aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2624aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2625aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_set_config_ip_t s_ctl_ip; 2626aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_set_config_op_t s_ctl_op; 2627aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2628aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_disp_wd = STRIDE; 2629aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == s_app_ctx.display) 2630aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_disp_wd = s_app_ctx.get_stride(); 2631aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_frm_skip_mode = IVD_SKIP_NONE; 2632aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2633aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_frm_out_mode = IVD_DISPLAY_FRAME_OUT; 2634aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_vid_dec_mode = IVD_DECODE_FRAME; 2635aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_cmd = IVD_CMD_VIDEO_CTL; 2636aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_sub_cmd = IVD_CMD_CTL_SETPARAMS; 2637aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_size = sizeof(ivd_ctl_set_config_ip_t); 2638aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2639aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_size = sizeof(ivd_ctl_set_config_op_t); 2640aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2641aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_ip, (void *)&s_ctl_op); 2642aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2643aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS != ret) 2644aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2645aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Error in Set Parameters"); 2646aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani //codec_exit(ac_error_str); 2647aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2648aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2649aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2650aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2651aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* If required disable deblocking and sao at given level */ 2652aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2653aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani set_degrade(codec_obj, s_app_ctx.i4_degrade_type, s_app_ctx.i4_degrade_pics); 2654aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef WINDOWS_TIMER 2655aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani QueryPerformanceFrequency(&frequency); 2656aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2657aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifndef PRINT_PICSIZE 2658aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani get_version(codec_obj); 2659aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2660aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani while(u4_op_frm_ts < (s_app_ctx.u4_max_frm_ts + s_app_ctx.disp_delay)) 2661aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2662aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2663aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef TEST_FLUSH 2664aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(u4_ip_frm_ts == FLUSH_FRM_CNT) 2665aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2666aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_flush_ip_t s_ctl_ip; 2667aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_flush_op_t s_ctl_op; 2668aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2669aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_cmd = IVD_CMD_VIDEO_CTL; 2670aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_sub_cmd = IVD_CMD_CTL_FLUSH; 2671aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_size = sizeof(ivd_ctl_flush_ip_t); 2672aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_size = sizeof(ivd_ctl_flush_op_t); 2673aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_ip, 2674aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_op); 2675aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2676aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ret != IV_SUCCESS) 2677aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2678aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Error in Setting the decoder in flush mode\n"); 2679aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2680aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani file_pos = 0; 2681aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2682aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fseek(ps_ip_file, file_pos, SEEK_SET); 2683aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2684aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2685aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2686aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(u4_ip_frm_ts < s_app_ctx.num_disp_buf && (1 == s_app_ctx.share_disp_buf)) 2687aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2688aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani release_disp_frame(codec_obj, u4_ip_frm_ts); 2689aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2690aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2691aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2692aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2693aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* set num of cores */ 2694aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2695aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef DYNAMIC_NUMCORES 2696aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2697aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2698aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_set_num_cores_ip_t s_ctl_set_cores_ip; 2699aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_set_num_cores_op_t s_ctl_set_cores_op; 2700aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2701aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_cores_ip.e_cmd = IVD_CMD_VIDEO_CTL; 2702aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_cores_ip.e_sub_cmd = IMPEG2D_CMD_CTL_SET_NUM_CORES; 2703aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_cores_ip.u4_num_cores = 1 + 3 * (u4_ip_frm_ts % 2); 2704aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_cores_ip.u4_size = sizeof(impeg2d_ctl_set_num_cores_ip_t); 2705aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_cores_op.u4_size = sizeof(impeg2d_ctl_set_num_cores_op_t); 2706aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2707aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_set_cores_ip, 2708aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_set_cores_op); 2709aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ret != IV_SUCCESS) 2710aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2711aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "\nError in setting number of cores"); 2712aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2713aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2714aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2715aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2716aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2717aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 2718aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Seek the file to start of current frame, this is equavelent of */ 2719aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* having a parcer which tells the start of current frame */ 2720aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 2721aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2722aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 numbytes; 2723aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2724aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(0 == s_app_ctx.u4_piclen_flag) 2725aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2726aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fseek(ps_ip_file, file_pos, SEEK_SET); 2727aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani numbytes = u4_ip_buf_len; 2728aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2729aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 2730aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2731aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 entries; 2732aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani entries = fscanf(ps_piclen_file, "%d\n", &numbytes); 2733aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 != entries) 2734aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani numbytes = u4_ip_buf_len; 2735aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2736aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2737aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_bytes_remaining = fread(pu1_bs_buf, sizeof(UWORD8), 2738aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani numbytes, ps_ip_file); 2739aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2740aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(u4_bytes_remaining == 0) 2741aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2742aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == s_app_ctx.loopback) 2743aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2744aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani file_pos = 0; 2745aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(0 == s_app_ctx.u4_piclen_flag) 2746aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2747aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fseek(ps_ip_file, file_pos, SEEK_SET); 2748aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani numbytes = u4_ip_buf_len; 2749aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2750aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 2751aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2752aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 entries; 2753aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani entries = fscanf(ps_piclen_file, "%d\n", &numbytes); 2754aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 != entries) 2755aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani numbytes = u4_ip_buf_len; 2756aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2757aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2758aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2759aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_bytes_remaining = fread(pu1_bs_buf, sizeof(UWORD8), 2760aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani numbytes, ps_ip_file); 2761aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2762aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 2763aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 2764aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2765aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2766aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2767aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*********************************************************************/ 2768aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Following calls can be enabled at diffent times */ 2769aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*********************************************************************/ 2770aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#if ENABLE_DEGRADE 2771aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(u4_op_frm_ts >= 10000) 2772aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani disable_deblocking(codec_obj, 4); 2773aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2774aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(u4_op_frm_ts == 30000) 2775aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani enable_deblocking(codec_obj); 2776aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2777aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(u4_op_frm_ts == 10000) 2778aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani enable_skippb_frames(codec_obj); 2779aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2780aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(u4_op_frm_ts == 60000) 2781aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani disable_skippb_frames(codec_obj); 2782aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2783aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(u4_op_frm_ts == 30000) 2784aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani enable_skipb_frames(codec_obj); 2785aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2786aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(u4_op_frm_ts == 60000) 2787aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani disable_skipb_frames(codec_obj); 2788aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2789aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2790aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2791aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2792aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_video_decode_ip_t s_video_decode_ip; 2793aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_video_decode_op_t s_video_decode_op; 2794aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef PROFILE_ENABLE 2795aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 s_elapsed_time; 2796aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani TIMER s_start_timer; 2797aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani TIMER s_end_timer; 2798aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2799aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2800aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2801aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.e_cmd = IVD_CMD_VIDEO_DECODE; 2802aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.u4_ts = u4_ip_frm_ts; 2803aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.pv_stream_buffer = pu1_bs_buf; 2804aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.u4_num_Bytes = u4_bytes_remaining; 2805aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.u4_size = sizeof(ivd_video_decode_ip_t); 2806aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.s_out_buffer.u4_min_out_buf_size[0] = 2807aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->u4_min_out_buf_size[0]; 2808aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.s_out_buffer.u4_min_out_buf_size[1] = 2809aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->u4_min_out_buf_size[1]; 2810aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.s_out_buffer.u4_min_out_buf_size[2] = 2811aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->u4_min_out_buf_size[2]; 2812aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2813aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.s_out_buffer.pu1_bufs[0] = 2814aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->pu1_bufs[0]; 2815aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.s_out_buffer.pu1_bufs[1] = 2816aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->pu1_bufs[1]; 2817aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.s_out_buffer.pu1_bufs[2] = 2818aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->pu1_bufs[2]; 2819aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_ip.s_out_buffer.u4_num_bufs = 2820aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_out_buf->u4_num_bufs; 2821aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_op.u4_size = sizeof(ivd_video_decode_op_t); 2822aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2823aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Get display buffer pointers */ 2824aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == s_app_ctx.display) 2825aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2826aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani WORD32 wr_idx; 2827aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2828aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani wr_idx = dispq_producer_dequeue(&s_app_ctx); 2829aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2830aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(s_app_ctx.quit) 2831aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 2832aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2833aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.set_disp_buffers(s_app_ctx.pv_disp_ctx, wr_idx, 2834aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani &s_video_decode_ip.s_out_buffer.pu1_bufs[0], 2835aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani &s_video_decode_ip.s_out_buffer.pu1_bufs[1], 2836aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani &s_video_decode_ip.s_out_buffer.pu1_bufs[2]); 2837aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2838aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2839aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2840aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* API Call: Video Decode */ 2841aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*****************************************************************************/ 2842aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2843aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani GETTIME(&s_start_timer); 2844aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2845aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_video_decode_ip, 2846aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_video_decode_op); 2847aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2848aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2849aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani GETTIME(&s_end_timer); 2850aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ELAPSEDTIME(s_start_timer, s_end_timer, s_elapsed_time, frequency); 2851aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef PROFILE_ENABLE 2852aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2853aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD32 peak_avg, id; 2854aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_tot_cycles += s_elapsed_time; 2855aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani peak_window[peak_window_idx++] = s_elapsed_time; 2856aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(peak_window_idx == PEAK_WINDOW_SIZE) 2857aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani peak_window_idx = 0; 2858aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani peak_avg = 0; 2859aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani for(id = 0; id < PEAK_WINDOW_SIZE; id++) 2860aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2861aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani peak_avg += peak_window[id]; 2862aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2863aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani peak_avg /= PEAK_WINDOW_SIZE; 2864aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(peak_avg > peak_avg_max) 2865aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani peak_avg_max = peak_avg; 2866aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani frm_cnt++; 2867aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2868aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("FrameNum: %4d TimeTaken(microsec): %6d AvgTime: %6d PeakAvgTimeMax: %6d Output: %2d NumBytes: %6d \n", 2869aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani frm_cnt, s_elapsed_time, u4_tot_cycles / frm_cnt, peak_avg_max, s_video_decode_op.u4_output_present, s_video_decode_op.u4_num_bytes_consumed); 2870aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2871aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2872aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef INTEL_CE5300 2873aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani time_consumed += s_elapsed_time; 2874aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani bytes_consumed += s_video_decode_op.u4_num_bytes_consumed; 2875aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(!(frm_cnt % (s_app_ctx.fps))) 2876aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2877aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani time_consumed = time_consumed / s_app_ctx.fps; 2878aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Average decode time(micro sec) for the last second = %6d\n", time_consumed); 2879aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Average bitrate(kb) for the last second = %6d\n", (bytes_consumed * 8) / 1024); 2880aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani time_consumed = 0; 2881aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani bytes_consumed = 0; 2882aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2883aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2884aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2885aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#else 2886aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("%d\n", s_video_decode_op.u4_num_bytes_consumed); 2887aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 2888aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2889aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS != ret) 2890aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2891aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Error in video Frame decode : ret %x Error %x\n", ret, 2892aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_op.u4_error_code); 2893aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if ((s_video_decode_op.u4_error_code & 0xFF) == IVD_RES_CHANGED) 2894aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2895aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_reset_ip_t s_ctl_ip; 2896aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ivd_ctl_reset_op_t s_ctl_op; 2897aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2898aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani flush_output(codec_obj, &s_app_ctx, ps_out_buf, 2899aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pu1_bs_buf, &u4_op_frm_ts, 2900aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_op_file, ps_op_chksum_file, 2901aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_ip_frm_ts, u4_bytes_remaining); 2902aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2903aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_cmd = IVD_CMD_VIDEO_CTL; 2904aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.e_sub_cmd = IVD_CMD_CTL_RESET; 2905aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_ip.u4_size = sizeof(ivd_ctl_reset_ip_t); 2906aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_op.u4_size = sizeof(ivd_ctl_reset_op_t); 2907aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2908aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_ip, 2909aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_op); 2910aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS != ret) 2911aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2912aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Error in Reset"); 2913aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2914aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2915aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2916aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* set num of cores */ 2917aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2918aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2919aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2920aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_set_num_cores_ip_t s_ctl_set_cores_ip; 2921aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_set_num_cores_op_t s_ctl_set_cores_op; 2922aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2923aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_cores_ip.e_cmd = IVD_CMD_VIDEO_CTL; 2924aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_cores_ip.e_sub_cmd = (IVD_CONTROL_API_COMMAND_TYPE_T)IMPEG2D_CMD_CTL_SET_NUM_CORES; 2925aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_cores_ip.u4_num_cores = s_app_ctx.u4_num_cores; 2926aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_cores_ip.u4_size = sizeof(impeg2d_ctl_set_num_cores_ip_t); 2927aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_cores_op.u4_size = sizeof(impeg2d_ctl_set_num_cores_op_t); 2928aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2929aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_set_cores_ip, 2930aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_set_cores_op); 2931aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ret != IV_SUCCESS) 2932aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2933aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "\nError in setting number of cores"); 2934aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2935aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2936aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2937aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2938aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2939aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* set processsor */ 2940aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /*************************************************************************/ 2941aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2942aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2943aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2944aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_set_processor_ip_t s_ctl_set_num_processor_ip; 2945aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani impeg2d_ctl_set_processor_op_t s_ctl_set_num_processor_op; 2946aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2947aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_num_processor_ip.e_cmd = IVD_CMD_VIDEO_CTL; 2948aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_num_processor_ip.e_sub_cmd = (IVD_CONTROL_API_COMMAND_TYPE_T)IMPEG2D_CMD_CTL_SET_PROCESSOR; 2949aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_num_processor_ip.u4_arch = s_app_ctx.e_arch; 2950aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_num_processor_ip.u4_soc = s_app_ctx.e_soc; 2951aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_num_processor_ip.u4_size = sizeof(impeg2d_ctl_set_processor_ip_t); 2952aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_ctl_set_num_processor_op.u4_size = sizeof(impeg2d_ctl_set_processor_op_t); 2953aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2954aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_ctl_set_num_processor_ip, 2955aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_ctl_set_num_processor_op); 2956aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(ret != IV_SUCCESS) 2957aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2958aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "\nError in setting Processor type"); 2959aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 2960aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2961aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2962aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2963aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2964aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2965aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else if(IMPEG2D_UNSUPPORTED_DIMENSIONS 2966aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani == (IMPEG2D_ERROR_CODES_T)s_video_decode_op.u4_error_code) 2967aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2968aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani flush_output(codec_obj, &s_app_ctx, ps_out_buf, 2969aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pu1_bs_buf, &u4_op_frm_ts, 2970aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_op_file, ps_op_chksum_file, 2971aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_ip_frm_ts, u4_bytes_remaining); 2972aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2973aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Reinit codec with width %d and height %d\n", 2974aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_op.u4_pic_wd, 2975aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_op.u4_pic_ht); 2976aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2977aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 2978aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2979aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2980aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2981aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if((1 == s_app_ctx.display) && 2982aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (1 == s_video_decode_op.u4_output_present)) 2983aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2984aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani dispq_producer_queue(&s_app_ctx); 2985aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 2986aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2987aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_B_FRAME == s_video_decode_op.e_pic_type) 2988aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.b_pic_present |= 1; 2989aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2990aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_num_bytes_dec = s_video_decode_op.u4_num_bytes_consumed; 2991aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2992aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani file_pos += u4_num_bytes_dec; 2993aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani total_bytes_comsumed += u4_num_bytes_dec; 2994aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_ip_frm_ts++; 2995aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2996aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 2997aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == s_video_decode_op.u4_output_present) 2998aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 2999aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani width = s_video_decode_op.s_disp_frm_buf.u4_y_wd; 3000aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani height = s_video_decode_op.s_disp_frm_buf.u4_y_ht; 3001aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani dump_output(&s_app_ctx, &(s_video_decode_op.s_disp_frm_buf), 3002aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_video_decode_op.u4_disp_buf_id, ps_op_file, 3003aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_op_chksum_file, 3004aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_op_frm_ts, s_app_ctx.u4_file_save_flag, 3005aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.u4_chksum_save_flag); 3006aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3007aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_op_frm_ts++; 3008aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3009aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 3010aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 3011aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if((s_video_decode_op.u4_error_code >> IVD_FATALERROR) & 1) 3012aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 3013aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Fatal error\n"); 3014aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani break; 3015aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3016aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3017aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3018aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3019aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3020aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3021aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 3022aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* To get the last decoded frames, call process with NULL input */ 3023aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 3024aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani flush_output(codec_obj, &s_app_ctx, ps_out_buf, 3025aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani pu1_bs_buf, &u4_op_frm_ts, 3026aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_op_file, ps_op_chksum_file, 3027aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_ip_frm_ts, u4_bytes_remaining); 3028aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3029aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* set disp_end flag */ 3030aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.quit = 1; 3031aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3032aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3033aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#ifdef PROFILE_ENABLE 3034aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Summary\n"); 3035aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Input filename : %s\n", s_app_ctx.ac_ip_fname); 3036aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Output Width : %-4d\n", width); 3037aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Output Height : %-4d\n", height); 3038aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3039aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(frm_cnt) 3040aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 3041aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani double avg = u4_tot_cycles / frm_cnt; 3042aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani double bytes_avg = total_bytes_comsumed / frm_cnt; 3043aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani double bitrate = (bytes_avg * 8 * s_app_ctx.fps) / 1000000; 3044aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Bitrate @ %2d fps(mbps) : %-6.2f\n", s_app_ctx.fps, bitrate); 3045aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Average decode time(micro sec) : %-6d\n", (WORD32)avg); 3046aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("Avg Peak decode time(%2d frames) : %-6d\n", PEAK_WINDOW_SIZE, (WORD32)peak_avg_max); 3047aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani avg = (u4_tot_cycles + u4_tot_fmt_cycles) * 1.0 / frm_cnt; 3048aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3049aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(0 == s_app_ctx.share_disp_buf) 3050aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("FPS achieved (with format conv) : %-3.2f\n", 1000000 / avg); 3051aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani else 3052aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani printf("FPS achieved : %-3.2f\n", 1000000 / avg); 3053aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3054aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#endif 3055aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 3056aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Clear the decoder, close all the files, free all the memory */ 3057aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 3058aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == s_app_ctx.display) 3059aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 3060aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_app_ctx.display_deinit_flag = 1; 3061aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* wait for display to finish */ 3062aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(s_app_ctx.display_thread_created) 3063aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 3064aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ithread_join(s_app_ctx.display_thread_handle, NULL); 3065aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3066aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani free(s_app_ctx.display_thread_handle); 3067aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3068aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3069aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 3070aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani iv_retrieve_mem_rec_ip_t s_retrieve_dec_ip; 3071aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani iv_retrieve_mem_rec_op_t s_retrieve_dec_op; 3072aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_retrieve_dec_ip.pv_mem_rec_location = (iv_mem_rec_t *)pv_mem_rec_location; 3073aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3074aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_retrieve_dec_ip.e_cmd = IV_CMD_RETRIEVE_MEMREC; 3075aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_retrieve_dec_ip.u4_size = sizeof(iv_retrieve_mem_rec_ip_t); 3076aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani s_retrieve_dec_op.u4_size = sizeof(iv_retrieve_mem_rec_op_t); 3077aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3078aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ret = ivd_api_function((iv_obj_t *)codec_obj, (void *)&s_retrieve_dec_ip, 3079aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani (void *)&s_retrieve_dec_op); 3080aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3081aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(IV_SUCCESS != ret) 3082aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 3083aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani sprintf(ac_error_str, "Error in Retrieve Memrec"); 3084aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani codec_exit(ac_error_str); 3085aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3086aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3087aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 3088aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani iv_mem_rec_t *ps_mem_rec; 3089aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani UWORD16 u2_i; 3090aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3091aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani u4_num_mem_recs = s_retrieve_dec_op.u4_num_mem_rec_filled; 3092aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3093aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_mem_rec = s_retrieve_dec_ip.pv_mem_rec_location; 3094aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3095aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani for(u2_i = 0; u2_i < u4_num_mem_recs; u2_i++) 3096aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 3097aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani app_aligned_free(ps_mem_rec->pv_base); 3098aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ps_mem_rec++; 3099aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3100aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani free(s_retrieve_dec_ip.pv_mem_rec_location); 3101aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3102aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3103aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3104aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 3105aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /* Close all the files and free all the memory */ 3106aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani /***********************************************************************/ 3107aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 3108aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fclose(ps_ip_file); 3109aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3110aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == s_app_ctx.u4_file_save_flag) 3111aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 3112aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fclose(ps_op_file); 3113aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3114aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(1 == s_app_ctx.u4_chksum_save_flag) 3115aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 3116aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani fclose(ps_op_chksum_file); 3117aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3118aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3119aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3120aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3121aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani if(0 == s_app_ctx.share_disp_buf) 3122aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 3123aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani free(ps_out_buf->pu1_bufs[0]); 3124aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3125aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3126aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani for(i = 0; i < s_app_ctx.num_disp_buf; i++) 3127aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani { 3128aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani free(s_app_ctx.s_disp_buffers[i].pu1_bufs[0]); 3129aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani } 3130aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3131aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani free(ps_out_buf); 3132aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani free(pu1_bs_buf); 3133aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 3134aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani return (0); 3135aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani} 3136