Skip to content

Commit 56c07f3

Browse files
authored
Fix: Silence skipper initializing videos at 2x speed (#491)
1 parent d4df990 commit 56c07f3

3 files changed

Lines changed: 17 additions & 3 deletions

File tree

chrome/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,4 +114,4 @@
114114
"extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"
115115
},
116116
"minimum_chrome_version": "114"
117-
}
117+
}

chrome/player/ui/InterfaceController.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ export class InterfaceController {
213213
DOMElements.playerContainer.classList.add('controls_visible');
214214
this.updateToolVisibility();
215215
this.fineTimeControls.reset();
216+
this.playbackRateChanger.reset();
216217
}
217218

218219
failedToLoad(reason) {

chrome/player/ui/menus/PlaybackRateChanger.mjs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,14 +174,17 @@ export class PlaybackRateChanger extends EventEmitter {
174174
const outputRate = this.client.audioAnalyzer.getOutputRate();
175175
const minIndex = Math.floor((time - this.audioPaddingEnd) * outputRate);
176176
const maxIndex = Math.floor((time + this.audioPaddingStart) * outputRate);
177+
178+
let hasData = false;
177179
for (let i = minIndex; i < maxIndex; i++) {
178180
if (volumeBuffer[i] === undefined) continue;
181+
hasData = true;
179182
const volume = Utils.clamp((volumeBuffer[i] - minDB) / dbRange, 0, 1);
180183
if (volume >= this.silenceThreshold) {
181184
return false;
182185
}
183186
}
184-
return true;
187+
return hasData; // Don't skip silence if we have no audio data yet
185188
}
186189

187190
enableSilenceSkipper() {
@@ -262,7 +265,17 @@ export class PlaybackRateChanger extends EventEmitter {
262265
this.stayOpen = false;
263266
return true;
264267
}
265-
268+
269+
reset() {
270+
// Reset silence skipper state when a new video loads
271+
if (this.silenceSkipperActive) {
272+
this.disableSilenceSkipper();
273+
}
274+
this.silenceSkipperLoopRunning = false;
275+
this.regularSpeed = 1;
276+
this.silenceSkipSpeed = this.maxPlaybackRate;
277+
}
278+
266279
isOpen() {
267280
return DOMElements.playbackRateMenuContainer.style.display !== 'none';
268281
}

0 commit comments

Comments
 (0)