xref: /rockchip-linux_mpp/mpp/hal/common/jpeg/hal_jpege_hdr.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /*
2*437bfbebSnyanmisaka  * Copyright 2015 Rockchip Electronics Co. LTD
3*437bfbebSnyanmisaka  *
4*437bfbebSnyanmisaka  * Licensed under the Apache License, Version 2.0 (the "License");
5*437bfbebSnyanmisaka  * you may not use this file except in compliance with the License.
6*437bfbebSnyanmisaka  * You may obtain a copy of the License at
7*437bfbebSnyanmisaka  *
8*437bfbebSnyanmisaka  *      http://www.apache.org/licenses/LICENSE-2.0
9*437bfbebSnyanmisaka  *
10*437bfbebSnyanmisaka  * Unless required by applicable law or agreed to in writing, software
11*437bfbebSnyanmisaka  * distributed under the License is distributed on an "AS IS" BASIS,
12*437bfbebSnyanmisaka  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*437bfbebSnyanmisaka  * See the License for the specific language governing permissions and
14*437bfbebSnyanmisaka  * limitations under the License.
15*437bfbebSnyanmisaka  */
16*437bfbebSnyanmisaka 
17*437bfbebSnyanmisaka #ifndef __HAL_JPEGE_HDR_H__
18*437bfbebSnyanmisaka #define __HAL_JPEGE_HDR_H__
19*437bfbebSnyanmisaka 
20*437bfbebSnyanmisaka #include "jpege_syntax.h"
21*437bfbebSnyanmisaka 
22*437bfbebSnyanmisaka typedef void *JpegeBits;
23*437bfbebSnyanmisaka 
24*437bfbebSnyanmisaka #ifdef __cplusplus
25*437bfbebSnyanmisaka extern "C" {
26*437bfbebSnyanmisaka #endif
27*437bfbebSnyanmisaka 
28*437bfbebSnyanmisaka #define QUANTIZE_TABLE_SIZE 64
29*437bfbebSnyanmisaka typedef struct HalJpegeRc_t {
30*437bfbebSnyanmisaka     RK_S32              q_mode;
31*437bfbebSnyanmisaka     RK_S32              quant;
32*437bfbebSnyanmisaka     RK_S32              q_factor;
33*437bfbebSnyanmisaka     RK_U8               qtable_y[QUANTIZE_TABLE_SIZE];
34*437bfbebSnyanmisaka     RK_U8               qtable_u[QUANTIZE_TABLE_SIZE];
35*437bfbebSnyanmisaka     RK_U8               qtable_v[QUANTIZE_TABLE_SIZE];
36*437bfbebSnyanmisaka     const RK_U8         *qtables[3];
37*437bfbebSnyanmisaka } HalJpegeRc;
38*437bfbebSnyanmisaka 
39*437bfbebSnyanmisaka void jpege_bits_init(JpegeBits *ctx);
40*437bfbebSnyanmisaka void jpege_bits_deinit(JpegeBits ctx);
41*437bfbebSnyanmisaka 
42*437bfbebSnyanmisaka void jpege_bits_setup(JpegeBits ctx, RK_U8 *buf, RK_S32 size);
43*437bfbebSnyanmisaka void jpege_bits_put(JpegeBits ctx, RK_U32 val, RK_S32 len);
44*437bfbebSnyanmisaka void jpege_bits_align_byte(JpegeBits ctx);
45*437bfbebSnyanmisaka void jpege_seek_bits(JpegeBits ctx, RK_S32 len);
46*437bfbebSnyanmisaka RK_U8 *jpege_bits_get_buf(JpegeBits ctx);
47*437bfbebSnyanmisaka RK_S32 jpege_bits_get_bitpos(JpegeBits ctx);
48*437bfbebSnyanmisaka RK_S32 jpege_bits_get_bytepos(JpegeBits ctx);
49*437bfbebSnyanmisaka 
50*437bfbebSnyanmisaka MPP_RET write_jpeg_header(JpegeBits *bits, JpegeSyntax *syntax, HalJpegeRc *rc);
51*437bfbebSnyanmisaka 
52*437bfbebSnyanmisaka void hal_jpege_rc_init(HalJpegeRc *hal_rc);
53*437bfbebSnyanmisaka void hal_jpege_rc_update(HalJpegeRc *hal_rc, JpegeSyntax *syntax);
54*437bfbebSnyanmisaka 
55*437bfbebSnyanmisaka #ifdef __cplusplus
56*437bfbebSnyanmisaka }
57*437bfbebSnyanmisaka #endif
58*437bfbebSnyanmisaka 
59*437bfbebSnyanmisaka #endif /*__HAL_JPEGE_HDR_H__*/
60*437bfbebSnyanmisaka 
61