h264 memo

AVC		Advanced Video Coding, alias h264

SODB	String Of Data Bits
RBSP	Raw Byte Sequence Payload
		RBSP = SODB + (RBSP Trailing Bits for alignment)

EBSP	Encapsulated Byte Sequence Payload
		EBSP = RBSP inserted 0x03 to avoid being treated as startcode of a NALU
		Raw data
			... 0xXX, 0x00, 0x00, 0xXX, ...
		Encoded data
			... 0xXX, 0x00, 0x00, 0x03, 0xXX, ...
NALUHeader
		forbidden_zero_bit, 1bit
		nal_ref_idc, 2bits
		nal_unit_type, 5bits, equals NALUHeader & 0x1F

NALU	Network Abstraction Layer Unit
		NALU = NALUHeader + EBSP
		startcode
			0x00, 0x00, 0x01		Following NALU is a slice in one picture frame
			0x00, 0x00, 0x00, 0x01	Following NALU is a picture frame, SPS, PPS, etc
AU		Access Units
			A complete picture frame containing several NALUs

SPS		Sequence Parameter Set				nal_unit_type == 7
			From an SPS, we can get width and height of the picture

PPS		Picture Parameter Set					nal_unit_type == 8
IDR		Instantaneous Decoding Refresh			nal_unit_type == 5
SEI		Supplemental Enhancement Information	nal_unit_type == 6
			1 byte payloadType + 1 byte payloadSize
			payloadType
				0x00: buffering_period
				0x01: pic_timing
				0x02: pan_scan_rect
				0x03: filler_payload
				0x04: user_data_registered_itu_t_t35
				0x05: user_data_unregistered
					16 bytes: uuid_iso_iec_11578
					payloadSize - 16: user_data_payload_byte
				0x06: recovery_point
			rbsp trailing bits
AnnexB
		use startcode
AVCC
		use NALU length, reuse EBSP
RTP
		in AVCC, not AnnexB?

refer to:
https://www.cnblogs.com/ssyfj/p/14624498.html
https://blog.csdn.net/y601500359/article/details/80943990