Search code examples
mpeg-4

About MPEG-4 headers


I examined some MPEG-4 video headers and saw some byte arrays like below at the beginning:

00 00 01 B0 01 00 00 01 B5 89 13

I know 00 00 01 parts but what exactly B0 B1 and B5 89 13 parts mean? Actually, if I put this byte array infront of an MPEG-4 stream, it works fine.

But I don't know if those values works with different mpeg-4 stream sources ?


Solution

  • 0x000001B0 -> Visual Object Sequence Start (VOSS) Code
    0x000001B5 -> Visual Object Start (VOS) Code
    

    You can find the complete MPEG-4 elementary video header details at "ISO/IEC 14496-2" documentation. Here are the details you asked for.

    Visual Object Sequence Start (VOSS) Code

    -> 4 bytes visual object sequence start code = long hex value of 0x000001B0
    -> 8 bits profile/level indicator = 1 byte unsigned number
    

    Visual Object Start (VOS) Code

    -> 4 bytes visual object start code = long hex value of 0x000001B5
    -> 1 bit has id marker flag = 1/4 nibble flag
    
    _ID_Marker_Section_
    -> 4 bits version id = 1 nibble unsigned value - only if marker is true
      - version id types are ISO 14496-2 = 1
    -> 3 bits visual object priority = 3/4 nibble unsigned value - only if marker is true
      - priorities are 1 through to 7
    
    -> 4 bits visual object type = 1 nibble unsigned value
      - types are video = 1 ; still texture = 2 ; mesh = 3 ; face = 4
    -> 1 bit video signal type = 1/4 nibble flag
      - NOTE: if this is false Y has a sample range of 16 through to 235