1b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
2b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*
3b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Copyright (C) Texas Instruments - http://www.ti.com/
4b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
5b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This library is free software; you can redistribute it and/or
6b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * modify it under the terms of the GNU Lesser General Public
7b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * License as published by the Free Software Foundation; either
8b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * version 2.1 of the License, or (at your option) any later version.
9b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
10b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
11b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This library is distributed in the hope that it will be useful,
12b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * but WITHOUT ANY WARRANTY; without even the implied warranty of
13b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Lesser General Public License for more details.
15b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
16b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *
17b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * You should have received a copy of the GNU Lesser General Public
18b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * License along with this library; if not, write to the Free Software
19b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
20b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
21b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef OMX_VPP_UTILS__H
22b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_VPP_UTILS__H
23b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
24b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Component.h>
25b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "LCML_DspCodec.h"
26b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
27b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <ResourceManagerProxyAPI.h>
28b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
29b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_TI_Common.h>
30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "perf.h"
33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
35b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define KHRONOS_1_2
36b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*Linked List */
38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct Node {
40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    struct Node *pNextNode;
41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    void *pValue;
42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} Node;
43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct LinkedList {
45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    Node *pRoot;
46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}   LinkedList;
47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinLinkedList AllocList;
49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_Create(LinkedList *LinkedList);
51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_AddElement(LinkedList *LinkedList, void *pValue);
52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_FreeElement(LinkedList *LinkedList, void *pValue);
53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_FreeAll(LinkedList *LinkedList);
54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_DisplayAll(LinkedList *LinkedList);
55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_Destroy(LinkedList *LinkedList);
56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*
58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *     M A C R O S
59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* configuration numbers */
61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*difine for Khronos 1.1*/
63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define KHRONOS_1_1
64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#define VPP_DEBUG*/
66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define VPP_MAJOR_VER 0x01
68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#ifdef  KHRONOS_1_1
69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define VPP_MINOR_VER 0x01
70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else*/
71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define VPP_MINOR_VER 0x00
72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*#endif*/
73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define VPP_REVISION  0x00
74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define VPP_STEP      0x00
75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NORMAL_BUFFER      0
77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_NOPORT         0xFFFFFFFE
78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NUM_OF_PORTS       4
79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NUM_OF_VPP_BUFFERS (4)
81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define MAX_VPP_BUFFERS    (4)
82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NUM_OF_VPP_PORTS   (4)
83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define MIN_NUM_OF_VPP_BUFFERS 1
84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define DEFAULT_WIDTH      (176)
86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define DEFAULT_HEIGHT     (144)
87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define VPP_ZERO                0
89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define VPP_DSPSTOP          0x01
90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define VPP_BUFFERBACK    0x02
91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define VPP_IDLEREADY      ( VPP_DSPSTOP | VPP_BUFFERBACK )
92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define DSP_MMU_FAULT_HANDLING
94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE
96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define USN_DLL_NAME "/windows/usn.dll64P"
97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define VPP_NODE_DLL "/windows/vpp_sn.dll64P"
98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define USN_DLL_NAME "usn.dll64P"
100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define VPP_NODE_DLL "vpp_sn.dll64P"
101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE
104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin  #include <oaf_debug.h> /* defines VPP_DPRINT*/
105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    #ifdef  VPP_DEBUG
107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        #define VPP_DPRINT(...) fprintf(stderr,__VA_ARGS__)
108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    #else
109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        #define VPP_DPRINT(...)
110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    #endif
111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_INIT_STRUCT(_s_, _name_)  \
114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ \
115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    memset((_s_), 0x0, sizeof(_name_));  \
116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    (_s_)->nSize = sizeof(_name_);    \
117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    (_s_)->nVersion.s.nVersionMajor = VPP_MAJOR_VER;  \
118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    (_s_)->nVersion.s.nVersionMinor = VPP_MINOR_VER;  \
119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    (_s_)->nVersion.s.nRevision = VPP_REVISION;    \
120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    (_s_)->nVersion.s.nStep = VPP_STEP; \
121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_CHECK_CMD(_ptr1, _ptr2, _ptr3)  \
124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{            \
125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(!_ptr1 || !_ptr2 || !_ptr3){    \
126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        eError = OMX_ErrorBadParameter;    \
127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;      \
128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }            \
129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_SET_ERROR_BAIL(_eError, _eCode)\
132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{            \
133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    _eError = _eCode;        \
134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    goto EXIT;      \
135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_MALLOC(_pStruct_, _size_)   \
138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    _pStruct_ = malloc(_size_);  \
139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if(_pStruct_ == NULL){  \
140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        eError = OMX_ErrorInsufficientResources;    \
141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        goto EXIT;  \
142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } \
143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    memset(_pStruct_, 0, _size_);\
144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    LinkedList_AddElement(&AllocList, _pStruct_);
145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_FREE(_ptr)   \
147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{                     \
148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (_ptr != NULL) { \
149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        LinkedList_FreeElement(&AllocList, _ptr);\
150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        _ptr = NULL; \
151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }                \
152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_FREEALL()   \
155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{                     \
156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    LinkedList_FreeAll(&AllocList);\
157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**********************************************************************
161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *    GPP Internal data type
162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **********************************************************************
163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef enum OMX_VPP_PORT_NUMBER_TYPE {
166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_VPP_INPUT_PORT         = 0,
167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_VPP_INPUT_OVERLAY_PORT = 1,
168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_VPP_RGB_OUTPUT_PORT    = 2,
169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_VPP_YUV_OUTPUT_PORT    = 3,
170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_VPP_MAXPORT_NUM = 3
171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} OMX_VPP_PORT_NUMBER_TYPE;
172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef enum {
174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    IUALG_CMD_SETCOEFF = 100,
175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    IUALG_CMD_SETIO
176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}IUALG_VppCmd;
177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef enum VPP_BUFFER_OWNER
179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    VPP_BUFFER_CLIENT = 0x0,
181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    VPP_BUFFER_COMPONENT_IN,
182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    VPP_BUFFER_COMPONENT_OUT,
183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    VPP_BUFFER_DSP,
184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    VPP_BUFFER_TUNNEL_COMPONENT
185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} VPP_BUFFER_OWNER;
186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef enum OMX_INDEXVPPTYPE
187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef KHRONOS_1_2
189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomSetZoomFactor = (OMX_IndexVendorStartUnused + 1),
190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomSetZoomFactor = (OMX_IndexIndexVendorStartUnused + 1),
192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomSetZoomLimit,
194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomSetZoomSpeed,
195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomSetZoomXoffsetFromCenter16,
196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomSetZoomYoffsetFromCenter16,
197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomSetFrostedGlassOvly,
198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomVideoColorRange,
199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomRGB4ColorFormat,
200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomConfigInputSize
201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} OMX_INDEXVPPTYPE;
202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef enum VGPOP_IORange {
205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    VGPOP_IN_16_235_OUT_16_235,     /*limited range to limited range*/
206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    VGPOP_IN_00_255_OUT_00_255,      /*full range to full range*/
207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    VGPOP_IN_00_255_OUT_16_235,         /*full range to limited range*/
208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    VGPOP_IN_16_235_OUT_00_255          /*limited range to full range*/
209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} VGPOP_IORange;
210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Parameter buffer which needs to be passed to DSP */
213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct GPPToVPPInputFrameStatus {
215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* INPUT FRAME */
217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* input size*/
219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulInWidth;          /*  picture buffer width          */
220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulInHeight;         /*  picture buffer height         */
221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulCInOffset;        /* offset of the C frame in the   *
222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    * buffer (equal to zero if there *
223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    * is no C frame)                 */
224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /* PROCESSING PARAMETERS */
226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*    crop           */
228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulInXstart;          /*  Hin active start             */
229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulInXsize;           /*  Hin active width             */
230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulInYstart;          /*  Vin active start             */
231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulInYsize;           /* Vin active height             */
232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*   zoom            */
234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulZoomFactor;        /*zooming ratio (/1024)          */
235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulZoomLimit;         /* zooming ratio limit (/1024)   */
236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulZoomSpeed;         /* speed of ratio change         */
237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*  stabilisation             */
239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulXoffsetFromCenter16;    /*  add 1/16/th accuracy offset */
240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulYoffsetFromCenter16;    /* add 1/16/th accuracy offset  */
241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*  gain and contrast             */
243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulContrastType;      /*    Contrast method            */
244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulVideoGain;         /* gain on video (Y and C)       */
245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*  effect             */
247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulFrostedGlassOvly;  /*  Frosted glass effect overlay          */
248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulLightChroma;       /*  Light chrominance process             */
249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulLockedRatio;       /*  keep H/V ratio                        */
250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulMirror;            /*  to mirror the picture                 */
251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulRGBRotation;          /*  0, 90, 180, 270 deg.                  */
252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulYUVRotation;          /*  0, 90, 180, 270 deg.                  */
253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef _55_
255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32     eIORange;              /*  Video Color Range Conversion */
256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32     ulDithering;           /*  dithering                             */
257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32     ulOutPitch;                 /* output pitch (in bytes)*/
258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32     ulAlphaRGB;                 /* Global A value of an ARGB output*/
259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}GPPToVPPInputFrameStatus;
262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* OUTPPUT BUFFER */
265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct GPPToVPPOutputFrameStatus {
267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulOutWidth;          /*  RGB/YUV picture buffer width           */
269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulOutHeight;         /*  RGB/YUV picture buffer height          */
270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32      ulCOutOffset;        /*  Offset of the C frame in the buffer (equal to 0 if there is no C frame)             */
271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}GPPToVPPOutputFrameStatus;
273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ALG CONTROL*/
275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct VPPIOConf {
277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*   Optionnal input             */
279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 overlayInputImage;
280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*  Optionnal output             */
281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 RGBOutputImage;
282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 YUVOutputImage;
283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} VPPIOConf;
285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* UUID structure for DSP/BIOS Bridge nodes. COMMON_TI_UUID*/
287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic const struct DSP_UUID COMMON_TI_UUID = {
288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        0x79A3C8B3, 0x95F2, 0x403F, 0x9A, 0x4B, {
289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        0xCF, 0x80, 0x57, 0x73, 0x05, 0x41
290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin};
292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*===================================================================*/
296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/**
297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * OMX_VPP_PORT_NUMBER_TYPE enumeration for ports supported by
298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * this component.
299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */
300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*===================================================================*/
301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct VPP_OVERLAY {
302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8  *iRBuff ;
303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8  *iGBuff;
304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8  *iBBuff ;
305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8  *iOvlyConvBufPtr ;
306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8  iRKey;
307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8  iGKey;
308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8  iBKey;
309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8  iAlign ;
310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}VPP_OVERLAY;
311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* Component buffer */
313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct OMX_VPP_COMPONENT_BUFFER {
314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE  *pBufHeader;
315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32                   nIndex;
316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BOOL                bSelfAllocated;
317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BOOL                bHolding;
318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    VPP_BUFFER_OWNER  eBufferOwner;
319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8                      *pBufferStart;
320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} OMX_VPP_COMPONENT_BUFFER;
321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct VPP_BUFFERDATA_PROPAGATION {
323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 flag;
324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 buffer_idYUV;
325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 buffer_idRGB;
326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE hMarkTargetComponent;
327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PTR pMarkData;
328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 nTickCount;
329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_TICKS nTimeStamp;
330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} VPP_BUFFERDATA_PROPAGATION;
331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* Component Port Context */
333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct VPP_PORT_TYPE
334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE               hTunnelComponent;
336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32                      nTunnelPort;
337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERSUPPLIERTYPE       eSupplierSetting;
338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERSUPPLIERTYPE       eSupplierPreference;
339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32                      nPortIndex;
340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32                      nBufferCount;
341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_VPP_COMPONENT_BUFFER     pVPPBufHeader[NUM_OF_VPP_BUFFERS];
342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    VPP_BUFFERDATA_PROPAGATION sBufferDataProp[NUM_OF_VPP_BUFFERS];
343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PARAM_PORTDEFINITIONTYPE pPortDef;
344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BOOL                     nBufSupplier;
345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32                         nReturnedBufferCount; /*For tunneling*/
346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_MIRRORTYPE          eMirror;
347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} VPP_PORT_TYPE;
348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct VPP_COMPONENT_PRIVATE
350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Array of pointers to BUFFERHEADERTYPE structues
352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin       This pBufHeader[INPUT_PORT] will point to all the
353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin       BUFFERHEADERTYPE structures related to input port,
354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin       not just one structure. Same is for output port
355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin       also. */
356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    VPP_PORT_TYPE                   sCompPorts[NUM_OF_VPP_PORTS];
359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_CALLBACKTYPE                cbInfo;
361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Handle for use with async callbacks */
362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** This will contain info like how many buffers
364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        are there for input/output ports, their size etc, but not
365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        BUFFERHEADERTYPE POINTERS. */
366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PORT_PARAM_TYPE                 *pPortParamTypeImage;
368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PORT_PARAM_TYPE                 *pPortParamTypeAudio;
369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PORT_PARAM_TYPE                 *pPortParamTypeVideo;
370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PORT_PARAM_TYPE                 *pPortParamTypeOthers;
371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_VIDEO_PARAM_PORTFORMATTYPE  *pInPortFormat;
373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_VIDEO_PARAM_PORTFORMATTYPE  *pInPortOverlayFormat;
374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_VIDEO_PARAM_PORTFORMATTYPE  *pOutPortRGBFormat;
375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_VIDEO_PARAM_PORTFORMATTYPE  *pOutPortYUVFormat;
376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PRIORITYMGMTTYPE            *pPriorityMgmt;
377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** This is component handle */
379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_COMPONENTTYPE               *pHandle;
380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Current state of this component */
382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_STATETYPE   curState;
383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** The state to go **/
385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_STATETYPE   toState;
386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_STRING      cComponentName;
388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_VERSIONTYPE ComponentVersion;
389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_VERSIONTYPE SpecVersion;
390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** The component thread handle */
392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    pthread_t       ComponentThread;
393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    LCML_DSP_INTERFACE* pLCML;
394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	void * pDllHandle;
395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** The pipes for sending commands to the thread */
397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int            cmdPipe[2];
398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int            nCmdDataPipe[2];
399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** The pipes for sending buffers to the thread */
400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*The Pipe to send empty output buffers to component*/
402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int            nFree_oPipe[2];
403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /*The pipe for sending Filled Input buffers to component*/
404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int            nFilled_iPipe[2];
405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    /** Set to indicate component is stopping */
407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32        bIsStopping;
408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32        bIsEOFSent;
410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32        lcml_compID;
411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32        NumofOutputPort;
412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32        IsYUVdataout;
413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32         IsRGBdataout;
414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32        IsOverlay;
415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_CONFIG_RECTTYPE     *pCrop;
416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8         ExeToIdleFlag;  /* StateCheck */
417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE pLcmlHandle;
418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    VPP_OVERLAY    *overlay;
419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8         *RGBbuffer ;
420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8         *colorKey;
421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    PERF_OBJHANDLE pPERF, pPERFcomp;
424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32        lcml_nCntIp;
427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32        lcml_nCntOpReceived;
428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32         nInputFrame; /*Buffer data propagation*/
429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32         nOverlayFrame; /*Buffer data propagation*/
430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32        nInYUVBufferCount; /*Buffer data propagation*/
431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32         nInRGBBufferCount; /*Buffer data propagation*/
432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32        nOutYUVBufferCount; /*Buffer data propagation*/
433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32        nOutRGBBufferCount; /*Buffer data propagation*/
434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PTR        pMarkData;                   /*Buffer data propagation*/
435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE hMarkTargetComponent; /*Buffer data propagation*/
436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    VPPIOConf     *tVPPIOConf;
437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GPPToVPPInputFrameStatus  *pIpFrameStatus;
438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GPPToVPPOutputFrameStatus *pOpYUVFrameStatus;
439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    GPPToVPPOutputFrameStatus *pOpRGBFrameStatus;
440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_CONFIG_SCALEFACTORTYPE      sScale;
441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8         CodecAlgCtrlAck;
442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BOOL	   bFlushComplete;
443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	OMX_U32		   nFlushPort;
444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BOOL       bDisable;
445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BOOL       bDisableIncomplete[NUM_OF_VPP_PORTS];
446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    RMPROXY_CALLBACKTYPE rmproxyCallback;
448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BOOL bPreempted;
450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	pthread_mutex_t buf_mutex;
453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	pthread_mutex_t vpp_mutex;
454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	pthread_cond_t  stop_cond;
455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef KHRONOS_1_1
457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PARAM_COMPONENTROLETYPE componentRole;
458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} VPP_COMPONENT_PRIVATE;
460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* structures for custom commands */
462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct _VPP_CUSTOM_PARAM_DEFINITION
463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U8 cCustomParamName[128];
465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_INDEXTYPE nCustomParamIndex;
466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} VPP_CUSTOM_PARAM_DEFINITION;
467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* Function ProtoType */
469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_Fill_LCMLInitParams(OMX_HANDLETYPE pHandle, OMX_U16 arr[], LCML_DSP *plcml_Init);
471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_GetBufferDirection(OMX_BUFFERHEADERTYPE *pBufHeader, OMX_DIRTYPE *eDir, OMX_U32 Index);
473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_LCML_Callback (TUsnCodecEvent event,void * args [10]);
475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_HandleCommand (VPP_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1);
477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_HandleDataBuf_FromApp(OMX_BUFFERHEADERTYPE *pBufHeader, VPP_COMPONENT_PRIVATE *pComponentPrivate);
479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_IsValidBuffer(OMX_BUFFERHEADERTYPE *pBufHeader,
482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            VPP_COMPONENT_PRIVATE *pComponentPrivate,
483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_U32 pIndex,
484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                            OMX_U32 *pCount);
485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_GetPortDefFromBufHeader(OMX_BUFFERHEADERTYPE *pBufHeader, OMX_PARAM_PORTDEFINITIONTYPE **portDef );
488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_HandleDataBuf_FromLCML(VPP_COMPONENT_PRIVATE* pComponentPrivate);
490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_HANDLETYPE VPP_GetLCMLHandle(VPP_COMPONENT_PRIVATE *pComponentPrivate);
492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_GetCorresponding_LCMLHeader(VPP_COMPONENT_PRIVATE *pComponentPrivate,
494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                              OMX_U8 *pBuffer,
495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                              OMX_DIRTYPE eDir,
496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                              OMX_VPP_COMPONENT_BUFFER **ppCmpBuf,
497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                              OMX_U32 Index);
498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_Free_ComponentResources(OMX_HANDLETYPE pComponent);
500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE ComputeTiOverlayImgFormat (VPP_COMPONENT_PRIVATE *pComponentPrivate,
502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                         OMX_U8* aPictureArray,
503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                         OMX_U8* aOutImagePtr,
504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                         OMX_U8* aTransparencyKey);
505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_Start_ComponentThread(OMX_HANDLETYPE pHandle);
507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_Stop_ComponentThread(OMX_HANDLETYPE pHandle);
509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_DisablePort (VPP_COMPONENT_PRIVATE* pComponentPrivate, OMX_U32 nParam1);
511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_EnablePort (VPP_COMPONENT_PRIVATE* pComponentPrivate, OMX_U32 nParam1);
513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_HandleCommandFlush (VPP_COMPONENT_PRIVATE* pComponentPrivate, OMX_U32 nParam1, OMX_BOOL return_event);
515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_Process_FilledInBuf(VPP_COMPONENT_PRIVATE* pComponentPrivate);
517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_Process_FilledOutBuf(VPP_COMPONENT_PRIVATE* pComponentPrivate,
519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                       OMX_VPP_COMPONENT_BUFFER *pComponentBuf);
520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_Process_FreeInBuf(VPP_COMPONENT_PRIVATE* pComponentPrivate,
522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin                                    OMX_VPP_COMPONENT_BUFFER *pComponentBuf);
523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_Process_FreeOutBuf(VPP_COMPONENT_PRIVATE* pComponentPrivate);
525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE VPP_Initialize_PrivateStruct(VPP_COMPONENT_PRIVATE *pComponentPrivate);
527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_BOOL IsTIOMXComponent(OMX_HANDLETYPE hComp);
529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid VPP_InitBufferDataPropagation(VPP_COMPONENT_PRIVATE * pComponentPrivate, OMX_U32 nPortIndex);
531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
533