Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 14496-15:2016 (commonly referenced as IEC 14496-15-15) is the third edition of Part 15 of the MPEG‑4 suite. It specifies how video bitstreams built on the network abstraction layer (NAL) unit concept – notably H.264/AVC, H.265/HEVC, and their scalable and multiview extensions – are stored in the ISO base media file format (ISOBMFF). This article provides an in‑depth look at the standard’s scope, technical requirements, implementation highlights, and compliance notes.
ISO/IEC 14496-15:2016 defines the storage syntax and semantics for NAL‑unit‑based compressed video within the family of ISO media files (e.g., MP4, M4V, 3GP). It addresses the need for a container that preserves the logical structure of the video stream while enabling efficient random access, streaming, and editing. The standard covers:
The 2016 edition extends the prior version by formally integrating HEVC and its scalable extensions, cleaning up previously ambiguous mapping rules, and adding provisions for high‑dynamic‑range (HDR) video metadata.
Every video track conforming to this standard must contain a sample entry that unambiguously identifies the codec and its configuration. The central data structure is the DecoderConfigurationRecord, which stores the initialization information needed to decode the attached video stream.
| Codec | Sample Entry (4CC) | Configuration Record | Required NAL Unit Types |
|---|---|---|---|
| H.264/AVC | avc1 | AVCDecoderConfigurationRecord | SPS, PPS, (IDR) slices |
| Scalable AVC (SVC) | avc1 or svc1 | AVCDecoderConfigurationRecord (with SVC extension) | SPS, PPS, sub‑bitstream SPS |
| Multiview AVC (MVC) | mvc1 | AVCDecoderConfigurationRecord (with MVC extension) | SPS, PPS, view‑level parameter sets |
| HEVC (H.265) | hev1 / hvc1 | HEVCDecoderConfigurationRecord | VPS, SPS, PPS, slices |
| Scalable HEVC (SHVC) | hev1 / hvc1 (or shv1) | HEVCDecoderConfigurationRecord (with scalability info) | VPS, SPS, PPS, layer‑specific parameter sets |
| Multiview HEVC (MV‑HEVC) | mhv1 | HEVCDecoderConfigurationRecord (with view info) | VPS, SPS, PPS, view parameter sets |
The table above summarises the principal sample entries and the configuration records that must be present in the stbl box of the media track. In all cases, the configuration record shall be placed in the avcC or hvcC box, as appropriate. Implementations must ensure that all parameter sets used by the bitstream are included in the configuration record; missing parameter sets cause decoding failure.
hvc1 sample entry rather than hev1 to indicate that parameter sets may need to be retrieved from the configuration record. For broad compatibility, many players expect hvc1 for self‑contained files and hev1 for streaming scenarios.Key implementation considerations include:
nalUnitLength field in the configuration record (typically 4 bytes).tscl group type to label temporal layers; this aids a player in selecting a sub‑frame for trick modes.trak order in the moov box indicates base and enhancement layers.ctts box for presentation timestamps.To claim conformance with ISO/IEC 14496-15:2016, a file or reader must satisfy a set of interoperability conditions:
ftyp box must declare a compatible brand (e.g., mp42, isom, iso5, or iso6).AVCDecoderConfigurationRecord or HEVCDecoderConfigurationRecord must contain the exact SPS/PPS/VPS used by the video samples. Corrupted or outdated parameter sets are a leading cause of playback failure.hevc, while for AVC it is avc1 or mp42.avcC boxes with spurious “extra” bytes. The parsing algorithm defined in ISO/IEC 14496-15:2016 is strict about the number of sequences and length fields; extra bytes or incorrect ordering of SPS and PPS may be rejected by compliant decoders.hev1 and hvc1 sample entries?hvc1, all parameter sets needed for decoding are expected to be present in the hvcC configuration record. In hev1, some parameter sets may be only sent in‑band (within the sample data). For offline files, hvc1 is recommended; for live streaming, hev1 is more common.ftyp brand should reflect the most advanced codec used in the file.parallelismType field was removed). Old files may not trigger the new rules, but an updated parser must handle both.