diff --git a/src/_locales b/src/_locales index 5065e91..3620c8b 160000 --- a/src/_locales +++ b/src/_locales @@ -1 +1 @@ -Subproject commit 5065e9151502339dee4440b25829be1367ca7175 +Subproject commit 3620c8b87379749883c5d8ebbdef2444fc09d8b8 diff --git a/src/entry-points/content/ElementPlaybackControllerCloning/ElementPlaybackControllerCloning.ts b/src/entry-points/content/ElementPlaybackControllerCloning/ElementPlaybackControllerCloning.ts index 52779d2..509fe56 100644 --- a/src/entry-points/content/ElementPlaybackControllerCloning/ElementPlaybackControllerCloning.ts +++ b/src/entry-points/content/ElementPlaybackControllerCloning/ElementPlaybackControllerCloning.ts @@ -1,6 +1,6 @@ /** * @license - * Copyright (C) 2021, 2022 WofWca + * Copyright (C) 2021, 2022, 2023 WofWca * * This file is part of Jump Cutter Browser Extension. * @@ -188,6 +188,13 @@ export default class Controller { _didNotDoDesyncCorrectionForNSpeedSwitches = 0; + // TODO refactor: make this a constructor parameter for this Controller. + private readonly getMediaSourceCloneElement: ConstructorParameters[2] = + (originalElement) => import( + /* webpackExports: ['getMediaSourceCloneElement']*/ + '@/entry-points/content/cloneMediaSources/getMediaSourceCloneElement' + ).then(({ getMediaSourceCloneElement }) => getMediaSourceCloneElement(originalElement)); + constructor( element: HTMLMediaElement, controllerSettings: ControllerSettings, @@ -196,7 +203,11 @@ export default class Controller { this.element = element; this.settings = controllerSettings; - const lookahead = this.lookahead = new Lookahead(element, this.settings); + const lookahead = this.lookahead = new Lookahead( + element, + this.settings, + this.getMediaSourceCloneElement + ); // Destruction is performed in `this.destroy` directly. lookahead.ensureInit(); @@ -677,7 +688,11 @@ export default class Controller { } private _initLookahead() { - const lookahead = this.lookahead = new Lookahead(this.element, this.settings); + const lookahead = this.lookahead = new Lookahead( + this.element, + this.settings, + this.getMediaSourceCloneElement + ); // Destruction is performed in `this.destroy` directly. lookahead.ensureInit(); } diff --git a/src/entry-points/content/ElementPlaybackControllerCloning/Lookahead.ts b/src/entry-points/content/ElementPlaybackControllerCloning/Lookahead.ts index 7173810..151718c 100644 --- a/src/entry-points/content/ElementPlaybackControllerCloning/Lookahead.ts +++ b/src/entry-points/content/ElementPlaybackControllerCloning/Lookahead.ts @@ -1,6 +1,6 @@ /** * @license - * Copyright (C) 2021, 2022 WofWca + * Copyright (C) 2021, 2022, 2023 WofWca * * This file is part of Jump Cutter Browser Extension. * @@ -28,6 +28,10 @@ import SilenceDetectorNode, { SilenceDetectorEventType, SilenceDetectorMessage } from '@/entry-points/content/SilenceDetector/SilenceDetectorNode'; import VolumeFilterNode from '@/entry-points/content/VolumeFilter/VolumeFilterNode'; import lookaheadVolumeFilterSmoothing from './lookaheadVolumeFilterSmoothing.json' +import { + getOrCreateMediaElementSourceAndUpdateMap +} from '@/entry-points/content/getOrCreateMediaElementSourceAndUpdateMap'; +import { getFinalCloneElement } from './getFinalCloneElement'; // A more semantically correct version would be `Array<[start: MediaTime, end: MediaTime]>`, // but I think this is a bit faster. @@ -59,10 +63,12 @@ type LookaheadSettings = Pick for performance - so the browser doesn't have to decode video frames. + // Always