mirror of
https://github.com/shaka-project/shaka-player.git
synced 2026-06-17 16:26:39 +03:00
dd5b2dab21
Add DTS (dts), DTS-HD (dtsh), DTS Digital Surround (dtsc), DTS Express (dtse), and DTS:X (dtsx) to AUDIO_CODEC_REGEXPS using a single merged regex /^dts[cehx]?$/. Include regression tests for all new codec variants.
124 lines
3.9 KiB
JavaScript
124 lines
3.9 KiB
JavaScript
/*! @license
|
|
* Shaka Player
|
|
* Copyright 2016 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
describe('ManifestParserUtils', () => {
|
|
const ManifestParserUtils = shaka.util.ManifestParserUtils;
|
|
|
|
describe('guessCodecsSafe', () => {
|
|
it('recognizes MPEG-2 video codec (mp2v)', () => {
|
|
const result = ManifestParserUtils.guessCodecsSafe(
|
|
'video', ['mp2v']);
|
|
expect(result).toBe('mp2v');
|
|
});
|
|
|
|
it('returns mp2v from mixed codec list', () => {
|
|
const result = ManifestParserUtils.guessCodecsSafe(
|
|
'video', ['mp4a.40.2', 'mp2v']);
|
|
expect(result).toBe('mp2v');
|
|
});
|
|
|
|
it('does not match mp2v as audio', () => {
|
|
const result = ManifestParserUtils.guessCodecsSafe(
|
|
'audio', ['mp2v']);
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
it('recognizes DTS audio codec', () => {
|
|
const result = ManifestParserUtils.guessCodecsSafe(
|
|
'audio', ['dts']);
|
|
expect(result).toBe('dts');
|
|
});
|
|
|
|
it('recognizes DTS-HD (dtsh) audio codec', () => {
|
|
const result = ManifestParserUtils.guessCodecsSafe(
|
|
'audio', ['dtsh']);
|
|
expect(result).toBe('dtsh');
|
|
});
|
|
|
|
it('recognizes DTS Digital Surround (dtsc)', () => {
|
|
const result = ManifestParserUtils.guessCodecsSafe(
|
|
'audio', ['dtsc']);
|
|
expect(result).toBe('dtsc');
|
|
});
|
|
|
|
it('recognizes DTS Express (dtse)', () => {
|
|
const result = ManifestParserUtils.guessCodecsSafe(
|
|
'audio', ['dtse']);
|
|
expect(result).toBe('dtse');
|
|
});
|
|
|
|
it('recognizes DTS:X (dtsx)', () => {
|
|
const result = ManifestParserUtils.guessCodecsSafe(
|
|
'audio', ['dtsx']);
|
|
expect(result).toBe('dtsx');
|
|
});
|
|
|
|
it('returns DTS variant from mixed codec list', () => {
|
|
const result = ManifestParserUtils.guessCodecsSafe(
|
|
'audio', ['avc1.42E01E', 'dtsh']);
|
|
expect(result).toBe('dtsh');
|
|
});
|
|
|
|
it('does not match DTS codecs as video', () => {
|
|
const result = ManifestParserUtils.guessCodecsSafe(
|
|
'video', ['dts']);
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
it('does not match invalid DTS-like strings', () => {
|
|
const result = ManifestParserUtils.guessCodecsSafe(
|
|
'audio', ['dtsz']);
|
|
expect(result).toBeNull();
|
|
});
|
|
});
|
|
|
|
describe('resolveUris', () => {
|
|
it('resolves relative URIs', () => {
|
|
const base = ['http://example.com/'];
|
|
const relative = ['page.html'];
|
|
const expected = ['http://example.com/page.html'];
|
|
const actual = ManifestParserUtils.resolveUris(base, relative);
|
|
expect(actual).toEqual(expected);
|
|
});
|
|
|
|
it('resolves URIs multiplicatively', () => {
|
|
const base = ['http://example.com/', 'http://example.org'];
|
|
const relative = ['page.html', 'site.css'];
|
|
const expected = [
|
|
'http://example.com/page.html',
|
|
'http://example.com/site.css',
|
|
'http://example.org/page.html',
|
|
'http://example.org/site.css',
|
|
];
|
|
const actual = ManifestParserUtils.resolveUris(base, relative);
|
|
expect(actual).toEqual(expected);
|
|
});
|
|
|
|
it('returns base if no relative URIs', () => {
|
|
const base = ['http://example.com'];
|
|
const relative = [];
|
|
const actual = ManifestParserUtils.resolveUris(base, relative);
|
|
expect(actual).toEqual(base);
|
|
});
|
|
|
|
it('handles manifest file as base URI', () => {
|
|
const base = [
|
|
'http://example.com/manifest.mpd',
|
|
'http://example.org/path/to/manifest.mpd',
|
|
];
|
|
const relative = ['segment.mp4', 'other/location/segment.webm'];
|
|
const expected = [
|
|
'http://example.com/segment.mp4',
|
|
'http://example.com/other/location/segment.webm',
|
|
'http://example.org/path/to/segment.mp4',
|
|
'http://example.org/path/to/other/location/segment.webm',
|
|
];
|
|
const actual = ManifestParserUtils.resolveUris(base, relative);
|
|
expect(actual).toEqual(expected);
|
|
});
|
|
});
|
|
});
|