Skip to content

Commit

Permalink
Merge branch 'master' into pr/3859
Browse files Browse the repository at this point in the history
* master: (23 commits)
  [skip netlify] Update dependency netlify-cli to v3.29.16
  [skip netlify] Lock file maintenance
  [skip netlify] Lock file maintenance
  Remux overlapping AAC samples so that they are appended over earlier samples segment rather than dropping them
  [skip netlify] Update dependency eslint-plugin-import to v2.23.2
  [skip netlify] Update dependency eslint-plugin-import to v2.23.1
  [skip netlify] Update dependency netlify-cli to v3.29.15
  Drop audio frames with overlapping PTS in streams with video and alt audio tracks
  [skip netlify] Update dependency eslint-plugin-import to v2.23.0
  [skip netlify] Update dependency netlify-cli to v3.29.14
  [skip netlify] Update dependency netlify-cli to v3.29.13
  [skip netlify] Update dependency netlify-cli to v3.29.11
  [skip netlify] Update dependency netlify-cli to v3.29.10
  [skip netlify] Update dependency netlify-cli to v3.29.9
  [skip netlify] Update dependency netlify-cli to v3.29.8
  [skip netlify] Update dependency netlify-cli to v3.29.7
  [skip netlify] Update babel monorepo to v7.14.2
  Require redundant levels to have matching RESOLUTION and CODECS attributes Resolves #3888
  [skip netlify] Update dependency netlify-cli to v3.29.6
  [skip netlify] Update dependency netlify-cli to v3.29.5
  ...
  • Loading branch information
Rob Walch committed May 17, 2021
2 parents 18973bc + aa9bac1 commit 9bde1d4
Show file tree
Hide file tree
Showing 14 changed files with 2,672 additions and 2,099 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/automerge.yml
Expand Up @@ -3,6 +3,10 @@ name: Auto Merge Dependency Updates
on:
- pull_request_target

permissions:
contents: read
pull-requests: write

jobs:
run:
runs-on: ubuntu-latest
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/build.yml
Expand Up @@ -6,6 +6,8 @@ on:
tags: ['v*']
pull_request:

permissions: {}

jobs:
config:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -205,6 +207,8 @@ jobs:
needs: [config, test_unit]
if: needs.config.outputs.tag
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v2

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/cancel.yml
Expand Up @@ -4,6 +4,8 @@ on:
workflows: ['automerge', 'build', 'codeql-analysis']
types:
- requested
permissions:
actions: write
jobs:
cancel:
runs-on: ubuntu-latest
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/codeql-analysis.yml
Expand Up @@ -8,6 +8,10 @@ on:
schedule:
- cron: '0 3 * * 1'

permissions:
actions: read
security-events: write

jobs:
analyze:
name: Analyze
Expand Down
2 changes: 1 addition & 1 deletion demo/chart/timeline-chart.ts
Expand Up @@ -107,7 +107,7 @@ export class TimelineChart {
if (pos.x > chartArea.left - 11) {
const scale = this.chartScales[X_AXIS_SECONDS];
if (event.deltaY) {
const direction = event.deltaY / Math.abs(event.deltaY);
const direction = -event.deltaY / Math.abs(event.deltaY);
const normal = Math.min(333, Math.abs(event.deltaY)) / 1000;
const ease = 1 - (1 - normal) * (1 - normal);
this.zoom(scale, pos, ease * direction);
Expand Down
4,380 changes: 2,468 additions & 1,912 deletions package-lock.json

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions package.json
Expand Up @@ -50,13 +50,13 @@
"prepare": "husky install"
},
"devDependencies": {
"@babel/core": "7.14.0",
"@babel/core": "7.14.2",
"@babel/helper-module-imports": "7.13.12",
"@babel/plugin-proposal-class-properties": "7.13.0",
"@babel/plugin-proposal-object-rest-spread": "7.13.8",
"@babel/plugin-proposal-optional-chaining": "7.13.12",
"@babel/plugin-proposal-object-rest-spread": "7.14.2",
"@babel/plugin-proposal-optional-chaining": "7.14.2",
"@babel/plugin-transform-object-assign": "7.12.13",
"@babel/preset-env": "7.14.1",
"@babel/preset-env": "7.14.2",
"@babel/preset-typescript": "7.13.0",
"@babel/register": "7.13.16",
"@itsjamie/esdoc-cli": "0.3.1",
Expand All @@ -78,7 +78,7 @@
"chromedriver": "90.0.0",
"eslint": "7.26.0",
"eslint-config-prettier": "8.3.0",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-import": "2.23.2",
"eslint-plugin-mocha": "8.1.0",
"eslint-plugin-node": "11.1.0",
"eslint-plugin-promise": "5.1.0",
Expand All @@ -98,7 +98,7 @@
"lint-staged": "11.0.0",
"micromatch": "4.0.4",
"mocha": "8.4.0",
"netlify-cli": "3.29.2",
"netlify-cli": "3.29.16",
"prettier": "2.3.0",
"promise-polyfill": "8.2.0",
"sauce-connect-launcher": "1.3.2",
Expand Down
7 changes: 4 additions & 3 deletions src/controller/level-controller.ts
Expand Up @@ -84,7 +84,7 @@ export default class LevelController extends BasePlaylistController {
let audioTracks: MediaPlaylist[] = [];
let subtitleTracks: MediaPlaylist[] = [];
let bitrateStart: number | undefined;
const levelSet: { [bitrate: number]: Level } = {};
const levelSet: { [key: string]: Level } = {};
let levelFromSet: Level;
let resolutionFound = false;
let videoCodecFound = false;
Expand All @@ -109,11 +109,12 @@ export default class LevelController extends BasePlaylistController {
levelParsed.audioCodec = undefined;
}

levelFromSet = levelSet[levelParsed.bitrate]; // FIXME: we would also have to match the resolution here
const levelKey = `${levelParsed.bitrate}-${levelParsed.attrs.RESOLUTION}-${levelParsed.attrs.CODECS}`;
levelFromSet = levelSet[levelKey];

if (!levelFromSet) {
levelFromSet = new Level(levelParsed);
levelSet[levelParsed.bitrate] = levelFromSet;
levelSet[levelKey] = levelFromSet;
levels.push(levelFromSet);
} else {
levelFromSet.url.push(levelParsed.url);
Expand Down
9 changes: 6 additions & 3 deletions src/demux/transmuxer-interface.ts
Expand Up @@ -14,6 +14,7 @@ import type { ChunkMetadata, TransmuxerResult } from '../types/transmuxer';
import type Hls from '../hls';
import type { HlsEventEmitter } from '../events';
import type { PlaylistLevelType } from '../types/loader';
import type { TypeSupported } from './tsdemuxer';

const MediaSource = getMediaSource() || { isTypeSupported: () => false };

Expand Down Expand Up @@ -54,7 +55,7 @@ export default class TransmuxerInterface {
this.observer.on(Events.FRAG_DECRYPTED, forwardMessage);
this.observer.on(Events.ERROR, forwardMessage);

const typeSupported = {
const typeSupported: TypeSupported = {
mp4: MediaSource.isTypeSupported('video/mp4'),
mpeg: MediaSource.isTypeSupported('audio/mpeg'),
mp3: MediaSource.isTypeSupported('audio/mp4; codecs="mp3"'),
Expand Down Expand Up @@ -102,7 +103,8 @@ export default class TransmuxerInterface {
this.observer,
typeSupported,
config,
vendor
vendor,
id
);
this.worker = null;
}
Expand All @@ -111,7 +113,8 @@ export default class TransmuxerInterface {
this.observer,
typeSupported,
config,
vendor
vendor,
id
);
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/demux/transmuxer-worker.ts
Expand Up @@ -24,7 +24,8 @@ export default function TransmuxerWorker(self) {
observer,
data.typeSupported,
config,
data.vendor
data.vendor,
data.id
);
enableLogs(config.debug);
forwardMessage('init', null);
Expand Down
32 changes: 19 additions & 13 deletions src/demux/transmuxer.ts
Expand Up @@ -4,19 +4,19 @@ import { ErrorTypes, ErrorDetails } from '../errors';
import Decrypter from '../crypt/decrypter';
import AACDemuxer from '../demux/aacdemuxer';
import MP4Demuxer from '../demux/mp4demuxer';
import TSDemuxer from '../demux/tsdemuxer';
import TSDemuxer, { TypeSupported } from '../demux/tsdemuxer';
import MP3Demuxer from '../demux/mp3demuxer';
import MP4Remuxer from '../remux/mp4-remuxer';
import PassThroughRemuxer from '../remux/passthrough-remuxer';
import type { Demuxer, KeyData } from '../types/demuxer';
import type { Remuxer } from '../types/remuxer';
import type { TransmuxerResult, ChunkMetadata } from '../types/transmuxer';
import ChunkCache from './chunk-cache';
import { appendUint8Array } from '../utils/mp4-tools';

import { logger } from '../utils/logger';
import type { Demuxer, KeyData } from '../types/demuxer';
import type { Remuxer } from '../types/remuxer';
import type { TransmuxerResult, ChunkMetadata } from '../types/transmuxer';
import type { HlsConfig } from '../config';
import { LevelKey } from '../loader/level-key';
import type { LevelKey } from '../loader/level-key';
import type { PlaylistLevelType } from '../types/loader';

let now;
// performance.now() not available on WebWorker, at least on Safari Desktop
Expand Down Expand Up @@ -47,9 +47,10 @@ muxConfig.forEach(({ demux }) => {

export default class Transmuxer {
private observer: HlsEventEmitter;
private typeSupported: any;
private typeSupported: TypeSupported;
private config: HlsConfig;
private vendor: any;
private vendor: string;
private id: PlaylistLevelType;
private demuxer?: Demuxer;
private remuxer?: Remuxer;
private decrypter?: Decrypter;
Expand All @@ -61,14 +62,16 @@ export default class Transmuxer {

constructor(
observer: HlsEventEmitter,
typeSupported,
typeSupported: TypeSupported,
config: HlsConfig,
vendor
vendor: string,
id: PlaylistLevelType
) {
this.observer = observer;
this.typeSupported = typeSupported;
this.config = config;
this.vendor = vendor;
this.id = id;
}

configure(transmuxConfig: TransmuxConfig) {
Expand Down Expand Up @@ -258,7 +261,8 @@ export default class Transmuxer {
textTrack,
timeOffset,
accurateTimeOffset,
true
true,
this.id
);
transmuxResults.push({
remuxResult,
Expand Down Expand Up @@ -354,7 +358,8 @@ export default class Transmuxer {
textTrack,
timeOffset,
accurateTimeOffset,
false
false,
this.id
);
return {
remuxResult,
Expand All @@ -379,7 +384,8 @@ export default class Transmuxer {
demuxResult.textTrack,
timeOffset,
accurateTimeOffset,
false
false,
this.id
);
return {
remuxResult,
Expand Down

0 comments on commit 9bde1d4

Please sign in to comment.