1fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
2fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*
3fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Copyright (C) Texas Instruments - http://www.ti.com/
4fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
5fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is free software; you can redistribute it and/or
6fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * modify it under the terms of the GNU Lesser General Public
7fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License as published by the Free Software Foundation; either
8fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * version 2.1 of the License, or (at your option) any later version.
9fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
10fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
11fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is distributed in the hope that it will be useful,
12fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * but WITHOUT ANY WARRANTY; without even the implied warranty of
13fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Lesser General Public License for more details.
15fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
16fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
17fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * You should have received a copy of the GNU Lesser General Public
18fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License along with this library; if not, write to the Free Software
19fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
20fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
21fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* =============================================================================
22fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*             Texas Instruments OMAP(TM) Platform Software
23fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*  (c) Copyright Texas Instruments, Incorporated.  All Rights Reserved.
24fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
25fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*  Use of this software is controlled by the terms and conditions found
26fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*  in the license agreement under which this software has been supplied.
27fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* ============================================================================ */
28fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
29fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @file OMX_JpegDec_Utils.h
30fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
31fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin** This is a header file for a JPEG decoder.
32fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
33fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* ================================================================================
34fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
35fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
36fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef OMX_JPEGDEC_UTILS__H
37fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_JPEGDEC_UTILS__H
38fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
39fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Component.h>
40fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_IVCommon.h>
41fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "LCML_DspCodec.h"
42fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "LCML_Types.h"
43fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "LCML_CodecInterface.h"
44fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <pthread.h>
45fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Core.h>
46fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Types.h>
47fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Image.h>
48fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <sys/time.h>
49fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdio.h>
50fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <errno.h>
51b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#include <OMX_TI_Common.h>
52b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#include <OMX_TI_Debug.h>
53b65f253fdc60f6208a54911bee793d225f23cdf8James Dong
54b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#include <utils/Log.h>
55b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#define LOG_TAG "OMX_JPGDEC"
56fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
57fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
58fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <ResourceManagerProxyAPI.h>
59fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
60fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
61fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
62fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #include "perf.h"
63fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
64fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
65fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
66fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef UNDER_CE
67fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #include <oaf_debug.h>
68fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
69fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
70fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
71fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGDEC1MPImage 1000000
72fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGDEC2MPImage 2000000
73fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGDEC3MPImage 3000000
74fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGDEC4MPImage 4000000
75fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
76fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define COMP_MAX_NAMESIZE 127
77fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*Linked List */
79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct Node {
81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    struct Node *pNextNode;
82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    void *pValue;
83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} Node;
84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct LinkedList {
86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    Node *pRoot;
87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}   LinkedList;
88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinLinkedList AllocList;
90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_Create(LinkedList *LinkedList);
92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_AddElement(LinkedList *LinkedList, void *pValue);
93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_FreeElement(LinkedList *LinkedList, void *pValue);
94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_FreeAll(LinkedList *LinkedList);
95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_DisplayAll(LinkedList *LinkedList);
96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_Destroy(LinkedList *LinkedList);
97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*
99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *     M A C R O S
100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define KHRONOS_1_1
102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_CONF_INIT_STRUCT(_s_, _name_)   \
104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    memset((_s_), 0x0, sizeof(_name_)); \
105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    (_s_)->nSize = sizeof(_name_);      \
106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    (_s_)->nVersion.s.nVersionMajor = 0x1;  \
107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    (_s_)->nVersion.s.nVersionMinor = 0x0;  \
108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    (_s_)->nVersion.s.nRevision = 0x0;      \
109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    (_s_)->nVersion.s.nStep = 0x0
110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_MEMCPY_CHECK(_s_)\
113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{\
114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (_s_ == NULL) { \
115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = OMX_ErrorInsufficientResources;  \
116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    goto EXIT;   \
117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    } \
118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_CHECK_PARAM(_ptr_)  \
120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{   \
121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(!_ptr_) {    \
122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = OMX_ErrorBadParameter; \
123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    goto EXIT; \
124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }   \
125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGDEC_OMX_CONF_CHECK_CMD(_ptr1, _ptr2, _ptr3)\
128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavindo {					       \
129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(!_ptr1 || !_ptr2 || !_ptr3){	       \
130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorBadParameter;        \
131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;                             \
132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }					       \
133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} while(0)
134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_MALLOC(_pStruct_, _size_)   \
136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    _pStruct_ = malloc(_size_);  \
137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(_pStruct_ == NULL){  \
138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorInsufficientResources;    \
139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;  \
140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    } \
141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    memset(_pStruct_, 0, _size_);\
142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    LinkedList_AddElement(&AllocList, _pStruct_);
143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_FREE(_ptr)   \
145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{                     \
146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (_ptr != NULL) { \
147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        LinkedList_FreeElement(&AllocList, _ptr);\
148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        _ptr = NULL; \
149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }                \
150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_FREEALL()   \
153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{                     \
154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        LinkedList_FreeAll(&AllocList);\
155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGDEC_WAIT_PORT_POPULATION(_pComponentPrivate_)    \
158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{                                                                           \
159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nRet = 0x0;                                                         \
160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    struct timespec  ts;                                                    \
161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    struct timeval sTime;                                                   \
162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    struct timezone sTimeZone;                                              \
163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                            \
164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_mutex_lock(&((_pComponentPrivate_)->mJpegDecMutex));     \
165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    gettimeofday(&sTime, &sTimeZone);                                       \
166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    ts.tv_sec = sTime.tv_sec;                                               \
167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    ts.tv_sec += JPEGDEC_TIMEOUT;                                      \
168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   \
169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nRet = pthread_cond_timedwait(&((_pComponentPrivate_)->sPortPopulated_cond),\
170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  &((_pComponentPrivate_)->mJpegDecMutex), \
171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  &ts);                                 \
172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (nRet == ETIMEDOUT)                                              \
173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {                                                                   \
174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_PRBUFFER4((_pComponentPrivate_)->dbg, "Wait for port to be Populated time-out"); \
175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pthread_mutex_unlock(&((_pComponentPrivate_)->mJpegDecMutex));\
176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        \
177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorPortUnresponsiveDuringAllocation;\
178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        \
179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;                                  \
180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }                                                                   \
181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   pthread_mutex_unlock(&((_pComponentPrivate_)->mJpegDecMutex));     \
182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGDEC_WAIT_PORT_UNPOPULATION(_pComponentPrivate_)    \
185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{                                                                           \
186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nRet = 0x0;                                                         \
187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    struct timespec  ts;                                                    \
188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    struct timeval sTime;                                                   \
189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    struct timezone sTimeZone;                                              \
190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                            \
191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_mutex_lock(&((_pComponentPrivate_)->mJpegDecMutex));     \
192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    gettimeofday(&sTime, &sTimeZone);                                       \
193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    ts.tv_sec = sTime.tv_sec;                                               \
194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    ts.tv_sec += JPEGDEC_TIMEOUT;                                      \
195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   \
196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nRet = pthread_cond_timedwait(&((_pComponentPrivate_)->sPortPopulated_cond),\
197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  &((_pComponentPrivate_)->mJpegDecMutex), \
198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  &ts);                                 \
199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (nRet == ETIMEDOUT)                                              \
200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {                                                                   \
201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        OMX_PRBUFFER4((_pComponentPrivate_)->dbg, "Wait for port to be Unpopulated time-out"); \
202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pthread_mutex_unlock(&((_pComponentPrivate_)->mJpegDecMutex));\
203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        \
204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorPortUnresponsiveDuringDeallocation;\
205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        \
206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;                                  \
207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }                                                                   \
208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   pthread_mutex_unlock(&((_pComponentPrivate_)->mJpegDecMutex));     \
209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGDEC_WAIT_FLUSH(_pComponentPrivate_)     \
212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{                                                                                           \
213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nRet = 0x0;                                                         \
214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    struct timespec  ts;                                                    \
215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    struct timeval sTime;                                                   \
216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    struct timezone sTimeZone;                                              \
217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                            \
218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_mutex_lock(&((_pComponentPrivate_)->mJpegDecFlushMutex));     \
219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    gettimeofday(&sTime, &sTimeZone);                                       \
220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    ts.tv_sec = sTime.tv_sec;                                               \
221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    ts.tv_sec += JPEGDEC_TIMEOUT;                                      \
222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                                   \
223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    nRet = pthread_cond_timedwait(&((_pComponentPrivate_)->sFlush_cond),\
224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  &((_pComponentPrivate_)->mJpegDecFlushMutex), \
225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  &ts);                                 \
226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (nRet == ETIMEDOUT)                                              \
227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {                                                                   \
228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_PRBUFFER4((_pComponentPrivate_)->dbg, "Wait for port to be Unpopulated time-out"); \
229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        pthread_mutex_unlock(&((_pComponentPrivate_)->mJpegDecFlushMutex));\
230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        _pComponentPrivate_->cbInfo.EventHandler(_pComponentPrivate_->pHandle,\
231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                               _pComponentPrivate_->pHandle->pApplicationPrivate,\
232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                               OMX_EventError,\
233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                               OMX_ErrorTimeout,\
234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                               OMX_TI_ErrorMajor,\
235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                               "TimeOut - whlie doing flush");\
236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        break;                                  \
237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }                                                                   \
238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin   pthread_mutex_unlock(&((_pComponentPrivate_)->mJpegDecFlushMutex));     \
239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_DPRINT_ADDRESS(_s_, _ptr_)  \
243b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    OMX_PRINT2(pComponentPrivate->dbg, "%s = %p\n", _s_, _ptr_);
244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_GET_RM_VALUE(_Res_, _RM_) \
247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{   \
248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (_Res_ <= JPEGDEC1MPImage){  \
249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        _RM_ = 25;  \
250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }   \
251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (_Res_ <= JPEGDEC2MPImage){ \
252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        _RM_ = 40;  \
253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }   \
254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (_Res_ <= JPEGDEC3MPImage){ \
255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        _RM_ = 55;  \
256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }   \
257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else if (_Res_ <= JPEGDEC4MPImage){ \
258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        _RM_ = 70;  \
259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }   \
260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else {  \
261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        _RM_ = 90;  \
262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }   \
263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        \
264b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    OMX_PRMGR2(pComponentPrivate->dbg, "Value in MHz requested to RM = %d\n",_RM_); \
265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NUM_OF_BUFFERS 4
269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NUM_OF_PORTS 2
270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_JPEGDEC_NUM_DLLS (3)
273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef UNDER_CE
274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #define JPEG_DEC_NODE_DLL "/windows/jpegdec_sn.dll64P"
275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #define JPEG_COMMON_DLL "/windows/usn.dll64P"
276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #define USN_DLL "/windows/usn.dll64P"
277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEG_DEC_NODE_DLL "jpegdec_sn.dll64P"
279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEG_COMMON_DLL "usn.dll64P"
280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define USN_DLL "usn.dll64P"
281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGDEC_SNTEST_STRMCNT       2
284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGDEC_SNTEST_INSTRMID      0
285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGDEC_SNTEST_OUTSTRMID     1
286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGDEC_SNTEST_MAX_HEIGHT    3000
287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGDEC_SNTEST_MAX_WIDTH     4000
288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGDEC_SNTEST_PROG_FLAG     1
289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGDEC_SNTEST_INBUFCNT      4
290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGDEC_SNTEST_OUTBUFCNT     4
291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_NOPORT 0xFFFFFFFE
293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGD_DSPSTOP       0x01
295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGD_BUFFERBACK    0x02
296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGD_IDLEREADY     ( JPEGD_DSPSTOP | JPEGD_BUFFERBACK )
297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define DSP_MMU_FAULT_HANDLING
299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_CustomCommandStopThread (OMX_CommandMax - 1)
301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef OMX_ERRORTYPE (*jpegdec_fpo)(OMX_HANDLETYPE);
303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic const struct DSP_UUID JPEGDSOCKET_TI_UUID = {
305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    0x5D9CB711, 0x4645, 0x11d6, 0xb0, 0xdc, {
306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        0x00, 0xc0, 0x4f, 0x1f, 0xc0, 0x36
307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin};
309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic const struct DSP_UUID USN_UUID = {
311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    0x79A3C8B3, 0x95F2, 0x403F, 0x9A, 0x4B, {
312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        0xCF, 0x80, 0x57, 0x73, 0x05, 0x41
313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin};
315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum JPEGDEC_COMP_PORT_TYPE
317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGDEC_INPUT_PORT = 0,
319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGDEC_OUTPUT_PORT
320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}JPEGDEC_COMP_PORT_TYPE;
321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum JPEGDEC_BUFFER_OWNER
324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGDEC_BUFFER_CLIENT = 0x0,
326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGDEC_BUFFER_COMPONENT_IN,
327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGDEC_BUFFER_COMPONENT_OUT,
328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGDEC_BUFFER_DSP,
329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGDEC_BUFFER_TUNNEL_COMPONENT
330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} JPEGDEC_BUFFER_OWNER;
331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct _JPEGDEC_BUFFERFLAG_TRACK {
333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 flag;
334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 buffer_id;
335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_HANDLETYPE hMarkTargetComponent;
336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PTR pMarkData;
337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} JPEGDEC_BUFFERFLAG_TRACK;
338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct _JPEGDEC_BUFFERMARK_TRACK {
340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 buffer_id;
341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_HANDLETYPE hMarkTargetComponent;
342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PTR pMarkData;
343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} JPEGDEC_BUFFERMARK_TRACK;
344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct JPEGDEC_BUFFER_PRIVATE {
346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BUFFERHEADERTYPE* pBufferHdr;
347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PTR pUALGParams;
348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGDEC_BUFFER_OWNER eBufferOwner;
349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bAllocbyComponent;
350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bReadFromPipe;
351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} JPEGDEC_BUFFER_PRIVATE;
352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct JPEGDEC_PORT_TYPE
354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_HANDLETYPE hTunnelComponent;
356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nTunnelPort;
357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGDEC_BUFFER_PRIVATE* pBufferPrivate[NUM_OF_BUFFERS];
358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGDEC_BUFFERFLAG_TRACK sBufferFlagTrack[NUM_OF_BUFFERS];
359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGDEC_BUFFERMARK_TRACK sBufferMarkTrack[NUM_OF_BUFFERS];
360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PARAM_PORTDEFINITIONTYPE* pPortDef;
361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PARAM_BUFFERSUPPLIERTYPE *pParamBufSupplier;
362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_PARAM_PORTFORMATTYPE* pPortFormat;
363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8 nBuffCount;
364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} JPEGDEC_PORT_TYPE;
365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_CUSTOM_IMAGE_DECODE_SECTION
367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nSize;
369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_VERSIONTYPE nVersion;
370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nMCURow;
371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nAU;
372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bSectionsInput;
373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bSectionsOutput;
374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}OMX_CUSTOM_IMAGE_DECODE_SECTION;
375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_CUSTOM_IMAGE_DECODE_SUBREGION
377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nSize;
379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_VERSIONTYPE nVersion;
380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nXOrg;         /*Sectional decoding: X origin*/
381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nYOrg;         /*Sectional decoding: Y origin*/
382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nXLength;      /*Sectional decoding: X lenght*/
383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nYLength;      /*Sectional decoding: Y lenght*/
384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}OMX_CUSTOM_IMAGE_DECODE_SUBREGION;
385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct OMX_CUSTOM_RESOLUTION
388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_U32 nWidth;
390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin	OMX_U32 nHeight;
391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} OMX_CUSTOM_RESOLUTION;
392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct JPEGDEC_COMPONENT_PRIVATE
395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
396fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGDEC_PORT_TYPE *pCompPort[NUM_OF_PORTS];
397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PORT_PARAM_TYPE* pPortParamType;
398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PRIORITYMGMTTYPE* pPriorityMgmt;
399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_CONFIG_SCALEFACTORTYPE* pScalePrivate;
400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PORT_PARAM_TYPE* pAudioPortType;
401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PORT_PARAM_TYPE* pVideoPortType;
402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PORT_PARAM_TYPE* pOtherPortType;
403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Handle for use with async callbacks */
404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_CALLBACKTYPE cbInfo;
405b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    /*Component name OMX.TI.JPEG.decoder*/
406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_STRING      cComponentName;
407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_VERSIONTYPE ComponentVersion;
408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_VERSIONTYPE SpecVersion;
409fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8 nSize;
411fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_STATETYPE nToState;
412fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8        ExeToIdleFlag;  /* StateCheck */
413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* This is component handle */
414fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_COMPONENTTYPE* pHandle;
415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Current state of this component */
416fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_STATETYPE nCurState;
417fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* The component thread handle */
418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_t pComponentThread;
419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* The pipes to maintain free buffers */
420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nFree_outBuf_Q[2];
421fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* The pipes to maintain input buffers sent from app*/
422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nFilled_inpBuf_Q[2];
423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* The pipes for sending buffers to the thread */
424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nCmdPipe[2];
425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nCmdDataPipe[2];
426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    void* pLcmlHandle;
427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    void * pDllHandle;
428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nProgressive;
429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nProfileID;
430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nIsLCMLActive;
431fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PTR pMarkData;
432fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_MARKTYPE *pMarkBuf;
433fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_HANDLETYPE hMarkTargetComponent;
434fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    LCML_DSP_INTERFACE* pLCML;
435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bFlushComplete;
436fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nInPortIn;
437fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nOutPortOut;
438fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bInportDisableComplete;
439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bOutportDisableComplete;
440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nMarkPort;
441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
442fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_mutex_t mJpegDecMutex;
443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_t  sStop_cond;
444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
445fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* Condition to signal threads PortTransition */
446fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_t sPortPopulated_cond;
447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /*Condition signal Flush & Mutex*/
448fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_mutex_t mJpegDecFlushMutex;
449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_t sFlush_cond;
450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1
452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PARAM_COMPONENTROLETYPE* pCompRole;
453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE* pQuantTable;
454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_PARAM_HUFFMANTTABLETYPE* pHuffmanTable;
455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nInputFrameWidth;
458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nOutputColorFormat;
459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    RMPROXY_CALLBACKTYPE rmproxyCallback;
462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bPreempted;
465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
467fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    PERF_OBJHANDLE pPERF, pPERFcomp;
468fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1
470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PARAM_COMPONENTROLETYPE componentRole;
471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_CUSTOM_IMAGE_DECODE_SECTION* pSectionDecode;
473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_CUSTOM_IMAGE_DECODE_SUBREGION* pSubRegionDecode;
474fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_CUSTOM_RESOLUTION sMaxResolution;
475fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    struct OMX_TI_Debug dbg;
476fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} JPEGDEC_COMPONENT_PRIVATE;
477fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
478fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct
480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    long int lInBufCount;       /*set it to zero*/
482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulInNumFrame;       /*set it to 1*/
483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulInFrameAlign;     /*set it to 4*/
484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulInFrameSize;      /*same as buffer size*/
485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulInDisplayWidth;   /*Width of the buffer into which the image is to be decoded*/
486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulInReserved0;      /*could be like thumbnail decode only*/
487b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    OMX_U32 ulInReserved1;      /*could be output format � later. Let�s fix it to 422 always now*/
488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulInReserved2;      /*could be post processing flag*/
489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulInReserved3;
490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulInResizeOption;   /*Rescale factor */
491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulnumAU;            /*Number of MCUs to decode; set as DEFAULT for full image decoding*/
492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 uldecodeHeader;     /*DECODE_AU = Decode at one shot; PARSE_HEADER = Parse header   */
493fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 maxHeight;          /*Maximum height of image that can be decoded*/
494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 maxWidth;           /*Maximum width of image that can be decoded*/
495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 maxScans;           /*Maximum number of frames in the input image*/
496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 uldataEndianness;   /*Endianness of input data*/
497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 forceChromaFormat;  /*Set to CHROMAFORMAT ; Set to DEFAULT to avoid resampling.*/
498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 RGB_Format;         /* Set the output RGB format */
499fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                    /* 0: BGR24                                 */
500fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                    /* 1: BGR32                                 */
501fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                                    /* 2: RGB16                                 */
502fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulNumMCURow;    /*Slide decoding: Set the numbers of lines to decode*/
503fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulXOrg;         /*Sectional decoding: X origin*/
504fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulYOrg;         /*Sectional decoding: Y origin*/
505fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulXLength;      /*Sectional decoding: X lenght*/
506fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulYLength;      /*Sectional decoding: Y lenght*/
507fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulAlphaRGB;   /* Alpha RGB value, it only takes values from 0 to 255 */
508fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}JPEGDEC_UAlgInBufParamStruct;
509fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
510fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct
511fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
512fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    long int lOutBufCount;      /*set it to zero*/
513fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulOutNumFrame;      /*set it to 1*/
514fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulOutFrameAlign;    /*set it to 4*/
515fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulOutFrameSize;     /*same as buffer size*/
516fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulOutImgFormat;     /*output format*/
517fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulOutImageWidth;    /*Width of the image*/
518fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulOutImageHeight;   /*Height of the image*/
519fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulOutnProgressiveFlag; /*nProgressive flag*/
520fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulOutErrorCode;     /*error code*/
521fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulOutReserved0;
522fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulOutReserved1;
523fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulOutReserved2;
524b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    OMX_U32 lastMCU;            /* 1-Decoded all MCU�s0 - Decoding not completed*/
525fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 stride[3];          /*Stride values for Y, U, and V components*/
526fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulOutputHeight;     /* Output Height */
527fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulOutputWidth;      /* Output Width*/
528fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ultotalAU;          /* Total number of Access unit(MCU)*/
529fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulbytesConsumed;    /* Total number of bytes consumed*/
530fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulcurrentAU;        /* current access unit number */
531fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 ulcurrentScan;      /*current scan number*/
532fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}JPEGDEC_UAlgOutBufParamStruct;
533fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
534fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_INDEXIMAGETYPE
535fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
536fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IndexCustomProgressiveFactor = 0xFF000001,
537fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IndexCustomInputFrameWidth,
538fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IndexCustomOutputColorFormat,
539fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IndexCustomSectionDecode,
540fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IndexCustomSubRegionDecode,
541fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IndexCustomSetMaxResolution,
542fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IndexCustomDebug
543fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}OMX_INDEXIMAGETYPE;
544fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
545fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct _JPEGDEC_CUSTOM_PARAM_DEFINITION
546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8 cCustomParamName[128];
548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_INDEXTYPE nCustomParamIndex;
549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} JPEGDEC_CUSTOM_PARAM_DEFINITION;
550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* function declarations */
552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE ComponentDeInit(OMX_HANDLETYPE hComponent);
553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U32 HandleCommandJpegDec(JPEGDEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1);
554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_U32 HandleCommandFlush(JPEGDEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1);
555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE DisablePortJpegDec(JPEGDEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1);
556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE EnablePortJpegDec(JPEGDEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1);
557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE Start_ComponentThreadJpegDec(OMX_HANDLETYPE pHandle);
558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE HandleDataBuf_FromAppJpegDec(JPEGDEC_COMPONENT_PRIVATE *pComponentPrivate );
559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE HandleDataBuf_FromDspJpegDec(JPEGDEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE* pBuffHead);
560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE HandleFreeDataBufJpegDec(JPEGDEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE* pBuffHead );
561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE HandleFreeOutputBufferFromAppJpegDec( JPEGDEC_COMPONENT_PRIVATE *pComponentPrivate );
562fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE JpegDec_AllocResources( JPEGDEC_COMPONENT_PRIVATE *pComponentPrivate );
563fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE LCML_CallbackJpegDec(TUsnCodecEvent event,void * argsCb [10]);
564fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE Free_ComponentResourcesJpegDec(JPEGDEC_COMPONENT_PRIVATE *pComponentPrivate);
565fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE Fill_LCMLInitParamsJpegDec(LCML_DSP *lcml_dsp, OMX_U16 arr[], OMX_HANDLETYPE pComponent);
566fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE GetLCMLHandleJpegDec(OMX_HANDLETYPE pComponent);
567fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE HandleInternalFlush(JPEGDEC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1);
568fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_BOOL IsTIOMXComponent(OMX_HANDLETYPE hComp);
569fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid* OMX_JpegDec_Thread (void* pThreadData);
570fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
571fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
572fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid ResourceManagerCallback(RMPROXY_COMMANDDATATYPE cbData);
573fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
574fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
577