H.264又称MPEG-4 Part 10或AVCAdvanced Video Coding是一种广泛使用的视频压缩标准由国际电信联盟ITU-T和国际标准化组织ISO/IEC联合开发。其核心目标是在保证高质量视频的同时显著降低比特率适用于流媒体、蓝光光盘、视频会议等多种场景。一、概要介绍H.264采用先进的编码技术如帧内预测、帧间预测、变换编码和熵编码相比前代标准如MPEG-2可节省约50%的码率。分层设计视频编码层VCL负责核心编码功能生成压缩后的视频数据。网络抽象层NAL将VCL数据封装为NAL单元NALU便于传输和存储。支持多种应用场景支持从低分辨率如移动设备到超高清4K/8K的视频编码。适应不同网络环境通过参数集SPS/PPS实现灵活配置。二、编码流程2.1 帧类型划分I帧关键帧独立编码不依赖其他帧。仅帧内预测无运动矢量MVP帧预测帧参考前一帧编码一组运动矢量B帧双向预测帧参考前后帧编码两组MV残差最小压缩率更高。实际只有I帧没有其它帧视频一样可以播放。2.2 宏块处理将帧划分为16×16的宏块可自适应分割16×16 / 16×8 / 8×16 / 8×88×8进一步细分为更小的子块如4×41帧内预测I 宏块仅用当前帧周边已解码像素做空间预测16×16 亮度4 种平面预测模式大面积平滑画面4×4 亮度9 种角度方向预测纹理细节 色差 Cb/Cr 各 4 种预测模式 输出帧内预测块2帧间预测P/B 宏块运动估计 ME 运动补偿 MC多参考帧最多缓存 16 帧历史图像做匹配MPEG2 仅单参考1/4 像素精度插值运动矢量精度远高于 MPEG2 整像素在参考帧搜索窗口找最相似匹配块生成运动矢量 MV (dx,dy)用 MV 取出参考块 运动预测块2.3 变换与量化对残差数据应用整数离散余弦变换DCT和量化减少空间冗余。2.3.1. 残差计算残差 原始像素块 − 预测块帧内 / 帧间预测输出 画面大部分区域预测接近原图残差数值极小、大量为 0大幅降低编码数据。2.3.2 DCT变化默认最小变换单元 4×4全部整数运算无浮点误差、无精度累积损失High Profile 可选 8×8 大变换适配大面积纹理将空间像素转为频域系数能量集中在低频左上角高频系数趋近 02.3.3 量化量化参数 QP 控制压缩强度 QP 越大 → 系数压缩越狠、更多高频归零 → 码率低、画质差、块效应明显 量化后 80% 以上高频 AC 系数变为 0便于后续压缩2.3.4 系数重排扫描不再是单一 Z 扫描根据 4×4/8×8 变换块采用适配扫描顺序集中连续零系数2.4 熵编码采用CAVLC上下文自适应可变长编码或CABAC上下文自适应二进制算术编码进一步压缩数据。1CAVLC上下文自适应变长编码Baseline 强制使用Main/High 可选基于相邻块非零系数数量切换多组静态 VLC 码表复杂度低、解码快压缩一般。2CABAC上下文自适应二进制算术编码Baseline 禁用Main/High 专用所有数值二值化为 0/1 比特串根据周边已编码数据动态更新 0/1 概率模型算术编码突破整数比特限制比 CAVLC 省 10%~15% 码率输出VCL 层二进制比特数据2.5 环路去块滤波重建像素后在宏块 / 变换块边缘自适应平滑滤波消除量化产生的马赛克块效应大幅提升低码率画质。三、解码流程3.1 逆熵编码根据 PPS 标记选择 CAVLC / CABAC把二进制比特流还原为原始码流符号CAVLC 解码查表逆变长解码恢复每块非零系数数量、(Run,Level) 游程数据、运动矢量差分 MV、宏块类型等信息CABAC 解码Main/High 专用二进制算术解码恢复所有句法元素按上下文概率模型反向解析出残差系数、MV、宏块模式输出结果每个 8×8/4×4 块的一维系数序列、宏块类型、运动矢量 MV、帧内预测模式。3.2 逆重排扫描编码时对量化系数做了自定义重排解码器按相同顺序把一维系数数组还原回二维 4×4/8×8 DCT 系数矩阵。 MPEG2 只有固定 Z 扫描H264 根据 4×4/8×8 变换选用不同扫描表。3.3 逆量化逆DCT变换逆量化使用当前 QP 对应量化矩阵乘以系数恢复频域 DCT 系数该步骤还原编码时被压缩的频域数值。逆整数 4×4/8×8 DCTH264 全程整数运算无浮点误差将频域系数矩阵转换为残差像素块。 输出仅画面差值残差不是完整图像。3.4 宏块预测1I 宏块帧内预测无参考帧、无 MV根据熵解码得到的帧内预测模式4×4 九种方向、16×16 四种平面模式使用本块上方、左方已解码相邻像素计算出帧内预测块。2P 宏块前向预测解析运动矢量 MV解码差分 MV 还原真实偏移 dx/dy从 DPB 参考帧缓存中按 MV 偏移取出对应像素块作为前向预测块支持多参考帧选择可从多帧历史画面匹配最优块3B 宏块双向预测同时解析前向 MV、后向 MV分别从前后参考帧取出两块预测像素加权融合得到最终预测块。3.5 像素重建环路自适应块滤波公式重建像素 预测块像素 逆DCT输出残差对每个 4×4/8×8 块逐像素相加得到未滤波的原始宏块像素。对宏块边界、变换块边界自适应滤波平滑判断块边界两侧像素差值区分强弱滤波消除量化、DCT 带来的方块马赛克效应滤波后的完整帧存入 DPB 参考帧缓冲区供后续 P/B 帧做运动预测参考四、H264格式4.1 H.264码流格式┌─────────────────────────────────────────────────────────────────────────┐ │ H.264 Bitstream (字节流) │ ├─────────────────────────────────────────────────────────────────────────┤ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ Access │ │ Access │ │ Access │ │ Access │ │ │ │ Unit 1 │ │ Unit 2 │ │ Unit 3 │ │ Unit N │ │ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ NALU 1 │ NALU 2 │ NALU 3 │ ... │ NALU K │ │ │ │ │ (SPS) │ (PPS) │ (Slice) │ │ (Slice) │ │ │ │ └─────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘4.2 NALU格式┌──────────────────────────────────────────────────────────────────────┐ │ NAL Unit (NALU) │ ├─────────────────┬───────────────────────────────────────────────────┤ │ NAL Header │ RBSP (Raw Byte Sequence Payload) │ │ (1 byte) │ │ ├───────────────── ─┼───────────────────────────────────────────────────┤ │ ┌─────────┐ │ ┌────────────────────────────────────────────┐ │ │ │0 1 2 3 4│ │ │ RBSP Data │ │ │ │5 6 7 │ │ │ (SEI/SPS/PPS/Slice 等结构化数据) │ │ │ └─────────┘ │ └────────────────────────────────────────────┘ │ │ │ │ │forbidden_bit 1bit │ │ │nal_reference_idc 3bit │ │nal_unit_type 5bit │ └─────────────────┴───────────────────────────────────────────────────┘ │ │ ▼ ▼ 标识NALU属性 实际编码数据 ┌──────────────────────────────────────────────────────────────────┐ │ NAL Header (1 byte) │ ├─────────┬───────────┬───────────────────────────────────────────┤ │ bit[7] │ bit[6:5] │ bit[4:0] │ │ │ │ │ ├─────────┼───────────┼───────────────────────────────────────────┤ │forbidden│nal_refere │nal_unit_type │ │ _bit │ _idc │ (5 bits) │ ├─────────┼───────────┼───────────────────────────────────────────┤ │ │ │ │ │ 1 bit │ 2 bits │ 5 bits │ │ │ │ │ └─────────┴───────────┴───────────────────────────────────────────┘ ┌──────────────────────────────────────────────────────────────────┐ │ RBSP │ ├──────────────────────────────────────────────────────────────────┤ │ ┌────────────────────────────────────────────────────────────┐ │ │ │ RBSP Data │ │ │ │ (各种语法元素的熵编码数据) │ │ │ └────────────────────────────────────────────────────────────┘ │ │ ↓ │ │ ┌────────────────────────────────────────────────────────────┐ │ │ │ RBSP Trailing Bits │ │ │ │ 1 bit: 1 │ │ │ │ N bits: 0 (填充到字节边界) │ │ │ └────────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────┘4.2.1 NALU头介绍字段位数含义取值范围forbidden_bit1禁止位0正常1语法错误nal_reference_idc2参考重要性0~30非参考帧解码后不用于后续帧预测 1~3参考帧数值越大表示重要性越高nal_unit_type5NALU类型0~31nal_unit_type表Type名称类别参考性关键特性0Unspecified--保留1Coded slice of a non-IDR pictureVCL可选P/B/SI/SP 帧2Coded slice data partition AVCL是数据分区 A3Coded slice data partition BVCL是数据分区 B4Coded slice data partition CVCL是数据分区 C5Coded slice of an IDR pictureVCL是I 帧清空参考缓冲6SEINon-VCL否补充增强信息7SPSNon-VCL否序列参数集8PPSNon-VCL否图像参数集9AUDNon-VCL否访问单元分隔符10EOSNon-VCL否序列结束11EOBNon-VCL否比特流结束12Filler dataNon-VCL否填充数据13SPS extensionNon-VCL否SPS 扩展14Prefix NAL unitNon-VCL否SVC/MVC 前缀15Subset SPSNon-VCL否MVC 子集 SPS16Depth parameter setNon-VCL否3D 深度参数17-18Reserved--保留19Coded slice of an auxiliary coded picture without partitioningVCL否辅助图片20-23Coded slice extensionsVCL可选扩展切片类型24-31Reserved--保留4.2.2 NALU 的 RBSP 内容NALU类型RBSP 内容解析函数SPS (7)序列参数集数据InterpretSPS()PPS (8)图像参数集数据InterpretPPS()SEI (6)补充增强信息DecodeSEI()Slice (1/5)Slice Header 宏块数据decode_slice()4.3 Annex B 字节流格式起始码分隔、防竞争字节处理.AnnexB.264 裸流、实时流000001 NALUAVCCMP4、FLV4字节长度 NALU┌──────────────────────────────────────────────────────────────────┐ │ Annex B Byte Stream Format │ ├──────────────────────────────────────────────────────────────────┤ │ [Start Code] [EBSP Data] [Start Code] [EBSP Data] ... │ ├──────────────────────────────────────────────────────────────────┤ │ │ │ Start Code 类型: │ │ ├── Short Start Code: 0x00 0x00 0x01 (3 bytes) │ │ └── Long Start Code: 0x00 0x00 0x00 0x01 (4 bytes) │ │ │ │ 第一个 NALU 前可能有: │ │ └── Leading Zero 8 Bits: 若干 0x00 字节 │ │ │ │ NALU 之间可能有: │ │ └── Trailing Zero 8 Bits: 若干 0x00 字节 │ │ │ └──────────────────────────────────────────────────────────────────┘4.4 参数集结构序列/图像级配置参数4.4.1 SPSSequence Parameter SetSPS 是 H.264 码流的核心配置文件其设计体现了以下特点全面性涵盖编码、解码、显示所需的所有全局参数灵活性通过 FREXT 扩展支持高比特深度和多种色度格式兼容性通过 profile/level 机制保证不同设备的兼容性可扩展性VUI 参数提供丰富的元数据支持┌─────────────────────────────────────────────────────────────────────┐ │ Sequence Parameter Set (SPS) │ ├─────────────────────────────────────────────────────────────────────┤ │ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ │ │ profile_idc │ │ level_idc │ │ seq_parameter_ │ │ │ │ (编码档次) │ │ (编码级别) │ │ set_id │ │ │ └──────────────────┘ └──────────────────┘ └──────────────────┘ │ │ ↓ │ │ ┌──────────────────────────────────────────────────────────────┐ │ │ │ 分辨率参数 │ │ │ │ pic_width_in_mbs_minus1 | pic_height_in_map_units_minus1 │ │ │ │ frame_mbs_only_flag | mb_adaptive_frame_field_flag │ │ │ └──────────────────────────────────────────────────────────────┘ │ │ ↓ │ │ ┌──────────────────────────────────────────────────────────────┐ │ │ │ 帧率与参考帧 │ │ │ │ log2_max_frame_num_minus4 | num_ref_frames │ │ │ │ pic_order_cnt_type | gaps_in_frame_num_allowed │ │ │ └──────────────────────────────────────────────────────────────┘ │ │ ↓ │ │ ┌──────────────────────────────────────────────────────────────┐ │ │ │ VUI Parameters (可选) │ │ │ │ aspect_ratio_info | timing_info | hrd_parameters │ │ │ └──────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘1相关主要字段介绍字段类别字段名称比特数说明基础信息profile_idc8编码档次level_idc8编码级别seq_parameter_set_idue(v)SPS 标识约束标志constrained_set0_flag1约束集0constrained_set1_flag1约束集1constrained_set2_flag1约束集2constrained_set3_flag1约束集3分辨率pic_width_in_mbs_minus1ue(v)图像宽度宏块数-1pic_height_in_map_units_minus1ue(v)图像高度frame_mbs_only_flag1是否仅帧编码mb_adaptive_frame_field_flag1宏块级帧场自适应参考帧num_ref_framesue(v)参考帧数量POCpic_order_cnt_typeue(v)POC 计算模式VUIvui_parameters_present_flag1VUI 参数存在标志常见 profile_idc 值值档次名称支持特性典型应用66BaselineCAVLC, I/P帧实时通信77MainCABAC, I/P/B帧流媒体88Extended容错能力强广播100High8x8变换, CABAC蓝光, HDTV110High 1010-bit深度专业视频122High 4:2:24:2:2色度专业视频244High 4:4:44:4:4色度专业视频evel_idc 定义了解码器的性能要求值级别最大宏块率最大分辨率示例1011485QCIF (176x144)111.13000QVGA (320x240)121.26000VGA (640x480)202120004CIF (704x576)212.118000SDTV30340500720p313.11080001080p30fps4042457601080p60fps414.12457601080p60fps5055222404K30fps帧/场编码模式frame_mbs_only_flagmb_adaptive_frame_field_flag模式1-纯帧编码00纯场编码01宏块级帧场自适应POCPicture Order Count三种计算模式pic_order_cnt_type计算方式特点0PicOrderCntMsb pic_order_cnt_lsb简单直接1基于frame_num循环适合 B 帧较多场景22 * AbsFrameNum或2 * AbsFrameNum - 1简化计算色度格式chroma_format_idc格式Y:U:V 比例0YUV 4:0:04:0:01YUV 4:2:04:2:02YUV 4:2:24:2:23YUV 4:4:44:4:44.4.2 PPSPicture Parameter SetPPS 是 H.264 码流中每帧图像的配置文件其设计体现了以下特点灵活性支持多种熵编码模式、参考帧配置和滤波参数可配置性通过 FMO 支持灵活的宏块排序扩展性通过 FREXT 扩展支持高比特深度和 8x8 变换关联性通过 seq_parameter_set_id 与 SPS 关联实现参数继承┌─────────────────────────────────────────────────────────────────────┐ │ Picture Parameter Set (PPS) │ ├─────────────────────────────────────────────────────────────────────┤ │ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ │ │ pic_parameter_ │ │ seq_parameter_ │ │ entropy_coding │ │ │ │ set_id │ │ set_id │ │ _mode_flag │ │ │ └──────────────────┘ └──────────────────┘ └──────────────────┘ │ │ ↓ │ │ ┌──────────────────────────────────────────────────────────────┐ │ │ │ 参考帧配置 │ │ │ │ num_ref_idx_l0_default_active_minus1 │ │ │ │ num_ref_idx_l1_default_active_minus1 │ │ │ │ weighted_pred_flag | weighted_bipred_idc │ │ │ └──────────────────────────────────────────────────────────────┘ │ │ ↓ │ │ ┌──────────────────────────────────────────────────────────────┐ │ │ │ 量化与滤波 │ │ │ │ pic_init_qp_minus26 | chroma_qp_index_offset │ │ │ │ deblocking_filter_control_present_flag │ │ │ └──────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────┘1PPS 字段总览字段类别字段名称比特数说明基础信息pic_parameter_set_idue(v)PPS 标识0~255seq_parameter_set_idue(v)关联的 SPS ID必须在当前码流中存在熵编码entropy_coding_mode_flag1熵编码模式0CAVLC, 1CABACPOCbottom_field_pic_order_in_frame_present_flag1底场 POC 标志POC用于控制帧的输出顺序FMOnum_slice_groups_minus1ue(v)切片组数量-1参考帧num_ref_idx_l0_default_active_minus1ue(v)List 0前向参考的默认帧数-1num_ref_idx_l1_default_active_minus1ue(v)List 1后向参考B帧的默认帧数-1加权预测weighted_pred_flag1P 帧加权预测weighted_bipred_idc2B 帧加权预测模式0不加权预测1默认加权2显示加权量化pic_init_qp_minus26se(v)初始 QP 值chroma_qp_index_offsetse(v)色度 QP 偏移滤波deblocking_filter_control_present_flag1去块滤波控制。0默认滤波控制1在 Slice Header 中指定滤波参数其他constrained_intra_pred_flag1帧内预测约束redundant_pic_cnt_present_flag1冗余帧计数FREXTtransform_8x8_mode_flag18x8 变换标志。0仅使用 4x4 变换1支持 8x8 变换High 档次pic_scaling_matrix_present_flag1图像缩放矩阵second_chroma_qp_index_offsetse(v)第二色度 QP 偏移2POC解析该字段仅在POC 模式 0pic_order_cnt_type 0且场编码模式下有效bottom_field_pic_order_in_frame_present_flag底场 POC 来源灵活性开销0公式计算 (top_poc 1)低无额外开销1Slice Header 传输高增加 1 bit┌─────────────────────────────────────────────────────────────────┐ │ POC 与帧输出顺序 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 编码顺序: I → P → B → B → P → B → B │ │ frame_num: 0 1 2 3 4 5 6 │ │ │ │ 显示顺序: I → B → B → P → B → B → P │ │ POC: 1 2 0 3 4 5 │ │ │ │ DPB 缓冲管理: │ │ ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┐ │ │ │ I(0) │ B(1) │ B(2) │ P(0) │ B(3) │ B(4) │ P(5) │ │ │ └──────┴──────┴──────┴──────┴──────┴──────┴──────┘ │ │ │ │ │ │ └───────────┬──────────────────────┘ │ │ ▼ │ │ 按 POC 顺序输出到显示设备 │ │ │ └─────────────────────────────────────────────────────────────────┘3FMO 模式slice_group_map_type模式名称说明0光栅扫描按行扫描分配到不同切片组1锯齿扫描之字形扫描2矩形将图像分成矩形区域3第一套棋盘棋盘模式适用于隔行扫描4第二套棋盘另一种棋盘模式5螺旋螺旋扫描6自定义显式指定每个宏块所属的切片组4QP量化参数计算QP 值范围0-51值越小质量越高// 亮度 QP 26 pic_init_qp_minus26 slice_qp_delta // 色度 QP 亮度 QP chroma_qp_index_offset4.5 Slice结构帧的编码单元Slice 是 H.264 码流的核心数据单元其设计体现了以下特点分层设计Slice Header 包含解码控制信息Slice Data 包含实际视频数据灵活的编码模式支持 I/P/B/SI/SP 五种切片类型高效的参考帧管理通过 ref_pic_marking 命令灵活控制参考帧精确的显示控制通过 POC 机制确保正确的帧显示顺序┌─────────────────────────────────────────────────────────────────────────┐ │ Slice │ ├─────────────────────────────────────────────────────────────────────────┤ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ Slice Header │ │ │ │ first_mb_in_slice | slice_type (I/P/B/SI/SP) │ │ │ │ pic_parameter_set_id | frame_num │ │ │ │ idr_pic_id (IDR帧) | pic_order_cnt_lsb │ │ │ │ num_ref_idx_l0/1 | ref_pic_list_reordering │ │ │ │ weighted_pred_table | dec_ref_pic_marking │ │ │ │ cabac_init_idc | slice_qp_delta │ │ │ │ deblocking_filter_control │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ ↓ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ Slice Data (宏块数据) │ │ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ │ │ Macro- │ │ Macro- │ │ Macro- │ │ Macro- │ ... │ │ │ │ │ block 0 │ │ block 1 │ │ block 2 │ │ block N │ │ │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │ │ │ │ │ │ │ │ │ │ │ ↓ ↓ ↓ ↓ │ │ │ │ [MB Type] [MB Type] [MB Type] [MB Type] │ │ │ │ [MVD] [MVD] [MVD] [MVD] │ │ │ │ [Residual] [Residual] [Residual] [Residual] │ │ │ └─────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘4.5.1 slice 分类Slice 类型说明编码方式参考需求I-Slice帧内切片仅使用帧内预测无需参考帧P-Slice帧间前向切片使用前向预测List 0需要前向参考帧B-Slice帧间双向切片使用双向预测List 0 List 1需要双向参考帧SI-Slice切换帧内切片帧内预测用于 SP 帧切换无需参考帧SP-Slice切换帧间切片帧间预测用于灵活切换需要参考帧4.5.2 slice主要字段字段类别字段名称比特数说明基础信息first_mb_in_sliceue(v)切片中的第一个宏块地址slice_typeue(v)切片类型I/P/B/SI/SPpic_parameter_set_idue(v)关联的 PPS ID帧编号frame_numu(v)帧编号场编码field_pic_flag1是否为场编码bottom_field_flag1是否为底场POCpic_order_cnt_lsbu(v)POC 的低字节部分delta_pic_order_cnt_bottomse(v)底场 POC 偏移参考帧num_ref_idx_l0_active_minus1ue(v)L0 参考帧数量-1num_ref_idx_l1_active_minus1ue(v)L1 参考帧数量-1加权预测weighted_pred_flag1P 帧加权预测标志weighted_bipred_idc2B 帧加权预测模式量化slice_qp_deltase(v)QP 偏移量滤波disable_deblocking_filter_idcue(v)去块滤波控制参考帧标记ref_pic_marking可变参考帧管理命令4.5.3 slice 编码类型编码值实际类型说明0I-Slice帧内切片1P-Slice帧间前向切片2B-Slice帧间双向切片3SI-Slice切换帧内切片4SP-Slice切换帧间切片5I-Slice (反向)用于 B 帧的反向预测6P-Slice (反向)用于 B 帧的反向预测7B-Slice (反向)用于 B 帧的双向预测8SI-Slice (反向)用于 SP 帧切换9SP-Slice (反向)用于 SP 帧切换4.5.1 宏块结构预测与变换的基本单元┌─────────────────────────────────────────────────────────────────────────┐ │ Macroblock (16x16) │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ Luma (Y) │ │ │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │ │ │ 4x4 │ │ 4x4 │ │ 4x4 │ │ 4x4 │ ← 16 个 4x4 亮度块 │ │ │ │ │ Block│ │ Block│ │ Block│ │ Block│ │ │ │ │ └──────┘ └──────┘ └──────┘ └──────┘ │ │ │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │ │ │ 4x4 │ │ 4x4 │ │ 4x4 │ │ 4x4 │ │ │ │ │ │ Block│ │ Block│ │ Block│ │ Block│ │ │ │ │ └──────┘ └──────┘ └──────┘ └──────┘ │ │ │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │ │ │ 4x4 │ │ 4x4 │ │ 4x4 │ │ 4x4 │ │ │ │ │ │ Block│ │ Block│ │ Block│ │ Block│ │ │ │ │ └──────┘ └──────┘ └──────┘ └──────┘ │ │ │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │ │ │ 4x4 │ │ 4x4 │ │ 4x4 │ │ 4x4 │ │ │ │ │ │ Block│ │ Block│ │ Block│ │ Block│ │ │ │ │ └──────┘ └──────┘ └──────┘ └──────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ ↓ │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ Chroma (U, V) │ │ │ │ ┌──────┐ ┌──────┐ │ │ │ │ │ 4x4 │ │ 4x4 │ ← 4 个 4x4 色度块 (4:2:0) │ │ │ │ │ Block│ │ Block│ │ │ │ │ └──────┘ └──────┘ │ │ │ │ ┌──────┐ ┌──────┐ │ │ │ │ │ 4x4 │ │ 4x4 │ │ │ │ │ │ Block│ │ Block│ │ │ │ │ └──────┘ └──────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ │ │ │ │ 帧内预测模式 (Intra Prediction): │ │ └── 16x16: DC, Horizontal, Vertical, Plane │ │ └── 4x4: 9种方向模式 │ │ │ │ 帧间预测模式 (Inter Prediction): │ │ └── P帧: 前向预测 (L0) │ │ └── B帧: 双向预测 (L0 L1) │ │ │ └─────────────────────────────────────────────────────────────────────────┘1 帧内预测模式模式名称说明0INTRA_4x4_VERT垂直预测1INTRA_4x4_HOR水平预测2INTRA_4x4_DCDC 预测3INTRA_4x4_DIAG_DOWN_LEFT对角线左下预测4INTRA_4x4_DIAG_DOWN_RIGHT对角线右下预测5INTRA_4x4_VERT_RIGHT垂直右预测6INTRA_4x4_HOR_DOWN水平下预测7INTRA_4x4_VERT_LEFT垂直左预测8INTRA_16x16_VERT16x16 垂直预测9INTRA_16x16_HOR16x16 水平预测10INTRA_16x16_DC16x16 DC 预测11INTRA_16x16_PLANE16x16 平面预测