0

I want to understand a weird observation I had while working with h264 encoded AVC files. In such files, each NAL unit is preceded by 1/2/4 bytes that encode the size of the NAL unit (without the size header). However, there has been some cases where the end of one NAL unit doesn't take to another NAL unit, instead it takes to a sequence of some data till it eventually reaches another NAL unit

For example, starting at 01ADF399, we have:

*00 00 35 99 41* 9A 12 25 83 A5 F0 7A 08 41 0C 1E 02 50 20 03 80 A4 12 30 B6 44 90 
0C E1 CD A2 68 9F 9F 2E C0 2E 1C 18 A2 28 8A 85 65 AC 0B 7D F1 DD 0F ... 

Which ends at 01AE2936 as:

21 1A 54 6D FC 34 3B 32 FA AA D6 71 8A BC 92 F9 95 79 75 8A E6 B5 A9 77 24 4A AC
1C E3 EF A2 9D 97 30 51 D1 7B EB 75 FD B2 8D 8A A7 B9 47 8A C6 59 1A 32 FB 9E 77 
03 8E CA 67 23 B7 52 EE 2E A4 BA 43 CE F9 CD 46 48 C5 C4 41 35 32 F3 D6 5B CD BE 
DA B8 B3 3E 1B 33 87 AE 65 A0 45 74 DF EB 37 96 2F DA 9C ...

Clearly not the start of an NAL unit (since FC doesn't have forbidden zero bit)

However, at 01AE7535, we have the following:

00 00 27 EA 41 9A 14 29 81 29 7C 80 41 04 18 98 44 64 01 C6 54 00 0D 9F 34 58 71 
E5 0A A6 CD B0 4B 38 60 7F E6 1F C8 00 24 7A 06 E5 9B 21 99 F0 51 24 9B ...

Which is the start of an NAL unit. I verified that those two NAL units are consecutive since filtering the file to the annex B h264 format removes the unknown data in between and places those two exact NAL units right next to each other.

I tried looking at ISO 14496 part 15 but it doesn't mention anything about this.

Diram_T
  • 21
  • 3
  • It's mp4 file, not raw H.264 ES byte stream, isn't it? – Roman R. Dec 24 '21 at 13:40
  • Yeah it is an mp4 file. – Diram_T Dec 24 '21 at 19:14
  • Length prefixed NAL units are packaged into other structures. So you're seeing end of such structure, followed by different data. Essentially your question is the format of MP4 file and you have a specification to check out for this. – Roman R. Dec 25 '21 at 14:54

0 Answers0