xref: /aosp_15_r20/external/libva/va/va_enc_jpeg.h (revision 54e60f844a168e9a219354de272cd517ee8cd4b7)
1*54e60f84SAndroid Build Coastguard Worker /*
2*54e60f84SAndroid Build Coastguard Worker  * Copyright (c) 2007-2013 Intel Corporation. All Rights Reserved.
3*54e60f84SAndroid Build Coastguard Worker  *
4*54e60f84SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
5*54e60f84SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the
6*54e60f84SAndroid Build Coastguard Worker  * "Software"), to deal in the Software without restriction, including
7*54e60f84SAndroid Build Coastguard Worker  * without limitation the rights to use, copy, modify, merge, publish,
8*54e60f84SAndroid Build Coastguard Worker  * distribute, sub license, and/or sell copies of the Software, and to
9*54e60f84SAndroid Build Coastguard Worker  * permit persons to whom the Software is furnished to do so, subject to
10*54e60f84SAndroid Build Coastguard Worker  * the following conditions:
11*54e60f84SAndroid Build Coastguard Worker  *
12*54e60f84SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice (including the
13*54e60f84SAndroid Build Coastguard Worker  * next paragraph) shall be included in all copies or substantial portions
14*54e60f84SAndroid Build Coastguard Worker  * of the Software.
15*54e60f84SAndroid Build Coastguard Worker  *
16*54e60f84SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17*54e60f84SAndroid Build Coastguard Worker  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18*54e60f84SAndroid Build Coastguard Worker  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
19*54e60f84SAndroid Build Coastguard Worker  * IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE LIABLE FOR
20*54e60f84SAndroid Build Coastguard Worker  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21*54e60f84SAndroid Build Coastguard Worker  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22*54e60f84SAndroid Build Coastguard Worker  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23*54e60f84SAndroid Build Coastguard Worker  */
24*54e60f84SAndroid Build Coastguard Worker 
25*54e60f84SAndroid Build Coastguard Worker /**
26*54e60f84SAndroid Build Coastguard Worker  * \file va_enc_jpeg.h
27*54e60f84SAndroid Build Coastguard Worker  * \brief JPEG encoding API
28*54e60f84SAndroid Build Coastguard Worker  *
29*54e60f84SAndroid Build Coastguard Worker  * This file contains the \ref api_enc_jpeg "JPEG encoding API".
30*54e60f84SAndroid Build Coastguard Worker  */
31*54e60f84SAndroid Build Coastguard Worker 
32*54e60f84SAndroid Build Coastguard Worker #ifndef VA_ENC_JPEG_H
33*54e60f84SAndroid Build Coastguard Worker #define VA_ENC_JPEG_H
34*54e60f84SAndroid Build Coastguard Worker 
35*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus
36*54e60f84SAndroid Build Coastguard Worker extern "C" {
37*54e60f84SAndroid Build Coastguard Worker #endif
38*54e60f84SAndroid Build Coastguard Worker 
39*54e60f84SAndroid Build Coastguard Worker /**
40*54e60f84SAndroid Build Coastguard Worker  * \defgroup api_enc_jpeg JPEG encoding API
41*54e60f84SAndroid Build Coastguard Worker  *
42*54e60f84SAndroid Build Coastguard Worker  * @{
43*54e60f84SAndroid Build Coastguard Worker  */
44*54e60f84SAndroid Build Coastguard Worker 
45*54e60f84SAndroid Build Coastguard Worker /**
46*54e60f84SAndroid Build Coastguard Worker  * \brief JPEG Encoding Picture Parameter Buffer Structure
47*54e60f84SAndroid Build Coastguard Worker  *
48*54e60f84SAndroid Build Coastguard Worker  * This structure conveys picture level parameters.
49*54e60f84SAndroid Build Coastguard Worker  *
50*54e60f84SAndroid Build Coastguard Worker  */
51*54e60f84SAndroid Build Coastguard Worker typedef struct  _VAEncPictureParameterBufferJPEG {
52*54e60f84SAndroid Build Coastguard Worker     /** \brief holds reconstructed picture. */
53*54e60f84SAndroid Build Coastguard Worker     VASurfaceID reconstructed_picture;
54*54e60f84SAndroid Build Coastguard Worker     /** \brief picture width. */
55*54e60f84SAndroid Build Coastguard Worker     uint16_t picture_width;
56*54e60f84SAndroid Build Coastguard Worker     /** \brief picture height. */
57*54e60f84SAndroid Build Coastguard Worker     uint16_t picture_height;
58*54e60f84SAndroid Build Coastguard Worker     /** \brief holds coded data. */
59*54e60f84SAndroid Build Coastguard Worker     VABufferID coded_buf;
60*54e60f84SAndroid Build Coastguard Worker 
61*54e60f84SAndroid Build Coastguard Worker     /**
62*54e60f84SAndroid Build Coastguard Worker      * \brief pic_flags
63*54e60f84SAndroid Build Coastguard Worker      *
64*54e60f84SAndroid Build Coastguard Worker      */
65*54e60f84SAndroid Build Coastguard Worker     union {
66*54e60f84SAndroid Build Coastguard Worker         struct {
67*54e60f84SAndroid Build Coastguard Worker             /**
68*54e60f84SAndroid Build Coastguard Worker              * \brief profile:
69*54e60f84SAndroid Build Coastguard Worker              * 0 - Baseline, 1 - Extended, 2 - Lossless, 3 - Hierarchical
70*54e60f84SAndroid Build Coastguard Worker              */
71*54e60f84SAndroid Build Coastguard Worker             uint32_t profile     : 2;
72*54e60f84SAndroid Build Coastguard Worker             /**
73*54e60f84SAndroid Build Coastguard Worker              * \brief progressive:
74*54e60f84SAndroid Build Coastguard Worker              * 0 - sequential, 1 - extended, 2 - progressive
75*54e60f84SAndroid Build Coastguard Worker              */
76*54e60f84SAndroid Build Coastguard Worker             uint32_t progressive : 1;
77*54e60f84SAndroid Build Coastguard Worker             /**
78*54e60f84SAndroid Build Coastguard Worker              * \brief huffman:
79*54e60f84SAndroid Build Coastguard Worker              * 0 - arithmetic, 1 - huffman
80*54e60f84SAndroid Build Coastguard Worker              */
81*54e60f84SAndroid Build Coastguard Worker             uint32_t huffman     : 1;
82*54e60f84SAndroid Build Coastguard Worker             /**
83*54e60f84SAndroid Build Coastguard Worker              * \brief interleaved:
84*54e60f84SAndroid Build Coastguard Worker              * 0 - non interleaved, 1 - interleaved
85*54e60f84SAndroid Build Coastguard Worker              */
86*54e60f84SAndroid Build Coastguard Worker             uint32_t interleaved : 1;
87*54e60f84SAndroid Build Coastguard Worker             /**
88*54e60f84SAndroid Build Coastguard Worker              * \brief differential:
89*54e60f84SAndroid Build Coastguard Worker              * 0 - non differential, 1 - differential
90*54e60f84SAndroid Build Coastguard Worker              */
91*54e60f84SAndroid Build Coastguard Worker             uint32_t differential   : 1;
92*54e60f84SAndroid Build Coastguard Worker         } bits;
93*54e60f84SAndroid Build Coastguard Worker         uint32_t value;
94*54e60f84SAndroid Build Coastguard Worker     } pic_flags;
95*54e60f84SAndroid Build Coastguard Worker 
96*54e60f84SAndroid Build Coastguard Worker     /** \brief number of bits per sample. */
97*54e60f84SAndroid Build Coastguard Worker     uint8_t    sample_bit_depth;
98*54e60f84SAndroid Build Coastguard Worker     /** \brief total number of scans in image. */
99*54e60f84SAndroid Build Coastguard Worker     uint8_t    num_scan;
100*54e60f84SAndroid Build Coastguard Worker     /** \brief number of image components in frame. */
101*54e60f84SAndroid Build Coastguard Worker     uint16_t   num_components;
102*54e60f84SAndroid Build Coastguard Worker     /** \brief Component identifier (Ci). */
103*54e60f84SAndroid Build Coastguard Worker     uint8_t    component_id[4];
104*54e60f84SAndroid Build Coastguard Worker     /** \brief Quantization table selector (Tqi). */
105*54e60f84SAndroid Build Coastguard Worker     uint8_t    quantiser_table_selector[4];
106*54e60f84SAndroid Build Coastguard Worker     /** \brief number from 1 to 100 that specifies quality of image. */
107*54e60f84SAndroid Build Coastguard Worker     uint8_t    quality;
108*54e60f84SAndroid Build Coastguard Worker 
109*54e60f84SAndroid Build Coastguard Worker     /** \brief Reserved bytes for future use, must be zero */
110*54e60f84SAndroid Build Coastguard Worker     uint32_t                va_reserved[VA_PADDING_LOW];
111*54e60f84SAndroid Build Coastguard Worker } VAEncPictureParameterBufferJPEG;
112*54e60f84SAndroid Build Coastguard Worker 
113*54e60f84SAndroid Build Coastguard Worker 
114*54e60f84SAndroid Build Coastguard Worker /**
115*54e60f84SAndroid Build Coastguard Worker  * \brief Slice parameter for JPEG encoding.
116*54e60f84SAndroid Build Coastguard Worker  *
117*54e60f84SAndroid Build Coastguard Worker  * This structure conveys slice (scan) level parameters.
118*54e60f84SAndroid Build Coastguard Worker  *
119*54e60f84SAndroid Build Coastguard Worker  */
120*54e60f84SAndroid Build Coastguard Worker typedef struct _VAEncSliceParameterBufferJPEG {
121*54e60f84SAndroid Build Coastguard Worker     /** \brief Restart interval definition (Ri). */
122*54e60f84SAndroid Build Coastguard Worker     uint16_t    restart_interval;
123*54e60f84SAndroid Build Coastguard Worker     /** \brief number of image components in a scan. */
124*54e60f84SAndroid Build Coastguard Worker     uint16_t    num_components;
125*54e60f84SAndroid Build Coastguard Worker     struct {
126*54e60f84SAndroid Build Coastguard Worker         /** \brief Scan component selector (Csj). */
127*54e60f84SAndroid Build Coastguard Worker         uint8_t   component_selector;
128*54e60f84SAndroid Build Coastguard Worker         /** \brief DC entropy coding table selector (Tdj). */
129*54e60f84SAndroid Build Coastguard Worker         uint8_t   dc_table_selector;
130*54e60f84SAndroid Build Coastguard Worker         /** \brief AC entropy coding table selector (Taj). */
131*54e60f84SAndroid Build Coastguard Worker         uint8_t   ac_table_selector;
132*54e60f84SAndroid Build Coastguard Worker     } components[4];
133*54e60f84SAndroid Build Coastguard Worker 
134*54e60f84SAndroid Build Coastguard Worker     /** \brief Reserved bytes for future use, must be zero */
135*54e60f84SAndroid Build Coastguard Worker     uint32_t                va_reserved[VA_PADDING_LOW];
136*54e60f84SAndroid Build Coastguard Worker } VAEncSliceParameterBufferJPEG;
137*54e60f84SAndroid Build Coastguard Worker 
138*54e60f84SAndroid Build Coastguard Worker /**
139*54e60f84SAndroid Build Coastguard Worker  * \brief Quantization table for JPEG encoding.
140*54e60f84SAndroid Build Coastguard Worker  *
141*54e60f84SAndroid Build Coastguard Worker  */
142*54e60f84SAndroid Build Coastguard Worker typedef struct _VAQMatrixBufferJPEG {
143*54e60f84SAndroid Build Coastguard Worker     /** \brief load luma quantization table. */
144*54e60f84SAndroid Build Coastguard Worker     int32_t load_lum_quantiser_matrix;
145*54e60f84SAndroid Build Coastguard Worker     /** \brief load chroma quantization table. */
146*54e60f84SAndroid Build Coastguard Worker     int32_t load_chroma_quantiser_matrix;
147*54e60f84SAndroid Build Coastguard Worker     /** \brief luma quantization table. */
148*54e60f84SAndroid Build Coastguard Worker     uint8_t lum_quantiser_matrix[64];
149*54e60f84SAndroid Build Coastguard Worker     /** \brief chroma quantization table. */
150*54e60f84SAndroid Build Coastguard Worker     uint8_t chroma_quantiser_matrix[64];
151*54e60f84SAndroid Build Coastguard Worker 
152*54e60f84SAndroid Build Coastguard Worker     /** \brief Reserved bytes for future use, must be zero */
153*54e60f84SAndroid Build Coastguard Worker     uint32_t                va_reserved[VA_PADDING_LOW];
154*54e60f84SAndroid Build Coastguard Worker } VAQMatrixBufferJPEG;
155*54e60f84SAndroid Build Coastguard Worker 
156*54e60f84SAndroid Build Coastguard Worker /**@}*/
157*54e60f84SAndroid Build Coastguard Worker 
158*54e60f84SAndroid Build Coastguard Worker #ifdef __cplusplus
159*54e60f84SAndroid Build Coastguard Worker }
160*54e60f84SAndroid Build Coastguard Worker #endif
161*54e60f84SAndroid Build Coastguard Worker 
162*54e60f84SAndroid Build Coastguard Worker #endif /* VA_ENC_JPEG_H */
163