package com.twilight.h264.decoder;
public class SequenceParameterSet {
public static final int AVCOL_PRI_BT709 =1; ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B
public static final int AVCOL_PRI_UNSPECIFIED=2;
public static final int AVCOL_PRI_BT470M =4;
public static final int AVCOL_PRI_BT470BG =5; ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM
public static final int AVCOL_PRI_SMPTE170M =6; ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
public static final int AVCOL_PRI_SMPTE240M =7; ///< functionally identical to above
public static final int AVCOL_PRI_FILM =8;
public static final int AVCOL_PRI_NB =9; ///< Not part of ABI
public static final int AVCOL_TRC_BT709 =1; ///< also ITU-R BT1361
public static final int AVCOL_TRC_UNSPECIFIED=2;
public static final int AVCOL_TRC_GAMMA22 =4; ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM
public static final int AVCOL_TRC_GAMMA28 =5; ///< also ITU-R BT470BG
public static final int AVCOL_TRC_NB =6; ///< Not part of ABI
public static final int AVCOL_SPC_RGB =0;
public static final int AVCOL_SPC_BT709 =1; ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B
public static final int AVCOL_SPC_UNSPECIFIED=2;
public static final int AVCOL_SPC_FCC =4;
public static final int AVCOL_SPC_BT470BG =5; ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601
public static final int AVCOL_SPC_SMPTE170M =6; ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above
public static final int AVCOL_SPC_SMPTE240M =7;
public static final int AVCOL_SPC_NB =8; ///< Not part of ABI
public int profile_idc;
public int level_idc;
public int chroma_format_idc;
public int transform_bypass; ///< qpprime_y_zero_transform_bypass_flag
public int log2_max_frame_num; ///< log2_max_frame_num_minus4 + 4
public int poc_type; ///< pic_order_cnt_type
public int log2_max_poc_lsb; ///< log2_max_pic_order_cnt_lsb_minus4
public int delta_pic_order_always_zero_flag;
public int offset_for_non_ref_pic;
public int offset_for_top_to_bottom_field;
public int poc_cycle_length; ///< num_ref_frames_in_pic_order_cnt_cycle
public int ref_frame_count; ///< num_ref_frames
public int gaps_in_frame_num_allowed_flag;
public int mb_width; ///< pic_width_in_mbs_minus1 + 1
public int mb_height; ///< pic_height_in_map_units_minus1 + 1
public int frame_mbs_only_flag;
public int mb_aff; ///<mb_adaptive_frame_field_flag
public int direct_8x8_inference_flag;
public int crop; ///< frame_cropping_flag
public long crop_left; ///< frame_cropping_rect_left_offset
public long crop_right; ///< frame_cropping_rect_right_offset
public long crop_top; ///< frame_cropping_rect_top_offset
public long crop_bottom; ///< frame_cropping_rect_bottom_offset
public int vui_parameters_present_flag;
public AVRational sar = new AVRational(0,0);
public int video_signal_type_present_flag;
public int full_range;
public int colour_description_present_flag;
public int color_primaries;
public int color_trc;
public int colorspace;
public int timing_info_present_flag;
public long num_units_in_tick;
public long time_scale;
public int fixed_frame_rate_flag;
public short[] offset_for_ref_frame = new short[256]; //FIXME dyn aloc?
public int bitstream_restriction_flag;
public int num_reorder_frames;
public int scaling_matrix_present;
public int[][] scaling_matrix4 = new int[6][16];
public int[][] scaling_matrix8 = new int[2][64];
public int nal_hrd_parameters_present_flag;
public int vcl_hrd_parameters_present_flag;
public int pic_struct_present_flag;
public int time_offset_length;
public int cpb_cnt; ///< See H.264 E.1.2
public int initial_cpb_removal_delay_length; ///< initial_cpb_removal_delay_length_minus1 +1
public int cpb_removal_delay_length; ///< cpb_removal_delay_length_minus1 + 1
public int dpb_output_delay_length; ///< dpb_output_delay_length_minus1 + 1
public int bit_depth_luma; ///< bit_depth_luma_minus8 + 8
public int bit_depth_chroma; ///< bit_depth_chroma_minus8 + 8
public int residual_color_transform_flag; ///< residual_colour_transform_flag
public void copyTo(SequenceParameterSet sps) {
if (this == sps) {
// Do not copy to myself
return;
}
sps.profile_idc = profile_idc;
sps.level_idc = level_idc;
sps.chroma_format_idc = chroma_format_idc;
sps.transform_bypass = transform_bypass; ///< qpprime_y_zero_transform_bypass_flag
sps.log2_max_frame_num = log2_max_frame_num; ///< log2_max_frame_num_minus4 + 4
sps.poc_type = poc_type; ///< pic_order_cnt_type
sps.log2_max_poc_lsb = log2_max_poc_lsb; ///< log2_max_pic_order_cnt_lsb_minus4
sps.delta_pic_order_always_zero_flag = delta_pic_order_always_zero_flag;
sps.offset_for_non_ref_pic = offset_for_non_ref_pic;
sps.offset_for_top_to_bottom_field = offset_for_top_to_bottom_field;
sps.poc_cycle_length = poc_cycle_length; ///< num_ref_frames_in_pic_order_cnt_cycle
sps.ref_frame_count = ref_frame_count; ///< num_ref_frames
sps.gaps_in_frame_num_allowed_flag = gaps_in_frame_num_allowed_flag;
sps.mb_width = mb_width; ///< pic_width_in_mbs_minus1 + 1
sps.mb_height = mb_height; ///< pic_height_in_map_units_minus1 + 1
sps.frame_mbs_only_flag = frame_mbs_only_flag;
sps.mb_aff = mb_aff; ///<mb_adaptive_frame_field_flag
sps.direct_8x8_inference_flag = direct_8x8_inference_flag;
sps.crop = crop; ///< frame_cropping_flag
sps.crop_left = crop_left; ///< frame_cropping_rect_left_offset
sps.crop_right = crop_right; ///< frame_cropping_rect_right_offset
sps.crop_top = crop_top; ///< frame_cropping_rect_top_offset
sps.crop_bottom = crop_bottom; ///< frame_cropping_rect_bottom_offset
sps.vui_parameters_present_flag = vui_parameters_present_flag;
//sps.sar = null;
sps.sar.num = sar.num;
sps.sar.den = sar.den;
sps.video_signal_type_present_flag = video_signal_type_present_flag;
sps.full_range = full_range;
sps.colour_description_present_flag = colour_description_present_flag;
sps.color_primaries = color_primaries;
sps.color_trc = color_trc;
sps.colorspace = colorspace;
sps.timing_info_present_flag = timing_info_present_flag;
sps.num_units_in_tick = num_units_in_tick;
sps.time_scale = time_scale;
sps.fixed_frame_rate_flag = fixed_frame_rate_flag;
sps.offset_for_ref_frame = new short[256]; //FIXME dyn aloc?
System.arraycopy(offset_for_ref_frame, 0, sps.offset_for_ref_frame, 0, 256);
sps.bitstream_restriction_flag = bitstream_restriction_flag;
sps.num_reorder_frames = num_reorder_frames;
sps.scaling_matrix_present = scaling_matrix_present;
sps.scaling_matrix4 = new int[6][16];
for(int i=0;i<6;i++)
System.arraycopy(scaling_matrix4[i], 0, sps.scaling_matrix4[i], 0, 16);
sps.scaling_matrix8 = new int[2][64];
for(int i=0;i<2;i++)
System.arraycopy(scaling_matrix8[i], 0, sps.scaling_matrix8[i], 0, 64);
sps.nal_hrd_parameters_present_flag = nal_hrd_parameters_present_flag;
sps.vcl_hrd_parameters_present_flag = vcl_hrd_parameters_present_flag;
sps.pic_struct_present_flag = pic_struct_present_flag;
sps.time_offset_length = time_offset_length;
sps.cpb_cnt = cpb_cnt; ///< See H.264 E.1.2
sps.initial_cpb_removal_delay_length = initial_cpb_removal_delay_length; ///< initial_cpb_removal_delay_length_minus1 +1
sps.cpb_removal_delay_length = cpb_removal_delay_length; ///< cpb_removal_delay_length_minus1 + 1
sps.dpb_output_delay_length = dpb_output_delay_length; ///< dpb_output_delay_length_minus1 + 1
sps.bit_depth_luma = bit_depth_luma; ///< bit_depth_luma_minus8 + 8
sps.bit_depth_chroma = bit_depth_chroma; ///< bit_depth_chroma_minus8 + 8
sps.residual_color_transform_flag = residual_color_transform_flag; ///< residual_colour_transform_flag
}
}