diff --git a/src/modules/player/webgl2/webgl2-player.ts b/src/modules/player/webgl2/webgl2-player.ts index 773d05f0..f48c6f86 100755 --- a/src/modules/player/webgl2/webgl2-player.ts +++ b/src/modules/player/webgl2/webgl2-player.ts @@ -2,6 +2,7 @@ import { compressCodeFile } from "@macros/build" with { type: "macro" }; import { StreamPref } from "@/enums/pref-keys"; import { getStreamPref } from "@/utils/pref-utils"; +import { BX_FLAGS } from "@/utils/bx-flags"; import { BaseCanvasPlayer } from "../base-canvas-player"; import { StreamPlayerType, StreamVideoProcessingMode } from "@/enums/pref-values"; @@ -50,7 +51,12 @@ export class WebGL2Player extends BaseCanvasPlayer { } as WebGLContextAttributes) as WebGL2RenderingContext; this.gl = gl; - gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferWidth); + gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); + + // Skip the browser color management on video uploads. Slight color shift possible. + if (BX_FLAGS.WebGL2NoColorConversion) { + gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, gl.NONE); + } // Vertex shader: Identity map const vShader = gl.createShader(gl.VERTEX_SHADER)!; diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 1e2cbd78..5a96ea30 100755 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -180,6 +180,7 @@ type BxFlags = { SafariWorkaround: boolean; EnableWebGPURenderer: boolean; + WebGL2NoColorConversion: boolean; ForceNativeMkbTitles: string[]; FeatureGates: { [key: string]: boolean } | null, diff --git a/src/utils/bx-flags.ts b/src/utils/bx-flags.ts index c4092fed..187b756e 100755 --- a/src/utils/bx-flags.ts +++ b/src/utils/bx-flags.ts @@ -9,6 +9,7 @@ const DEFAULT_FLAGS: BxFlags = { SafariWorkaround: true, EnableWebGPURenderer: false, + WebGL2NoColorConversion: false, ForceNativeMkbTitles: [], FeatureGates: null,