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