You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
mp4ff-mvhevc command line tool with info and add subcommands to inspect
MV-HEVC (Multi-View HEVC) files and to mux HEVC (Annex B or mp4) into a
single-track MV-HEVC mp4 with hvcC/lhvC, oinf/linf sample groups and
optional Apple spatial-video (vexu/hfov) metadata
TrgrBox for the Track Group Box (trgr, ISO/IEC 14496-12 Sec. 8.3.4) and a
generic TrackGroupTypeBox for its children (registered for the standard msrc and ster track group types, and cstg — the complete subset track
grouping for L-HEVC, ISO/IEC 14496-15 Sec. 9.5.1), with a CreateTrackGroupTypeBox helper and a TrakBox.Trgr reference.
Type-specific data after track_group_id (e.g. the sterleft_view_flag)
is preserved for round-tripping
Apple spatial/stereo video metadata boxes in the Video Extended Usage box
(vexu) family: VexuBox, EyesBox (eyes), CamsBox (cams), ProjBox (proj), StriBox (stri), HeroBox (hero), BlinBox
(blin), PrjiBox (prji) and HfovBox (hfov), with a CreateVexuBox
helper and VisualSampleEntryBox.Vexu/.Hfov child references (Apple
"QuickTime and ISO Base Media File Formats and Spatial and Immersive Media")
LhvCBox for the L-HEVC configuration box (lhvC, ISO/IEC 14496-15 Ed. 7
Sec. 9.5.3.1), carrying the L-HEVC decoder configuration record for the
enhancement layers of a layered HEVC (MV-HEVC/SHVC) stream, with a CreateLhvCFromNalus constructor and a VisualSampleEntryBox.LhvC child
reference
Parsing of the HEVC multilayer/multiview VPS extension (vps_extension(),
ISO/IEC 23008-2 Annex F.7.3.2.1.1) used by MV-HEVC and SHVC, exposed as an
optional hevc.VPS.Extension (*VPSExtension) with scalability mask,
per-layer dimension/dependency info, layer profile-tier-levels, output layer
sets and rep_format() resolutions, plus VPS.GetNumLayers, IsMultiLayer, GetNumViews and ScalabilityMaskBits helpers
L-HEVC (lhvC) decoder configuration record support in the hevc package: DecConfRec.DecodeLHEVCDecConfRec, EncodeLHEVC, EncodeLHEVCSW and LHEVCSize (ISO/IEC 14496-15 Ed. 7 Sec. 9.4.3)
OinfSampleGroupEntry for the Operating Points Information sample group
(oinf, ISO/IEC 14496-15 Ed. 7 Sec. 9.6.2) and LinfSampleGroupEntry for
the Layer Information sample group (linf, Sec. 4.15), used by layered HEVC
(MV-HEVC/SHVC)
BuildOinfFromVPS and BuildLinfFromVPS to derive the oinf and linf
sample group entries for a layered HEVC track from a parsed multilayer hevc.VPS
LbliSampleGroupEntry for the L-HEVC external base layer sample group
(lbli, LhvcExternalBaseLayerInfo, ISO/IEC 14496-15 Ed. 7 Sec. 9.6.1),
used by L-HEVC tracks that predict from an external base layer in a
separate track
SampleAccessor.ReadMdatData for bulk reading of the raw mdat payload of a
fragment in a single read, intended for streaming with lazy mdat decoding
HDR metadata boxes ClliBox (Content Light Level, clli, ISO/IEC 14496-12
Sec. 12.1.6) and MdcvBox (Mastering Display Colour Volume, mdcv, ISO/IEC
14496-12 Sec. 12.1.7), including VisualSampleEntryBox.Clli and .Mdcv
child references
Support for Dolby Vision HEVC sample entries dvh1 and dvhe: box decoding, StsdBox.HvcX mapping, TrakBox.SetHEVCDescriptor (dvh1 like hvc1, dvhe like
hev1), and CENC/CBCS encryption via InitProtect/ExtractInitProtectData
DoViConfigurationBox for the Dolby Vision Configuration Box (dvcC for
dv_profile <= 7, dvvC for 8-9, dvwC for >= 10), carrying the
DOVIDecoderConfigurationRecord, with a VisualSampleEntryBox.DoViConfig
child reference
Parsing and writing of the recovery point SEI message (type 6) for both AVC
(RecoveryPointAvcSEI, ISO/IEC 14496-10 D.1.8) and HEVC (RecoveryPointHevcSEI,
ISO/IEC 23008-2 D.2.8)
Exponential Golomb support on the bit-level types used by the sei package: ReadExpGolomb/ReadSignedGolomb on bits.Reader and WriteExpGolomb/WriteSignedGolomb on bits.FixedSliceWriter
Changed
Minimum Go version bumped from 1.17 to 1.19. Fuzz tests require native
fuzzing (testing.F, Go 1.18), and Go 1.19 fixes fuzz-corpus CRLF handling
so the seed corpus loads on Windows CI
cenc encryption with an 8-byte input IV is now CMAF-conformant
(ISO/IEC 23000-19 Sec. 8.2.3.1): InitProtect sets tenc.DefaultPerSampleIVSize to 8, EncryptFragment writes 8-byte
per-sample IVs to senc and increments the IV by one per sample
(ISO/IEC 23001-7 Sec. 9.2), and the returned chaining IV is 8 bytes.
A 16-byte input IV keeps the previous 16-byte behavior
EncryptFragment omits the senc, saiz, and saio boxes when a
fragment has no sample auxiliary information (full-sample encryption
with a constant IV, e.g. cbcs audio), as CMAF Sec. 8.2.2.1 recommends
SaizBox.AddSampleInfo now returns an error (sample-info sizes above
255 do not fit the 8-bit sample_info_size) instead of panicking on
inconsistent sizes, collapses uniform sizes into default_sample_info_size, and switches to per-sample sizes when a
differing size arrives
Fixed
DecryptFragment no longer fails on fragments without a senc box
when the track uses full-sample encryption with a constant IV
SencBox keeps its subsample entries aligned with the sample index, so
a fragment mixing samples with and without subsamples encodes a zero
subsample count instead of panicking, and saiz sizes match the senc layout
GetAVCProtectRanges and GetHEVCProtectRanges return an all-clear
subsample entry for a degenerate sample instead of an empty list