H.264 프레임 -2. 바인딩 비트 스트림 구조를 참조하십시오

 프레임은 실제로 미세한의 프레임 분할의 개념에 속하는 많은 요소 중에서 H.264 표준에서 특정 개념 및 NALU, 슬라이스, 매크로 블록 등 개념적 아니므. I 해상도 다운 NAL 층 학습 시작하도록 프레임 이후 개념의 상부 층의 비교적 큰 부분이다. 여기에 주요 기준을 ITU-T H.264 표준 제안을 배우고, 테이블의 문법 구조, 사용 된 관련 표준 제안서에서 가져옵니다.
 권장 사항은 링크 H.264 표준 중국어 버전을 (그러나이 제안을 내가 약간의 차이를 볼 않았다, 그것은 거의 영향해야한다)

1. NAL 헤더 분석

 먼저, NAL 유닛 신택스 테이블은 아래 표 확인
NAL 유닛 신택스 테이블
 이전 문서 설명과 대략 일치 아래 테이블의 NAL 유닛.
 이것은 세 가지 중요한 NALU 구문 요소 forbidden_zero_bit, 된 nal_ref_idc, nal_unit_type 조성물 RBSP 바이트 스트림으로 볼 수있다. nal_unit_header 즉 NAL 헤드의 형성에 처음 세 개의 신택스 엘리먼트. 헤드는 8 비트로 구성된다.
 1 비트 값을 금지 orbidden_zero_bit 비트 1은 정상적인 상황은 0이어야 하에서 그 상세한 설명은 생략한다, 구문 오류를 나타낸다.
 기준 레벨을 나타내는 NAL은 (후속 기준 NAL의 유무)를 폐기 할 수 있는지 여부를 나타내는 된 nal_ref_idc 2~3 비트는 "00"효과 레퍼런스가 같은 B 슬라이스로 폐기 할 수 없다 나타내고, SEI와 같은 제로 - -을 포함하는 "01", "10", "11"- 나타낸다되도록 SPS, PPS, I 슬라이스, P와 제외 불가 NAL, 조각 등이있다.
 4~8은 nal_unit_type (NAL 유닛 타입) 참조, 상기 NAL 유닛에 포함되는 RBSP 데이터 구조의 타입을 지칭한다. nal_unit_type 대응 정수 NALU 타입은 다음 표에 나타내었다.
NAL 단위 유형 코드
 1 내지 5가되는 nal_unit_type는 VCL NAL 단위를 칭한다. 다른 모든 NAL 단위가 아닌 VCL NAL 단위라고도합니다.
 쉽게보고, VCL NAL 단위를 슬라이스과 관련된 정확한 데이터가 이미지 내부로드 RBSP 데이터입니다. VCL NAL 단위는 주로 이미지 데이터를 설명하는 데 사용되지 않습니다.
 실제로, 첫번째 바이트로 NALU의 유형을 결정하는 단계, 시작 코드 및 0x1f이, 대응 테이블에 따라. 아래 코드 스트림 데이터, 위의 방법 다음 코드 스트림을 분석하려는 시도의 한 부분이며,
데이터 스트림
 직사각형 시작 코드의 NALU 타입 원형 라벨로 표시. 첫 번째 유형은 00,000,111주고, NALU가 27 0010 0111의 이진수 표현 및 0x1f이 (이진수 00011111) 수득 될 수있다, 즉 십진수 7 비교 NALU 타입 표에서는 그 SPS, 시퀀스 파라미터 세트의 NALU. NALU 타입은 (8), PPS, 픽처 파라미터 세트를 따른다. NALU IDR의 세 번째 유형입니다.
 지금까지 표준 7.4.1.2.3의 도입과 함께 기존의 지식과 결론 전면에 기반. 가능한 프레임의 방법을 얻을 수있다.

 다음 NAL 유닛의 임의의 기본 코딩 화상의 마지막 VCL NAL 유닛들이 새로운 액세스 유닛 (즉, 이미지)를 나타내는 시작 후 7.4.1.2.3 표준 도입.
 NAL 단위 파티션 액세스 유닛 (존재) -
 시퀀스 파라미터 NAL 유닛 세트 (존재하는 경우) -
 - 픽처 파라미터 (존재) NAL 유닛 세트
 SEI NAL 유닛 (존재) -
 - 14-18의 nal_unit_type의 값 (범위) NAL 단위
 - 기본 부호화 화상 (항상 존재)의 제 VCL NAL 단위를
 상기의 설명으로부터, 첫 번째 새를 찾는되도록 존재해야 새의 제 VCL NAL 유닛을 알 수있다 시간의 VCL NAL 유닛은, 프레임을 결정하기 위해 수행된다.

 다행히 또한 소정의 제 1 기본 화상 부호화 VCL NAL 유닛을 검출하는 섹션 7.4.1.2.4에 특정 설명이 섹션.

 当前访问单元的基本编码图像的任何编码条带NAL单元或编码条带数据分割块A的NAL单元应与前一个访问单元的基本编码图像的任何编码条带NAL单元或编码条带数据分割块A的NAL单元以下列方式中的一种或多种进行区分:
 — frame_num的值不同。不管由于memory_management_control_operation等于5的情况出现而为了在后续解码过程中使用frame_num的值是否已经等于0,该值通常在测试条件中是在条带头的语法中出现的frame_num的值。
注1—上述情况的一个推理是一个包含frame_num值等于1的基本编码图像不能包含一个等于5的memory_management_control_operation,除非跟随其后的下一个基本编码图像(如果有的话)能够满足下面列出的其它条件。
 — pic_parameter_set_id 值不同。
 — field_pic_flag 值不同。
 — bottom_field_flag 在两个访问单元中都出现而且值不同。
 — nal_ref_idc 值不同,而且其中一个的nal_ref_idc 值等于0。
 — 两个访问单元的pic_order_cnt_type 都等于0,并且两个pic_order_cnt_lsb值不同或delta_pic_
order_cnt_bottom 值不同。
 — 两个访问单元的pic_order_cnt_type都等于1,并且两个delta_pic_order_cnt[ 0 ] 值不同或者delta_pic_order_cnt[ 1 ] 值不同。
 — nal_unit_type 值不同,而且其中一个的nal_unit_type 值等于5。
 — 两个访问单元的nal_unit_type都等于5,并且idr_pic_id 值不同。

 追踪至此,发现一下子出现了许多没接触过的参数,而这些参数需要多重判断并且未在NALU层出现。于是,往下进入slice层的解析。

2. slice头解析

 按照前文所述,数据由数据头和数据体组成。数据头即是对数据体的描述。所以进入slice层后,先跟踪slice头的信息,查看其语法结构,果然发现了frame_num这个语法元素。见下图,因slice头语法结构庞大,只给出部分语法结构表。
slice_header 테이블 섹션 신택스 구조
 进入建议书7.4.3节,查看条带头语义,

7.4.3 条带头语义
 如果存在,条带头语法元素pic_parameter_set_id、 frame_num、 field_pic_flag、bottom_field_flag、
idr_pic_id、 pic_order_cnt_lsb、 delta_pic_order_cnt_bottom、delta_pic_order_cnt[ 0 ]、delta_pic_order_cnt[ 1 ]、sp_for_switch_flag和 slice_group_change_cycle 的值在一个编码图像的所有条带头中都应一样。
 first_mb_in_slice 表示在条带中第一个宏块的地址。当如附件A 中规定的那样不允许任意的条带顺序时,本条带的first_mb_in_slice 的值应不小于当前图像的任何在该条带之前(按解码顺序)的其他条带的first_mb_in_slice 的值。

 (현재는 경우) 신택스 요소에 의해 결정되는 단락 부로부터 명백 월 1 항에서와 동일 또는 (허용되지 않는 임의의 슬라이스 순서대로) first_mb_in_slice 단조 프레이밍 증가 여부를 제 2 판정한다.
 분석 NAL 헤더와 함께 1 개의 솔루션들로 분할 될 수 있고, 하나의 슬라이스 헤더 신택스 엘리먼트의 다수의 판정 된 VCL NAL의 존재 first_mb_in_slice 항상 단조 임의 수의 (증가 여부 (존재하는 경우), 제는 슬라이스 순서) 판정 된 경우.

개요

 여기서, 상기 선택 방법 I, first_mb_in_slice 프레임의 선택된 슬라이스 헤더를 결정함으로써 수행된다. 쓰기 프레임 도구에 대한 참조 부록 추천과 실제 상황 때문에, 반드시 ASO를 지원하지 않습니다, 따라서 나는 임의의 슬라이스 순서를 결정 할 필요가 없습니다. 더 이해함으로써 구문 요소가 화상 어드레스 매크로 블록의 첫 번째 조각을 나타내는 것을 알 수있다. 그 값이 0 인 경우 즉, I는 일정하게 증가하는 저항없이 그를 판단, 필요는 이미지의 NALU 새로운 시작이 프로그램을 프레임입니다 그 여부를 알 수 결정.

게시 60 개 원래 기사 · 원 찬양 18 ·은 20000 +를 볼

추천

출처blog.csdn.net/BadAyase/article/details/103488206