mirror of
https://github.com/arcodange-org/mediabunny.git
synced 2026-09-27 19:03:46 +02:00
95 lines
2.2 KiB
TypeScript
95 lines
2.2 KiB
TypeScript
import { expect, test } from 'vitest';
|
|
import { Output } from '../../src/output.js';
|
|
import { MkvOutputFormat } from '../../src/output-format.js';
|
|
import { BufferTarget } from '../../src/target.js';
|
|
import { EncodedVideoPacketSource } from '../../src/media-source.js';
|
|
import { EncodedPacket } from '../../src/packet.js';
|
|
import { Input } from '../../src/input.js';
|
|
import { BufferSource } from '../../src/source.js';
|
|
import { ALL_FORMATS } from '../../src/input-format.js';
|
|
|
|
test('Default track disposition', async () => {
|
|
const output = new Output({
|
|
format: new MkvOutputFormat(),
|
|
target: new BufferTarget(),
|
|
});
|
|
|
|
const source = new EncodedVideoPacketSource('avc');
|
|
output.addVideoTrack(source);
|
|
|
|
await output.start();
|
|
await source.add(new EncodedPacket(new Uint8Array(1024), 'key', 0, 1), {
|
|
decoderConfig: {
|
|
codec: 'avc1.123456',
|
|
codedWidth: 1920,
|
|
codedHeight: 1080,
|
|
},
|
|
});
|
|
|
|
await output.finalize();
|
|
|
|
using input = new Input({
|
|
source: new BufferSource(output.target.buffer!),
|
|
formats: ALL_FORMATS,
|
|
});
|
|
|
|
const track = (await input.getPrimaryVideoTrack())!;
|
|
|
|
expect(await track.getDisposition()).toEqual({
|
|
default: true,
|
|
forced: false,
|
|
original: false,
|
|
hearingImpaired: false,
|
|
visuallyImpaired: false,
|
|
primary: false,
|
|
commentary: false,
|
|
});
|
|
});
|
|
|
|
test('Customized track disposition', async () => {
|
|
const output = new Output({
|
|
format: new MkvOutputFormat(),
|
|
target: new BufferTarget(),
|
|
});
|
|
|
|
const source = new EncodedVideoPacketSource('avc');
|
|
output.addVideoTrack(source, {
|
|
disposition: {
|
|
default: false,
|
|
forced: true,
|
|
original: true,
|
|
hearingImpaired: true,
|
|
visuallyImpaired: true,
|
|
commentary: true,
|
|
},
|
|
});
|
|
|
|
await output.start();
|
|
await source.add(new EncodedPacket(new Uint8Array(1024), 'key', 0, 1), {
|
|
decoderConfig: {
|
|
codec: 'avc1.123456',
|
|
codedWidth: 1920,
|
|
codedHeight: 1080,
|
|
},
|
|
});
|
|
|
|
await output.finalize();
|
|
|
|
using input = new Input({
|
|
source: new BufferSource(output.target.buffer!),
|
|
formats: ALL_FORMATS,
|
|
});
|
|
|
|
const track = (await input.getPrimaryVideoTrack())!;
|
|
|
|
expect(await track.getDisposition()).toEqual({
|
|
default: false,
|
|
forced: true,
|
|
original: true,
|
|
hearingImpaired: true,
|
|
visuallyImpaired: true,
|
|
primary: false,
|
|
commentary: true,
|
|
});
|
|
});
|