数据压缩 | 实验七_20210617实验课要求

一、实验要求

1.选择一个.mp4或者.264文件。
2.在码流分析仪软件中打开该文件,从几个层次进行分析:
(1)分析SPS和PPS里都包含哪些主要的信息,给出参数值。(例如分辨率、帧率、GOP结构等等)
(2)以一个GOP为例,分析如下信息:

  • 每个图像帧的类型及所用的编码比特数、QP值;并以图像帧号为横坐标、每帧所用比特数为纵坐标画出曲线图;以图像帧号为横坐标、每帧所用QP为纵坐标画出曲线图。
  • 以第一个I帧作为分析对象,基于该帧图像的空间特性,分析每个宏块所采用的编码类型及其比例。
  • 以第一个P帧作为分析对象,基于该帧图像的空间和时间特性,分析每个宏块所采用的编码类型及其比例。
  • 以某一个B帧作为分析对象,基于该帧图像的空间和时间特性,分析每个宏块所采用的编码类型及其比例。

二、实验步骤

1.用H.264Visa.exe打开demo.mp4文件

在这里插入图片描述

2. SPS

在这里插入图片描述
(1)profile_idc

  • 根据profile_idc的值可以确定码流符合哪一种档次:
    profile_idc = 66 → baseline profile;
    profile_idc = 77 → main profile;
    profile_idc = 88 → extended profile;
  • profile_idc = 0x42 = 66,因此码流的档次为baseline profile

(2) level_idc

  • level_idc值为31,故其支持720p,码流级别为3.1

(3) pic_width_in_mbs_minus1 = 53
pic_height_in_map_units_minus1 = 29

  • 图像的宽=(53+1)*16=854
  • 图像的高=(29+1)*16=480

(4) seq_parameter_set_id

  • 表示当前的序列参数集的id
  • seq_parameter_set_id = 0

(5) log2_max_frame_num_minus4

  • MaxFrameNum = 2^(log2_max_frame_num_minus4 +
    4)。MaxFrameNum是frame_num的上限值,frame_num是图像序号的一种表示方法,在帧间编码中常用作一种参考帧标记的手段。
  • log2_max_frame_num_minus4 = 4,故MaxFrameNum = 2^(4 + 4) = 256。

(6) pic_order_cnt_type

  • 表示解码picture order count(POC)的方法。POC是另一种计量图像序号的方式,与frame_num有着不同的计算方法。该语法元素的取值为0、1或2。
  • pic_order_cnt_type = 2。

(7 )num_ref_frames

  • 表示参考帧的数目
  • num_ref_frames = 2。

(8) gaps_in_frame_num_value_allowed_flag

  • 标识位
  • gaps_in_frame_num_value_allowed_flag = 0,说明不允许不连续的值。

(10) direct_8x8_inference_flag

  • 标识位,用于B_Skip、B_Direct模式运动矢量的推导计算
  • direct_8x8_inference_flag = 1

(11) frame_cropping_flag

  • 标识位,说明是否需要对输出的图像帧进行裁剪
  • frame_cropping_flag = 1,需要对输出的图像帧进行裁剪

(12) vui_parameters_present_flag

  • 标识位,说明SPS中是否存在VUI信息
  • vui_parameters_present_flag = 1,SPS中存在VUI信息。

3.PPS

在这里插入图片描述
(1) pic_parameter_set_id

  • 表示当前PPS的id
  • pic_parameter_set_id = 0即当前PPS的id为0。

(2) seq_parameter_set_id

  • 表示当前PPS所引用的激活的SPS的id
  • seq_parameter_set_id = 0

(3) entropy_coding_mode_flag

  • 熵编码模式标识,该标识位表示码流中熵编码/解码选择的算法。对于部分语法元素,在不同的编码配置下,选择的熵编码方式不同。例如在一个宏块语法元素中,宏块类型mb_type的语法元素描述符为“ue(v) | ae(v)”,在baseline profile等设置下采用指数哥伦布编码,在main profile等设置下采用CABAC编码
  • 标识位entropy_coding_mode_flag的作用就是控制这种算法选择。当该值为0时,选择左边的算法,通常为指数哥伦布编码或者CAVLC;当该值为1时,选择右边的算法,通常为CABAC
  • entropy_coding_mode_flag = 0,选择通常为哥伦布编码或者CAVLC

(4)pic_order_present_flag

  • POC的三种计算方法在片层还各需要用一些句法元素作为参数,本句法元素等于1时表示在片头会有句法元素指明这些参数;本句法元素等于0时,表示片头不会给出这些参数,这些参数使用默认值
  • ic_order_present_flag = 0

(5) num_slice_groups_minus1

  • 表示某一帧中slice group的个数。当该值为0时,一帧中所有的slice都属于一个slice group。slice group是一帧中宏块的组合方式
  • num_slice_groups_minus1 = 0

(6) num_ref_idx_l0_default_active_minus1、num_ref_idx_l0_default_active_minus1

  • 表示当Slice Header中的num_ref_idx_active_override_flag标识位为0时,P/SP/B slice的语法元素num_ref_idx_l0_active_minus1和num_ref_idx_l1_active_minus1的默认值
  • num_ref_idx_l0_active_minus1 = 0,num_ref_idx_l1_active_minus1 = 1

(7) weighted_pred_flag

  • 标识位,表示在P/SP slice中是否开启加权预测
  • weighted_pred_flag = 0,不开启加权预测

(8) weighted_bipred_idc

  • 表示在B Slice中加权预测的方法,取值范围为[0,2]。0表示默认加权预测,1表示显式加权预测,2表示隐式加权预测
  • weighted_bipred_idc = 0

(9) pic_init_qp_minus26和pic_init_qs_minus26

  • 表示初始的量化参数。实际的量化参数由该参数、slice header中的slice_qp_delta/slice_qs_delta计算得到
  • pic_init_qp_minus26 = 0,pic_init_qs_minus26 = 0

(10) chroma_qp_index_offset

  • 用于计算色度分量的量化参数,取值范围为[-12,12]
  • chroma_qp_index_offset = 0

(11) deblocking_filter_control_present_flag

  • 标识位,用于表示Slice header中是否存在用于去块滤波器控制的信息。当该标志位为1时,slice header中包含去块滤波相应的信息;当该标识位为0时,slice header中没有相应的信息
  • deblocking_filter_control_present_flag = 1

(12) constrained_intra_pred_flag

  • 若该标识为1,表示I宏块在进行帧内预测时只能使用来自I和SI类型宏块的信息;若该标识位0,表示I宏块可以使用来自Inter类型宏块的信息
  • constrained_intra_pred_flag = 0

(13) redundant_pic_cnt_present_flag

  • 标识位,用于表示Slice header中是否存在redundant_pic_cnt语法元素。当该标志位为1时,slice header中包含redundant_pic_cnt;当该标识位为0时,slice header中没有相应的信息
  • redundant_pic_cnt_present_flag = 0

4.分析一个GOP

在这里插入图片描述

在这里插入图片描述

  • I帧
    在这里插入图片描述
  • P帧

在这里插入图片描述

三、总结

  • I帧采用帧间预测,P帧采用前向预测和帧间预测
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值