-
Notifications
You must be signed in to change notification settings - Fork 16
conformance_files
A few thoughts on conformance files.
Input: AV1 bitstream with a static Sequence Header OBU for the entire bitstream. No multiple frames per temporal unit where previous frame is delayed using show_existing_frame mechanism. No metadata OBUs. No tile list OBUs.
val_basic.mp4: All basic shall requirements set, should requirements are followed. Obey all general requirement rules and align Sequence Header OBU with AV1CodecConfigurationRecord. Only one frame per ISOBMFF sample. Sequence header OBU is not stored in configuration record, every sync sample includes the sequence header OBU in the beginning of the sample. obu_has_size=1 fields are always set except in the last sample. No temporal unit delimiters in samples.
Input:
AV1 bitstream with a static Sequence Header OBU for the entire bitstream. Multiple frames per temporal unit are present where previous frame is delayed using show_existing_frame=1
mechanism. No metadata OBUs. No tile list OBUs.
val_multi_frames_samples.mp4:
All basic shall requirements set. Obey all general requirement rules and align Sequence Header OBU with AV1CodecConfigurationRecord. Some samples store multiple frames in a single sample. AV1MultiFrameSampleGroupEntry is used to signal those samples. Everything else is aligned with basic.mp4
.
Input: Equidistant switch frames with alternating video resolutions.
val_fragmented_switches.mp4: Fragmented mp4 with switch frames on every chunk boundary. Switch frame sample group AV1SwitchFrameSampleGroupEntry is used to signal switch frames.
Input: No T.35 metadata OBUs are present in the input bitstream. Input bitstream contains the following metadata OUBs:
- METADATA_TYPE_HDR_CLL
- METADATA_TYPE_HDR_MDCV
- METADATA_TYPE_SCALABILITY
val_metadata.mp4: AV1MetadataSampleGroupEntry used to signal samples carrying metadata. Samples carryting the metadata OBUs follow the correct placement of the metadata OBUs.
Key Frames with the show_frame flag = 0
are called Delayed Random Access Points. Delayed Random Access Points have the additional property that if a future Key Frame Dependent Recovery Point exists, all frames following that Key Frame Dependent Recovery Point can be decoded. A Key Frame Dependent Recovery Point is a frame with show_existing_frame = 1
that refers to a previous Delayed Random Access Points.
AV1ForwardKeyFrameSampleGroupEntry sample group.
TBD: Check if libaom can generate them.
Input: Bitstream with multiple changing Sequence header OBUs
val_multiSH.mp4: Single AV1 track with multiple sample entries where every new sequence lands in a newsample entry. Track header information is represents all sample entries (e.g.: max rendering dimensions, etc.)
Decoder configuration information mismatch between the Sequence Header OBU and the AV1CodecConfigurationBox.
Input: AV1 bitstream with a static Sequence Header OBU for the entire bitstream.
inv_config.mp4: MP4 file with the AV1CodecConfigurationBox having differing values compared to the Sequence Header OBU (e.g.: mismatch in video resolution, profile, level, tier, subsampling etc.)
Store 2 (multiple) sequence header OBUs in a configOBUs array of the same AV1CodecConfigurationRecord.
Every RAP sample shall have a Sequence Header OBU before the first frame header OBU. However static Sequence Header OBU can also be in the sample entry. In this testcase only sample entry includes the Sequence Header OBU but not the sync samples themselves. When demultiplexing this invalid mp4 file we will have a perfectly valid AV1 bitstream.
Input: AV1 bitstream with a static Sequence Header OBU for the entire bitstream
Output inv_sync_samples.mp4: MP4 file with the Sequence Header OBU stored inside the AV1CodecConfigurationRecord and no Sequence Header OBUs in any of the sync samples of the track.
Color info between ‘colr’ box and sequence header OBU differs.