1fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* 2fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Copyright (C) Texas Instruments - http://www.ti.com/ 3fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 4fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is free software; you can redistribute it and/or 5fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * modify it under the terms of the GNU Lesser General Public 6fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License as published by the Free Software Foundation; either 7fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * version 2.1 of the License, or (at your option) any later version. 8fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 9fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 10fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is distributed in the hope that it will be useful, 11fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * but WITHOUT ANY WARRANTY; without even the implied warranty of 12fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Lesser General Public License for more details. 14fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 15fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 16fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * You should have received a copy of the GNU Lesser General Public 17fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License along with this library; if not, write to the Free Software 18fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 20fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 21fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef OMX_VIDDEC_UTILS__H 22fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_VIDDEC_UTILS__H 23fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 24d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato#define newmalloc(x) malloc(x) 25d5cf09fb6e53cda5ce8796eb01230bfecdb917ffMasaki Sato#define newfree(z) free(z) 26fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef ANDROID 27fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* Log for Android system*/ 28fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <utils/Log.h> 29fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define LOG_TAG "TI_Video_Decoder" 30fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <cutils/properties.h> 32fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 33fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef UNDER_CE 34fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <windows.h> 35fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <oaf_osal.h> 36fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <omx_core.h> 37fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <pthread.h> 38fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <stdlib.h> 39fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 40fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define _XOPEN_SOURCE 600 41fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <sys/select.h> 42fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <signal.h> 43fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <pthread.h> 44fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <wchar.h> 45fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <unistd.h> 46fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <sys/types.h> 47fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <malloc.h> 48fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <memory.h> 49fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <sys/wait.h> 50fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <sys/types.h> 51fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <sys/stat.h> 52fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <fcntl.h> 53fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <dbapi.h> 54fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <string.h> 55fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <stdio.h> 56fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <dlfcn.h> 57fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <stdarg.h> 58fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <errno.h> 59fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <sys/ioctl.h> 60fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <sys/time.h> 61fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <stdlib.h> 62fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <semaphore.h> 63fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 64fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 65fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef KHRONOS_1_1 66fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define KHRONOS_1_1 67fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 68fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 69fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define KHRONOS_1_2 70fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef VIDDEC_SPARK_CODE 71fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_SPARK_CODE 72fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 73fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 74fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef VIDDEC_SN_R8_14 75fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_SN_R8_14 76fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 77fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 78fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_WAIT_CODE() sched_yield() 79fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 80fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 81fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef __ENV_CHANGE__ 82fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define __ENV_CHANGE__ 83fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 84fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 85fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 86fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef VIDDEC_ACTIVATEPARSER 87fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_ACTIVATEPARSER 88fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 89fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 90fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_WMVPOINTERFIXED 91fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_HANDLE_FULL_STRM_PROP_OBJ 92fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 93fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sched.h> 94fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Core.h> 95fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_TI_Debug.h> 96fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "OMX_VideoDecoder.h" 97fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "OMX_VidDec_CustomCmd.h" 98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "OMX_TI_Common.h" 99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_CONFIG_MACROBLOCKERRORMAPTYPE_TI { 103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nSize; 104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE nVersion; 105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPortIndex; 106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nErrMapSize; /* Size of the Error Map in bytes*/ 107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 ErrMap[(864 * 480) / 256]; /* Error map hint */ 108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_CONFIG_MACROBLOCKERRORMAPTYPE_TI; 109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_MEMLEVELS 5 112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum VIDDEC_ENUM_MEMLEVELS{ 113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDDEC_Enum_MemLevel0 = 0, 114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDDEC_Enum_MemLevel1, 115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDDEC_Enum_MemLevel2, 116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDDEC_Enum_MemLevel3, 117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDDEC_Enum_MemLevel4 118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_ENUM_MEMLEVELS; 119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "LCML_DspCodec.h" 121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "LCML_Types.h" 122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "LCML_CodecInterface.h" 123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "perf.h" 126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*#define RESOURCE_MANAGER_ENABLED*/ 129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <ResourceManagerProxyAPI.h> 131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __ENV_CHANGE__ 134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #ifndef ENV_CHANGE_DEF_AUTO 135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define ENV_CHANGE_DEF_AUTO "ON" 136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #endif 137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #ifndef ENV_CHANGE_DEF_VALUE 138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define ENV_CHANGE_DEF_VALUE "H264" 139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #endif 140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define ENV_CHANGE_VAL_ON "ON" 141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define ENV_CHANGE_NAME_AUTO "ENV_CHANGE_AUTO" 142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define ENV_CHANGE_NAME_VALUE "ENV_CHANGE_VALUE" 143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define ENV_CHANGE_SET_H264 "H264" 144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define ENV_CHANGE_SET_AVC "AVC" 145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define ENV_CHANGE_SET_H263 "H263" 146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define ENV_CHANGE_SET_MPEG2 "MPEG2" 147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define ENV_CHANGE_SET_MPEG4 "MPEG4" 148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define ENV_CHANGE_SET_WMV9 "WMV" 149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define ENV_CHANGE_SET_SPARK "SPARK" 151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_COMPONENTROLES_H263 "video_decoder.h263" 155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_COMPONENTROLES_H264 "video_decoder.avc" 156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_COMPONENTROLES_MPEG2 "video_decoder.mpeg2" 157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_COMPONENTROLES_MPEG4 "video_decoder.mpeg4" 158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_COMPONENTROLES_WMV9 "video_decoder.wmv" 159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_COMPONENTROLES_SPARK "video_decoder.spark" 161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define __STD_COMPONENT__ 164e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong 165e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong/* 166e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * MAX_PRIVATE_IN_BUFFERS and MAX_PRIVATE_OUT_BUFFERS must NOT be 167e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * greater than MAX_PRIVATE_BUFFERS. MAX_PRIVATE_BUFFERS is set 168e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * to 6 because 6 overlay buffers are currently being used for 169e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * playback 170e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong */ 171221a7f397de8e84a36f8f5c93a9a5b175e9053fdBenny Wong#define MAX_PRIVATE_IN_BUFFERS 6 172221a7f397de8e84a36f8f5c93a9a5b175e9053fdBenny Wong#define MAX_PRIVATE_OUT_BUFFERS 6 173221a7f397de8e84a36f8f5c93a9a5b175e9053fdBenny Wong#define MAX_PRIVATE_BUFFERS 6 174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NUM_OF_PORTS 2 175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_MAX_NAMESIZE 128 176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_NOPORT 0xfffffffe 177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_MPU 50 178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define IUALG_CMD_SETSTATUS 3 180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VERSION_MAJOR 1 182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VERSION_MINOR 0 184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VERSION_MINOR 0 186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VERSION_REVISION 0 188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VERSION_STEP 0 189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_COLORFORMAT422 OMX_COLOR_FormatCbYCrY 191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_COLORFORMAT420 OMX_COLOR_FormatYUV420Planar /*OMX_COLOR_FormatYUV420PackedPlanar is not working with OpenCore*/ 192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_COLORFORMATUNUSED OMX_COLOR_FormatUnused 193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_ZERO 0 195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_ONE 1 196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_MINUS -1 197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_WMVHEADER 20 198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_BUFFERMINCOUNT VIDDEC_ONE 200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PORT_ENABLED OMX_TRUE 201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PORT_POPULATED OMX_FALSE 202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PORT_DOMAIN OMX_PortDomainVideo 203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_INPUT_BUFFER_SIZE 614400 205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_OUTPUT_BUFFER_SIZE 614400 206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_WIDTH 640 207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_HEIGHT 480 208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define VIDDEC_DEFAULT_PROCESSMODE 0 /* 0=frmmode; 1=strmmode */ 209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define VIDDEC_DEFAULT_H264BITSTRMFMT 0 /* 0=bytestrm; 1->4=NAL-bitstrm */ 210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define MAX_CCD_CNT 128 211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define MAX_NALUDATA_CNT 128 212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_INPUT_PORT_COMPRESSIONFORMAT OMX_VIDEO_CodingMPEG4 214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_OUTPUT_PORT_COMPRESSIONFORMAT OMX_VIDEO_CodingUnused 215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_INPUT_PORT_BUFFERSUPPLIER VIDDEC_ZERO 216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_OUTPUT_PORT_BUFFERSUPPLIER VIDDEC_ZERO 217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_MIMETYPEH263 "H263" 219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_MIMETYPEH264 "H264" 220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_MIMETYPEMPEG4 "MPEG4" 221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_MIMETYPEWMV "WMV" 222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_MIMETYPEYUV "YUV" 223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_MIMETYPEWMV_SPARK "SPARK" 225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_INPUT_PORT_NATIVERENDER NULL 228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_INPUT_PORT_STRIDE VIDDEC_MINUS 229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_INPUT_PORT_SLICEHEIGHT VIDDEC_MINUS 230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __STD_COMPONENT__ 232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_INPUT_PORT_BITRATE (64000) 233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_INPUT_PORT_FRAMERATE (15 << 16) 234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_INPUT_PORT_BITRATE VIDDEC_MINUS 236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_INPUT_PORT_FRAMERATE VIDDEC_MINUS 237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_INPUT_PORT_FLAGERRORCONCEALMENT OMX_FALSE 239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_OUTPUT_PORT_NATIVERENDER NULL 241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_OUTPUT_PORT_STRIDE VIDDEC_ZERO 242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_OUTPUT_PORT_SLICEHEIGHT VIDDEC_ZERO 243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_OUTPUT_PORT_BITRATE VIDDEC_ZERO 244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_OUTPUT_PORT_FRAMERATE VIDDEC_ZERO 245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_OUTPUT_PORT_FLAGERRORCONCEALMENT OMX_FALSE 246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_FACTORFORMAT422 2 248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_FACTORFORMAT420 (1.5) 249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG4_PORTINDEX VIDDEC_INPUT_PORT 251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG4_SLICEHEADERSPACING VIDDEC_ZERO 252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG4_SVH OMX_FALSE 253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG4_GOV OMX_FALSE 254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG4_PFRAMES VIDDEC_MINUS 255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG4_BFRAMES VIDDEC_MINUS 256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG4_IDCVLCTHRESHOLD VIDDEC_MINUS 257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG4_ACPRED OMX_FALSE 258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG4_MAXPACKETSIZE VIDDEC_DEFAULT_INPUT_BUFFER_SIZE 259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG4_TIMEINCRES VIDDEC_MINUS 2602acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong#define VIDDEC_DEFAULT_MPEG4_PROFILE OMX_VIDEO_MPEG4ProfileSimple 261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG4_LEVEL OMX_VIDEO_MPEG4Level1 262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG4_ALLOWEDPICTURETYPES VIDDEC_MINUS 263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG4_HEADEREXTENSION VIDDEC_ONE 264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG4_REVERSIBLEVLC OMX_FALSE 265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG2_PORTINDEX VIDDEC_INPUT_PORT 267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG2_PFRAMES VIDDEC_MINUS 268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_MPEG2_BFRAMES VIDDEC_MINUS 2692acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong#define VIDDEC_DEFAULT_MPEG2_PROFILE OMX_VIDEO_MPEG2ProfileSimple 2702acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong#define VIDDEC_DEFAULT_MPEG2_LEVEL OMX_VIDEO_MPEG2LevelLL 271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_PORTINDEX VIDDEC_INPUT_PORT 272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_SLICEHEADERSPACING VIDDEC_ZERO 273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_PFRAMES VIDDEC_MINUS 274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_BFRAMES VIDDEC_MINUS 275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_USEHADAMARD OMX_FALSE 276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_REFFRAMES VIDDEC_MINUS 277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_REFIDX10ACTIVEMINUS1 VIDDEC_MINUS 278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_REFIDX11ACTIVEMINUS1 VIDDEC_MINUS 279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_ENABLEUEP OMX_FALSE 280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_ENABLEFMO OMX_FALSE 281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_ENABLEASO OMX_FALSE 282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_ENABLERS OMX_FALSE 2832acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong#define VIDDEC_DEFAULT_H264_PROFILE OMX_VIDEO_AVCProfileBaseline 2842acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong#define VIDDEC_DEFAULT_H264_LEVEL OMX_VIDEO_AVCLevel1 285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_ALLOWEDPICTURETYPES VIDDEC_MINUS 286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_FRAMEMBSONLY OMX_FALSE 287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_MBAFF OMX_FALSE 288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_ENTROPYCODINGCABAC OMX_FALSE 289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_WEIGHTEDPPREDICTION OMX_FALSE 290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_WEIGHTEDBIPREDICITONMODE VIDDEC_MINUS 291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_CONSTIPRED OMX_FALSE 292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_DIRECT8X8INFERENCE OMX_FALSE 293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_DIRECTSPATIALTEMPORAL OMX_FALSE 294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_CABACINITIDC VIDDEC_MINUS 295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H264_LOOPFILTERMODE OMX_VIDEO_AVCLoopFilterDisable 296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H263_PORTINDEX VIDDEC_INPUT_PORT 298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H263_PFRAMES VIDDEC_MINUS 299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H263_BFRAMES VIDDEC_MINUS 3002acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong#define VIDDEC_DEFAULT_H263_PROFILE OMX_VIDEO_H263ProfileBaseline 3012acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong#define VIDDEC_DEFAULT_H263_LEVEL OMX_VIDEO_H263Level10 302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H263_PLUSPTYPEALLOWED OMX_FALSE 303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H263_ALLOWEDPICTURETYPES OMX_VIDEO_PictureTypeMax 304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H263_FORCEROUNDINGTYPETOZERO OMX_TRUE 305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H263_PICTUREHEADERREPETITION 0 306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_H263_GOBHEADERINTERVAL 1 307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_WMV_PORTINDEX VIDDEC_INPUT_PORT 309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_DEFAULT_WMV_FORMAT OMX_VIDEO_WMVFormat9 310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PIPE_WRITE VIDDEC_ONE 312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PIPE_READ VIDDEC_ZERO 313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PADDING_FULL 256 315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PADDING_HALF VIDDEC_PADDING_FULL / 2 316b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 317e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong#define VIDDEC_ALIGNMENT 4 318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_CLEARFLAGS 0 320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define H264VDEC_SN_MAX_NALUNITS 1200 321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_MPEG4_QCIF 30 323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_MPEG4_CIF 80 324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_MPEG4_VGA 165 325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_MPEG4_720P 401 326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_MPEG2_QCIF 30 328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_MPEG2_CIF 80 329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_MPEG2_VGA 165 330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_H263_QCIF 25 332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_H263_CIF 60 333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_H263_VGA 165 334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_H264_QCIF 85 336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_H264_CIF 160 337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_H264_VGA 260 338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_WMV_QCIF 55 340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_WMV_CIF 100 341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RM_FREC_WMV_VGA 300 342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_RM_FREC_SPARK_QCIF 55 345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_RM_FREC_SPARK_CIF 100 346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_RM_FREC_SPARK_VGA 300 347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_MIN_WIDTH 176 350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_MIN_HEIGHT 144 351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_QCIF_WIDTH 176 353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_QCIF_HEIGHT 144 354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_QVGA_WIDTH 320 356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_QVGA_HEIGHT 240 357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_CIF_WIDTH 352 359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_CIF_HEIGHT 288 360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_VGA_WIDTH 640 362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_VGA_HEIGHT 480 363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 364b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#define VIDDEC_D1MAX_WIDTH 864 365b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#define VIDDEC_D1MAX_HEIGHT VIDDEC_D1MAX_WIDTH 366b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 367b65f253fdc60f6208a54911bee793d225f23cdf8James Dong/* In the current release the suport for : VIDDEC_MAX_FRAMERATE & VIDDEC_MAX_BITRATE 368b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * is not provided by the algorithm. But is require to set this field to a non-zero value */ 369b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#define VIDDEC_MAX_FRAMERATE 30000 /* Max frame rate to be suported * 1000 */ 370b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#define VIDDEC_MAX_BITRATE 8000000 /* Max bit rate (in bits per second) to be suported */ 371b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_WMV_PROFILE_ID0 0 373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_WMV_PROFILE_ID1 1 374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_WMV_PROFILE_ID2 2 375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_WMV_PROFILE_ID3 3 376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_WMV_PROFILE_ID4 4 377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_WMV_PROFILE_ID5 5 378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_WMV_PROFILE_ID6 6 379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_WMV_PROFILE_ID7 7 380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_WMV_PROFILE_ID8 8 381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_MAX_QUEUE_SIZE 256 383e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong#define VIDDEC_WMV_BUFFER_OFFSET (255 - 4) 384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_WMV_ELEMSTREAM 0 385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_WMV_RCVSTREAM 1 386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_SN_WMV_ELEMSTREAM 1 388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_SN_WMV_RCVSTREAM 2 389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define CSD_POSITION 51 /*Codec Specific Data position on the "stream propierties object"(ASF spec)*/ 391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef KHRONOS_1_2 393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define OMX_BUFFERFLAG_CODECCONFIG 0x00000080 394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_CUSTOM_PARAM 397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned char cCustomParamName[128]; 399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_INDEXTYPE nCustomParamIndex; 400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_CUSTOM_PARAM; 401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum VIDDEC_CUSTOM_PARAM_INDEX 403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_2 405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VideoDecodeCustomParamProcessMode = (OMX_IndexVendorStartUnused + 1), 406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VideoDecodeCustomParamProcessMode = (OMX_IndexIndexVendorStartUnused + 1), 408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VideoDecodeCustomParamH264BitStreamFormat, 410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VideoDecodeCustomParamWMVProfile, 411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VideoDecodeCustomParamWMVFileType, 412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VideoDecodeCustomParamParserEnabled, 413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VideoDecodeCustomParamIsNALBigEndian, 414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VideoDecodeCustomParamIsSparkInput, 416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VideoDecodeCustomConfigDebug 418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef ANDROID /*To be use by opencore multimedia framework*/ 420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin , 421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PV_OMX_COMPONENT_CAPABILITY_TYPE_INDEX = 0xFF7A347 422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_CUSTOM_PARAM_INDEX; 424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum VIDDEC_LCML_STATES 426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VidDec_LCML_State_Unload = 0, 428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VidDec_LCML_State_Load, 429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VidDec_LCML_State_Init, 430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VidDec_LCML_State_Pause, 431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VidDec_LCML_State_Start, 432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VidDec_LCML_State_Stop, 433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VidDec_LCML_State_Destroy 434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_LCML_STATES; 435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum VIDDEC_RMPROXY_STATES 437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VidDec_RMPROXY_State_Unload = 0, 439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VidDec_RMPROXY_State_Load, 440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VidDec_RMPROXY_State_Registered, 441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_RMPROXY_STATES; 442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */ 444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @def WMV9DEC_YUVFORMAT_XYZ : YUV ouput chroma format. 446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ==================================================================== */ 448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define WMV9VIDDEC_YUVFORMAT_PLANAR420 (1) 449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define WMV9VIDDEC_YUVFORMAT_INTERLEAVED422 (4) 450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */ 452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @def MP4VDEC_YUVFORMAT_XYZ : YUV ouput chroma format. 454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ==================================================================== */ 456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define MP4VIDDEC_YUVFORMAT_PLANAR420 (1) 457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define MP4VIDDEC_YUVFORMAT_INTERLEAVED422 (4) 458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */ 460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @def H264VDEC_YUVFORMAT_XYZ : YUV ouput chroma format. 462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ==================================================================== */ 464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define H264VIDDEC_YUVFORMAT_PLANAR420 (0) 465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define H264VIDDEC_YUVFORMAT_INTERLEAVED422 (1) 466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define MP2VIDDEC_YUVFORMAT_PLANAR420 (1) 468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define MP2VIDDEC_YUVFORMAT_INTERLEAVED422 (4) 469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ======================================================================= */ 471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @def MP4VDEC_YUVFORMAT_XYZ : YUV ouput chroma format. 473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ==================================================================== */ 475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define SPARKVIDDEC_YUVFORMAT_PLANAR420 (1) 476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define SPARKVIDDEC_YUVFORMAT_INTERLEAVED422 (4) 477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum VIDDEC_PORT_INDEX 479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_INPUT_PORT, 481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_OUTPUT_PORT 482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_PORT_INDEX; 483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum VIDDEC_DEFAULT_INPUT_INDEX 485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_DEFAULT_INPUT_INDEX_H263, 487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_DEFAULT_INPUT_INDEX_H264, 488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_DEFAULT_INPUT_INDEX_MPEG4, 489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_DEFAULT_INPUT_INDEX_WMV9, 490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_DEFAULT_INPUT_INDEX_MPEG2, 491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_DEFAULT_INPUT_INDEX_SPARK, 493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_DEFAULT_INPUT_INDEX_MAX = 0x7ffffff 495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_DEFAULT_INPUT_INDEX; 496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum VIDDEC_DEFAULT_OUTPUT_INDEX 498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_DEFAULT_OUTPUT_INDEX_INTERLEAVED422, 500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_DEFAULT_OUTPUT_INDEX_PLANAR420, 501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_DEFAULT_OUTPUT_INDEX_MAX = 0x7ffffff 502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_DEFAULT_OUTPUT_INDEX; 503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum VIDDEC_BUFFER_OWNER 505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_BUFFER_WITH_CLIENT = 0x0, 507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_BUFFER_WITH_COMPONENT, 508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_BUFFER_WITH_DSP, 509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_BUFFER_WITH_TUNNELEDCOMP 510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_BUFFER_OWNER; 511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum VIDDEC_TYPE_ALLOCATE 513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_TALLOC_USEBUFFER, 515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_TALLOC_ALLOCBUFFER 516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_TYPE_ALLOCATE; 517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum VIDDEC_INIT_VALUE 519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_INIT_ALL, 521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_INIT_STRUCTS, 522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_INIT_VARS, 523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_INIT_H263, 524fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_INIT_H264, 525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_INIT_MPEG2, 526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_INIT_MPEG4, 527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_INIT_WMV9, 528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_INIT_SPARK, 530fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_INIT_PLANAR420, 532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_INIT_INTERLEAVED422, 533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_INIT_IDLEEXECUTING, 534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIIDE_INIT_MAX = 0x7ffffff 535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_INIT_VALUE; 536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum VIDDEC_WMV_PROFILES 538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_WMV_PROFILE0, 540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_WMV_PROFILE1, 541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_WMV_PROFILE2, 542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_WMV_PROFILE3, 543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_WMV_PROFILE4, 544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_WMV_PROFILE5, 545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_WMV_PROFILE6, 546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_WMV_PROFILE7, 547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_WMV_PROFILE8, 548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_WMV_PROFILEMAX 549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_WMV_PROFILES; 550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_BUFFER_PRIVATE 552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBufferHdr; 554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pUalgParam; 555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nUalgParamSize; 556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_BUFFER_OWNER eBufferOwner; 557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_TYPE_ALLOCATE bAllocByComponent; 558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nNumber; 559e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong OMX_U8* pOriginalBuffer; 560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_WMVPOINTERFIXED 561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* pTempBuffer; 562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_BUFFER_PRIVATE; 564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*structures and defines for Circular Buffer*/ 566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_CBUFFER_LOCK 567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define MAX_MULTIPLY 4 568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define CBUFFER_SIZE MAX_PRIVATE_BUFFERS * MAX_MULTIPLY 569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum VIDDEC_QUEUE_TYPES { 571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_QUEUE_OMX_U32, 572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_QUEUE_OMX_MARKTYPE 573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_QUEUE_TYPES; 574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_QUEUE_TYPE { 576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR Elements; 577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 CounterElements[VIDDEC_MAX_QUEUE_SIZE]; 578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nHead; 579b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_S32 nTail; 580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nElements; 581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nErrorCount; 582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_t mMutex; 583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_QUEUE_TYPE; 584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum VIDDEC_CBUFFER_TYPE { 586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_CBUFFER_MARKDATA, 587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_CBUFFER_TIMESTAMP, 588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_CBUFFER_CMDMARKDATA 589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_CBUFFER_TYPE; 590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_CIRCULAR_BUFFER { 592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pElement[CBUFFER_SIZE]; 593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_CBUFFER_TYPE nType; 594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_CBUFFER_LOCK 595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_t* m_lock; 596fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 597fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nTail; 598fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nHead; 599fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nCount; 600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_CIRCULAR_BUFFER; 601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_CBUFFER_BUFFERFLAGS{ 603fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TICKS nTimeStamp; 604fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nFlags; 605fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nTickCount; 606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pMarkData; 607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_HANDLETYPE hMarkTargetComponent; 608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_CBUFFER_BUFFERFLAGS; 609fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_PORT_TYPE 611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_HANDLETYPE hTunnelComponent; 613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nTunnelPort; 614fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERSUPPLIERTYPE eSupplierSetting; 615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_BUFFER_PRIVATE* pBufferPrivate[MAX_PRIVATE_BUFFERS]; 616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nBufferCnt; 617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_CIRCULAR_BUFFER eTimeStamp; 618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_PORT_TYPE; 619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_MUTEX{ 621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bEnabled; 622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bSignaled; 623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bInitialized; 624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nErrorExist; 625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_t mutex; 626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_t condition; 627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_MUTEX; 628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 629fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_SEMAPHORE{ 630fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bEnabled; 631fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bSignaled; 632fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bInitialized; 633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nErrorExist; 634fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sem_t sSemaphore; 635fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_SEMAPHORE; 636fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 637fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_ACTIVATEPARSER 638fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_Point{ 639fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nX; 640fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nY; 641fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_Point; 642fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 643fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_Rect{ 644fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_Point sTl; 645fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_Point sBr; 646fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_Rect; 647fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 648fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_Size{ 649fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nWidth; 650fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nHeight; 651fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_Size; 652fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 653fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_VideoPictureHeader{ 654fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nOptions; 655fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nProfile; 656fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nLevel; 657fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nVersion; 658fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* cnOptional; 659fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_Size sSizeInMemory; 660fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_Rect sDisplayedRect; 661fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TICKS nPresentationTimestamp; 662fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TICKS nDecodingTimestamp; 663fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPreDecoderBufferSize; 664fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPostDecoderBufferSize; 665fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPictureNumber; 666fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPictureLayer; 667fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* pcSupplementalData; 668fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bIsRandomAccessible; 669fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nRandomAccessBufferingPeriod; 670fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nRandomAccessBufferOccupancy; 671fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_VideoPictureHeader; 672fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 673fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_MPEG4VisualVbvParams{ 674fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_TICKS nBitRate; 675fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nVbvBufferSize; 676fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nVbvOccupancy; 677fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_MPEG4VisualVbvParams; 678fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 679fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_MPEG4VisualVOLHeader{ 680fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nVideoObjectLayerId; 681fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bShortVideoHeader; 682fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bRandomAccessibleVOL; 683fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nVideoObjectTypeIndication; 684fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nVideoObjectLayerVerId; 685fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nVideoObjectLayerPriority; 686fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nAspectRatioNum; 687fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nAspectRatioDenom; 688fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_MPEG4VisualVbvParams sVbvParams; 689fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 nVOPTimeIncrementResolution; 690fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bnFnXedVopRate; 691fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 nFnXedVOPTimeIncrement; 692fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bDataPartitioning; 693fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bReversibleVLC; 694fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* pcUserData; 695fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_MPEG4VisualVOLHeader ; 696fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 697fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_MPEG4YuvConversionMatrix{ 698fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 iPostOffset; 699fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 iMatrix; 700fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 iPreOffset; 701fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_MPEG4YuvConversionMatrix; 702fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 703fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_MPEG4YuvFormat{ 704fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iCoefficients; 705fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iPattern; 706fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iDataLayout; 707fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_MPEG4YuvConversionMatrix * iYuv2RgbMatrix; 708fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_MPEG4YuvConversionMatrix * iRgb2YuvMatrix; 709fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iAspectRatioNum; 710fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iAspectRatioDenom; 711fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_MPEG4YuvFormat; 712fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 713fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_MPEG4UncompressedVideoFormat{ 714fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iDataFormat; 715fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_MPEG4YuvFormat iYuvFormat; 716fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 iRgbFormat; 717fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_MPEG4UncompressedVideoFormat; 718fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 719fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_AVC_ParserParam { 720fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nBitPosTemp; 721fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nForbiddenZeroBit; 722fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nNalRefIdc; 723fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nProfileIdc; 724fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nConstraintSet0Flag; 725fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nConstraintSet1Flag; 726fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nConstraintSet2Flag; 727fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nReservedZero5bits; 728fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nLevelIdc; 729fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nSeqParameterSetId; 730fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nLog2MaxFrameNumMinus4; 731fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPicOrderCntType; 732fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nLog2MaxPicOrderCntLsbMinus4; 733fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nOffsetForNonRefPic; 734fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nOffsetForTopToBottomField; 735fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nNumRefFramesInPicOrderCntCycle; 736fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nNumRefFrames; 737fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nGapsInFrameNumValueAllowedFlag; 738fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPicWidthInMbsMinus1; 739fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPicHeightInMapUnitsMinus1; 740fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nFrameMbsOnlyFlag; 741fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nMBAdaptiveFrameFieldFlag ; 742fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nDirect8x8InferenceFlag; 743fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nFrameCroppingFlag; 744fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nFrameCropLeftOffset; 745fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nFrameCropRightOffset; 746fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nFrameCropTopOffset; 747fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nFrameCropBottomOffset; 748fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_AVC_ParserParam; 749fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 750fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_MPEG4_ParserParam { 751fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nIsVisualObjectIdentifier; 752fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nVisualObjectType; 753fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nVideoSignalType; 754fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nVideoFormat; 755fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nVideoRange; 756fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nColorDescription; 757fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 NBitZero; 758fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nVideoObjectTypeIndication; 759fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nIsVisualObjectLayerIdentifier; 760fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nLayerVerId; 761fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nLayerPriority; 762fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nAspectRadio; 763fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nParWidth; 764fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nParHeight; 765fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nControlParameters; 766fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nChromaFormat; 767fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nLowDelay; 768fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nVbvParameters; 769fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nBitRate; 770fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nFirstHalfVbvBufferSize; 771fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nLatterHalfVbvBufferSize; 772fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nFirstHalfVbvOccupancy; 773fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nLatterHalfVbvOccupancy; 774fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nLayerShape; 775fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nTimeIncrementResolution; 776fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nFnXedVopRate; 777fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nNum_bits; 778fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nInterlaced; 779fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nObmc; 780fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nUFEP; 781fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 NSpriteNotSupported; 782fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nNot8Bit; 783fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nQuantPrecision; 784fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nBitsPerPnXel; 785fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nIsInverseQuantMethodFirst; 786fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nComplexityEstimationDisable; 787fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nIsResyncMarkerDisabled; 788fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nIsDataPartitioned; 789fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nRvlc; 790fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nScalability; 791fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nSourceFormat; 792fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL nOutputFormat; 793fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nCPM; 794fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPWI; 795fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nPHI; 796fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_MPEG4_ParserParam; 797fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 798fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 799fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_RCV_EXTHEADER_SIZE 4 800fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 801fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_WMV_RCV_struct { 802fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nNumFrames : 24; 803fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nFrameType : 8; 804fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nID : 32; 805fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nStructData : 32; 806fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nVertSize; 807fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nHorizSize; 808fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_WMV_RCV_struct; 809fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 810fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef union VIDDEC_WMV_RCV_header { 811fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_WMV_RCV_struct sStructRCV; 812fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 pBuffer[sizeof(VIDDEC_WMV_RCV_struct)]; 813fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_WMV_RCV_header; 814fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 815fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_SAVE_BUFFER{ 816fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bSaveFirstBuffer; 817fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pFirstBufferSaved; 818fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32 nFilledLen; 819fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}VIDDEC_SAVE_BUFFER; 820fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 821fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef ANDROID 822fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** Opencore specific, refer to OpenMax Call Sequences document section 3.2 **/ 823fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct PV_OMXComponentCapabilityFlagsType 824fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 825fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ////////////////// OMX COMPONENT CAPABILITY RELATED MEMBERS 826fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL iIsOMXComponentMultiThreaded; 827fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL iOMXComponentSupportsExternalOutputBufferAlloc; 828fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL iOMXComponentSupportsExternalInputBufferAlloc; 829fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL iOMXComponentSupportsMovableInputBuffers; 830fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL iOMXComponentSupportsPartialFrames; 831fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL iOMXComponentUsesNALStartCodes; 832fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL iOMXComponentCanHandleIncompleteFrames; 833fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL iOMXComponentUsesFullAVCFrames; 834fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} PV_OMXComponentCapabilityFlagsType; 835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 836fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 8372acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wongtypedef struct VIDEO_PROFILE_LEVEL 8382acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong{ 8392acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong OMX_S32 nProfile; 8402acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong OMX_S32 nLevel; 8412acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong} VIDEO_PROFILE_LEVEL_TYPE; 8422acd4700b78e88cf0f8d52bb14fd9deb99d9f9bfBenny Wong 843fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/** 844fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Data structure used to ... 845fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 846fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * STRUCT MEMBERS: 847fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * pPortParamType : Add desc here... 848fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * pInPortDef : Add desc here... 849fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * pOutPortDef : Add desc here... 850fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * pInPortFormat : Add desc here... 851fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 852fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct VIDDEC_COMPONENT_PRIVATE 853fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 854fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pInPortDef; 855fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pOutPortDef; 856fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VIDEO_PARAM_PORTFORMATTYPE* pInPortFormat; 857fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VIDEO_PARAM_PORTFORMATTYPE* pOutPortFormat; 858fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRIORITYMGMTTYPE* pPriorityMgmt; 859fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_BUFFERSUPPLIERTYPE* pInBufSupplier; 860fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_BUFFERSUPPLIERTYPE* pOutBufSupplier; 861fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VIDEO_PARAM_AVCTYPE* pH264; 862fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VIDEO_PARAM_MPEG4TYPE* pMpeg4; 863fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VIDEO_PARAM_H263TYPE* pH263; 864fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VIDEO_PARAM_WMVTYPE* pWMV; 865fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VIDEO_PARAM_MPEG2TYPE* pMpeg2; /* OMX_IndexParamVideoMpeg2 */ 866fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PORT_PARAM_TYPE* pPortParamType; 867fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_DEBLOCKINGTYPE* pDeblockingParamType; 868fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __STD_COMPONENT__ 869fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PORT_PARAM_TYPE* pPortParamTypeAudio; 870fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PORT_PARAM_TYPE* pPortParamTypeImage; 871fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PORT_PARAM_TYPE* pPortParamTypeOthers; 872b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 873fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 874fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CALLBACKTYPE cbInfo; 875fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pPortDef[NUM_OF_PORTS]; 876fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 numPorts; 877fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_COMPONENTTYPE* pHandle; 878fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STATETYPE eState; 879fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE pComponentVersion; 880fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_VERSIONTYPE pSpecVersion; 881fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STRING cComponentName; 882fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_t ComponentThread; 883fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int free_inpBuf_Q[2]; 884fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int free_outBuf_Q[2]; 885fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int filled_inpBuf_Q[2]; 886fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int filled_outBuf_Q[2]; 887fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int cmdPipe[2]; 888fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int cmdDataPipe[2]; 889fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 bIsStopping; 890fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 bIsPaused; 891fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 bTransPause; 892fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 ProcessMode; 893fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 H264BitStreamFormat; 894fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL MPEG4Codec_IsTI; 895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE pTempBuffHead; /*Used for EOS logic*/ 896fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 app_nBuf; 897fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 lcml_compID; 898fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin void* pLcmlHandle; 899fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin void* pModLCML; 900fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U16 arr[100]; 901fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin int frameCounter; 902fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin LCML_DSP_INTERFACE* pLCML; 903fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PORT_TYPE* pCompPort[NUM_OF_PORTS]; 904fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_WMV_PROFILES wmvProfile; 905fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__ 906fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_OBJHANDLE pPERF, pPERFcomp; 907fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 lcml_nCntOpReceived; 908fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 lcml_nCntIp; 909fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 910fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1 911fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PARAM_COMPONENTROLETYPE componentRole; 912fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*MBError Reporting code*/ 913fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONFIG_MBERRORREPORTINGTYPE eMBErrorReport; 914fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_CONFIG_MACROBLOCKERRORMAPTYPE_TI eMBErrorMapType[MAX_PRIVATE_BUFFERS]; 915fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 cMBErrorIndexIn; 916fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 cMBErrorIndexOut; 917fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 918fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nInMarkBufIndex; /* for OMX_MARKTYPE */ 919fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nOutMarkBufIndex; /* for OMX_MARKTYPE */ 920fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MARKTYPE arrMarkBufIndex[VIDDEC_MAX_QUEUE_SIZE]; /* for OMX_MARKTYPE */ 921fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 922fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nInCmdMarkBufIndex; /* for OMX_MARKTYPE */ 923fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nOutCmdMarkBufIndex; /* for OMX_MARKTYPE */ 924fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MARKTYPE arrCmdMarkBufIndex[VIDDEC_MAX_QUEUE_SIZE]; /* for OMX_MARKTYPE */ 925fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nInBufIndex; /* for time stamps */ 926fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8 nOutBufIndex; /* for time stamps */ 927fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U64 arrBufIndex[VIDDEC_MAX_QUEUE_SIZE]; /* for time stamps */ 928fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_MARKTYPE MTbuffMark; 929fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_QUEUE_TYPE qBuffMark; 930fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_QUEUE_TYPE qCmdMarkData; 931fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_QUEUE_TYPE qBytesSent; 932fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nBytesConsumed; 933fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bBuffMarkTaked; 934fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bBuffalreadyMarked; 935fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 936fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STATETYPE eIdleToLoad; 937fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STATETYPE eExecuteToIdle; 938b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_BOOL iEndofInputSent; 939fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bPipeCleaned; 940fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bFirstBuffer; 941fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 942fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bParserEnabled; 943fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bFlushOut; 944fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin void* pUalgParams; 945fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bLCMLHalted; 946fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bMult16Size; 947fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bFirstHeader; 948fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bDynamicConfigurationInProgress; 949fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bInPortSettingsChanged; 950fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bOutPortSettingsChanged; 951fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_SAVE_BUFFER eFirstBuffer; 952fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 953fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 954fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE 955fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bLCMLOut; 956fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 957fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_RMPROXY_STATES eRMProxyState; 958fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 959b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_U8 nCountInputBFromDsp; 960b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_U8 nCountOutputBFromDsp; 961b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_U8 nCountInputBFromApp; 962b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_U8 nCountOutputBFromApp; 963fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 964fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_CBUFFER_BUFFERFLAGS aBufferFlags[CBUFFER_SIZE]; 965fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_LCML_STATES eLCMLState; 966fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nWMVFileType; 967fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bIsNALBigEndian; 968fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 969fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bIsSparkInput; 970fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 971fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_MUTEX sMutex; 972b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pthread_mutex_t mutexInputBFromApp; 973b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pthread_mutex_t mutexOutputBFromApp; 974b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pthread_mutex_t mutexInputBFromDSP; 975b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pthread_mutex_t mutexOutputBFromDSP; 97681080e8c6e5fbb1d3bb01d707d832a2f348c7268James Dong VIDDEC_MUTEX inputFlushCompletionMutex; 97781080e8c6e5fbb1d3bb01d707d832a2f348c7268James Dong VIDDEC_MUTEX outputFlushCompletionMutex; 97881080e8c6e5fbb1d3bb01d707d832a2f348c7268James Dong OMX_BOOL bIsInputFlushPending; 97981080e8c6e5fbb1d3bb01d707d832a2f348c7268James Dong OMX_BOOL bIsOutputFlushPending; 980fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_MUTEX sDynConfigMutex; 981fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_SEMAPHORE sInSemaphore; 982fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_SEMAPHORE sOutSemaphore; 983fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* used by RM callback */ 984fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 985fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin RMPROXY_CALLBACKTYPE rmproxyCallback; 986fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 987fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* used to keep track of preempted state */ 988fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bPreempted; 989fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* desired state of this component */ 990fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_STATETYPE eDesiredState; 991fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_WMV_RCV_header pBufferRCV; 992fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE pBufferTemp; 993fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 pRCVExtendedHeader; 994fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nMemUsage[VIDDEC_MEMLEVELS]; 995fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nDisplayWidth; 996fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U8* pCodecData; /* codec-specific data coming from the demuxer */ 997fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nCodecDataSize; 998b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BOOL bVC1Fix; 999fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef ANDROID /* Specific flag for opencore mmframework */ 1000fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PV_OMXComponentCapabilityFlagsType* pPVCapabilityFlags; 1001fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1003fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* Used to handle config buffer fragmentation on AVC*/ 1004fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BOOL bConfigBufferCompleteAVC; 1005fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PTR pInternalConfigBufferAVC; 1006fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_U32 nInternalConfigBufferFilledAVC; 1007fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin struct OMX_TI_Debug dbg; 1008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* track number of codec config data (CCD) units and sizes */ 1009b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 aCCDsize[MAX_CCD_CNT]; 1010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nCCDcnt; 1011b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1012b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* indicate if codec config data (CCD) 1013b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * buffer (e.g. SPS/PPS) has been copied 1014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * to the data buffer. SPS,PPS,NAL1,... 1015b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * */ 1016b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BOOL bCopiedCCDBuffer; 1017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 10181348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong /* Reference count for pending state change requests */ 10191348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong OMX_U32 nPendingStateChangeRequests; 10201348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong pthread_mutex_t mutexStateChangeRequest; 10211348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong pthread_cond_t StateChangeCondition; 10221348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong 10235e41d631147aa1fc9f4b52dc34941dde69f02a9aJames Dong // Signal first buffer after config data should have EOS flag 10245e41d631147aa1fc9f4b52dc34941dde69f02a9aJames Dong OMX_BOOL firstBufferEos; 10255e41d631147aa1fc9f4b52dc34941dde69f02a9aJames Dong 1026fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} VIDDEC_COMPONENT_PRIVATE; 1027fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1028fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*****************macro definitions*********************/ 1029b65f253fdc60f6208a54911bee793d225f23cdf8James Dong/*----------------------------------------------------------------------------*/ 1030b65f253fdc60f6208a54911bee793d225f23cdf8James Dong/** 1031b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * OMX_GET_DATABUFF_SIZE() Get the needed buffer data size base in the request. 1032b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * 1033b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * This method will give the needed data buffer size acording with 1034b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * specific requirements from the codec and component. 1035b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * 1036b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * @param _nSizeBytes_ Requested size from client 1037b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * 1038b65f253fdc60f6208a54911bee793d225f23cdf8James Dong **/ 1039b65f253fdc60f6208a54911bee793d225f23cdf8James Dong/*----------------------------------------------------------------------------*/ 1040b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 1041b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#define OMX_GET_DATABUFF_SIZE(_nSizeBytes_) \ 1042b65f253fdc60f6208a54911bee793d225f23cdf8James Dong (_nSizeBytes_ + VIDDEC_PADDING_FULL + VIDDEC_WMV_BUFFER_OFFSET + VIDDEC_ALIGNMENT) 1043b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 1044b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 1045fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_MALLOC_STRUCT(_pStruct_, _sName_, _memusage_) \ 1046fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin _pStruct_ = (_sName_*)malloc(sizeof(_sName_)); \ 1047fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(_pStruct_ == NULL){ \ 1048fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; \ 1049fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; \ 1050fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } \ 1051fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*(_memusage_) += sizeof(_sName_); */ \ 1052fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memset((_pStruct_), 0x0, sizeof(_sName_)); 1053fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1054fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1055fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_MALLOC_STRUCT_SIZED(_pStruct_, _sName_, _nSize_, _memusage_) \ 1056fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin _pStruct_ = (_sName_*)malloc(_nSize_); \ 1057fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(_pStruct_ == NULL){ \ 1058fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorInsufficientResources; \ 1059fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; \ 1060fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } \ 1061fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*(_memusage_) += _nSize_; */ \ 1062fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memset((_pStruct_), 0x0, _nSize_); 1063fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1064fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_MEMUSAGE 0 /*\ 1065fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel0] + \ 1066fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1] + \ 1067fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel2] + \ 1068fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel3] + \ 1069fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel4]*/ 1070fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1071fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1072e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong/*----------------------------------------------------------------------------*/ 1073e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong/** 1074e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * OMX_ALIGN_BUFFER() Align the buffer to the desire number of bytes. 1075e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * 1076e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * This method will update the component function pointer to the handle 1077e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * 1078b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * @param _pBuffer_ Pointer to align 1079b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * @param _nBytes_ # of byte to alignment desire 1080e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * 1081e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong **/ 1082e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong/*----------------------------------------------------------------------------*/ 1083e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong 1084b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#define OMX_ALIGN_BUFFER(_pBuffer_, _nBytes_) \ 1085b65f253fdc60f6208a54911bee793d225f23cdf8James Dong while((OMX_U8)_pBuffer_ & (_nBytes_-1)){ \ 1086b65f253fdc60f6208a54911bee793d225f23cdf8James Dong _pBuffer_++; \ 1087b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 1088b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 1089e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong 1090e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong 1091e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong#define OMX_MALLOC_BUFFER_VIDDEC(_pBuffer_, _nSize_, _pOriginalBuffer_) \ 1092e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong _pBuffer_ = OMX_MALLOC_STRUCT_SIZED(_pBuffer_, OMX_U8, _nSize_ + VIDDEC_PADDING_FULL + VIDDEC_WMV_BUFFER_OFFSET + VIDDEC_ALIGNMENT, pComponentPrivate->nMemUsage[VIDDDEC_Enum_MemLevel1]); \ 1093e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong _pOriginalBuffer_ = _pBuffer_; \ 1094e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong _pBuffer_ += VIDDEC_PADDING_HALF; \ 1095e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong OMX_ALIGN_BUFFER(_pBuffer_, VIDDEC_ALIGNMENT); 1096e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong 1097e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong 1098e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong/*----------------------------------------------------------------------------*/ 1099e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong/** 1100b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * OMX_FREE() Free memory 1101e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * 1102e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * This method will free memory and set pointer to NULL 1103e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * 1104b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * @param _pBuffer_ Pointer to free 1105e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * 1106e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong **/ 1107e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong/*----------------------------------------------------------------------------*/ 1108e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong 1109e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong#define OMX_FREE_VIDDEC(_pBuffer_) \ 1110e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong if(_pBuffer_ != NULL){ \ 1111e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong free(_pBuffer_); \ 1112e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong _pBuffer_ = NULL; \ 1113e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong } 1114e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong 1115e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong 1116e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong 1117e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong/*----------------------------------------------------------------------------*/ 1118e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong/** 1119e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * OMX_FREE_BUFFER_VIDDEC() Free video decoder buffer 1120e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * 1121e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * This method will free video decoder buffer 1122e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * 1123e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * @param _pBuffHead_ Buffer header pointer 1124e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * @param _pCompPort_ Component port will give us the reference to the 1125e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * desire buffer to free 1126e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * 1127e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong **/ 1128e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong/*----------------------------------------------------------------------------*/ 1129e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong 1130e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong#define OMX_FREE_BUFFER_VIDDEC(_pBuffHead_, _pCompPort_) \ 1131e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong { \ 1132e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong int _nBufferCount_ = 0; \ 1133e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong OMX_U8* _pTemp_ = NULL; \ 1134e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong \ 1135e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong for(_nBufferCount_ = 0; _nBufferCount_ < MAX_PRIVATE_BUFFERS; _nBufferCount_++){ \ 1136e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong if(_pCompPort_->pBufferPrivate[_nBufferCount_]->pBufferHdr != NULL){ \ 1137e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong _pTemp_ = (OMX_U8*)_pCompPort_->pBufferPrivate[_nBufferCount_]->pBufferHdr->pBuffer; \ 1138e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong if(_pBuffHead_->pBuffer == _pTemp_){ \ 1139e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong break; \ 1140e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong } \ 1141e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong } \ 1142e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong } \ 1143e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong \ 1144e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong if(_nBufferCount_ == MAX_PRIVATE_BUFFERS){ \ 1145e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong OMX_ERROR4(pComponentPrivate->dbg, "Error: Buffer NOT found to free: %p \n", _pBuffHead_->pBuffer); \ 1146e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong goto EXIT; \ 1147e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong } \ 1148e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong \ 1149e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong _pBuffHead_->pBuffer = _pCompPort_->pBufferPrivate[_nBufferCount_]->pOriginalBuffer; \ 1150e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong OMX_PRBUFFER1(pComponentPrivate->dbg, "Free original allocated buffer: %p\n", _pBuffHead_->pBuffer); \ 1151e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong OMX_FREE_VIDDEC(_pBuffHead_->pBuffer); \ 1152e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong } 1153e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong/*----------------------------------------------------------------------------*/ 1154e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong/** 1155e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * OMX_WMV_INSERT_CODEC_DATA() 1156e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * 1157e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * This method will insert the codec data to the first frame to be sent to 1158e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * queue in LCML 1159e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * 1160b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * @param _pBuffHead_ Pointer to free 1161e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * @param _pComponentPrivate_ Component private structure to provide needed 1162b65f253fdc60f6208a54911bee793d225f23cdf8James Dong * references 1163e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong * 1164e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong **/ 1165e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong/*----------------------------------------------------------------------------*/ 1166e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong 1167b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#define OMX_WMV_INSERT_CODEC_DATA(_pBuffHead_, _pComponentPrivate_) \ 1168b65f253fdc60f6208a54911bee793d225f23cdf8James Dong { \ 1169b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_U8* _pTempBuffer_ = NULL; \ 1170b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /* Copy frame data in a temporary buffer*/ \ 1171b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_MALLOC_STRUCT_SIZED(_pTempBuffer_, OMX_U8, _pBuffHead_->nFilledLen, NULL); \ 1172b65f253fdc60f6208a54911bee793d225f23cdf8James Dong memcpy (_pTempBuffer_, _pBuffHead_->pBuffer, _pBuffHead_->nFilledLen); \ 1173b65f253fdc60f6208a54911bee793d225f23cdf8James Dong \ 1174b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /*Copy configuration data at the begining of the buffer*/ \ 1175b65f253fdc60f6208a54911bee793d225f23cdf8James Dong memcpy (_pBuffHead_->pBuffer, _pComponentPrivate_->pCodecData, _pComponentPrivate_->nCodecDataSize); \ 1176b65f253fdc60f6208a54911bee793d225f23cdf8James Dong _pBuffHead_->pBuffer += _pComponentPrivate_->nCodecDataSize; \ 1177b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /* Add frame start code */ \ 1178b65f253fdc60f6208a54911bee793d225f23cdf8James Dong (*(_pBuffHead_->pBuffer++)) = 0x00; \ 1179b65f253fdc60f6208a54911bee793d225f23cdf8James Dong (*(_pBuffHead_->pBuffer++)) = 0x00; \ 1180b65f253fdc60f6208a54911bee793d225f23cdf8James Dong (*(_pBuffHead_->pBuffer++)) = 0x01; \ 1181b65f253fdc60f6208a54911bee793d225f23cdf8James Dong (*(_pBuffHead_->pBuffer++)) = 0x0d; \ 1182b65f253fdc60f6208a54911bee793d225f23cdf8James Dong \ 1183b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /* Insert again the frame buffer */ \ 1184b65f253fdc60f6208a54911bee793d225f23cdf8James Dong memcpy (_pBuffHead_->pBuffer, _pTempBuffer_, _pBuffHead_->nFilledLen); \ 1185b65f253fdc60f6208a54911bee793d225f23cdf8James Dong /* pTempBuffer no longer need*/ \ 1186e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong OMX_FREE_VIDDEC(_pTempBuffer_); \ 1187b65f253fdc60f6208a54911bee793d225f23cdf8James Dong \ 1188b65f253fdc60f6208a54911bee793d225f23cdf8James Dong _pBuffHead_->pBuffer -= (pComponentPrivate->nCodecDataSize + 4); \ 1189b65f253fdc60f6208a54911bee793d225f23cdf8James Dong _pBuffHead_->nFilledLen += pComponentPrivate->nCodecDataSize + 4; \ 1190e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong } 1191e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong 1192e074e61deca17dd3ffc4e431f30464943d225fe0Benny Wong 1193b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 1194b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 1195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_CONF_INIT_STRUCT(_s_, _name_, dbg) \ 1196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin memset((_s_), 0x0, sizeof(_name_)); \ 1197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_s_)->nSize = sizeof(_name_); \ 1198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_s_)->nVersion.s.nVersionMajor = VERSION_MAJOR; \ 1199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_s_)->nVersion.s.nVersionMinor = VERSION_MINOR; \ 1200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_s_)->nVersion.s.nRevision = VERSION_REVISION; \ 1201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_s_)->nVersion.s.nStep = VERSION_STEP; \ 1202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRINT0(dbg, "INIT_STRUCT Major 0x%x Minor 0x%x nRevision 0x%x nStep 0x%x\n", \ 1203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_s_)->nVersion.s.nVersionMajor, (_s_)->nVersion.s.nVersionMinor, \ 1204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_s_)->nVersion.s.nRevision, (_s_)->nVersion.s.nStep); 1205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_CONF_CHK_VERSION(_s_, _name_, _e_, dbg) \ 1207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_PRINT0(dbg, "CHK_VERSION Size 0x%lx Major 0x%x Minor 0x%x nRevision 0x%x nStep 0x%x\n", \ 1208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_s_)->nSize, (_s_)->nVersion.s.nVersionMajor, (_s_)->nVersion.s.nVersionMinor, \ 1209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_s_)->nVersion.s.nRevision, (_s_)->nVersion.s.nStep); \ 1210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((_s_)->nSize != sizeof(_name_)) _e_ = OMX_ErrorBadParameter; \ 1211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(((_s_)->nVersion.s.nVersionMajor != VERSION_MAJOR)|| \ 1212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((_s_)->nVersion.s.nVersionMinor != VERSION_MINOR)|| \ 1213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((_s_)->nVersion.s.nRevision != VERSION_REVISION)|| \ 1214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((_s_)->nVersion.s.nStep != VERSION_STEP)) _e_ = OMX_ErrorVersionMismatch;\ 1215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(_e_ != OMX_ErrorNone) goto EXIT; 1216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_CONF_CHECK_CMD(_ptr1, _ptr2, _ptr3) \ 1218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ \ 1219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!_ptr1 || !_ptr2 || !_ptr3){ \ 1220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorBadParameter; \ 1221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; \ 1222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } \ 1223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_CONF_SET_ERROR_BAIL(_eError, _eCode)\ 1226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ \ 1227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin _eError = _eCode; \ 1228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; \ 1229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 1230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_PARSER_CHECKLIMIT(_total, _actual, _step) /* \ 1233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(((_actual + _step) >> 3) >= _total){ \ 1234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("_total %d _actual %d\n",_total,((_actual + _step)>>3)); \ 1235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin eError = OMX_ErrorStreamCorrupt; \ 1236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin goto EXIT; \ 1237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin }*/ 1238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*sMutex*/ 1240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PTHREAD_MUTEX_INIT(_mutex_) \ 1241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!((_mutex_).bInitialized)) { \ 1242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_init (&((_mutex_).mutex), NULL); \ 1243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_init (&(_mutex_).condition, NULL);\ 1244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).bInitialized = OMX_TRUE; \ 1245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).bSignaled = OMX_FALSE; \ 1246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).bEnabled = OMX_FALSE; \ 1247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PTHREAD_MUTEX_DESTROY(_mutex_) \ 1250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((_mutex_).bInitialized) { \ 1251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_mutex_destroy (&((_mutex_).mutex)); \ 1252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin pthread_cond_destroy (&(_mutex_).condition); \ 1253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).bInitialized = OMX_FALSE; \ 1254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).bEnabled = OMX_FALSE; \ 1255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PTHREAD_MUTEX_LOCK(_mutex_) \ 1258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_MUTEX_INIT ((_mutex_)); \ 1259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).bSignaled = OMX_FALSE; \ 1260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).nErrorExist = 0; \ 1261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).nErrorExist = pthread_mutex_lock (&(_mutex_).mutex); 1262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PTHREAD_MUTEX_UNLOCK(_mutex_) \ 1264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_MUTEX_INIT ((_mutex_)); \ 1265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).nErrorExist = 0; \ 1266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).nErrorExist = pthread_mutex_unlock (&(_mutex_).mutex); 1267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PTHREAD_MUTEX_TRYLOCK(_mutex_) \ 1269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_MUTEX_INIT ((_mutex_)); \ 1270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).nErrorExist = 0; \ 1271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).nErrorExist = pthread_mutex_trylock (&(_mutex_).mutex); 1272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PTHREAD_MUTEX_SIGNAL(_mutex_) \ 1274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_MUTEX_INIT ((_mutex_)); \ 1275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*if( (_mutex_).bEnabled) { */ \ 1276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).nErrorExist = 0; \ 1277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).nErrorExist = pthread_cond_signal (&(_mutex_).condition); \ 1278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*(__mutex.bSignaled = OMX_TRUE;*/ \ 1279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*}*/ 1280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PTHREAD_MUTEX_WAIT(_mutex_) \ 1282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_MUTEX_INIT ((_mutex_)); \ 1283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).bEnabled = OMX_TRUE; \ 1284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*if (!(__mutex.bSignaled){ */\ 1285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).nErrorExist = 0; \ 1286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).nErrorExist = pthread_cond_wait (&(_mutex_).condition, &(_mutex_).mutex); \ 1287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).bSignaled = OMX_FALSE; \ 1288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_mutex_).bEnabled = OMX_FALSE; \ 1289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /*}*/ 1290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PTHREAD_SEMAPHORE_INIT(_semaphore_) \ 1292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!((_semaphore_).bInitialized)) { \ 1293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sem_init (&((_semaphore_).sSemaphore), 0, 0); \ 1294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_semaphore_).bInitialized = OMX_TRUE; \ 1295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_semaphore_).bEnabled = OMX_FALSE; \ 1296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_semaphore_).bSignaled = OMX_FALSE; \ 1297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PTHREAD_SEMAPHORE_DESTROY(_semaphore_) \ 1300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((_semaphore_).bInitialized) { \ 1301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sem_destroy (&(_semaphore_).sSemaphore); \ 1302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_semaphore_).bInitialized = OMX_FALSE; \ 1303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_semaphore_).bSignaled = OMX_FALSE; \ 1304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_semaphore_).bEnabled = OMX_FALSE; \ 1305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* 1307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("post signal %d Enable %d\n",(_semaphore_).bSignaled,(_semaphore_).bEnabled); \ 1308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin \ 1309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("post out signal %d Enable %d\n",(_semaphore_).bSignaled,(_semaphore_).bEnabled); \ 1310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin \ 1311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("wait out signal %d Enable %d\n",(_semaphore_).bSignaled,(_semaphore_).bEnabled); \ 1312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("wait signal %d Enable %d\n",(_semaphore_).bSignaled,(_semaphore_).bEnabled); \ 1313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 1315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PTHREAD_SEMAPHORE_POST(_semaphore_) \ 1316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_SEMAPHORE_INIT ((_semaphore_)); \ 1317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if((_semaphore_).bEnabled) { \ 1318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sem_post (&(_semaphore_).sSemaphore); \ 1319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_semaphore_).bEnabled = OMX_FALSE; \ 1320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } \ 1321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { \ 1322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_semaphore_).bSignaled = OMX_TRUE; \ 1323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_semaphore_).bEnabled = OMX_FALSE; \ 1324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_PTHREAD_SEMAPHORE_WAIT(_semaphore_) \ 1327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin VIDDEC_PTHREAD_SEMAPHORE_INIT ((_semaphore_)); \ 1328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if(!(_semaphore_).bSignaled) { \ 1329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_semaphore_).bEnabled = OMX_TRUE; \ 1330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sem_wait (&(_semaphore_).sSemaphore); \ 1331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } \ 1332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else { \ 1333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_semaphore_).bEnabled = OMX_FALSE; \ 1334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (_semaphore_).bSignaled = OMX_FALSE; \ 1335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 1336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_EXECUTETOIDLE \ 1338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (((pComponentPrivate->eState == OMX_StatePause) || \ 1339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (pComponentPrivate->eState == OMX_StateExecuting)) && \ 1340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (pComponentPrivate->eExecuteToIdle == OMX_StateIdle)) 1341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define VIDDEC_IDLETOEXECUTE \ 1343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (((pComponentPrivate->eState == OMX_StateIdle)) && \ 1344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (pComponentPrivate->eExecuteToIdle == OMX_StateExecuting)) 1345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 1347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_SPARKCHECK \ 1348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((pComponentPrivate->bIsSparkInput) && \ 1349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (pComponentPrivate->pInPortDef->format.video.eCompressionFormat == OMX_VIDEO_CodingUnused)) 1350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 1351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_SPARKCHECK (OMX_FALSE) 1352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* DEFINITIONS for parsing the config information & sequence header for WMV*/ 1356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_GetUnalignedDword( pb, dw ) \ 1357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin (dw) = ((OMX_U32) *(pb + 3) << 24) + \ 1358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_U32) *(pb + 2) << 16) + \ 1359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_U16) *(pb + 1) << 8) + *pb; 1360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_GetUnalignedDwordEx( pb, dw ) VIDDEC_GetUnalignedDword( pb, dw ); (pb) += sizeof(OMX_U32); 1362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_LoadDWORD( dw, p ) VIDDEC_GetUnalignedDwordEx( p, dw ) 1363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #ifndef VIDDEC_MAKEFOURCC 1364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_MAKEFOURCC(ch0, ch1, ch2, ch3) \ 1365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_U32)(OMX_U8)(ch0) | ((OMX_U32)(OMX_U8)(ch1) << 8) | \ 1366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin ((OMX_U32)(OMX_U8)(ch2) << 16) | ((OMX_U32)(OMX_U8)(ch3) << 24 )) 1367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define VIDDEC_FOURCC(ch0, ch1, ch2, ch3) VIDDEC_MAKEFOURCC(ch0, ch1, ch2, ch3) 1369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #endif 1370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define FOURCC_WMV3 VIDDEC_FOURCC('W','M','V','3') 1372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define FOURCC_WMV2 VIDDEC_FOURCC('W','M','V','2') 1373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define FOURCC_WMV1 VIDDEC_FOURCC('W','M','V','1') 1374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #define FOURCC_WVC1 VIDDEC_FOURCC('W','V','C','1') 1375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*-------function prototypes -------------------------------------------------*/ 1378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef OMX_ERRORTYPE (*VIDDEC_fpo)(OMX_HANDLETYPE); 1379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE OMX_ComponentInit (OMX_HANDLETYPE hComponent); 1381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_Start_ComponentThread (OMX_HANDLETYPE pHandle); 1382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_Stop_ComponentThread(OMX_HANDLETYPE pComponent); 1383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_HandleCommand (OMX_HANDLETYPE pHandle, OMX_U32 nParam1); 1384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_DisablePort (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_U32 nParam1); 1385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_EnablePort (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_U32 nParam1); 1386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_HandleDataBuf_FromApp (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 1387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_HandleDataBuf_FromDsp (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 1388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_HandleFreeDataBuf (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 1389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_LCML_Callback (TUsnCodecEvent event, void* argsCb [10]); 1390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_HandleFreeOutputBufferFromApp (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 1391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_InitDSP_Mpeg4Dec (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 1392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_InitDSP_Mpeg2Dec (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 1393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_InitDSP_H264Dec (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 1394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_InitDSP_WMVDec (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 1395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_SPARK_CODE 1396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_InitDSP_SparkDec (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 1397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_ReturnBuffers (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_U32 nParam1, OMX_BOOL bRetDSP); 1399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_HandleCommandMarkBuffer(VIDDEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1, OMX_PTR pCmdData); 1400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_HandleCommandFlush(VIDDEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1, OMX_BOOL bPass); 1401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_Load_Defaults (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_S32 nPassing); 1402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U32 VIDDEC_GetRMFrecuency(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 1403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_Handle_InvalidState (VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 1404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_CircBuf_Init(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, VIDDEC_CBUFFER_TYPE nTypeIndex, VIDDEC_PORT_INDEX nPortIndex); 1406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_CircBuf_Flush(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, VIDDEC_CBUFFER_TYPE nTypeIndex, VIDDEC_PORT_INDEX nPortIndex); 1407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_CircBuf_DeInit(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, VIDDEC_CBUFFER_TYPE nTypeIndex, VIDDEC_PORT_INDEX nPortIndex); 1408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_CircBuf_Add(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, VIDDEC_CBUFFER_TYPE nTypeIndex, VIDDEC_PORT_INDEX nPortIndex, OMX_PTR pElement); 1409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_CircBuf_Remove(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, VIDDEC_CBUFFER_TYPE nTypeIndex, VIDDEC_PORT_INDEX nPortIndex, OMX_PTR* pElement); 1410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_CircBuf_Count(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, VIDDEC_CBUFFER_TYPE nTypeIndex, VIDDEC_PORT_INDEX nPortIndex, OMX_U8* pCount); 1411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U8 VIDDEC_CircBuf_GetHead(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, VIDDEC_CBUFFER_TYPE nTypeIndex, VIDDEC_PORT_INDEX nPortIndex); 1412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_Propagate_Mark(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_BUFFERHEADERTYPE *pBuffHead); 1413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_Queue_Init(VIDDEC_QUEUE_TYPE *queue, VIDDEC_QUEUE_TYPES type); 1414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_Queue_Flush(VIDDEC_QUEUE_TYPE *queue); 1415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_Queue_Add(VIDDEC_QUEUE_TYPE *queue, OMX_PTR pElement, VIDDEC_QUEUE_TYPES type); 1416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_Queue_Remove(VIDDEC_QUEUE_TYPE *queue, OMX_PTR pElement, VIDDEC_QUEUE_TYPES type); 1417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_Queue_Replace_Tail(VIDDEC_QUEUE_TYPE *queue, OMX_PTR pElement, VIDDEC_QUEUE_TYPES type); 1418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_Queue_Get_Tail(VIDDEC_QUEUE_TYPE *queue, OMX_PTR pElement,VIDDEC_QUEUE_TYPES type); 1419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_Queue_Free(VIDDEC_QUEUE_TYPE *queue); 1420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED 1421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid VIDDEC_ResourceManagerCallback(RMPROXY_COMMANDDATATYPE cbData); 1422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef ANDROID 1424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_SaveBuffer(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_BUFFERHEADERTYPE* pBuffHead); 1425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_CopyBuffer(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_BUFFERHEADERTYPE* pBuffHead); 1426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_UnloadCodec(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 1428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_LoadCodec(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 1429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_Set_SN_StreamType(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 1430b65f253fdc60f6208a54911bee793d225f23cdf8James DongOMX_ERRORTYPE VIDDEC_SetMpeg4_Parameters(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 1431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef VIDDEC_ACTIVATEPARSER 1433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_ParseVideo_WMV9_VC1( OMX_S32* nWidth, OMX_S32* nHeight, OMX_BUFFERHEADERTYPE *pBuffHead); 1434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_ParseVideo_WMV9_RCV( OMX_S32* nWidth, OMX_S32* nHeight, OMX_BUFFERHEADERTYPE *pBuffHead); 1435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_ParseHeader(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_BUFFERHEADERTYPE *pBuffHead); 1436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_ParseVideo_MPEG4( OMX_S32* nWidth, OMX_S32* nHeight, OMX_BUFFERHEADERTYPE *pBuffHead); 1437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_ParseVideo_H264(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, 1438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffHead,OMX_S32* nWidth, 1439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin OMX_S32* nHeight, OMX_S32* nCropWidth, OMX_S32* nCropHeight, OMX_U32 nType); 1440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE VIDDEC_ParseVideo_MPEG2( OMX_S32* nWidth, OMX_S32* nHeight, OMX_BUFFERHEADERTYPE *pBuffHead); 1441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U32 VIDDEC_GetBits(OMX_U32* nPosition, OMX_U8 nBits, OMX_U8* pBuffer, OMX_BOOL bIcreasePosition); 1442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_S32 VIDDEC_UVLC_dec(OMX_U32 *nPosition, OMX_U8* pBuffer); 14431348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny WongOMX_ERRORTYPE AddStateTransition(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate); 14441348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny WongOMX_ERRORTYPE RemoveStateTransition(VIDDEC_COMPONENT_PRIVATE* pComponentPrivate, OMX_BOOL bEnableSignal); 1445b65f253fdc60f6208a54911bee793d225f23cdf8James DongOMX_ERRORTYPE IncrementCount (OMX_U8 * pCounter, pthread_mutex_t *pMutex); 1446b65f253fdc60f6208a54911bee793d225f23cdf8James DongOMX_ERRORTYPE DecrementCount (OMX_U8 * pCounter, pthread_mutex_t *pMutex); 14471348a0db59d75e00b3e0f33678d06f6671a6d4d6Benny Wong 1448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 1450