1fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*
2fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Copyright (C) Texas Instruments - http://www.ti.com/
3fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
4fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is free software; you can redistribute it and/or
5fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * modify it under the terms of the GNU Lesser General Public
6fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License as published by the Free Software Foundation; either
7fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * version 2.1 of the License, or (at your option) any later version.
8fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
9fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
10fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * This library is distributed in the hope that it will be useful,
11fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * but WITHOUT ANY WARRANTY; without even the implied warranty of
12fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Lesser General Public License for more details.
14fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
15fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *
16fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * You should have received a copy of the GNU Lesser General Public
17fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * License along with this library; if not, write to the Free Software
18fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
19fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
20fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* =============================================================================
21fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* Done            Texas Instruments OMAP(TM) Platform Software
22fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*  (c) Copyright Texas Instruments, Incorporated.  All Rights Reserved.
23fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
24fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*  Use of this software is controlled by the terms and conditions found
25fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*  in the license agreement under which this software has been supplied.
26fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* ============================================================================ */
27fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/**
28fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @file OMX_JpegEnc_Utils.h
29fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
30fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* This is a header file for a JPEG encoder that is fully
31fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* compliant with the OMX Image specification.
32fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* This the file that the application that uses OMX would include
33fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* in its code.
34fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
35fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @path  $(CSLPATH)\inc
36fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*
37fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* @rev  0.1
38fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/
39fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* -------------------------------------------------------------------------------- */
40fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* ================================================================================
41fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*!
42fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! Revision History
43fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! ===================================
44fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*!
45fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! 22-May-2006 mf: Revisions appear in reverse chronological order;
46fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*! that is, newest first.  The date format is dd-Mon-yyyy.
47fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin* ================================================================================= */
48fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
49fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef OMX_JPEGENC_UTILS__H
50fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_JPEGENC_UTILS__H
51fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Component.h>
52fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_IVCommon.h>
53fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
54fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
55fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef UNDER_CE
56fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <dlfcn.h>
57fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
58fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "LCML_DspCodec.h"
59fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "LCML_Types.h"
60fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "LCML_CodecInterface.h"
61fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <pthread.h>
62fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <stdarg.h>
63fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Core.h>
64fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Types.h>
65fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_Image.h>
66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include<OMX_TI_Common.h>
67fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <OMX_TI_Debug.h>
68fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
69fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include <ResourceManagerProxyAPI.h>
70fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
71fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "OMX_JpegEnc_CustomCmd.h"
72fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
73b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#include <utils/Log.h>
74b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#define LOG_TAG "OMX_JPGENC"
75fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
76fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
77fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#include "perf.h"
78fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
79fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
80fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_JPEGENC_NonMIME 1
81fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_NOPORT 0xFFFFFFFE
82fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGE_TIMEOUT (100000)
83fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NUM_OF_PORTS  2
84fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define NUM_OF_BUFFERSJPEG 4
85fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
86fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define MAX_INPARAM_SIZE 1024
87fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
88fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define COMP_MAX_NAMESIZE 127
89fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
90fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_CustomCommandStopThread (OMX_CommandMax - 1)
91b65f253fdc60f6208a54911bee793d225f23cdf8James Dong
92b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#define PADDING_128_BYTE	128
93b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#define PADDING_256_BYTE	256
9420d52a65fa6514b85c6ce8e3964799bd97868f86Dan Vacura#define JPEGENC_THUMBNAIL_ABSENT_WARNING 4
95fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
96fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef UNDER_CE
97fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    #include <oaf_debug.h>
98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define KHRONOS_1_1
101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifndef FUNC
103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define FUNC 1
104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGENC1MPImage 1000000
108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGENC2MPImage 2000000
109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define DSP_MMU_FAULT_HANDLING
112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
113b65f253fdc60f6208a54911bee793d225f23cdf8James Dong//JPEG Encoder Specific DSP Err Codes
114b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#define IUALG_ERR_INSUFF_BUFFER 0x8401
115b65f253fdc60f6208a54911bee793d225f23cdf8James Dong
116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*Linked List */
117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct Node {
119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    struct Node *pNextNode;
120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    void *pValue;
121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} Node;
122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct LinkedList {
124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    Node *pRoot;
125bca73818821dde513097a412ae6f2539d927e588Andrew Collins    pthread_mutex_t lock;
126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}   LinkedList;
127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinLinkedList AllocList;
129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_Create(LinkedList *LinkedList);
131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_AddElement(LinkedList *LinkedList, void *pValue);
132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_FreeElement(LinkedList *LinkedList, void *pValue);
133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_FreeAll(LinkedList *LinkedList);
134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_DisplayAll(LinkedList *LinkedList);
135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid LinkedList_Destroy(LinkedList *LinkedList);
136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*
138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin *     M A C R O S
139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */
140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_CONF_INIT_STRUCT(_s_, _name_)   \
142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    memset((_s_), 0x0, sizeof(_name_)); \
143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    (_s_)->nSize = sizeof(_name_);      \
144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    (_s_)->nVersion.s.nVersionMajor = 0x1;  \
145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    (_s_)->nVersion.s.nVersionMinor = 0x0;  \
146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    (_s_)->nVersion.s.nRevision = 0x0;      \
147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    (_s_)->nVersion.s.nStep = 0x0
148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_CHECK_PARAM(_ptr_)  \
150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{   \
151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(!_ptr_) {    \
152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = OMX_ErrorBadParameter; \
153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    goto EXIT; \
154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }   \
155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_CONF_SET_ERROR_BAIL(_eError, _eCode)\
158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{                       \
159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    _eError = _eCode;               \
160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    goto OMX_CONF_CMD_BAIL;         \
161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_MALLOC(_pStruct_, _size_)   \
164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    _pStruct_ = malloc(_size_);  \
165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if(_pStruct_ == NULL){  \
166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        eError = OMX_ErrorInsufficientResources;    \
167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        goto EXIT;  \
168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    } \
169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    memset(_pStruct_, 0, _size_);\
170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    LinkedList_AddElement(&AllocList, _pStruct_);
171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_FREE(_ptr)   \
173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{                     \
174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    if (_ptr != NULL) { \
175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        LinkedList_FreeElement(&AllocList, _ptr);\
176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        _ptr = NULL; \
177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }                \
178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_FREEALL()   \
181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{                     \
182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin        LinkedList_FreeAll(&AllocList);\
183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}
184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_MEMCPY_CHECK(_p_)\
186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{\
187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if (_p_ == NULL) { \
188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    eError = OMX_ErrorInsufficientResources;  \
189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    goto EXIT;   \
190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    } \
191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define OMX_GET_RM_VALUE(_Res_, _RM_, _dbg_) \
196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{   \
197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    if ((_Res_) <= JPEGENC1MPImage){  \
198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        (_RM_) = 30;  \
199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }   \
200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    else {  \
201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        (_RM_) = 60;  \
202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        }   \
203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    \
204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        \
205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PRMGR2((_dbg_), "Value in MHz requested to RM = %d\n", (_RM_)); \
206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}
207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct IDMJPGE_TIGEM_Comment {
210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  OMX_U8 comment[256];
211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  OMX_U16 commentLen;
212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} IDMJPGE_TIGEM_Comment;
213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct IIMGENC_DynamicParams {
216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nSize;             /* nSize of this structure */
217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nNumAU;            /* Number of Access unit to encode,
218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  * set to XDM_DEFAULT in case of entire frame
219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                  */
220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nInputChromaFormat;/* Input chroma format, Refer above comments regarding chroma                    */
221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nInputHeight;       /* Input nHeight*/
222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nInputWidth;        /* Input nWidth*/
223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nCaptureWidth;      /* 0: use imagewidth as pitch, otherwise:
224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                   * use given display nWidth (if > imagewidth)
225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                   * for pitch.
226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                   */
227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nGenerateHeader;    /* XDM_ENCODE_AU or XDM_GENERATE_HEADER */
228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 qValue;            /* Q value compression factor for encoder */
229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} IIMGENC_DynamicParams;
230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  typedef struct IDMJPGE_TIGEM_CustomQuantTables
233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  {
234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* The array "lum_quant_tab" defines the quantization table for the luma component. */
235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U16 lum_quant_tab[64];
236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* The array "chm_quant_tab" defines the quantization table for the chroma component.  */
237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U16 chm_quant_tab[64];
238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin  } IDMJPGE_TIGEM_CustomQuantTables;
239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct IDMJPGE_TIGEM_DynamicParams {
242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    IIMGENC_DynamicParams  params;
243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 captureHeight;       /* if set to 0 use image height
244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin                                     else should set to actual Image height */
245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 DRI_Interval ;
246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGENC_CUSTOM_HUFFMAN_TABLE *huffmanTable;
247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    IDMJPGE_TIGEM_CustomQuantTables *quantTable;
248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} IDMJPGE_TIGEM_DynamicParams;
249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
250d8b67d87f24cb14a2550934992536d7840008276Sanjay Guin/* PPLIB not needed if the the input to jpeg encoder is yuv. Uncomment the next line if PPLIB is needed */
251d8b67d87f24cb14a2550934992536d7840008276Sanjay Guin/* #define __JPEG_OMX_PPLIB_ENABLED__ */
252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __JPEG_OMX_PPLIB_ENABLED__
254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_JPEGENC_NUM_DLLS (5)
255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else
256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define OMX_JPEGENC_NUM_DLLS (4)
257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef UNDER_CE
261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEG_ENC_NODE_DLL "/windows/jpegenc_sn.dll64P"
262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEG_COMMON_DLL "/windows/usn.dll64P"
263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define USN_DLL "/windows/usn.dll64P"
264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define CONVERSIONS_DLL "/windows/conversions.dll64P"
265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	#ifdef __JPEG_OMX_PPLIB_ENABLED__
266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin		#define PPLIB_DLL "/windows/postprocessor_dualout.dll64P"
267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	#endif
268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else
269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEG_ENC_NODE_DLL "jpegenc_sn.dll64P"
270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEG_COMMON_DLL "usn.dll64P"
271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define USN_DLL "usn.dll64P"
272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define CONVERSIONS_DLL "conversions.dll64P"
273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	#ifdef __JPEG_OMX_PPLIB_ENABLED__
274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin		#define PPLIB_DLL "postprocessor_dualout.dll64P"
275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	#endif
276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGENC_SNTEST_STRMCNT          2
279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGENC_SNTEST_INSTRMID         0
280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGENC_SNTEST_OUTSTRMID        1
281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGENC_SNTEST_ARGLENGTH        20
282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGENC_SNTEST_INBUFCNT         4
283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGENC_SNTEST_OUTBUFCNT        4
284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGENC_SNTEST_MAX_HEIGHT       4096
285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGENC_SNTEST_MAX_WIDTH        4096
286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPGENC_SNTEST_PROG_FLAG        1
287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define M_COM   0xFE            /* COMment  */
288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGE_DSPSTOP       0x01
290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGE_BUFFERBACK    0x02
291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define JPEGE_IDLEREADY     ( JPEGE_DSPSTOP | JPEGE_BUFFERBACK )
292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum Content_Type
294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP0_BUFFER = 0,
296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP1_BUFFER,
297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP13_BUFFER,
298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    COMMENT_BUFFER,
299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP0_NUMBUF,
300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP1_NUMBUF,
301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP13_NUMBUF,
302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    COMMENT_NUMBUF,
303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP0_THUMB_H,
304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP0_THUMB_W,
305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP1_THUMB_H,
306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP1_THUMB_W,
307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP13_THUMB_H,
308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP13_THUMB_W,
309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP0_THUMB_INDEX,
310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP1_THUMB_INDEX,
311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    APP13_THUMB_INDEX,
312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    DYNPARAMS_HUFFMANTABLE,
313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    DYNPARAMS_QUANTTABLE,
314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP5_BUFFER,
315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP5_NUMBUF,
316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP5_THUMB_H,
317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP5_THUMB_W,
318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    APP5_THUMB_INDEX
319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} Content_Type;
320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/*This enum must not be changed.  */
322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum JPEG_PORT_TYPE_INDEX
323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    {
324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGENC_INP_PORT,
325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGENC_OUT_PORT
326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}JPEG_PORT_TYPE_INDEX;
327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum JPEGENC_BUFFER_OWNER {
329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGENC_BUFFER_CLIENT = 0x0,
330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGENC_BUFFER_COMPONENT_IN,
331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGENC_BUFFER_COMPONENT_OUT,
332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGENC_BUFFER_DSP,
333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGENC_BUFFER_TUNNEL_COMPONENT
334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} JPEGENC_BUFFER_OWNER;
335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct _JPEGENC_BUFFERFLAG_TRACK {
337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 flag;
338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 buffer_id;
339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE hMarkTargetComponent;
340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PTR pMarkData;
341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} JPEGENC_BUFFERFLAG_TRACK;
342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct _JPEGENC_BUFFERMARK_TRACK {
344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 buffer_id;
345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE hMarkTargetComponent;
346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PTR pMarkData;
347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} JPEGENC_BUFFERMARK_TRACK;
348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct JPEGENC_BUFFER_PRIVATE {
350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BUFFERHEADERTYPE* pBufferHdr;
351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGENC_BUFFER_OWNER eBufferOwner;
352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bAllocByComponent;
353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bReadFromPipe;
354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} JPEGENC_BUFFER_PRIVATE;
355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct JPEG_PORT_TYPE   {
357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_HANDLETYPE hTunnelComponent;
358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nTunnelPort;
359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGENC_BUFFER_PRIVATE* pBufferPrivate[NUM_OF_BUFFERSJPEG];
360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGENC_BUFFERFLAG_TRACK sBufferFlagTrack[NUM_OF_BUFFERSJPEG];
361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGENC_BUFFERMARK_TRACK sBufferMarkTrack[NUM_OF_BUFFERSJPEG];
362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PARAM_PORTDEFINITIONTYPE* pPortDef;
363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BUFFERSUPPLIERTYPE pBufSupplier;
364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PARAM_BUFFERSUPPLIERTYPE* pParamBufSupplier;
365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_PARAM_PORTFORMATTYPE* pPortFormat;
366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8 nBuffCount;
367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}JPEG_PORT_TYPE;
368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct JPEGE_INPUT_PARAMS {
370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 *pInParams;
371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 size;
372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} JPEGE_INPUT_PARAMS;
373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct _JPEGENC_CUSTOM_PARAM_DEFINITION {
375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8 cCustomParamName[128];
376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_INDEXTYPE nCustomParamIndex;
377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} JPEGENC_CUSTOM_PARAM_DEFINITION;
378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct JPEGENC_COMPONENT_PRIVATE
380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    JPEG_PORT_TYPE* pCompPort[NUM_OF_PORTS];
382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PORT_PARAM_TYPE* pPortParamType;
383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PORT_PARAM_TYPE* pPortParamTypeAudio;
384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PORT_PARAM_TYPE* pPortParamTypeVideo;
385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PORT_PARAM_TYPE* pPortParamTypeOthers;
386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PRIORITYMGMTTYPE* pPriorityMgmt;
387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_CALLBACKTYPE cbInfo;
388fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_PARAM_QFACTORTYPE* pQualityfactor;
389fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_CONFIG_RECTTYPE  *pCrop;
390fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /** This is component handle */
391fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_COMPONENTTYPE* pHandle;
392fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /*Comonent Name& Version*/
393fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_STRING cComponentName;
394fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_VERSIONTYPE ComponentVersion;
395fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_VERSIONTYPE SpecVersion;
396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
397fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /** Current state of this component */
398fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_STATETYPE   nCurState;
399fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_STATETYPE   nToState;
400fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8          ExeToIdleFlag;  /* StateCheck */
401fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
402fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nInPortIn;
403fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nInPortOut;
404fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nOutPortIn;
405fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nOutPortOut;
406fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bInportDisableIncomplete;
407fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bOutportDisableIncomplete;
408fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bSetLumaQuantizationTable;
409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BOOL bSetChromaQuantizationTable;
410fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bSetHuffmanTable;
411b65f253fdc60f6208a54911bee793d225f23cdf8James Dong	OMX_BOOL bConvert420pTo422i;
412b65f253fdc60f6208a54911bee793d225f23cdf8James Dong	OMX_BOOL bPPLibEnable;
413fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE *pCustomLumaQuantTable;
414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE *pCustomChromaQuantTable;
415fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGENC_CUSTOM_HUFFMANTTABLETYPE *pHuffmanTable;
416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
418fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /** The component thread handle */
419fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_t ComponentThread;
420fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /** The pipes to maintain free buffers */
421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    int free_outBuf_Q[2];
422fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /** The pipes to maintain input buffers sent from app*/
423fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int filled_inpBuf_Q[2];
424fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /** The pipes for sending buffers to the thread */
425fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nCmdPipe[2];
426fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nCmdDataPipe[2];
427fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32 nApp_nBuf;
428fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    short int nNum_dspBuf;
429fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nCommentFlag;
430fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8 *pString_Comment;
431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    JPEG_APPTHUMB_MARKER sAPP0;
432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    JPEG_APPTHUMB_MARKER sAPP1;
433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    JPEG_APPTHUMB_MARKER sAPP5;
434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    JPEG_APP13_MARKER sAPP13;
435fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    JPEGE_INPUT_PARAMS InParams;
436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __JPEG_OMX_PPLIB_ENABLED__
437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 *pOutParams;
438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
439fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef RESOURCE_MANAGER_ENABLED
440fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    RMPROXY_CALLBACKTYPE rmproxyCallback;
441fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_BOOL bPreempted;
443fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nFlags;
444fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int nMarkPort;
445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PTR pMarkData;
446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_HANDLETYPE hMarkTargetComponent;
447fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bDSPStopAck;
448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin   OMX_BOOL bFlushComplete;
449fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL bAckFromSetStatus;
450fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    void* pLcmlHandle;   /* Review Utils.c */
451fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    int isLCMLActive;
452fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    LCML_DSP_INTERFACE* pLCML;
453fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    void * pDllHandle;
454fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U8 nDRI_Interval;
455fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef KHRONOS_1_1
456fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PARAM_COMPONENTROLETYPE componentRole;
457fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
458fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    IDMJPGE_TIGEM_DynamicParams *pDynParams;
459fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
460fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_mutex_t jpege_mutex;
461fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_t  stop_cond;
462fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_t  flush_cond;
463fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    /* pthread_cond_t  control_cond; */
464fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_mutex_t jpege_mutex_app;
465fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_t  populate_cond;
466fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    pthread_cond_t  unpopulate_cond;
467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
469fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_INSTRUMENTATION__
470fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    PERF_OBJHANDLE pPERF, pPERFcomp;
471fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif
472fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    struct OMX_TI_Debug dbg;
473fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
474644f5ad9b052d954c568285458ee5cad6aec20c1Benny Wong    /* Reference count for pending state change requests */
475644f5ad9b052d954c568285458ee5cad6aec20c1Benny Wong    OMX_U32 nPendingStateChangeRequests;
476644f5ad9b052d954c568285458ee5cad6aec20c1Benny Wong    pthread_mutex_t mutexStateChangeRequest;
477644f5ad9b052d954c568285458ee5cad6aec20c1Benny Wong    pthread_cond_t StateChangeCondition;
478644f5ad9b052d954c568285458ee5cad6aec20c1Benny Wong
479fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} JPEGENC_COMPONENT_PRIVATE;
480fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
481fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
482fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE HandleJpegEncCommand (JPEGENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1);
483fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE JpegEncDisablePort(JPEGENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1);
484fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE JpegEncEnablePort(JPEGENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1);
485fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE HandleJpegEncCommandFlush(JPEGENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_U32 nParam1);
486fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE JPEGEnc_Start_ComponentThread(OMX_HANDLETYPE pHandle);
487fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE HandleJpegEncDataBuf_FromApp(JPEGENC_COMPONENT_PRIVATE *pComponentPrivate );
488fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE HandleJpegEncDataBuf_FromDsp( JPEGENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE* pBuffHead );
489fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE HandleJpegEncFreeDataBuf( JPEGENC_COMPONENT_PRIVATE *pComponentPrivate, OMX_BUFFERHEADERTYPE* pBuffHead );
490fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE HandleJpegEncFreeOutputBufferFromApp( JPEGENC_COMPONENT_PRIVATE *pComponentPrivate );
491fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE AllocJpegEncResources( JPEGENC_COMPONENT_PRIVATE *pComponentPrivate );
492fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE JPEGEnc_Free_ComponentResources(JPEGENC_COMPONENT_PRIVATE *pComponentPrivate);
493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE Fill_JpegEncLCMLInitParams(LCML_DSP *lcml_dsp, OMX_U16 arr[], OMX_HANDLETYPE pComponent);
494fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE GetJpegEncLCMLHandle(OMX_HANDLETYPE pComponent);
495fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE SetJpegEncInParams(JPEGENC_COMPONENT_PRIVATE *pComponentPrivate);
496fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_ERRORTYPE SendDynamicParam(JPEGENC_COMPONENT_PRIVATE *pComponentPrivate);
497fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz ZavinOMX_BOOL IsTIOMXComponent(OMX_HANDLETYPE hComp);
498fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __JPEG_OMX_PPLIB_ENABLED__
500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define JPEGENC_PPLIB_CREATEPARAM_SIZE 28
501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define JPEGENC_PPLIB_DYNPARM_SIZE 252
502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE SendDynamicPPLibParam(JPEGENC_COMPONENT_PRIVATE *pComponentPrivate,OMX_U32 *ptInputParam);
503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct _PPLIB_UALGRunTimeParam_t
507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{
508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 size;                            /**< Size of the structure in bytes. */
509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulInWidth;                       /**< Input picture buffer width.  This value should be the same as the original decoded output width of the WMV9/VC1 stream. */
510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulInHeight;                      /**< Input picture buffer height.  This value should be the same as the original decoded output height of the WMV9/VC1 stream. */
511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameEnabled[2];               /**< It is possible to run the VGPOP twice with two separate sets of configuration parameters using PPLIB.  This parameter specifies whether each set of configuration parameters is to be used when running PPLIB for this particular frame. */
512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulEnableYUVOutput[2];            /**< Flag to enable YUV output */
513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulEnableRGBOutput[2];            /**< Flag to enable RGB output. */
514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameInputStartYOffset[2];     /**< Offset from the start of the input buffer where the input Y data is located.  You can specify a different offset for each set of VGPOP parameters.  In most cases, this will be 0. */
515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameInputStartCOffset[2];     /**< Offset from the start of the input buffer where the input CrCb data is located.  You can specify a different offset for each set of VGPOP parameters.  In most cases, this will be the same as (input width * input height) + Y offset. */
516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameOutputStartYOffset[2];    /**< Offset from the start of the output buffer where the output Y data should be placed.  You can specify a different offset for each set of VGPOP parameters. */
517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameOutputStartCOffset[2];    /**< Offset from the start of the output buffer where the output CrCb data should be placed.  You can specify a different offset for each set of VGPOP parameters.  In most cases, this will be the same as (output width * output height) + Y offset. */
518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameOutputRGBOffset[2];       /**< Offset from the start of the output buffer where the output RGB data is located.  You can specify a different offset for each set of VGPOP parameters.  In most cases, this will be 0. */
519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameOutputHeight[2];          /**< Output picture buffer height for each VGPOP parameter set.*/
520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameOutputWidth[2];           /**< Output picture buffer width for each VGPOP parameter set. */
521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameContrast[2];              /**< Contrast Method for each VGPOP parameter set */
522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameInXStart[2];              /**< Horizontal cropping start position in the input buffer.  Set to 0 if no cropping is desired. */
523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameInYStart[2];              /**< Vertical cropping start position in the input buffer.  Set to 0 if no cropping is desired.*/
524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameInXSize[2];               /**< Horizontal cropping width.  Set to 0 if no cropping is desired */
525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameInYSize[2];               /**< Vertical cropping height.  Set to 0 if no cropping is desired.*/
526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameZoomFactor[2];            /**< Zooming ratio value, where ulZoomFactor = (Desired Zoom Ratio * 1024).  Set to 1024 if no zooming is desired.  Set above 1024 to enable zooming. */
527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameZoomLimit[2];             /**< Zooming ratio limit, where ulZoomLimit=(Desired Zoom Limit * 1024).*/
528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameZoomSpeed[2];             /**< Speed of ratio change.  Set to 0 to disable zoom variation.  The variation speed is proportional to the value while the direction (in/out) is given by the sign.*/
529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameEnableLightChroma[2];     /**< Light chrominance process.  */
530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameEnableAspectRatioLock[2]; /**< Locked H/V ratio */
531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameEnableMirroring[2];       /**< To mirror the picture: */
532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameRGBRotation[2];           /**< Rotation to apply to RGB Output. May be set to 0, 90, 180 or 270.*/
533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameYUVRotation[2];           /**< Rotation to apply to YUV Output. May be set to 0, 90, 180, or 270*/
534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameIORange[2];               /**< IO Video Range.   */
535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameEnableDithering[2];       /**< Dithering Enable */
536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulFrameOutputPitch[2];           /**< Enable an output pitch */
537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulAlphaRGB[2];                   /**< This is the default alpha values for ARGB32 or RGBA32. */
538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulIsFrameGenerated[2];           /**< Flag to notify the user if a frame has been generated */
539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulYUVFrameSize[2];               /**< YUV output size in bytes */
540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_U32 ulRGBFrameSize[2];               /**< RGB output size in bytes. */
541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} PPLIB_UALGRunTimeParam_t;
542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
546fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
547fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef OMX_ERRORTYPE (*fpo)(OMX_HANDLETYPE);
548fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
549fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic const struct DSP_UUID JPEGESOCKET_TI_UUID = {
550fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    0xCB70C0C1, 0x4C85, 0x11D6, 0xB1, 0x05, {
551fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        0x00, 0xC0, 0x4F, 0x32, 0x90, 0x31
552fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
553fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin};
554fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
555fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
556fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinstatic const struct DSP_UUID USN_UUID = {
557fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    0x79A3C8B3, 0x95F2, 0x403F, 0x9A, 0x4B, {
558fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin        0xCF, 0x80, 0x57, 0x73, 0x05, 0x41
559fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    }
560fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin};
561fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic const struct DSP_UUID CONVERSIONS_UUID = {
563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	0x722DD0DA, 0xF532, 0x4238, 0xB8, 0x46, {
564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin		0xAB, 0xFF, 0x5D, 0xA4, 0xBA, 0x02
565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	}
566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin};
567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef __JPEG_OMX_PPLIB_ENABLED__
569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic const struct DSP_UUID PPLIB_UUID = {
570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	0xFC8CF948, 0xD3E9, 0x4B65, 0xBC, 0xA7, {
571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin	0x08, 0x2E, 0xA0, 0xAD, 0x86, 0xF0
572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    }
573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin};
574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
575fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid* OMX_JpegEnc_Thread (void* pThreadData);
576fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
577fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum ThrCmdType
578fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{
579fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    SetState,
580fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    Flush,
581fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    StopPort,
582fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    RestartPort,
583fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    MarkBuf,
584fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    Start,
585fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    Stop,
586fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    FillBuf,
587fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    EmptyBuf
588fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} ThrCmdType;
589fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
590fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum OMX_JPEGE_INDEXTYPE  {
591fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
592fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IndexCustomCommentFlag = 0xFF000001,
593fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IndexCustomCommentString = 0xFF000002,
594fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IndexCustomInputFrameWidth,
595fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IndexCustomInputFrameHeight,
596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomAPP0,
597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomAPP1,
598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomAPP5,
599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_IndexCustomAPP13,
600fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IndexCustomQFactor,
601fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IndexCustomDRI,
602fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_IndexCustomHuffmanTable,
603b65f253fdc60f6208a54911bee793d225f23cdf8James Dong    OMX_IndexCustomDebug,
604b65f253fdc60f6208a54911bee793d225f23cdf8James Dong	OMX_IndexCustomColorFormatConvertion_420pTo422i,
605b65f253fdc60f6208a54911bee793d225f23cdf8James Dong	OMX_IndexCustomPPLibEnable
606fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}OMX_INDEXIMAGETYPE;
607fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
608fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef struct IUALG_Buf {
609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    OMX_PTR            pBufAddr;
610fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    unsigned long          ulBufSize;
611fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_PTR            pParamAddr;
612fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    unsigned long        ulParamSize;
613fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    unsigned long          ulBufSizeUsed;
614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin    //IUALG_BufState tBufState;
615fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_BOOL           bBufActive;
616fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    OMX_U32          unBufID;
617fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    unsigned long          ulReserved;
618fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} IUALG_Buf;
619fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin
620fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavintypedef enum {
621fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    IUALG_CMD_STOP             = 0,
622fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    IUALG_CMD_PAUSE            = 1,
623fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    IUALG_CMD_GETSTATUS        = 2,
624fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    IUALG_CMD_SETSTATUS        = 3,
625fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    IUALG_CMD_USERSETCMDSTART  = 100,
626fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    IUALG_CMD_USERGETCMDSTART  = 150,
627fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin    IUALG_CMD_FLUSH            = 0x100
628fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin}IUALG_Cmd;
629644f5ad9b052d954c568285458ee5cad6aec20c1Benny Wong
630644f5ad9b052d954c568285458ee5cad6aec20c1Benny WongOMX_ERRORTYPE AddStateTransition(JPEGENC_COMPONENT_PRIVATE* pComponentPrivate);
631644f5ad9b052d954c568285458ee5cad6aec20c1Benny WongOMX_ERRORTYPE RemoveStateTransition(JPEGENC_COMPONENT_PRIVATE* pComponentPrivate, OMX_BOOL bEnableSignal);
632644f5ad9b052d954c568285458ee5cad6aec20c1Benny Wong
633fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif /*OMX_JPEGENC_UTILS__H*/
634