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