图像参数集Picture Paramater Set PPS

    第一个字节开始就表示数据内容,没有具体的长度信息,其长度根据具体里面的内容是不同的

    image.png

    pic_parameter_set_id 当前PPS的ID,供slice RBSP使用
    seq_parameter_set_id 当前PPS所属的SPS的ID
    entropy_coding_mode_flag 为0时表明采用CAVLC编码
    为1时表明采用CABAC编码
    bottom_field_pic_order_in_frame_present_flag 用于POC计算
    num_slice_groups_minus1 进行图像编码时,分成几个slice group
    num_slice_groups_minus1加上1表示一个图像中的切片组数目.当num_slice_groups_minus1为0时,图象所有的切片属于同一组
    slice_group_map_type 如果num_slice_groups_minus1大于0表明会分成多个slice group此时采用该值来规定宏块的组合方式
    type种类参考宏块映射 FMO
    openh264只支持type0 和type1
    run_length_minus1
    num_ref_idx_l0_default_active_minus1 前向参考图像的数量
    num_ref_idx_l1_default_active_minus1 后向参考图片的数量
    weighted_pred_flag 用于指示P,SP slice是否进行亮度的加权预测
    weighted_bipred_idc 用于指示B slice的加权预测,0:否 1:显式加权预测,2:隐式加权预测
    pic_init_qp_minus26 用于计算初始QP(整个视频QP的初始值)
    pic_init_qs_minus26 用于计算SP,SI帧的初始QP
    chroma_qp_index_offset 色度宏块db与亮度宏块y的QP差值
    deblocking_filter_control_present_flag 是否进行deblocking
    constrained_intra_pred_flag 0:当宏块进行intra编码时,尽管周边宏块为inter编码,也能用于当前宏块的intra预测
    1:当宏块进行intra编码时,只有为intra编码当周边宏块才能用于当前宏块的intra预测
    redundant_pic_cnt_present_flag 如果当前视频中冗余图像的话(SI,SP),那么这个flag应该为1
    transform_8x8_mode_flag 用于指示luma宏块是否以8x8的方式进行DCT变换
    1:当前luma宏块进行8x8 DCT
    0:当前luma宏块进行4x4 DCT

    这个标记不会作用到chroma宏块,除非序列格式为4:4:4。也就是说如果序列格式为4:2:0或者4:2:2,那么无论transform_8x8_mode_flag是什么,chroma宏块都是采用4x4 DCT。而如果序列格式为4:4:4,chroma宏块采用与luma宏块相同的DCT。如果码流中没有出现这个标记,那么这个标记的值默认为0。 | | pic_scaling_matrix_present_flag | scaling list相关 | | second_chroma_qp_index_offset | 色彩宏块Cr与亮度宏块Y的QP差值 |