mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 13:05:32 +09:00
47 lines
1.9 KiB
TypeScript
47 lines
1.9 KiB
TypeScript
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
import type {MediaDescription} from 'sdp-transform';
|
|
import {describe, expect, it} from 'vitest';
|
|
import {appendStartBitrateToFmtp} from './PCTransport.ts';
|
|
|
|
function mediaWithFmtp(entries: Array<{payload: number; config: string}>): MediaDescription {
|
|
return {fmtp: entries} as unknown as MediaDescription;
|
|
}
|
|
|
|
describe('appendStartBitrateToFmtp', () => {
|
|
it('appends the start bitrate to a non-SVC codec fmtp line', () => {
|
|
const media = mediaWithFmtp([
|
|
{payload: 96, config: 'level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f'},
|
|
]);
|
|
appendStartBitrateToFmtp(media, 96, 2100);
|
|
expect(media.fmtp[0]?.config).toBe(
|
|
'level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f;x-google-start-bitrate=2100',
|
|
);
|
|
});
|
|
|
|
it('only touches the fmtp line for the matching payload', () => {
|
|
const media = mediaWithFmtp([
|
|
{payload: 96, config: 'profile-level-id=42e01f'},
|
|
{payload: 98, config: 'profile-id=0'},
|
|
]);
|
|
appendStartBitrateToFmtp(media, 98, 1400);
|
|
expect(media.fmtp[0]?.config).toBe('profile-level-id=42e01f');
|
|
expect(media.fmtp[1]?.config).toBe('profile-id=0;x-google-start-bitrate=1400');
|
|
});
|
|
|
|
it('never appends a second start bitrate', () => {
|
|
const media = mediaWithFmtp([{payload: 96, config: 'profile-level-id=42e01f;x-google-start-bitrate=900'}]);
|
|
appendStartBitrateToFmtp(media, 96, 2100);
|
|
expect(media.fmtp[0]?.config).toBe('profile-level-id=42e01f;x-google-start-bitrate=900');
|
|
});
|
|
|
|
it('does nothing without a usable bitrate or a matching payload', () => {
|
|
const media = mediaWithFmtp([{payload: 96, config: 'profile-level-id=42e01f'}]);
|
|
appendStartBitrateToFmtp(media, 96, 0);
|
|
appendStartBitrateToFmtp(media, 96, -1);
|
|
appendStartBitrateToFmtp(media, 111, 2100);
|
|
expect(media.fmtp[0]?.config).toBe('profile-level-id=42e01f');
|
|
});
|
|
});
|