1 
2 /*
3  * Copyright (C) Texas Instruments - http://www.ti.com/
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
20  */
21 /* =============================================================================
22 *             Texas Instruments OMAP(TM) Platform Software
23 *  (c) Copyright Texas Instruments, Incorporated.  All Rights Reserved.
24 *
25 *  Use of this software is controlled by the terms and conditions found
26 *  in the license agreement under which this software has been supplied.
27 * =========================================================================== */
28 /**
29 * @file OMX_JpegEnc_CustomCmd.h
30 *
31 * This is an header file for an Jpeg encoder that is fully compliant with the OMX specification.
32 * This is the file that the application that uses OMX would include in its code.
33 *
34 * @path $(CSLPATH)\
35 *
36 * @rev 0.1
37 */
38 /* -------------------------------------------------------------------------- */
39 
40 #ifndef OMX_JPEGENC_CUSTOMCMD_H
41 #define OMX_JPEGENC_CUSTOMCMD_H
42 
43 
44 /*------- Program Header Files ----------------------------------------*/
45 #include <OMX_Component.h>
46 
47 /*------- Structures ----------------------------------------*/
48 
49 
50 typedef struct JPEGENC_CUSTOM_HUFFMAN_TABLE {
51 
52       OMX_U32 lum_dc_vlc[12];
53       OMX_U32 lum_ac_vlc[16][16];
54       OMX_U32 chm_dc_vlc[12];
55       OMX_U32 chm_ac_vlc[16][16];
56       OMX_U8  lum_dc_codelens[16];
57       OMX_U16 lum_dc_ncodes;
58       OMX_U8  lum_dc_symbols[12];
59       OMX_U16 lum_dc_nsymbols;
60       OMX_U8  lum_ac_codelens[16];
61       OMX_U16 lum_ac_ncodes;
62       OMX_U8  lum_ac_symbols[162];
63       OMX_U16 lum_ac_nsymbols;
64       OMX_U8  chm_dc_codelens[16];
65       OMX_U16 chm_dc_ncodes;
66       OMX_U8  chm_dc_symbols[12];
67       OMX_U16 chm_dc_nsymbols;
68       OMX_U8  chm_ac_codelens[16];
69       OMX_U16 chm_ac_ncodes;
70       OMX_U8  chm_ac_symbols[162];
71       OMX_U16 chm_ac_nsymbols;
72 }JPEGENC_CUSTOM_HUFFMAN_TABLE;
73 
74 typedef struct JPEGENC_CUSTOM_HUFFMANTTABLETYPE {
75     OMX_U32 nSize;
76     OMX_VERSIONTYPE nVersion;
77     OMX_U32 nPortIndex;
78     JPEGENC_CUSTOM_HUFFMAN_TABLE sHuffmanTable;
79 }JPEGENC_CUSTOM_HUFFMANTTABLETYPE;
80 
81 typedef struct JPEG_APPTHUMB_MARKER {
82 	OMX_BOOL bMarkerEnabled;		/* Boolean flag to enable/disable this marker on its whole */
83 	OMX_U8 *pMarkerBuffer;			/* This pointer must point to the marker buffer allocated by application */
84 	OMX_U32 nMarkerSize;			/* This variable holds the size of the marker buffer */
85 	OMX_U32 nThumbnailWidth;          /* This variable holds the thumbnail's width value (0 = No thumbnail) */
86 	OMX_U32 nThumbnailHeight;	        /* This variable holds the thumbnail's height value (0 = No thumbnail) */
87 } JPEG_APPTHUMB_MARKER;
88 
89 typedef struct JPEG_APP13_MARKER {
90 	OMX_BOOL bMarkerEnabled;		/* Boolean flag to enable/disable this marker on its whole */
91 	OMX_U8 *pMarkerBuffer;			/* This pointer must point to the marker buffer allocated by application */
92 	OMX_U32 nMarkerSize;			/* This variable holds the size of the marker buffer */
93 } JPEG_APP13_MARKER;
94 
95 #endif /* OMX_JPEGENC_CUSTOMCMD_H */
96 
97