xref: /rockchip-linux_mpp/mpp/codec/enc/h264/h264e_pps.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 __H264E_PPS_H__
18*437bfbebSnyanmisaka #define __H264E_PPS_H__
19*437bfbebSnyanmisaka 
20*437bfbebSnyanmisaka #include "mpp_packet.h"
21*437bfbebSnyanmisaka #include "mpp_enc_cfg.h"
22*437bfbebSnyanmisaka 
23*437bfbebSnyanmisaka #include "h264_syntax.h"
24*437bfbebSnyanmisaka 
25*437bfbebSnyanmisaka typedef struct H264ePps_t {
26*437bfbebSnyanmisaka     RK_U32      pps_id;
27*437bfbebSnyanmisaka     RK_U32      sps_id;
28*437bfbebSnyanmisaka 
29*437bfbebSnyanmisaka     // 0 - CAVLC 1 - CABAC
30*437bfbebSnyanmisaka     RK_S32      entropy_coding_mode;
31*437bfbebSnyanmisaka 
32*437bfbebSnyanmisaka     RK_S32      bottom_field_pic_order_in_frame_present;
33*437bfbebSnyanmisaka     RK_S32      num_slice_groups;
34*437bfbebSnyanmisaka 
35*437bfbebSnyanmisaka     RK_S32      num_ref_idx_l0_default_active;
36*437bfbebSnyanmisaka     RK_S32      num_ref_idx_l1_default_active;
37*437bfbebSnyanmisaka 
38*437bfbebSnyanmisaka     RK_S32      weighted_pred;
39*437bfbebSnyanmisaka     RK_S32      weighted_bipred_idc;
40*437bfbebSnyanmisaka 
41*437bfbebSnyanmisaka     RK_S32      pic_init_qp;
42*437bfbebSnyanmisaka     RK_S32      pic_init_qs;
43*437bfbebSnyanmisaka 
44*437bfbebSnyanmisaka     RK_S32      chroma_qp_index_offset;
45*437bfbebSnyanmisaka     RK_S32      second_chroma_qp_index_offset_present;
46*437bfbebSnyanmisaka     RK_S32      second_chroma_qp_index_offset;
47*437bfbebSnyanmisaka 
48*437bfbebSnyanmisaka     RK_S32      deblocking_filter_control;
49*437bfbebSnyanmisaka     RK_S32      constrained_intra_pred;
50*437bfbebSnyanmisaka     RK_S32      redundant_pic_cnt;
51*437bfbebSnyanmisaka 
52*437bfbebSnyanmisaka     RK_S32      transform_8x8_mode;
53*437bfbebSnyanmisaka 
54*437bfbebSnyanmisaka     // Only support flat and default scaling list
55*437bfbebSnyanmisaka     RK_S32      pic_scaling_matrix_present; //TODO: replaced with scaling_list_mode
56*437bfbebSnyanmisaka     RK_S32      use_default_scaling_matrix[H264_SCALING_MATRIX_TYPE_BUTT];
57*437bfbebSnyanmisaka } H264ePps;
58*437bfbebSnyanmisaka 
59*437bfbebSnyanmisaka #ifdef __cplusplus
60*437bfbebSnyanmisaka extern "C" {
61*437bfbebSnyanmisaka #endif
62*437bfbebSnyanmisaka 
63*437bfbebSnyanmisaka MPP_RET h264e_pps_update(H264ePps *pps, MppEncCfgSet *cfg);
64*437bfbebSnyanmisaka MPP_RET h264e_pps_to_packet(H264ePps *pps, MppPacket packet, RK_S32 *offset, RK_S32 *len);
65*437bfbebSnyanmisaka MPP_RET h264e_pps_dump(H264ePps *pps);
66*437bfbebSnyanmisaka 
67*437bfbebSnyanmisaka #ifdef __cplusplus
68*437bfbebSnyanmisaka }
69*437bfbebSnyanmisaka #endif
70*437bfbebSnyanmisaka 
71*437bfbebSnyanmisaka #endif /* __H264E_PPS_H__ */
72