package com.twilight.h264.decoder;
public class PictureParameterSet {
public long sps_id;
public int cabac; ///< entropy_coding_mode_flag
public int pic_order_present; ///< pic_order_present_flag
public int slice_group_count; ///< num_slice_groups_minus1 + 1
public int mb_slice_group_map_type;
public long[] ref_count = new long[2]; ///< num_ref_idx_l0/1_active_minus1 + 1
public int weighted_pred; ///< weighted_pred_flag
public int weighted_bipred_idc;
public int init_qp; ///< pic_init_qp_minus26 + 26
public int init_qs; ///< pic_init_qs_minus26 + 26
public int[] chroma_qp_index_offset = new int[2];
public int deblocking_filter_parameters_present; ///< deblocking_filter_parameters_present_flag
public int constrained_intra_pred; ///< constrained_intra_pred_flag
public int redundant_pic_cnt_present; ///< redundant_pic_cnt_present_flag
public int transform_8x8_mode; ///< transform_8x8_mode_flag
public int[][] scaling_matrix4 = new int[6][16];
public int[][] scaling_matrix8 = new int[2][64];
public int[][] chroma_qp_table = new int[2][64]; ///< pre-scaled (with chroma_qp_index_offset) version of qp_table
public int chroma_qp_diff;
public void copyTo(PictureParameterSet pps) {
if (this == pps) {
// Do not copy to myself
return;
}
pps.sps_id = sps_id;
pps.cabac = cabac; ///< entropy_coding_mode_flag
pps.pic_order_present = pic_order_present; ///< pic_order_present_flag
pps.slice_group_count = slice_group_count; ///< num_slice_groups_minus1 + 1
pps.mb_slice_group_map_type = mb_slice_group_map_type;
pps.ref_count = new long[2]; ///< num_ref_idx_l0/1_active_minus1 + 1
pps.ref_count[0] = ref_count[0];
pps.ref_count[1] = ref_count[1];
pps.weighted_pred = weighted_pred; ///< weighted_pred_flag
pps.weighted_bipred_idc = weighted_bipred_idc;
pps.init_qp = init_qp; ///< pic_init_qp_minus26 + 26
pps.init_qs = init_qs; ///< pic_init_qs_minus26 + 26
pps.chroma_qp_index_offset = new int[2];
pps.chroma_qp_index_offset[0] = chroma_qp_index_offset[0];
pps.chroma_qp_index_offset[1] = chroma_qp_index_offset[1];
pps.deblocking_filter_parameters_present = deblocking_filter_parameters_present; ///< deblocking_filter_parameters_present_flag
pps.constrained_intra_pred = constrained_intra_pred; ///< constrained_intra_pred_flag
pps.redundant_pic_cnt_present = redundant_pic_cnt_present; ///< redundant_pic_cnt_present_flag
pps.transform_8x8_mode = transform_8x8_mode; ///< transform_8x8_mode_flag
pps.scaling_matrix4 = new int[6][16];
for(int i=0;i<6;i++)
System.arraycopy(scaling_matrix4[i], 0, pps.scaling_matrix4[i], 0, 16);
pps.scaling_matrix8 = new int[2][64];
pps.chroma_qp_table = new int[2][64]; ///< pre-scaled (with chroma_qp_index_offset) version of qp_table
for(int i=0;i<2;i++)
System.arraycopy(scaling_matrix8[i], 0, pps.scaling_matrix8[i], 0, 64);
for(int i=0;i<2;i++)
System.arraycopy(chroma_qp_table[i], 0, pps.chroma_qp_table[i], 0, 64);
pps.chroma_qp_diff = chroma_qp_diff;
}
}