Skip to content

@svta/cml-iso-bmff changelog ​

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased ​

Changed ​

  • isIsoBoxType accepts unknown as the box argument instead of any. The guard now also returns false for null and for values that are not objects.
  • writeIsoBox and writeIsoBoxes now return Uint8Array<ArrayBuffer>. The result passes to SourceBuffer.appendBuffer without a cast under TypeScript 6 and later. A box given as a view over a SharedArrayBuffer is copied, so the result is always backed by an ArrayBuffer. The type declarations now need TypeScript 5.7 or later.
  • The README now has a When to use section. The section names the tasks that the package covers and the entry point of each task.
  • The utilities guide examples now store the results of isContainer and isFullBox in container and fullBox. The examples no longer redeclare the imported names.
  • Every code example in the guides now typechecks. The writing examples pass each Uint8Array to appendBuffer directly, and the traverseIsoBoxes example reads the boxes first (#565).

1.0.7 - 2026-10-18 ​

Changed ​

  • Type parameter names in dist/index.d.ts now match the source, for example T instead of T$1.
  • README and the Reading Boxes, Writing Boxes, and Utilities guides: the prose is rewritten for readers who do not read English as a first language. The code examples are unchanged.
  • Peer dependency ranges are now caret ranges, for example ^1.6.2 instead of 1.6.2. A later patch or minor release of a peer no longer requires a new release of this package.

1.0.6 - 2026-09-15 ​

Changed ​

  • Update @svta/cml-utils to 1.6.1

1.0.5 - 2026-08-11 ​

Fixed ​

  • writeTerminatedString now writes the null terminator for empty strings, so writeEmsg output with an empty value or schemeIdUri no longer misaligns the fields that follow (version 1 messageData lost its head to the value read; version 0 numeric fields were garbled) (#411)

1.0.4 - 2026-07-28 ​

Changed ​

  • Update @svta/cml-utils to 1.6.0

1.0.3 - 2026-07-21 ​

Fixed ​

  • IsoBoxReadableStream no longer reads the bare ReadableStream global at module scope: importing the package never throws on runtimes without the Web Streams API. Instantiating IsoBoxReadableStream on such runtimes throws a descriptive error instead (#382)

1.0.2 - 2026-05-13 ​

Changed ​

  • Update @svta/cml-utils to 1.5.0

1.0.1 - 2026-02-11 ​

Fixed ​

  • Loosen typed array generic parameters across public API types and utilities

Changed ​

  • Update @svta/cml-utils to 1.4.0

1.0.0 - 2026-02-09 ​

Official stable release. No changes since 1.0.0-beta.2.

1.0.0-beta.2 - 2026-02-03 ​

Changed ​

  • Update @svta/cml-utils to 1.2.0

1.0.0-beta.1 - 2026-01-29 ​

Added ​

  • Added writers: stsc, stsz, stco.
  • Added defaultReaderConfig and defaultWriterConfig functions to create default reader and writer configurations (#298)

Changed ​

  • Made IsoBoxWriteViewConfig required in writeIsoBoxes function (#298)

1.0.0-alpha.9 - 2026-01-16 ​

Added ​

  • Added fourCcToUint32 utility function to convert FourCC strings to Uint32

1.0.0-alpha.8 - 2026-01-16 ​

Added ​

  • Added favicon.ico to documentation
  • Added isIsoBoxType type guard function

Changed ​

  • Allow type guards to be used with findIsoBox and filterIsoBoxes
  • Improved base SampleEntryBox type
  • Updated box reader functions to allow a type parameter to be passed in

1.0.0-alpha.7 - 2026-01-12 ​

Fix ​

  • Bad publish

1.0.0-alpha.6 - 2026-01-09 ​

Added ​

  • Added IsoBoxFields constant for all ISO BMFF field types
  • Exports for IsoBoxReadView and IsoBoxWriteView

Changed ​

  • Moved all field constants to IsoBoxFields.ts

Fixed ​

  • Broken type inference for createAudioSampleEntryReader and createVisualSampleEntryReader
  • Broken type inference for writeIsoBoxes

1.0.0-alpha.5 - 2026-01-08 ​

Fixed ​

  • Broken type inference for traverseIsoBoxes, findIsoBox, and filterIsoBoxes

1.0.0-alpha.4 - 2026-01-08 ​

Added ​

  • Added ability to use generic reader functions with readIsoBoxes
  • Added createAudioSampleEntryReader and createVisualSampleEntryReader utility functions for custom audio and visual sample entry box types
  • Added findIsoBox utility function to find the first box matching a predicate
  • Added filterIsoBoxes utility function to filter boxes matching a predicate
  • Added TraverseIsoBoxesConfig type for configuring box traversal options

Changed ​

  • Improved type inference for reader return types
  • Changed traverseIsoBoxes to accept a config object instead of positional arguments for depthFirst and maxDepth
  • Expanded AudioSampleEntryBox and VisualSampleEntryBox type parameters to accept any IsoBoxType

1.0.0-alpha.3 - 2025-01-07 ​

Changed ​

  • Improved reading and writing of A/V sample entry boxes

Fixed ​

  • Incorrect FourCC for Additional Metadata Container Box (meco) box

1.0.0-alpha.2 - 2025-01-05 ​

Added ​

  • Add stsd and dref box writers
  • Add CONTAINERS export for the list of box types that are containers

Changed ​

  • Updated README
  • IsoBoxWriter signature now includes a required config parameter: (box: B, config: Required<IsoBoxWriteViewConfig>) => ArrayBufferView
  • writeArray method now requires a length parameter to specify the number of values to write
  • Renamed IsoBoxReadableStreamConfig to IsoBoxWriteViewConfig
  • Removed writeVisualSampleEntryBox export (use specific visual sample entry writers like writeAvc1, writeAvc3, etc. instead)

1.0.0-alpha.1 - 2025-12-27 ​

Added ​

  • Implement ISO Box writing (#269)

0.23.2 - 2025-12-26 ​

Changed ​

  • Update @svta/cml-utils to 1.1.0 (#279)

0.23.1 - 2025-12-22 ​

Fixed ​

  • Use fixed version numbers for all CML peer dependencies (#277)

0.23.0 - 2025-10-24 ​

Changed ​

  • Remove CommonJS exports (#192)
  • Convert to mono-repo (#238)
  • Produce single bundled export for each package (#260)

A Streaming Video Technology Alliance project.