diff --git a/entries/all-boxes.ts b/entries/all-boxes.ts index 6250bfa5..273d7d14 100644 --- a/entries/all-boxes.ts +++ b/entries/all-boxes.ts @@ -27,6 +27,7 @@ export * from '#/boxes/dfLa'; export * from '#/boxes/dimm'; export * from '#/boxes/dmax'; export * from '#/boxes/dmed'; +export * from '#/boxes/dmlp'; export * from '#/boxes/dOps'; export * from '#/boxes/dref'; export * from '#/boxes/drep'; diff --git a/src/boxes/dmlp.ts b/src/boxes/dmlp.ts new file mode 100644 index 00000000..678bba58 --- /dev/null +++ b/src/boxes/dmlp.ts @@ -0,0 +1,26 @@ +import { Box } from '#/box'; +import { Log } from '#/log'; +import type { MultiBufferStream } from '#/buffer'; + +export class dmlpBox extends Box { + static override readonly fourcc = 'dmlp' as const; + box_name = 'MLPSpecificBox' as const; + + format_info: number; + peak_data_rate: number; + + parse(stream: MultiBufferStream) { + this.format_info = stream.readUint16(); + const tmp_16 = stream.readUint16(); + this.peak_data_rate = tmp_16 >> 1; + let reserved = tmp_16 & 0x1; + if (reserved !== 0) { + Log.error('BoxParser', 'dmlp reserved parsing problem', stream.isofile); + return; + } + reserved = stream.readUint32(); + if (reserved !== 0) { + Log.error('BoxParser', 'dmlp reserved parsing problem', stream.isofile); + } + } +} diff --git a/src/boxes/sampleentries/sampleentry.ts b/src/boxes/sampleentries/sampleentry.ts index aea9391e..b0dd95b9 100644 --- a/src/boxes/sampleentries/sampleentry.ts +++ b/src/boxes/sampleentries/sampleentry.ts @@ -416,6 +416,11 @@ export class ec_3SampleEntry extends AudioSampleEntry { static override readonly fourcc = 'ec-3' as const; } +export class mlpaSampleEntry extends AudioSampleEntry { + static override readonly fourcc = 'mlpa' as const; + box_name = 'MLPSampleEntry' as const; +} + export class OpusSampleEntry extends AudioSampleEntry { static override readonly fourcc = 'Opus' as const; }