1b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 3b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Copyright 2001-2008 Texas Instruments - http://www.ti.com/ 4b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 5b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Licensed under the Apache License, Version 2.0 (the "License"); 6b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * you may not use this file except in compliance with the License. 7b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * You may obtain a copy of the License at 8b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 9b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * http://www.apache.org/licenses/LICENSE-2.0 10b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * 11b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Unless required by applicable law or agreed to in writing, software 12b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * distributed under the License is distributed on an "AS IS" BASIS, 13b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * See the License for the specific language governing permissions and 15b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * limitations under the License. 16b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin */ 17b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ==================================================================== 18b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* Texas Instruments OMAP(TM) Platform Software 19b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* (c) Copyright Texas Instruments, Incorporated. All Rights Reserved. 20b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* 21b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* Use of this software is controlled by the terms and conditions found 22b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* in the license agreement under which this software has been supplied. 23b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* ==================================================================== */ 24b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 25b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @file JPEGTestEnc.c 26b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* 27b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* This file implements OMX Component for JPEG encoder that 28b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* is fully compliant with the OMX specification 1.5. 29b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* 30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @path $(CSLPATH)\src 31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* 32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* @rev 0.1 33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*/ 34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* -------------------------------------------------------------------------------- */ 35b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* ================================================================================ 36b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! 37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! Revision History 38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! =================================== 39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! 40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! 22-May-2006 mf: Revisions appear in reverse chronological order; 41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin*! that is, newest first. The date format is dd-Mon-yyyy. 42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin* ================================================================================= */ 43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*utilities includes */ 45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <windows.h> 47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdio.h> 49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdlib.h> 50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <stdarg.h> 51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <string.h> 52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sched.h> 53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <unistd.h> 54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/types.h> 55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <sys/select.h> 56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <time.h> 57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin//#include <mcheck.h> 58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <getopt.h> 59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <signal.h> 60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* OMX includes */ 62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <OMX_Component.h> 63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "OMX_JpegEnc_CustomCmd.h" 64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include "JPEGTestEnc.h" 65b65f253fdc60f6208a54911bee793d225f23cdf8James Dong#include "OMX_JpegEnc_Utils.h" 66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* DSP recovery includes */ 68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <qosregistry.h> 69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <qosti.h> 70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <dbapi.h> 71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <DSPManager.h> 72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <DSPProcessor.h> 73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <DSPProcessor_OEM.h> 74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define STRESS 76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NSTRESSCASES 1 77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define STRESSMULTILOAD 1 78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NUM_OF_PORTS 2 79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define NUM_OF_BUFFERSJPEG 1 80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_STRING StrJpegEncoder= "OMX.TI.IMAGE.JPEG.ENC"; 83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 84b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_STRING StrJpegEncoder= "OMX.TI.JPEG.Encoder"; 85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U8 APPLICATION1_NOTHUMB[]={ 88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 0 */0, 0, 0, 0, 0x45, 0x78, 0x69, 0x66, 0x00, 0x00, /* Indicate Exif Data*/ 90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 10 */ 0x49, 0x49, /* "Intel" type byte align*/ 92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x2A, 0x00, /* Confirm "Intel" type byte align*/ 94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 14 */ 0x08, 0x00, 0x00, 0x00, /* Offset to first IFDc*/ 96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x06, 0x00, /* Number of IFD as 1*/ 98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 21 */0x0f, 0x01, /* TAG: Make*/ 100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x02, 0x00, /* Type: Data format is 0x0002, ASCII */ 102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x0c, 0x00, 0x00, 0x00, /* Count: number of chars*/ 104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x56, 0x00, 0x00, 0x00, /* Offset Make data*/ 106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 33 */0x10, 0x01, /* TAG: Model*/ 108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x02, 0x00, /* Type: Data format is 0x0002, ASCII */ 110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x05, 0x00, 0x00, 0x00, /* Count: number of chars*/ 112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x62, 0x00, 0x00, 0x00, /* Offset Model data*/ 114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*45*/0x12, 0x01, /* TAG: Orientation*/ 116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x03, 0x00, /* Type: Data format is 0x0003, (short)*/ 118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x01, 0x00, 0x00, 0x00, /* Count: number of chars*/ 120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x01, 0x00, 0x00, 0x00, /* 1 means normal orientation*/ 122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*57*/0x31, 0x01, /* TAG: Software*/ 124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x02, 0x00, /* Type: ASCII*/ 126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x08, 0x00, 0x00, 0x00, /* Count: number of chars*/ 128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x67, 0x00, 0x00, 0x00, /* Offset*/ 130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*69*/0x3b, 0x01, /* TAG: Artist*/ 132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x02, 0x00, /* Type: ASCII*/ 134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x09, 0x00, 0x00, 0x00, /* Count: number of chars*/ 136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x6f, 0x00, 0x00, 0x00, /* Offset*/ 138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 81 */0x69, 0x87, /* Exif SubIFD*/ 140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 83 */ 0x04, 0x00, /* Data format is 0x0004, ULInt*/ 142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x01, 0x00, 0x00, 0x00, /* number of components is 1.*/ 144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*long integer data size is 4bytes/components, so total data length is 1x4=4bytes*/ 146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 89 */ 0x78, 0x00,0x00, 0x00, /* Offset of Exif data*/ 148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*93*/0x9E, 0x00, 0x00, 0x00, /* Offset to next IFD. As we are saying only one directory( Number of IFD as 1) this indicate the offset of next IFD*/ 150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*97*/0x53, 0x61, 0x73, 0x6b, 0x65, 0x6e, 0x20, 0x26, 0x20, 0x54, 0x49, 0x00, /*Make*/ 152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*109*/0x4f, 0x4d, 0x41, 0x50,0x00, /*Model*/ 154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*114*/0x4f, 0x70, 0x65, 0x6e, 0x4d, 0x61, 0x78, 0x00, /*Software*/ 156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*122*/0x47, 0x65, 0x6f, 0x72, 0x67, 0x65, 0x20, 0x53, 0x00, /*Artist*/ 158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* exif ub-ID start Here */ 160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 131 */ 0x03, 0x00, /* Number of Exif ID*/ 162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x00, 0x90, /* Exif Version*/ 164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x07, 0x00, /*Data format is 0x0007, undefined*/ 166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x04, 0x00, 0x00, 0x00, /* number of components is 4.*/ 168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*Undefined data size is 1bytes/components, so total data length is 4x1=4bytes*/ 170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x30, 0x32, 0x32, 0x30, /* Exif version number 30 32 32 30 meaning 0220 (2.2)*/ 172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* next IFD start Here */ 174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*169*/0x03, 0x00, /* Number of IFD1*/ 176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*171*/0x03, 0x01, /* Compression (0x0103)*/ 178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x03, 0x00, /*Data format is 0x0003 unsigned short,*/ 180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x01, 0x00, 0x00, 0x00, /* number of components is 1.*/ 182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*unsigned short data size is 2bytes/components, so total data length is 1x2=2bytes*/ 184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*183*/ 0x01, 0x02, /* JpegIFOffset (0x0201)*/ 186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x04, 0x00, /* Data format is 0x0004, ULInt*/ 188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x01, 0x00, 0x00, 0x00, /* number of components is 1.*/ 190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*195*/ 0x02, 0x02, /* JpegIFByteCount (0x0202)*/ 192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x04, 0x00, /* Data format is 0x0004, ULInt*/ 194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x01, 0x00, 0x00, 0x00, /* number of components is 1.*/ 196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*203*/ 0xff, 0xff,0xff, 0xff, /* Legth of thumbnail data*/ 198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}; 200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U8 APPLICATION1_THUMB[]={ 202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 0 */0, 0, 0, 0, 0x45, 0x78, 0x69, 0x66, 0x00, 0x00, /* Indicate Exif Data*/ 203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 10 */ 0x49, 0x49, /* "Intel" type byte align*/ 204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x2A, 0x00, /* Confirm "Intel" type byte align*/ 205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 14 */ 0x08, 0x00, 0x00, 0x00, /* Offset to first IFDc*/ 206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x06, 0x00, /* Number of IFD as 1*/ 207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 21 */0x0f, 0x01, /* TAG: Make*/ 209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x02, 0x00, /* Type: Data format is 0x0002, ASCII */ 210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x0c, 0x00, 0x00, 0x00, /* Count: number of chars*/ 211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x56, 0x00, 0x00, 0x00, /* Offset Make data*/ 212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 33 */0x10, 0x01, /* TAG: Model*/ 214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x02, 0x00, /* Type: Data format is 0x0002, ASCII */ 215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x05, 0x00, 0x00, 0x00, /* Count: number of chars*/ 216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x62, 0x00, 0x00, 0x00, /* Offset Model data*/ 217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*45*/0x12, 0x01, /* TAG: Orientation*/ 219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x03, 0x00, /* Type: Data format is 0x0003, (short)*/ 220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x01, 0x00, 0x00, 0x00, /* Count: number of chars*/ 221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x01, 0x00, 0x00, 0x00, /* 1 means normal orientation*/ 222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*57*/0x31, 0x01, /* TAG: Software*/ 224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x02, 0x00, /* Type: ASCII*/ 225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x08, 0x00, 0x00, 0x00, /* Count: number of chars*/ 226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x67, 0x00, 0x00, 0x00, /* Offset*/ 227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*69*/0x3b, 0x01, /* TAG: Artist*/ 229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x02, 0x00, /* Type: ASCII*/ 230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x09, 0x00, 0x00, 0x00, /* Count: number of chars*/ 231b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x6f, 0x00, 0x00, 0x00, /* Offset*/ 232b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 233b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 234b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 81 */0x69, 0x87, /* Exif SubIFD*/ 235b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 83 */ 0x04, 0x00, /* Data format is 0x0004, ULInt*/ 236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x01, 0x00, 0x00, 0x00, /* number of components is 1.*/ 237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*long integer data size is 4bytes/components, so total data length is 1x4=4bytes*/ 238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 89 */ 0x78, 0x00,0x00, 0x00, /* Offset of Exif data*/ 239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*93*/0x9E, 0x00, 0x00, 0x00, /* Offset to next IFD. As we are saying only one directory( Number of IFD as 1) this indicate the offset of next IFD*/ 241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*97*/0x53, 0x61, 0x73, 0x6b, 0x65, 0x6e, 0x20, 0x26, 0x20, 0x54, 0x49, 0x00, /*Make*/ 243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*109*/0x4f, 0x4d, 0x41, 0x50,0x00, /*Model*/ 245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*114*/0x4f, 0x70, 0x65, 0x6e, 0x4d, 0x61, 0x78, 0x00, /*Software*/ 247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*122*/0x47, 0x65, 0x6f, 0x72, 0x67, 0x65, 0x20, 0x53, 0x00, /*Artist*/ 249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* exif ub-ID start Here */ 251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 131 */ 0x03, 0x00, /* Number of Exif ID*/ 252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x00, 0x90, /* Exif Version*/ 253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x07, 0x00, /*Data format is 0x0007, undefined*/ 254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x04, 0x00, 0x00, 0x00, /* number of components is 4.*/ 255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*Undefined data size is 1bytes/components, so total data length is 4x1=4bytes*/ 256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x30, 0x32, 0x32, 0x30, /* Exif version number 30 32 32 30 meaning 0220 (2.2)*/ 257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*145*/0x02, 0xA0, /* Exif Image Width (0xA002)*/ 259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x04, 0x00, /* Data format is 0x0004, ULInt*/ 260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x01, 0x00, 0x00, 0x00, /* number of components is 1.*/ 261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 153 */ 0xB0, 0x00,0x00, 0x00, /* Image width , 0x00000280 i.e. 640*/ 262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*157*/0x03, 0xA0, /* Exif Image Width (0xA003)*/ 264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x04, 0x00, /* Data format is 0x0004, ULInt*/ 265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x01, 0x00, 0x00, 0x00, /* number of components is 1.*/ 266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* 165 */ 0x90, 0x00,0x00, 0x00, /* Image Height , 0x000001E0 i.e. 480*/ 267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* next IFD start Here */ 271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*169*/0x03, 0x00, /* Number of IFD1*/ 272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*171*/0x03, 0x01, /* Compression (0x0103)*/ 273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x03, 0x00, /*Data format is 0x0003 unsigned short,*/ 274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x01, 0x00, 0x00, 0x00, /* number of components is 1.*/ 275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*unsigned short data size is 2bytes/components, so total data length is 1x2=2bytes*/ 276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin0x06, 0x00,0x00, 0x00, /* '6' means JPEG compression.*/ 278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Shows compression method. 279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin o '1' means no compression, 280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin o '6' means JPEG compression.*/ 281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*183*/ 0x01, 0x02, /* JpegIFOffset (0x0201)*/ 283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x04, 0x00, /* Data format is 0x0004, ULInt*/ 284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x01, 0x00, 0x00, 0x00, /* number of components is 1.*/ 285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*191*/ 0xc4, 0x00,0x00, 0x00, /* Address 0f Thumbnail data*/ 286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*195*/ 0x02, 0x02, /* JpegIFByteCount (0x0202)*/ 288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x04, 0x00, /* Data format is 0x0004, ULInt*/ 289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x01, 0x00, 0x00, 0x00, /* number of components is 1.*/ 290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*203*/ 0xff, 0xff,0xff, 0xff, /* Legth of thumbnail data*/ 291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}; 292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*Set the fist 4 bytes to 0*/ 294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U8 APPLICATION13[200] = { 295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00, 0x00, 0x00, 0x00, /*We should set the first 4 bytes to 0 */ 296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x50, 0x68, 0x6f, 0x74, 0x6f, 0x73, 0x68, 0x6f, 0x70, 0x20, 0x33, 0x2e, 0x30, 0x00,/*Photoshop header*/ 297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x38, 0x42, 0x49, 0x4d, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x4e, /* Initial marker*/ 299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*IPTC Marker TAG Size of string*/ 300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x1c, 0x02, 0x78, 0x00, 0x20, 301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, /*String of data (ASCII)*/ 302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x1c, 0x02, 0x7a, 0x00, 0x16, 303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x49, 0x27,0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x1c, 0x02, 0x5a, 0x00, 0x09, 305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x4d, 0x6f, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x65, 0x79, 306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}; 308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U8 APPLICATION0[19]={0, 0, 0, 0, 310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x4A, 0x46, 0x49, 0x46, 0x00, // JFIF Identifier 311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x01, 0x02, // Version 312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00, // X and Y Unit Densities. 313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00, 0x08, // Horizontal Pixel density 314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00, 0x09, // Vertical Pixel density 315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00, 316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00, 317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00, 318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}; 319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_U8 APPLICATION5[6]={0xff,0xff,0xff,0xff,0xff,0xff}; 321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinconst OMX_U8 CustomLumaQuantizationTable[64]= { 322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin14, 10, 9, 14, 22, 30, 41, 51, 323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin12, 12, 14, 19, 26, 58, 60, 55, 324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin14, 13, 16, 24, 40, 57, 69, 56, 325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin14, 17, 22, 29, 51, 87, 80, 62, 326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin18, 22, 37, 56, 68, 109, 103, 77, 327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin24, 35, 55, 64, 81, 104, 113, 92, 328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin49, 64, 78, 87, 103, 121, 120, 101, 329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin72, 92, 95, 98, 112, 100, 103, 99, 330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}; 331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinconst OMX_U8 CustomChromaQuantizationTable[64]= { 333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin15, 16, 22, 35, 99, 99, 99, 99, 334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin18, 21, 26, 66, 99, 99, 99, 99, 335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin24, 26, 56, 99, 99, 99, 99, 99, 336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin47, 66, 99, 99, 99, 99, 99, 99, 337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin99, 99, 99, 99, 99, 99, 99, 99, 338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin99, 99, 99, 99, 99, 99, 99, 99, 339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin99, 99, 99, 99, 99, 99, 99, 99, 340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin99, 99, 99, 99, 99, 99, 99, 99 341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}; 342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinJPEGENC_CUSTOM_HUFFMAN_TABLE CustomHuffmanTable = 344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* VLC Tables */ 346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Set 1 for Y Component */ 347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*DC-Y*/ 348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*const unsigned int JPEGENC_DCHUFFY[12] */ 349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Length[16]-Codeword[16]*/ 350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00020000, 352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00030002, 353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00030003, 354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00030004, 355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00030005, 356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00030006, 357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0004000e, 358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0005001e, 359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0006003e, 360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0007007e, 361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x000800fe, 362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x000901fe 363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*AC-Y*/ 366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*const unsigned int JPEGENC_ACHUFFY[16][16] */ 367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Length[16]-Codeword[16]*/ 368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0004000a, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x000b07f9 373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00020000, 0x0004000c, 0x0005001c, 0x0006003a, 0x0006003b, 0x0007007a, 376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0007007b, 0x000800fa, 0x000901f8, 0x000901f9, 0x000901fa, 0x000a03f9, 377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x000a03fa, 0x000b07f8, 0x0010ffeb, 0x0010fff5 378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00020001, 0x0005001b, 0x000800f9, 0x000901f7, 0x000a03f8, 0x000b07f7, 381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x000c0ff6, 0x000c0ff7, 0x000f7fc0, 0x0010ffbe, 0x0010ffc7, 0x0010ffd0, 382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffd9, 0x0010ffe2, 0x0010ffec, 0x0010fff6 383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00030004, 0x00070079, 0x000a03f7, 0x000c0ff5, 0x0010ff96, 0x0010ff9e, 386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffa6, 0x0010ffae, 0x0010ffb6, 0x0010ffbf, 0x0010ffc8, 0x0010ffd1, 387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffda, 0x0010ffe3, 0x0010ffed, 0x0010fff7 388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0004000b, 0x000901f6, 0x000c0ff4, 0x0010ff8f, 0x0010ff97, 0x0010ff9f, 391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffa7, 0x0010ffaf, 0x0010ffb7, 0x0010ffc0, 0x0010ffc9, 0x0010ffd2, 392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffdb, 0x0010ffe4, 0x0010ffee, 0x0010fff8 393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0005001a, 0x000b07f6, 0x0010ff89, 0x0010ff90, 0x0010ff98, 0x0010ffa0, 396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffa8, 0x0010ffb0, 0x0010ffb8, 0x0010ffc1, 0x0010ffca, 0x0010ffd3, 397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffdc, 0x0010ffe5, 0x0010ffef, 0x0010fff9 398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00070078, 0x0010ff84, 0x0010ff8a, 0x0010ff91, 0x0010ff99, 0x0010ffa1, 401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffa9, 0x0010ffb1, 0x0010ffb9, 0x0010ffc2, 0x0010ffcb, 0x0010ffd4, 402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffdd, 0x0010ffe6, 0x0010fff0, 0x0010fffa 403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x000800f8, 0x0010ff85, 0x0010ff8b, 0x0010ff92, 0x0010ff9a, 0x0010ffa2, 406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffaa, 0x0010ffb2, 0x0010ffba, 0x0010ffc3, 0x0010ffcc, 0x0010ffd5, 407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffde, 0x0010ffe7, 0x0010fff1, 0x0010fffb 408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x000a03f6, 0x0010ff86, 0x0010ff8c, 0x0010ff93, 0x0010ff9b, 0x0010ffa3, 411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffab, 0x0010ffb3, 0x0010ffbb, 0x0010ffc4, 0x0010ffcd, 0x0010ffd6, 412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffdf, 0x0010ffe8, 0x0010fff2, 0x0010fffc 413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ff82, 0x0010ff87, 0x0010ff8d, 0x0010ff94, 0x0010ff9c, 0x0010ffa4, 416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffac, 0x0010ffb4, 0x0010ffbc, 0x0010ffc5, 0x0010ffce, 0x0010ffd7, 417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffe0, 0x0010ffe9, 0x0010fff3, 0x0010fffd 418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ff83, 0x0010ff88, 0x0010ff8e, 0x0010ff95, 0x0010ff9d, 0x0010ffa5, 421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffad, 0x0010ffb5, 0x0010ffbd, 0x0010ffc6, 0x0010ffcf, 0x0010ffd8, 422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffe1, 0x0010ffea, 0x0010fff4, 0x0010fffe 423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000 428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000 433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000 438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000 443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000 448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Set 2 for U & V Component */ 452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*DC-UV*/ 453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*const unsigned int JPEGENC_DCHUFFUV[12] */ 454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Length[16]-Codeword[16]*/ 455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00020000, 457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00020001, 458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00020002, 459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00030006, 460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0004000e, 461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0005001e, 462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0006003e, 463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0007007e, 464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x000800fe, 465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x000901fe, 466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x000a03fe, 467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x000b07fe 468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*AC-UV*/ 471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*const unsigned int JPEGENC_ACHUFFUV[16][16] */ 472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Length[16]-Codeword[16]*/ 473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x000a03fa 478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00020001, 0x0004000b, 0x0005001a, 0x0005001b, 0x0006003a, 0x0006003b, 481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00070079, 0x0007007a, 0x000800f9, 0x000901f7, 0x000901f8, 0x000901f9, 482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x000901fa, 0x000b07f9, 0x000e3fe0, 0x000f7fc3 483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00030004, 0x00060039, 0x000800f7, 0x000800f8, 0x000901f6, 0x000a03f9, 486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x000b07f7, 0x000b07f8, 0x0010ffb7, 0x0010ffc0, 0x0010ffc9, 0x0010ffd2, 487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffdb, 0x0010ffe4, 0x0010ffed, 0x0010fff6 488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0004000a, 0x000800f6, 0x000a03f7, 0x000a03f8, 0x0010ff97, 0x0010ff9f, 491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffa7, 0x0010ffaf, 0x0010ffb8, 0x0010ffc1, 0x0010ffca, 0x0010ffd3, 492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffdc, 0x0010ffe5, 0x0010ffee, 0x0010fff7 493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00050018, 0x000901f5, 0x000c0ff6, 0x000c0ff7, 0x0010ff98, 0x0010ffa0, 496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffa8, 0x0010ffb0, 0x0010ffb9, 0x0010ffc2, 0x0010ffcb, 0x0010ffd4, 497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffdd, 0x0010ffe6, 0x0010ffef, 0x0010fff8 498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00050019, 0x000b07f6, 0x000f7fc2, 0x0010ff91, 0x0010ff99, 0x0010ffa1, 501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffa9, 0x0010ffb1, 0x0010ffba, 0x0010ffc3, 0x0010ffcc, 0x0010ffd5, 502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffde, 0x0010ffe7, 0x0010fff0, 0x0010fff9 503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00060038, 0x000c0ff5, 0x0010ff8c, 0x0010ff92, 0x0010ff9a, 0x0010ffa2, 506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffaa, 0x0010ffb2, 0x0010ffbb, 0x0010ffc4, 0x0010ffcd, 0x0010ffd6, 507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffdf, 0x0010ffe8, 0x0010fff1, 0x0010fffa 508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00070078, 0x0010ff88, 0x0010ff8d, 0x0010ff93, 0x0010ff9b, 0x0010ffa3, 511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffab, 0x0010ffb3, 0x0010ffbc, 0x0010ffc5, 0x0010ffce, 0x0010ffd7, 512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffe0, 0x0010ffe9, 0x0010fff2, 0x0010fffb 513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x000901f4, 0x0010ff89, 0x0010ff8e, 0x0010ff94, 0x0010ff9c, 0x0010ffa4, 516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffac, 0x0010ffb4, 0x0010ffbd, 0x0010ffc6, 0x0010ffcf, 0x0010ffd8, 517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffe1, 0x0010ffea, 0x0010fff3, 0x0010fffc 518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x000a03f6, 0x0010ff8a, 0x0010ff8f, 0x0010ff95, 0x0010ff9d, 0x0010ffa5, 521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffad, 0x0010ffb5, 0x0010ffbe, 0x0010ffc7, 0x0010ffd0, 0x0010ffd9, 522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffe2, 0x0010ffeb, 0x0010fff4, 0x0010fffd 523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x000c0ff4, 0x0010ff8b, 0x0010ff90, 0x0010ff96, 0x0010ff9e, 0x0010ffa6, 526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffae, 0x0010ffb6, 0x0010ffbf, 0x0010ffc8, 0x0010ffd1, 0x0010ffda, 527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x0010ffe3, 0x0010ffec, 0x0010fff5, 0x0010fffe 528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000 533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000 538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000 543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 545b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 546b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 547b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000 548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00000000, 0x00000000, 0x00000000, 0x00000000 553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* DHT Marker */ 557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* lum_dc_codelens */ 558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin {0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0}, 559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* lum_dc_ncodes */ 560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 16, 561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* lum_dc_symbols */ 562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* lum_dc_nsymbols */ 564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 12, 565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* lum_ac_codelens */ 566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin {0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d}, 567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* lum_ac_ncodes */ 568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 16, 569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* lum_ac_symbols */ 570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, 574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, 575b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, 576b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 577b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 578b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 579b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 580b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 581b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xf9, 0xfa 592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* lum_ac_nsymbols */ 595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 162, 596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* chm_dc_codelens */ 597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin {0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0}, 598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* chm_dc_ncodes */ 599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 16, 600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* chm_dc_symbols */ 601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* chm_dc_nsymbols */ 603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 12, 604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* chm_ac_codelens */ 605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin {0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77}, 606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* chm_ac_ncodes */ 607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 16, 608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* chm_ac_symbols */ 609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, 612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, 614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, 615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26, 616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, 617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 0xf9, 0xfa 631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }, 632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* chm_ac_nsymbols */ 633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 162 634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}; 635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef unsigned char uchar; 638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Pipe used to communicate back to the main thread from the component thread; 640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin**/ 641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint IpBuf_Pipe[2]; 642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint OpBuf_Pipe[2]; 643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint Event_Pipe[2]; 644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* the FLAG when we need to DeInit the OMX */ 646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint DEINIT_FLAG = 0; 647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* Flag set when component is preempted */ 649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint bPreempted=0; 650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* Hardware error flag */ 652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_BOOL bError = OMX_FALSE; 653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*function prototypes */ 655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavininline int maxint(int a, int b); 656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE SetMarkers(OMX_HANDLETYPE pHandle, IMAGE_INFO *imageinfo, OMX_CONFIG_RECTTYPE sCrop, int nWidth, int nHeight); 657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_MMU_FAULT_HANDLING 659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint LoadBaseImage(); 660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*Routine to get the maximum of 2 integers */ 663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavininline int maxint(int a, int b) 664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return(a>b) ? a : b; 666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/** 670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * This method will wait for the component or mixer to get to the correct 671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * state. It is not a real implementation, but just simulates what a real 672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * wait routine may do. 673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin**/ 674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstatic OMX_ERRORTYPE WaitForState(OMX_HANDLETYPE* pHandle, 675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE DesiredState) 676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE CurState = OMX_StateInvalid; 678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nCnt = 0; 680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)pHandle; 681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Inside Test Application WaitForState function\n"); 683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = pComponent->GetState(pHandle, &CurState); 684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while ( (eError == OMX_ErrorNone) && 685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (CurState != DesiredState)) { 686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sched_yield(); 687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*sleep(1);*/ 688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( nCnt++ == 0xFFFFFFFE ) { 689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Press CTL-C to continue\n"); 690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = pComponent->GetState(pHandle, &CurState); 693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (CurState == OMX_StateInvalid && DesiredState != OMX_StateInvalid) { 694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorInvalidState; 695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ) { 700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Error: Couldn't get state for component or sent to invalid state because of an error.\n"); 701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return OMX_ErrorNone; 704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE EventHandler(OMX_HANDLETYPE hComponent,OMX_PTR pAppData,OMX_EVENTTYPE eEvent, 707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 nData1, OMX_U32 data2, OMX_PTR pEventData) 708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent = (OMX_COMPONENTTYPE *)hComponent; 710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE state; 711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError; 712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin JPEGE_EVENTPRIVATE MyEvent; 713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin MyEvent.eEvent = eEvent; 715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin MyEvent.nData1 = nData1; 716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin MyEvent.nData2 = data2; 717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin MyEvent.pAppData = pAppData; 718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin MyEvent.pEventInfo = pEventData; 719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Inside Test Application EventHandler function\n"); 720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = pComponent->GetState (hComponent, &state); 721b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ) { 723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Error: From JPEGENC_GetState\n"); 724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch ( eEvent ) { 726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventCmdComplete: 728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT ("Component State Changed\n"); 729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventError: 732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nData1 == OMX_ErrorHardware){ 733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\n\nAPP:: ErrorNotification received: Error Num = %p Severity = %ld String = %s\n", (OMX_PTR)nData1, data2, (OMX_STRING)pEventData); 734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\nAPP:: OMX_ErrorHardware. Deinitialization of the component....\n\n"); 735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!bError) { 736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bError = OMX_TRUE; 737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(Event_Pipe[1], &MyEvent, sizeof(JPEGE_EVENTPRIVATE)); 738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(nData1 == OMX_ErrorResourcesPreempted) { 741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bPreempted = 1; 742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("APP:: OMX_ErrorResourcesPreempted !\n\n"); 743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(nData1 == OMX_ErrorInvalidState) { 745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\n\nAPP:: ErrorNotification received: Error Num = %p Severity = %ld String = %s\n", (OMX_PTR)nData1, data2, (OMX_STRING)pEventData); 746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\nAPP:: Invalid state\n\n"); 747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!bError) { 748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bError = OMX_TRUE; 749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(Event_Pipe[1], &MyEvent, sizeof(JPEGE_EVENTPRIVATE)); 750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(nData1 == OMX_ErrorPortUnpopulated) { 753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("APP:: OMX_ErrorPortUnpopulated\n"); 754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bError = OMX_TRUE; 755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (nData1 == OMX_ErrorStreamCorrupt) { 757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\n\nAPP:: ErrorNotification received: Error Num = %p Severity = %ld String = %s\n", (OMX_PTR)nData1, data2, (OMX_STRING)pEventData); 758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%s: Stream Corrupt (%ld %s)\n",__FUNCTION__,data2,(char*)pEventData); 759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(!bError) { 760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bError = OMX_TRUE; 761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(Event_Pipe[1], &MyEvent, sizeof(JPEGE_EVENTPRIVATE)); 762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bError = OMX_TRUE; 766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin DEINIT_FLAG = 1; 767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventResourcesAcquired: 772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bPreempted = 0; 773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventPortSettingsChanged: 776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventBufferFlag: 777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Event Buffer Flag detected\n"); 778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventMax: 779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventMark: 780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("ErrorNotification received: Error Num %p: String :%s\n", (OMX_PTR)nData1, (OMX_STRING)pEventData); 784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return OMX_ErrorNone; 787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid FillBufferDone (OMX_HANDLETYPE hComponent, OMX_PTR ptr, 791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffHead) 792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Inside Test Application FillBufferDone function\n"); 794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(OpBuf_Pipe[1], &pBuffHead, sizeof(pBuffHead)); 795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid EmptyBufferDone(OMX_HANDLETYPE hComponent, OMX_PTR ptr, 799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer) 800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Inside Test Application EmptyBufferDone function\n"); 802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin write(IpBuf_Pipe[1], &pBuffer, sizeof(pBuffer)); 803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint fill_data (OMX_BUFFERHEADERTYPE *pBufferPrivate, HANDLE fIn, int buffSize) 807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint fill_data (OMX_BUFFERHEADERTYPE *pBuf, FILE *fIn, int buffSize) 809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nRead; 812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 oneByte; 813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Inside Test Application fill_data function\n"); 814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ReadFile(fIn, pBuf->pBuffer, lSize, &nRead, NULL); 817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRead = fread(pBuf->pBuffer,1, buffSize , fIn); 819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("Buffer Size = %d. Read %d bytes from file. \n", (int) buffSize, (int)nRead); 822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuf->nFilledLen = nRead; 823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin oneByte = fgetc(fIn); 825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (feof(fIn)){ 826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pBuf->nFlags = OMX_BUFFERFLAG_ENDOFFRAME; 827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Read full file...\n"); 828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin rewind(fIn); 829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else{ 831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ungetc(oneByte, fIn); 832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return nRead; 835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinOMX_ERRORTYPE SetMarkers(OMX_HANDLETYPE pHandle, IMAGE_INFO *imageinfo, OMX_CONFIG_RECTTYPE sCrop, int nWidth, int nHeight) { 838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE eError = OMX_ErrorNone; 840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nCustomIndex = OMX_IndexMax; 841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set APP0 Marker config (JFIF) */ 843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (imageinfo->bAPP0) { 844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin JPEG_APPTHUMB_MARKER sAPP0; 846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP0.bMarkerEnabled = OMX_TRUE; 848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* set JFIF marker buffer */ 850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP0.nMarkerSize = sizeof(APPLICATION0); 851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP0.pMarkerBuffer = APPLICATION0; 852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP0.nThumbnailWidth = imageinfo->nThumbnailWidth_app0; 853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP0.nThumbnailHeight = imageinfo->nThumbnailHeight_app0; 854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetExtensionIndex(pHandle, "OMX.TI.JPEG.encoder.Config.APP0", (OMX_INDEXTYPE*)&nCustomIndex); 856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ) { 857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, eError); 858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 861b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetConfig(pHandle, nCustomIndex, &sAPP0); 862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ) { 863b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, eError); 864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 870b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set APP1 Marker config (EXIF) */ 871b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (imageinfo->bAPP1) { 872b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin JPEG_APPTHUMB_MARKER sAPP1; 874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP1.bMarkerEnabled = OMX_TRUE; 876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* set JFIF marker buffer */ 878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP1.nThumbnailWidth = imageinfo->nThumbnailWidth_app1; 879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP1.nThumbnailHeight = imageinfo->nThumbnailHeight_app1; 880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* if thumbnail is set, use APPLICATION structure with thumbnail */ 882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(sAPP1.nThumbnailWidth > 0 && sAPP1.nThumbnailHeight > 0) { 883b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP1.nMarkerSize = sizeof(APPLICATION1_THUMB); 884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP1.pMarkerBuffer = APPLICATION1_THUMB; 885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP1.nMarkerSize = sizeof(APPLICATION1_NOTHUMB); 888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP1.pMarkerBuffer = APPLICATION1_NOTHUMB; 889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*set crop */ 892b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (sCrop.nWidth != 0) 893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 894b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP1.pMarkerBuffer[152] = sCrop.nWidth & 0xFF; 895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP1.pMarkerBuffer[153] = (sCrop.nWidth >> 8) & 0xFF; 896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else 898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP1.pMarkerBuffer[152] = nWidth & 0xFF; 900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP1.pMarkerBuffer[153] = (nWidth >> 8) & 0xFF; 901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (sCrop.nHeight != 0) 904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP1.pMarkerBuffer[164] = sCrop.nHeight; 906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP1.pMarkerBuffer[165] = (sCrop.nHeight >> 8) & 0xFF; 907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else 909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP1.pMarkerBuffer[164] = nHeight; 911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP1.pMarkerBuffer[165] = (nHeight >> 8) & 0xFF; 912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 913b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetExtensionIndex(pHandle, "OMX.TI.JPEG.encoder.Config.APP1", (OMX_INDEXTYPE*)&nCustomIndex); 915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ) { 916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, eError); 917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetConfig(pHandle, nCustomIndex, &sAPP1); 921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ) { 922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, eError); 923b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 928b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set APP5 Marker config */ 929b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (imageinfo->bAPP5) { 930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 931b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin JPEG_APPTHUMB_MARKER sAPP5; 932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP5.bMarkerEnabled = OMX_TRUE; 934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* set JFIF marker buffer */ 936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP5.nMarkerSize = sizeof(APPLICATION5); 937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP5.pMarkerBuffer = APPLICATION5; 938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP5.nThumbnailWidth = imageinfo->nThumbnailWidth_app5; 939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP5.nThumbnailHeight = imageinfo->nThumbnailHeight_app5; 940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetExtensionIndex(pHandle, "OMX.TI.JPEG.encoder.Config.APP5", (OMX_INDEXTYPE*)&nCustomIndex); 942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ) { 943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, eError); 944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 946b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetConfig(pHandle, nCustomIndex, &sAPP5); 948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ) { 949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, eError); 950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set APP13 Marker config */ 957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (imageinfo->bAPP13) { 958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin JPEG_APP13_MARKER sAPP13; 960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP13.bMarkerEnabled = OMX_TRUE; 962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* set JFIF marker buffer */ 964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP13.nMarkerSize = sizeof(APPLICATION13); 965b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sAPP13.pMarkerBuffer = APPLICATION13; 966b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 967b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetExtensionIndex(pHandle, "OMX.TI.JPEG.encoder.Config.APP13", (OMX_INDEXTYPE*)&nCustomIndex); 968b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ) { 969b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, eError); 970b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 971b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 972b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 973b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetConfig(pHandle, nCustomIndex, &sAPP13); 974b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ) { 975b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, eError); 976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 977b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 979b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 980b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 981b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* set comment marker */ 982b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (imageinfo->nComment) { 983b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetExtensionIndex(pHandle, "OMX.TI.JPEG.encoder.Config.CommentFlag", (OMX_INDEXTYPE*)&nCustomIndex); 984b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ) { 985b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, eError); 986b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 987b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 988b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 989b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetConfig(pHandle, nCustomIndex, &(imageinfo->nComment)); 990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ) { 991b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, eError); 992b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 993b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 994b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 995b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 996b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_GetExtensionIndex(pHandle, "OMX.TI.JPEG.encoder.Config.CommentString", (OMX_INDEXTYPE*)&nCustomIndex); 997b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ) { 998b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, eError); 999b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 1000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_SetConfig(pHandle, nCustomIndex, imageinfo->pCommentString); 1003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( eError != OMX_ErrorNone ) { 1004b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, eError); 1005b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin eError = OMX_ErrorUndefined; 1006b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1007b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1009b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 1011b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return eError; 1012b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1013b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinvoid PrintUsage(void) 1015b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1016b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\ni.. Input File\n"); 1017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("o.. Output File\n"); 1018b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("w.. Width Of Image\n"); 1019b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("h.. Height Of Image\n"); 1020b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("f.. Input Of Image:\n 1.- YUV 420 Planer\n 2.- YUV 422 Interleaved UYVY\n 3.- 32 bit RAW (RGB32)\n 4.- 16 bit RAW (RGB16)\n 5.- YUV 422 Interleaved YUYV\n"); 1021b65f253fdc60f6208a54911bee793d225f23cdf8James Dong printf("z.. 420p to 422i conversion before encode \n"); 1022b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("q.. Quality Factor Of Image: 1 to 100\n"); 1023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("b.. Exit Buffer: 1 o 2\n"); 1024b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("c.. Marker Comment: The comment string length should be less than 255 characters\n"); 1025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("j.. Marker APP0: Contain Information about JFIF\n"); 1026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("e.. Marker APP1: Contain Information about EXIF\n"); 1027b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("d.. Marker APP5: Contain Miscellaneous Information\n"); 1028b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("m.. Marker APP13: Contain Miscellaneous Information\n"); 1029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("x.. Width of Thumbnail of EXIF (default set to 88)\n"); 1030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("y.. Height of Thumbnail of EXIF (default set to 72)\n"); 1031b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("s.. Width of Thumbnail of JFIF (default set to 88)\n"); 1032b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("k.. Height of Thumbnail of JFIF (default set to 72)\n"); 1033b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("n.. Width of Thumbnail of APP5 (default set to 88)\n"); 1034b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("p.. Height of Thumbnail of APP5 (default set to 72)\n"); 1035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("t.. Type of Quantization Table \n\t 0.-Default Quantization Tables \n\t 1.-Custom Luma And Choma Tables\n"); 1036b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("u.. Type of Huffman Table \n\t 0.-Default Huffman Table \n\t 1.-Custom Huffman Table\n"); 1037b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("r.. No. of times to repeat\n"); 1038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("v.. Crop width value\n"); 1039b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("l.. Crop height value\n"); 1040b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1041b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\na.. Prints this information\n"); 1042b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\nExample: ./JPEGTestEnc_common -i patterns/JPGE_CONF_003.yuv -o output.jpg -w 176 -h 144 -f 2 -q 100 -b 1 -c JPEG -j -e -m -x 100 -y 100 -r 1\n\n"); 1043b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 1044b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1045b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 1047b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint _tmain(int argc, TCHAR **argv) 1048b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint main(int argc, char** argv) 1050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1051b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1052b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1054b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin//mtrace(); 1055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1056b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_HANDLETYPE pHandle; 1057b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U32 AppData = 100; 1058b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CALLBACKTYPE JPEGCaBa = {(void *)EventHandler, 1060b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (void*) EmptyBufferDone, 1061b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (void*)FillBufferDone}; 1062b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int retval; 1063b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nWidth; 1064b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nHeight; 1065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int framesent = 0; 1066b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nRepeated = 0; 1067b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int maxRepeat = 1; 1068b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int inputformat; 1069b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int qualityfactor; 1070b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int buffertype; 1071b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int bSetCustomHuffmanTable=0; 1072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int bSetCustomQuatizationTable=0; 1073b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sigset_t set; 1074b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1075b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_STATETYPE state; 1076b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_COMPONENTTYPE *pComponent; 1077b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin IMAGE_INFO* imageinfo = NULL; 1078b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PORT_PARAM_TYPE* pPortParamType = NULL; 1079b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IMAGE_PARAM_QFACTORTYPE* pQfactorType = NULL; 1080b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin JPEGENC_CUSTOM_HUFFMANTTABLETYPE *pHuffmanTable = NULL; 1081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE *pQuantizationTable = NULL; 1082b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pInPortDef = NULL; 1083b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_PARAM_PORTDEFINITIONTYPE* pOutPortDef = NULL; 1084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_CONFIG_RECTTYPE sCrop; 1085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1086b65f253fdc60f6208a54911bee793d225f23cdf8James Dong OMX_BOOL bConvertion_420pTo422i = OMX_FALSE; 1087b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 1088b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 1089b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TCHAR* szInFile = NULL; 1090b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin TCHAR* szOutFile = NULL; 1091b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin HANDLE fIn = NULL; 1092b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin HANDLE fOut = NULL; 1093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin DWORD dwWritten; 1094b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1095b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin char* szInFile = NULL; 1096b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin char* szOutFile = NULL; 1097b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1098b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FILE* fIn = NULL; 1099b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FILE* fOut = NULL; 1100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pInBuff[NUM_OF_BUFFERSJPEG]; 1103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pOutBuff[NUM_OF_BUFFERSJPEG]; 1104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nCounter = 0; 1105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int fdmax; 1106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pTemp; 1107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pInBuffer[NUM_OF_BUFFERSJPEG]; 1108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8* pOutBuffer[NUM_OF_BUFFERSJPEG]; 1109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuffer; 1110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_BUFFERHEADERTYPE* pBuf; 1111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nRead; 1112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int done; 1113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_S32 sJPEGEnc_CompID = 300; 1114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nIndex1= 0; 1115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nIndex2 = 0; 1116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nframerecieved = 0; 1117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nMultFactor = 0; 1118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int nHeightNew, nWidthNew; 1119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_INDEXTYPE nCustomIndex = OMX_IndexMax; 1120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_ERRORTYPE error = OMX_ErrorNone; 1121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef STRESS 1123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int multiload = 0; 1124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin int next_option; 1127b65f253fdc60f6208a54911bee793d225f23cdf8James Dong const char* const short_options = "i:o:w:h:f:q:b:c:x:y:s:k:t:u:r:v:l:n:p:ajemdvlz"; 1128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin const struct option long_options[] = 1129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "InputFile",1, NULL, 'i' }, 1131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "OutputFile",1, NULL, 'o' }, 1132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "WidthImage",1, NULL, 'w' }, 1133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "HeightImage",1, NULL, 'h' }, 1134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "inputFormat",1, NULL, 'f' }, 1135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "QualityFactor",1, NULL, 'q' }, 1136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "Ext/IntBuffer",1, NULL, 'b' }, 1137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "MarkerComment",1, NULL, 'c' }, 1138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "EXIFwidthThumbnail",1, NULL, 'x' }, 1139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "EXIFheightThumbnail",1, NULL, 'y' }, 1140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "JFIFwidthThumbnail",1, NULL, 's' }, 1141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "JFIFheightThumbnail",1, NULL, 'k' }, 1142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "APP5heightThumbnail",1, NULL, 'p' }, 1143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "APP5widthThumbnail",1, NULL, 'n' }, 1144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "Repetition",1, NULL, 'r' }, 1145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin {"QuantizationTable",1,NULL,'t'}, 1146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin {"HuffmanTable",1,NULL,'u'}, 1147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "help", 0, NULL, 'a' }, 1148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "MarkerAPP0",0,NULL,'j'}, 1149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "MarkerAPP1",0,NULL,'e'}, 1150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "MarkerAPP13",0,NULL,'m'}, 1151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "MarkerAPP5",0,NULL,'d'}, 1152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "CroppedWidth",0,NULL,'v'}, 1153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { "CroppedHeight",0,NULL,'l'}, 1154b65f253fdc60f6208a54911bee793d225f23cdf8James Dong { "420pTo422iConversion",0,NULL,'z'}, 1155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { NULL, 0, NULL, 0 } 1156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin }; 1157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin MALLOC(pPortParamType, OMX_PORT_PARAM_TYPE); 1159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin MALLOC(pQfactorType, OMX_IMAGE_PARAM_QFACTORTYPE); 1160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin MALLOC(pQuantizationTable,OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE); 1161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin MALLOC(pHuffmanTable, JPEGENC_CUSTOM_HUFFMANTTABLETYPE); 1162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin MALLOC(pInPortDef, OMX_PARAM_PORTDEFINITIONTYPE); 1163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin MALLOC(pOutPortDef, OMX_PARAM_PORTDEFINITIONTYPE); 1164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin MALLOC(imageinfo, IMAGE_INFO); 1165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1166b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Setting up default parameters */ 1167b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin szOutFile="output.jpg"; 1168b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nWidth=176; 1169b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nHeight=144; 1170b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin inputformat=1; 1171b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin qualityfactor=100; 1172b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin buffertype=1; 1173b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1174b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nThumbnailWidth_app0 = 0; 1175b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nThumbnailHeight_app0 = 0; 1176b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nThumbnailWidth_app1 = 0; 1177b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nThumbnailHeight_app1 = 0; 1178b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nThumbnailWidth_app5 = 0; 1179b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nThumbnailHeight_app5 = 0; 1180b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nThumbnailWidth_app13 = 0; 1181b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nThumbnailHeight_app13 = 0; 1182b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1183b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->bAPP0 = OMX_FALSE; 1184b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->bAPP1 = OMX_FALSE; 1185b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->bAPP5 = OMX_FALSE; 1186b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->bAPP13 = OMX_FALSE; 1187b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nComment = OMX_FALSE; 1188b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->pCommentString = NULL; 1189b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1190b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sCrop.nTop = 0; 1191b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sCrop.nLeft = 0; 1192b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sCrop.nWidth = 0; 1193b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sCrop.nHeight = 0; 1194b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1195b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (argc <= 1) 1196b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1197b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PrintUsage(); 1198b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return 0; 1199b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1200b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1201b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavindo 1202b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin{ 1203b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin next_option = getopt_long(argc, argv, short_options,long_options, NULL); 1204b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch(next_option) 1205b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1206b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'a': 1207b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PrintUsage(); 1208b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return 0; 1209b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1210b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1211b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'i': 1212b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin szInFile=optarg; 1213b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1214b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1215b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'o': 1216b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin szOutFile=optarg; 1217b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1218b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1219b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'w': 1220b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nWidth = atoi(optarg); 1221b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1222b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1223b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'h': 1224b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nHeight=atoi(optarg); 1225b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1226b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1227b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'f': 1228b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin inputformat=atoi(optarg); 1229b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1230b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1231b65f253fdc60f6208a54911bee793d225f23cdf8James Dong case 'z': 1232b65f253fdc60f6208a54911bee793d225f23cdf8James Dong bConvertion_420pTo422i = OMX_TRUE; 1233b65f253fdc60f6208a54911bee793d225f23cdf8James Dong PRINT("\n ********* bConvertion_420pTo422i is set to TRUE \n"); 1234b65f253fdc60f6208a54911bee793d225f23cdf8James Dong break; 1235b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 1236b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'q': 1237b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin qualityfactor=atoi(optarg); 1238b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1239b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1240b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'b': 1241b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin buffertype=atoi(optarg); 1242b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1243b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1244b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'c': 1245b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nComment = 1; 1246b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->pCommentString = (char *)optarg; 1247b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1248b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1249b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*EXIF */ 1250b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1251b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'e': 1252b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->bAPP1 = OMX_TRUE; 1253b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1254b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1255b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'x': 1256b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nThumbnailWidth_app1 = atoi(optarg); 1257b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1258b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1259b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'y': 1260b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nThumbnailHeight_app1 = atoi(optarg); 1261b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1262b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1263b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* JFIF */ 1264b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'j': 1265b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->bAPP0 = OMX_TRUE; 1266b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1267b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1268b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 's': 1269b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nThumbnailWidth_app0 = atoi(optarg); 1270b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1271b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1272b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'k': 1273b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nThumbnailHeight_app0 = atoi(optarg); 1274b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1275b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1276b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1277b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'n': 1278b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nThumbnailWidth_app5 = atoi(optarg); 1279b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1280b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1281b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'p': 1282b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->nThumbnailHeight_app5 = atoi(optarg); 1283b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1284b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1285b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'm': 1286b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->bAPP13 = OMX_TRUE; 1287b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1288b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1289b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'd': 1290b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin imageinfo->bAPP5 = OMX_TRUE; 1291b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1292b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1293b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 't': 1294b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bSetCustomQuatizationTable=atoi(optarg); 1295b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1296b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1297b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'u': 1298b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin bSetCustomHuffmanTable=atoi(optarg); 1299b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1300b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1301b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'r': 1302b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin maxRepeat = atoi(optarg); 1303b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1304b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1305b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'v': 1306b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sCrop.nWidth = atoi(optarg); 1307b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1308b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1309b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case 'l': 1310b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sCrop.nHeight = atoi(optarg); 1311b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1312b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1313b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1314b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin}while (next_option != -1); 1315b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1316b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\n------------------------------------------------\n"); 1317b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("OMX JPEG Encoder Test App built on " __DATE__ ":" __TIME__ "\n"); 1318b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("------------------------------------------------\n"); 1319b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Output File Name is %s \n" , szOutFile); 1320b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1321b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef STRESS 1322b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1323b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (multiload = 0; multiload < STRESSMULTILOAD; multiload ++) { 1324b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Stress Test: Iteration %d\n", multiload + 1); 1325b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1326b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1327b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1328b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_MMU_FAULT_HANDLING 1329b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/* LOAD BASE IMAGE FIRST TIME */ 1330b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LoadBaseImage(); 1331b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1332b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1333b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = TIOMX_Init(); 1334b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1335b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Error returned by OMX_Init()\n"); 1336b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1337b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1338b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1339b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("OMX_Init Successful!\n"); 1340b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1341b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = TIOMX_GetHandle(&pHandle,StrJpegEncoder,(void *)&AppData, &JPEGCaBa); 1342b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( (error != OMX_ErrorNone) || (pHandle == NULL) ) { 1343b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf (stderr,"Error in Get Handle function\n"); 1344b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1345b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1346b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1347b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef STRESS 1348b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_U8 i; 1349b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for(i=0; i < NSTRESSCASES; i++) { 1350b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Stress test number %d\n",i); 1351b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1352b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1353b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Create a pipe used to queue data from the callback. */ 1354b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = pipe(IpBuf_Pipe); 1355b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( retval != 0 ) { 1356b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Error:Fill Data Pipe failed to open\n"); 1357b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1358b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1359b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1360b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = pipe(OpBuf_Pipe); 1361b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( retval != 0 ) { 1362b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Error:Empty Data Pipe failed to open\n"); 1363b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1364b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1365b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1366b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = pipe(Event_Pipe); 1367b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( retval != 0 ) { 1368b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Error:Empty Data Pipe failed to open\n"); 1369b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1370b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1371b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1372b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Input/Output Pipes created\n"); 1373b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1374b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* save off the "max" of the handles for the selct statement */ 1375b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fdmax = maxint(IpBuf_Pipe[0], OpBuf_Pipe[0]); 1376b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fdmax = maxint(Event_Pipe[0], fdmax); 1377b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1378b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 1379b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fIn = CreateFile(szInFile, GENERIC_READ, 0, 1380b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL,OPEN_EXISTING, 0, NULL); 1381b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (INVALID_HANDLE_VALUE == fIn) 1382b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1383b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Error: failed to open the file %s for " \ 1384b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin "reading\n", szInFile); 1385b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1386b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1387b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1388b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fIn = fopen(szInFile, "r"); 1389b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( fIn == NULL ) { 1390b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("Error: failed to open the file <%s> for reading\n", 1391b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin szInFile); 1392b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1393b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1394b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT(" File %s opened \n" , szInFile); 1395b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1396b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1397b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1398b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_GetParameter(pHandle, OMX_IndexParamImageInit, pPortParamType); 1399b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1400b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1401b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1402b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1403b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1404b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1405b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nIndex1 = pPortParamType->nStartPortNumber; 1406b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nIndex2 = nIndex1 + 1; 1407b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nPortIndex = nIndex1; 1408b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_GetParameter (pHandle, OMX_IndexParamPortDefinition, pInPortDef); 1409b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1410b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1411b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1412b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1413b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1414b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1415b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pInPortDef->eDir == nIndex1 ) { 1416b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nPortIndex = nIndex1; 1417b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1418b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1419b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nPortIndex = nIndex2; 1420b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1421b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1422b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set the component's OMX_PARAM_PORTDEFINITIONTYPE structure (input) */ 1423b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); 1424b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nVersion.s.nVersionMajor = 0x1; 1425b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nVersion.s.nVersionMinor = 0x0; 1426b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nVersion.s.nRevision = 0x0; 1427b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nVersion.s.nStep = 0x0; 1428b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nPortIndex = 0x0; 1429b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->eDir = OMX_DirInput; 1430b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nBufferCountActual = NUM_OF_BUFFERSJPEG; 1431b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nBufferCountMin = 1; 1432b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->bEnabled = OMX_TRUE; 1433b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->bPopulated = OMX_FALSE; 1434b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->eDomain = OMX_PortDomainImage; 1435b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1436b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* OMX_IMAGE_PORTDEFINITION values for input port */ 1437b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->format.image.cMIMEType = "JPEGENC"; 1438b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->format.image.pNativeRender = NULL; 1439b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->format.image.nFrameWidth = nWidth; 1440b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->format.image.nFrameHeight = nHeight; 1441b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->format.image.nSliceHeight = -1; 1442b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->format.image.bFlagErrorConcealment = OMX_FALSE; 1443b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1444b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( inputformat == 2) { 1445b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->format.image.eColorFormat = OMX_COLOR_FormatCbYCrY; 1446b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1447b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if ( inputformat == 3) { 1448b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->format.image.eColorFormat = OMX_COLOR_Format32bitARGB8888; 1449b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1450b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (inputformat == 4) { 1451b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->format.image.eColorFormat = OMX_COLOR_Format16bitRGB565; 1452b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1453b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if ( inputformat == 5) { 1454b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->format.image.eColorFormat = OMX_COLOR_FormatYCbYCr; 1455b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1456b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1457b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->format.image.eColorFormat = OMX_COLOR_FormatYUV420PackedPlanar; 1458b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1459b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1460b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->format.image.eCompressionFormat = OMX_IMAGE_CodingUnused; 1461b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1462b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nMultFactor = (nWidth + 16 - 1)/16; 1463b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nWidthNew = (int)(nMultFactor) * 16; 1464b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1465b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nMultFactor = (nHeight + 16 - 1)/16; 1466b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nHeightNew = (int)(nMultFactor) * 16; 1467b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1468b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (inputformat == 1) { 1469b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nBufferSize = (nWidthNew * nHeightNew * 1.5); 1470b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pInPortDef->nBufferSize < 1600) { 1471b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nBufferSize = 1600; 1472b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1473b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1474b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if(inputformat == 3) { 1475b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nBufferSize = (nWidthNew * nHeightNew * 4); 1476b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1477b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1478b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nBufferSize = (nWidthNew * nHeightNew * 2); 1479b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pInPortDef->nBufferSize < 400) { 1480b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInPortDef->nBufferSize = 400; 1481b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1482b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1483b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1484b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1485b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pInPortDef); 1486b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1487b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1488b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1489b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1490b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1491b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1492b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->nPortIndex = nIndex2; 1493b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_GetParameter(pHandle, OMX_IndexParamPortDefinition, pOutPortDef); 1494b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1495b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1496b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1497b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1498b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1499b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pOutPortDef->eDir == nIndex1 ) { 1500b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->nPortIndex = nIndex1; 1501b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1502b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1503b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->nPortIndex = nIndex2; 1504b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1505b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* Set the component's OMX_PARAM_PORTDEFINITIONTYPE structure (input) */ 1506b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1507b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); 1508b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->nVersion.s.nVersionMajor = 0x1; 1509b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->nVersion.s.nVersionMinor = 0x0; 1510b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->nVersion.s.nRevision = 0x0; 1511b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->nVersion.s.nStep = 0x0; 1512b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->nPortIndex = 0x1; 1513b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->eDir = OMX_DirInput; 1514b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->nBufferCountActual = NUM_OF_BUFFERSJPEG; 1515b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->nBufferCountMin = 1; 1516b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->bEnabled = OMX_TRUE; 1517b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->bPopulated = OMX_FALSE; 1518b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->eDomain = OMX_PortDomainImage; 1519b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1520b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* OMX_IMAGE_PORTDEFINITION values for input port */ 1521b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->format.image.cMIMEType = "JPEGENC"; 1522b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->format.image.pNativeRender = NULL; 1523b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->format.image.nFrameWidth = nWidth; 1524b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->format.image.nFrameHeight = nHeight; 1525b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->format.image.nStride = -1; 1526b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->format.image.nSliceHeight = -1; 1527b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->format.image.bFlagErrorConcealment = OMX_FALSE; 1528b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1529b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Minimum buffer size requirement */ 1530b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->nBufferSize = (nWidth*nHeight); 1531b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( qualityfactor < 10){ 1532b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->nBufferSize /=10; 1533b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1534b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if (qualityfactor <100){ 1535b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->nBufferSize /= (100/qualityfactor); 1536b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1537b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1538b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*Adding memory to include Thumbnail, comments & markers information and header (depends on the app)*/ 1539b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->nBufferSize += 12288; 1540b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1541b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1542b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( inputformat == 2 || inputformat == 3 || inputformat == 4 ) { 1543b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->format.image.eColorFormat = OMX_COLOR_FormatCbYCrY; 1544b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1545b65f253fdc60f6208a54911bee793d225f23cdf8James Dong else if ( inputformat == 1 && bConvertion_420pTo422i ) { 1546b65f253fdc60f6208a54911bee793d225f23cdf8James Dong pOutPortDef->format.image.eColorFormat = OMX_COLOR_FormatCbYCrY; 1547b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 1548b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1549b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->format.image.eColorFormat = OMX_COLOR_FormatYUV420PackedPlanar; 1550b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1551b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1552b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (imageinfo->bAPP1) { 1553b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->format.image.eCompressionFormat = OMX_IMAGE_CodingEXIF; 1554b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1555b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1556b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutPortDef->format.image.eCompressionFormat = OMX_IMAGE_CodingJPEG; 1557b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1558b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1559b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetParameter (pHandle, OMX_IndexParamPortDefinition, pOutPortDef); 1560b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1561b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1562b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1563b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1564b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1565b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1566b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponent = (OMX_COMPONENTTYPE *)pHandle; 1567b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1568b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetConfig(pHandle, OMX_IndexConfigCommonInputCrop, &sCrop); 1569b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1570b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1571b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1572b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1573b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1574b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1575b65f253fdc60f6208a54911bee793d225f23cdf8James Dong error = OMX_SetConfig(pHandle, OMX_IndexCustomColorFormatConvertion_420pTo422i, &bConvertion_420pTo422i); 1576b65f253fdc60f6208a54911bee793d225f23cdf8James Dong if ( error != OMX_ErrorNone ) { 1577b65f253fdc60f6208a54911bee793d225f23cdf8James Dong printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1578b65f253fdc60f6208a54911bee793d225f23cdf8James Dong error = OMX_ErrorBadParameter; 1579b65f253fdc60f6208a54911bee793d225f23cdf8James Dong goto EXIT; 1580b65f253fdc60f6208a54911bee793d225f23cdf8James Dong } 1581b65f253fdc60f6208a54911bee793d225f23cdf8James Dong 1582b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (bSetCustomQuatizationTable){ 1583b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1584b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pQuantizationTable->eQuantizationTable = OMX_IMAGE_QuantizationTableLuma; 1585b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_GetParameter(pHandle, OMX_IndexParamQuantizationTable, pQuantizationTable); 1586b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1587b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1588b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1589b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1590b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1591b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1592b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp = (OMX_U8*)memcpy(pQuantizationTable->nQuantizationMatrix, CustomLumaQuantizationTable, sizeof(CustomLumaQuantizationTable)); 1593b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pTemp == NULL){ 1594b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call\n", __LINE__); 1595b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorUndefined; 1596b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1597b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1598b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1599b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetParameter(pHandle, OMX_IndexParamQuantizationTable, pQuantizationTable); 1600b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1601b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1602b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1603b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1604b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1605b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1606b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pQuantizationTable->eQuantizationTable = OMX_IMAGE_QuantizationTableChroma; 1607b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_GetParameter(pHandle, OMX_IndexParamQuantizationTable, pQuantizationTable); 1608b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1609b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1610b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1611b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1612b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1613b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1614b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp = (OMX_U8*)memcpy(pQuantizationTable->nQuantizationMatrix, CustomChromaQuantizationTable, sizeof(CustomChromaQuantizationTable)); 1615b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pTemp == NULL){ 1616b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorUndefined; 1617b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1618b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1619b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1620b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetParameter(pHandle, OMX_IndexParamQuantizationTable, pQuantizationTable); 1621b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1622b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1623b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1624b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1625b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1626b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1627b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1628b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (bSetCustomHuffmanTable){ 1629b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1630b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_GetExtensionIndex(pHandle, "OMX.TI.JPEG.encoder.Config.HuffmanTable", (OMX_INDEXTYPE*)&nCustomIndex); 1631b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1632b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1633b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1634b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1635b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1636b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1637b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_GetParameter(pHandle, nCustomIndex, pHuffmanTable); 1638b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1639b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1640b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1641b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1642b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1643b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1644b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp = (OMX_U8*)memcpy(&(pHuffmanTable->sHuffmanTable), &CustomHuffmanTable, sizeof(CustomHuffmanTable)); 1645b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pTemp == NULL){ 1646b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorUndefined; 1647b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1648b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1649b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1650b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetParameter(pHandle, nCustomIndex, pHuffmanTable); 1651b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1652b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1653b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorBadParameter; 1654b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1655b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1656b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1657b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1658b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1659b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponent = (OMX_COMPONENTTYPE *)pHandle; 1660b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandStateSet, OMX_StateIdle ,NULL); 1661b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1662b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf (stderr,"Error from SendCommand-Idle(Init) State function\n"); 1663b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1664b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1665b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1666b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (buffertype == 1) { 1667b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1668b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (nCounter = 0; nCounter < NUM_OF_BUFFERSJPEG; nCounter++) { 1669b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp=(OMX_U8*)malloc(pInPortDef->nBufferSize+256); 1670b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pTemp == NULL){ 1671b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorInsufficientResources; 1672b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1673b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1674b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp+= 128; 1675b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInBuffer[nCounter] = pTemp; 1676b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp = NULL; 1677b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1678b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp= (OMX_U8*)malloc(pOutPortDef->nBufferSize+256); 1679b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(pTemp == NULL){ 1680b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_ErrorInsufficientResources; 1681b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1682b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1683b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pTemp+= 128; 1684b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutBuffer[nCounter] = pTemp; 1685b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1686b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1687b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (nCounter = 0; nCounter < NUM_OF_BUFFERSJPEG; nCounter++) { 1688b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_UseBuffer(pHandle, &pInBuff[nCounter], nIndex1, (void*)&sJPEGEnc_CompID, pInPortDef->nBufferSize,pInBuffer[nCounter]); 1689b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1690b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (nCounter = 0; nCounter < NUM_OF_BUFFERSJPEG; nCounter++) { 1691b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_UseBuffer(pHandle, &pOutBuff[nCounter], nIndex2, (void*)&sJPEGEnc_CompID, pOutPortDef->nBufferSize,pOutBuffer[nCounter]); 1692b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1693b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1694b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1695b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (buffertype == 2) { 1696b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (nCounter = 0; nCounter < NUM_OF_BUFFERSJPEG; nCounter++) { 1697b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_AllocateBuffer(pHandle, &pInBuff[nCounter], nIndex1, (void *)&sJPEGEnc_CompID, pInPortDef->nBufferSize); 1698b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1699b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (nCounter = 0; nCounter < NUM_OF_BUFFERSJPEG; nCounter++) { 1700b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_AllocateBuffer(pHandle, &pOutBuff[nCounter], nIndex2, (void *)&sJPEGEnc_CompID, pOutPortDef->nBufferSize); 1701b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1702b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1703b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1704b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* set markers */ 1705b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = SetMarkers(pHandle, imageinfo, sCrop, nWidth, nHeight); 1706b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1707b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf (stderr,"Error from SetMarkers() function\n"); 1708b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1709b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1710b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1711b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** 1712b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * wait for initialization to complete (as indicated by the statechange 1713b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * callback saying that component has been loaded (and is therefore 1714b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * initialized. Note that you should probably handle GUI events 1715b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * in the WaitForState method. 1716b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1717b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1718b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Waiting for state Idle\n"); 1719b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateIdle); 1720b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1721b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Error: JpegEncoder->WaitForState has timed out or failed %X\n", 1722b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error); 1723b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1724b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1725b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1726b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pQfactorType->nSize = sizeof(OMX_IMAGE_PARAM_QFACTORTYPE); 1727b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pQfactorType->nQFactor = (OMX_U32) qualityfactor; 1728b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pQfactorType->nVersion.s.nVersionMajor = 0x1; 1729b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pQfactorType->nVersion.s.nVersionMinor = 0x0; 1730b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pQfactorType->nVersion.s.nRevision = 0x0; 1731b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pQfactorType->nVersion.s.nStep = 0x0; 1732b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pQfactorType->nPortIndex = 0x0; 1733b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1734b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_GetExtensionIndex(pHandle, "OMX.TI.JPEG.encoder.Config.QFactor", (OMX_INDEXTYPE*)&nCustomIndex); 1735b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1736b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1737b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1738b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1739b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetConfig (pHandle, nCustomIndex, pQfactorType); 1740b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1741b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1742b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1743b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1744b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1745b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1746b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** 1747b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Open the file of data to be rendered. Since this is a just sample 1748b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * application, the data is "rendered" to a test mixer. So, the test 1749b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * file better contain data that can be printed to the terminal w/o 1750b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * problems or you will not be a happy camper. 1751b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1752b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Opening output jpg file\n"); 1753b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 1754b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fOut = CreateFile(szOutFile, GENERIC_WRITE, 0, 1755b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin NULL,CREATE_ALWAYS, 0, NULL); 1756b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (INVALID_HANDLE_VALUE == fOut){ 1757b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Error: failed to open the file <%s> for writing\n", 1758b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin szOutFile); 1759b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1760b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1761b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1762b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fOut = fopen(szOutFile, "w"); 1763b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( fOut == NULL ) { 1764b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Error: failed to open the file <%s> for writing\n", 1765b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin szOutFile); 1766b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1767b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1768b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1769b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1770b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateExecuting, NULL); 1771b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1772b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf (stderr,"Error from SendCommand-Executing State function\n"); 1773b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1774b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1775b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponent = (OMX_COMPONENTTYPE *)pHandle; 1776b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1777b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** 1778b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * wait for startup to complete (as indicated by the statechange 1779b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * callback saying that component has been loaded (and is therefore 1780b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * initialized. Note that you should probably handle GUI events 1781b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * in the WaitForState method. 1782b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1783b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1784b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Waiting for OMX_StateExcecuting\n"); 1785b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateExecuting); 1786b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1787b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Error: JpegEncoder->WaitForState has timed out or failed %X\n", error); 1788b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1789b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1790b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1791b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#if 0 1792b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (imageinfo->nDRI) { 1793b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_GetExtensionIndex(pHandle, "OMX.TI.JPEG.encoder.Config.DRI", (OMX_INDEXTYPE*)&nCustomIndex); 1794b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1795b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1796b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1797b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1798b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SetConfig(pHandle, nCustomIndex, &(imageinfo->nDRI)); 1799b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1800b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("%d::APP_Error at function call: %x\n", __LINE__, error); 1801b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1802b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1803b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1804b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1805b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1806b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** Handle the component's requests for data until we run out of data. Do this 1807b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * in a way that will allow the UI to continue to run (if there is a UI, which 1808b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * this sample application does NOT have) 1809b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1810b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1811b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 0; 1812b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponent->GetState(pHandle, &state); 1813b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Error is %d , cur state is %d ",error, state); 1814b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1815b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1816b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (nCounter =0; nCounter<1 /*NUM_OF_BUFFERSJPEG*/; nCounter++) { 1817b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRead = fill_data(pInBuff[nCounter], fIn,pInPortDef->nBufferSize); 1818b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponent->FillThisBuffer(pHandle, pOutBuff[nCounter]); 1819b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponent->EmptyThisBuffer(pHandle, pInBuff[nCounter]); 1820b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin framesent++; 1821b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Sent Frame # %d\n", framesent); 1822b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (pInBuff[nCounter]->nFlags == OMX_BUFFERFLAG_ENDOFFRAME) 1823b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1824b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1825b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1826b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while ((error == OMX_ErrorNone) && 1827b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (state != OMX_StateIdle)) { 1828b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1829b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (bPreempted) 1830b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin { 1831b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Preempted - Forced tp Idle State - Waiting for OMX_StateIdle\n"); 1832b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateIdle); 1833b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1834b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Error: JpegEncoder->WaitForState has timed out or failed %X", error); 1835b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1836b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1837b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1838b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1839b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1840b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fd_set rfds; 1841b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sigemptyset(&set); 1842b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin sigaddset(&set,SIGALRM); 1843b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1844b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_ZERO(&rfds); 1845b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET(IpBuf_Pipe[0], &rfds); 1846b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET(OpBuf_Pipe[0], &rfds); 1847b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FD_SET(Event_Pipe[0], &rfds); 1848b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin retval = pselect(fdmax+1, &rfds, NULL, NULL, NULL,&set); 1849b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( retval == -1 ) { 1850b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 1851b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin perror("select()"); 1852b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1853b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf (stderr, " : Error \n"); 1854b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1855b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1856b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else if ( retval == 0 ) { 1857b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("App Timeout !!!!!!!!!!!\n"); 1858b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1859b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1860b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** 1861b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * If FD_ISSET for Event_Pipe, there is an event remaining on the pipe. Read it 1862b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * and get act accordingly to the event. 1863b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1864b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( FD_ISSET(Event_Pipe[0], &rfds)) { 1865b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1866b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin JPEGE_EVENTPRIVATE EventPrivate; 1867b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(Event_Pipe[0], &EventPrivate, sizeof(JPEGE_EVENTPRIVATE)); 1868b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1869b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin switch(EventPrivate.eEvent) { 1870b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventError: 1871b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(bError) { 1872b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateInvalid); 1873b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (error != OMX_ErrorNone) { 1874b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("APP:: Error: JpegEncoder->WaitForState has timed out or failed %X\n", error); 1875b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1876b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1877b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("APP:: Component is in Invalid state now.\n"); 1878b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1879b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1880b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1881b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1882b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin case OMX_EventBufferFlag: 1883b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("APP:: EOS flag received\n"); 1884b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1885b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1886b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin default: 1887b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("APP:: Non-error event rised. Event -> 0x%x\n", EventPrivate.eEvent); 1888b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 1889b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1890b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1891b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1892b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** 1893b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * If FD_ISSET for IpBuf_Pipe, then there is an empty buffer available on the pipe. Read it 1894b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * from the pipe, then re-fill the buffer and send it back. 1895b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1896b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( FD_ISSET(IpBuf_Pipe[0], &rfds) && !DEINIT_FLAG ) { 1897b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1898b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*read buffer */ 1899b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(IpBuf_Pipe[0], &pBuffer, sizeof(pBuffer)); 1900b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1901b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* re-fill this buffer with data from JPEG file */ 1902b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRead = fill_data(pBuffer, fIn,pInPortDef->nBufferSize); 1903b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1904b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* call EmptyThisBuffer (send buffer back to component */ 1905b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin OMX_EmptyThisBuffer(pHandle, pBuffer); 1906b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1907b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*increment count */ 1908b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin framesent++; 1909b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Sent Frame # %d\n", framesent); 1910b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1911b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1912b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** 1913b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * If FD_ISSET for OpBuf_Pipe, then there is a filled buffer available on the pipe. Read it 1914b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * and get the buffer data out, write it to a file and then re-empty the buffer and send 1915b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * the buffer back to the component. 1916b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1917b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (FD_ISSET(OpBuf_Pipe[0], &rfds)) { 1918b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1919b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* read buffer */ 1920b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin read(OpBuf_Pipe[0], &pBuf, sizeof(pBuf)); 1921b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1922b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /* write data to a file, buffer is assumed to be emptied after this*/ 1923b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 1924b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin WriteFile(fOut, pBuf->pBuffer, pBuf->nFilledLen, &dwWritten, NULL); 1925b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1926b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("APP:: Write into file %lu bytes (%d)\n",pBuf->nFilledLen, nframerecieved); 1927b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fwrite(pBuf->pBuffer, 1, (int)pBuf->nFilledLen, fOut); 1928b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fflush(fOut); 1929b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1930b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /*increment count and validate for limits; call FillThisBuffer */ 1931b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nframerecieved++; 1932b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nRepeated++; 1933b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("\n%d***************%d***************%d***************%d***************%d\n", nRepeated, nRepeated, nRepeated, nRepeated, nRepeated); 1934b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (nRepeated >= maxRepeat) { 1935b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin DEINIT_FLAG = 1; 1936b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1937b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 1938b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Sending another output buffer\n"); 1939b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pComponent->FillThisBuffer(pHandle,pBuf); 1940b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1941b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1942b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1943b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (DEINIT_FLAG == 1) { 1944b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin done = 1; 1945b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pHandle = (OMX_HANDLETYPE *) pComponent; 1946b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle,OMX_CommandStateSet, OMX_StateIdle, NULL); 1947b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1948b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf (stderr,"APP:: Error from SendCommand-Idle(Stop) State function\n"); 1949b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1950b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1951b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1952b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Waiting for OMX_StateIdle\n"); 1953b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = WaitForState(pHandle, OMX_StateIdle); 1954b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1955b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Error: JpegEncoder->WaitForState has timed out %X", error); 1956b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1957b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1958b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1959b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_SendCommand(pHandle, OMX_CommandPortDisable, 0, NULL); 1960b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 1961b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Error from SendCommand-PortDisable function\n"); 1962b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1963b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1964b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1965b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1966b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (done == 1) { 1967b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = pComponent->GetState(pHandle, &state); 1968b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ){ 1969b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr, "Warning: JpegEncoder->JPEGENC_GetState has returned status %X\n", error); 1970b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin goto EXIT; 1971b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1972b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("After GetState() in while loop.\n"); 1973b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1974b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1975b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1976b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1977b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1978b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1979b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef STRESS 1980b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 1981b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 1982b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1983b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\nTest Completed Successfully! Deinitializing ... \n\n"); 1984b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1985b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz ZavinEXIT: 1986b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1987b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("\nClosing application...\n"); 1988b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1989b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin /** 1990b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin * Freeing memory 1991b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin **/ 1992b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 1993b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/*close handles */ 1994b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef UNDER_CE 1995b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin CloseHandle(fOut); 1996b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin CloseHandle(fIn); 1997b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#else 1998b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fclose(fOut); 1999b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin rewind (fIn); 2000b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fclose(fIn); 2001b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 2002b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2003b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT("Freeing memory from test app\n"); 2004b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FREE(pPortParamType); 2005b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FREE(pQfactorType); 2006b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FREE(pInPortDef); 2007b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FREE(pOutPortDef); 2008b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FREE(imageinfo); 2009b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FREE(pQuantizationTable); 2010b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FREE(pHuffmanTable); 2011b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2012b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if( error != OMX_ErrorNone){ 2013b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (buffertype == 1) { 2014b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (nCounter = 0; nCounter < NUM_OF_BUFFERSJPEG; nCounter++) { 2015b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pOutBuffer[nCounter]-=128; 2016b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin pInBuffer[nCounter]-=128; 2017b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FREE(pOutBuffer[nCounter]); 2018b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin FREE(pInBuffer[nCounter]); 2019b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2020b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2021b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin for (nCounter = 0; nCounter < NUM_OF_BUFFERSJPEG; nCounter++) { 2022b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_FreeBuffer(pHandle, nIndex1, pInBuff[nCounter]); 2023b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( (error != OMX_ErrorNone) ) { 2024b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("Error in OMX_FreeBuffer: %d\n", __LINE__); 2025b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2026b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = OMX_FreeBuffer(pHandle, nIndex2, pOutBuff[nCounter]); 2027b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( (error != OMX_ErrorNone) ) { 2028b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("Error in OMX_FreeBuffer: %d\n", __LINE__); 2029b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2030b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2031b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2032b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2033b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = TIOMX_FreeHandle(pHandle); 2034b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( (error != OMX_ErrorNone) ) { 2035b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf ("Error in Free Handle function\n"); 2036b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2037b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2038b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_MMU_FAULT_HANDLING 2039b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2040b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if(bError) { 2041b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin LoadBaseImage(); 2042b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2043b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2044b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 2045b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2046b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin error = TIOMX_Deinit(); 2047b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ( error != OMX_ErrorNone ) { 2048b65f253fdc60f6208a54911bee793d225f23cdf8James Dong printf("Error returned by OMX_DeInit()\n"); 2049b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2050b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2051b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef STRESS 2052b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2053b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} /* end of multiload loop */ 2054b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2055b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 2056b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2057b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef UNDER_CE 2058b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin//muntrace(); 2059b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 2060b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin PRINT ("Free Handle returned Successfully = %x\n",error); 2061b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return error; 2062b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2063b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2064b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifdef DSP_MMU_FAULT_HANDLING 2065b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2066b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinint LoadBaseImage() { 2067b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned int uProcId = 0; /* default proc ID is 0. */ 2068b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned int index = 0; 2069b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2070b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct DSP_PROCESSORINFO dspInfo; 2071b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin DSP_HPROCESSOR hProc; 2072b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin DSP_STATUS status = DSP_SOK; 2073b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned int numProcs; 2074b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin char* argv[2]; 2075b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2076b65f253fdc60f6208a54911bee793d225f23cdf8James Dong argv[0] = "/lib/dsp/baseimage.dof"; 2077b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2078b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin status = (DBAPI)DspManager_Open(0, NULL); 2079b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (DSP_FAILED(status)) { 2080b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin printf("DSPManager_Open failed \n"); 2081b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return -1; 2082b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2083b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin while (DSP_SUCCEEDED(DSPManager_EnumProcessorInfo(index,&dspInfo, 2084b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (unsigned int)sizeof(struct DSP_PROCESSORINFO),&numProcs))) { 2085b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if ((dspInfo.uProcessorType == DSPTYPE_55) || 2086b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin (dspInfo.uProcessorType == DSPTYPE_64)) { 2087b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin uProcId = index; 2088b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin status = DSP_SOK; 2089b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin break; 2090b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2091b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin index++; 2092b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2093b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin status = DSPProcessor_Attach(uProcId, NULL, &hProc); 2094b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (DSP_SUCCEEDED(status)) { 2095b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin status = DSPProcessor_Stop(hProc); 2096b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (DSP_SUCCEEDED(status)) { 2097b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin status = DSPProcessor_Load(hProc,1,(const char **)argv,NULL); 2098b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (DSP_SUCCEEDED(status)) { 2099b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin status = DSPProcessor_Start(hProc); 2100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin if (DSP_SUCCEEDED(status)) { 2101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 2103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 2106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin DSPProcessor_Detach(hProc); 2108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 2110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin else { 2113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } 2114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fprintf(stderr,"Baseimage Loaded\n"); 2115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin 2116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin return 0; 2117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin} 2118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif 2119