alpha-video-gpu-web 0.0.0-stage → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/react.mjs ADDED
@@ -0,0 +1,133 @@
1
+ import {
2
+ KTX2PlayerCore,
3
+ ZSTDDecoder
4
+ } from "./chunk-P3MJ6UC3.mjs";
5
+
6
+ // src/react.tsx
7
+ import React, { forwardRef, useImperativeHandle, useRef, useEffect, useMemo } from "react";
8
+ var AlphaVideoGpuPlayer = forwardRef(({
9
+ src,
10
+ cacheKey,
11
+ headers,
12
+ storage,
13
+ maxStorageBytes,
14
+ width = 300,
15
+ height = 300,
16
+ className,
17
+ style,
18
+ autoPlay = true,
19
+ loop = true,
20
+ playbackSpeed = 1,
21
+ paused = false,
22
+ stream = true,
23
+ streamingPrefetchAhead,
24
+ memoryStrategy,
25
+ verbose = false,
26
+ onLoad,
27
+ onStateChange,
28
+ onFrameUpdate,
29
+ onFinished,
30
+ onError
31
+ }, ref) => {
32
+ const canvasRef = useRef(null);
33
+ const coreRef = useRef(null);
34
+ const loadedSrcRef = useRef(null);
35
+ const headersRef = useRef(headers);
36
+ headersRef.current = headers;
37
+ useImperativeHandle(ref, () => ({
38
+ play: () => {
39
+ var _a;
40
+ return (_a = coreRef.current) == null ? void 0 : _a.play();
41
+ },
42
+ pause: () => {
43
+ var _a;
44
+ return (_a = coreRef.current) == null ? void 0 : _a.pause();
45
+ },
46
+ stop: () => {
47
+ var _a;
48
+ return (_a = coreRef.current) == null ? void 0 : _a.stop();
49
+ },
50
+ seekToFrame: (frame) => {
51
+ var _a;
52
+ return (_a = coreRef.current) == null ? void 0 : _a.seekToFrame(frame);
53
+ },
54
+ seekToTime: (seconds) => {
55
+ var _a;
56
+ return (_a = coreRef.current) == null ? void 0 : _a.seekToTime(seconds);
57
+ }
58
+ }), []);
59
+ useEffect(() => {
60
+ const canvas = canvasRef.current;
61
+ if (!canvas || coreRef.current) return;
62
+ coreRef.current = new KTX2PlayerCore(canvas, {
63
+ autoPlay,
64
+ loop,
65
+ playbackSpeed,
66
+ stream,
67
+ streamingPrefetchAhead,
68
+ memoryStrategy,
69
+ verbose,
70
+ storage,
71
+ maxStorageBytes,
72
+ ZSTDDecoderClass: ZSTDDecoder,
73
+ onStateChange,
74
+ onLoad,
75
+ onFrameUpdate,
76
+ onFinished,
77
+ onError
78
+ });
79
+ return () => {
80
+ var _a;
81
+ (_a = coreRef.current) == null ? void 0 : _a.destroy();
82
+ coreRef.current = null;
83
+ loadedSrcRef.current = null;
84
+ };
85
+ }, []);
86
+ useEffect(() => {
87
+ var _a;
88
+ (_a = coreRef.current) == null ? void 0 : _a.updateCallbacks({ onStateChange, onLoad, onFrameUpdate, onFinished, onError });
89
+ }, [onStateChange, onLoad, onFrameUpdate, onFinished, onError]);
90
+ useEffect(() => {
91
+ const core = coreRef.current;
92
+ if (!core || !src) return;
93
+ const identity = typeof src === "string" && cacheKey || src;
94
+ if (loadedSrcRef.current === identity) return;
95
+ loadedSrcRef.current = identity;
96
+ core.setSource(src, { cacheKey, headers: headersRef.current });
97
+ return () => {
98
+ loadedSrcRef.current = null;
99
+ core.resetSource();
100
+ };
101
+ }, [typeof src === "string" && cacheKey || src]);
102
+ useEffect(() => {
103
+ if (coreRef.current) coreRef.current.verbose = verbose;
104
+ }, [verbose]);
105
+ useEffect(() => {
106
+ if (coreRef.current) coreRef.current.playbackSpeed = playbackSpeed;
107
+ }, [playbackSpeed]);
108
+ useEffect(() => {
109
+ if (coreRef.current) coreRef.current.loop = loop;
110
+ }, [loop]);
111
+ useEffect(() => {
112
+ var _a;
113
+ (_a = coreRef.current) == null ? void 0 : _a.setPaused(paused);
114
+ }, [paused]);
115
+ const canvasStyle = useMemo(() => ({
116
+ display: "block",
117
+ ...style
118
+ }), [style]);
119
+ return /* @__PURE__ */ React.createElement(
120
+ "canvas",
121
+ {
122
+ ref: canvasRef,
123
+ width,
124
+ height,
125
+ className,
126
+ style: canvasStyle
127
+ }
128
+ );
129
+ });
130
+ AlphaVideoGpuPlayer.displayName = "AlphaVideoGpuPlayer";
131
+ export {
132
+ AlphaVideoGpuPlayer
133
+ };
@@ -0,0 +1,57 @@
1
+ // src/astc-wasm.ts
2
+ var ASTC_WASM_BASE64 = "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AQAAAAIAAAACAAAAAQAAAAAAAAACAAAAAgAAAAIAAAABAAAAAAAAAAIAAAAAAAAAAgAAAAEAQcgPCy0BAAAAAQAAAAAAAAABAAAAAAAAAAEAAAABAAAAAAAAAAIAAAAAAAAAAQAAAAEAQYAQCwkBAAAAAgAAAAEAQZQQC0UBAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAAAAAACAAAAAQAAAAEAAAABAAAAAAAAAAEAAAABAAAAAgAAAAEAQeQQC0UCAAAAAQAAAAEAAAAAAAAAAQAAAAIAAAABAAAAAQAAAAAAAAACAAAAAgAAAAEAAAABAAAAAAAAAAIAAAABAAAAAgAAAAEAQbQRC0kBAAAAAAAAAAIAAAACAAAAAQAAAAEAAAAAAAAAAgAAAAIAAAACAAAAAQAAAAAAAAACAAAAAgAAAAEAAAAAAAAAAgAAAAIAAAACAEGMEgsJAgAAAAAAAAABAEGgEgsJAgAAAAAAAAACAEG0EgsBAgBBxBILBQIAAAACAEHUEgtFAQAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAAAIAAAAAAAAAAgAAAAEAAAAAAAAAAgAAAAAAAAABAAAAAAAAAAIAAAACAEGkEwtFAgAAAAAAAAACAAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAACAEH0EwtFAgAAAAIAAAACAAAAAAAAAAEAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAAAAAACAAAAAAAAAAIAAAACAEHIFAstAQAAAAIAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAACAAAAAAAAAAEAAAACAEGAFQsJAQAAAAIAAAACAEGUFQtFAQAAAAEAAAACAAAAAAAAAAEAAAABAAAAAQAAAAIAAAAAAAAAAgAAAAEAAAABAAAAAgAAAAAAAAABAAAAAQAAAAIAAAACAEHkFQtFAgAAAAEAAAACAAAAAAAAAAEAAAACAAAAAQAAAAIAAAAAAAAAAgAAAAIAAAABAAAAAgAAAAAAAAACAAAAAQAAAAIAAAACAEG0FgtJAgAAAAAAAAACAAAAAgAAAAEAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgBBkBcLBQIAAAABAEGkFwsFAgAAAAIAQbgXCwECAEHEFwsRAgAAAAAAAAACAAAAAAAAAAEAQeAXCwkCAAAAAQAAAAEAQfQXCwkCAAAAAgAAAAEAQYgYCx0CAAAAAQAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAgBBsBgLCQIAAAABAAAAAgBBxBgLCQIAAAACAAAAAgBB2BgLZQIAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAgAAAAAAAAACAAAAAQAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAgAAAAAAAAACAEHIGQu1AgEAAAAAAAAAAgAAAAEAAAAAAAAAAQAAAAAAAAACAAAAAgAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAQAAAAIAAAAAAAAAAgAAAAAAAAABAAAAAQAAAAAAAAACAAAAAQAAAAEAAAABAAAAAAAAAAIAAAACAAAAAQAAAAEAAAAAAAAAAgAAAAEAAAABAAAAAgAAAAAAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAABAAAAAgAAAAEAAAAAAAAAAgAAAAIAAAACAAAAAQAAAAAAAAACAAAAAgAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAAAAAAIAAAACAAAAAgBBkBwLBQEAAAABAEGkHAsFAQAAAAIAQbgcCwEBAEHEHAsRAgAAAAAAAAABAAAAAAAAAAEAQeAcCwkBAAAAAQAAAAEAQfQcCwkBAAAAAgAAAAEAQYgdCx0BAAAAAQAAAAAAAAACAAAAAAAAAAEAAAAAAAAAAgBBsB0LCQEAAAABAAAAAgBBxB0LCQEAAAACAAAAAgBB2B0LZQEAAAACAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAACAAAAAgAAAAAAAAABAAAAAQAAAAIAAAACAAAAAAAAAAEAAAACAAAAAgAAAAIAAAAAAAAAAQAAAAIAAAAAAAAAAgAAAAAAAAABAEHIHgvlAQEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAEAAAACAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAABAAAAAgAAAAAAAAABAAAAAAAAAAIAAAABAAAAAAAAAAEAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAIAAAACAAAAAQAAAAAAAAABAAAAAgAAAAEAAAACAAAAAAAAAAEAQbggC0UBAAAAAgAAAAIAAAABAAAAAAAAAAEAAAACAAAAAgAAAAIAAAAAAAAAAQAAAAIAAAACAAAAAAAAAAEAAAACAAAAAgAAAAIAQYwhCwkBAAAAAQAAAAEAQaAhCwkBAAAAAQAAAAIAQbQhCwUBAAAAAQBBxCEL+QECAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAEAAAABAAAAAAAAAAEAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAIAAAABAAAAAQAAAAAAAAACAAAAAAAAAAEAAAABAAAAAQAAAAIAAAAAAAAAAQAAAAEAAAACAAAAAgAAAAAAAAABAAAAAQAAAAIAAAAAAAAAAgAAAAEAAAABAAAAAAAAAAIAAAACAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAQAAAAIAAAACAAAAAgAAAAEAAAABAAAAAgAAAAAAAAACAAAAAQAAAAEAQcgjC7UCAQAAAAEAAAABAAAAAQAAAAAAAAABAAAAAQAAAAEAAAACAAAAAAAAAAEAAAABAAAAAQAAAAAAAAABAAAAAgAAAAEAAAABAAAAAAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAQAAAAEAAAAAAAAAAgAAAAEAAAABAAAAAQAAAAEAAAACAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAQAAAAEAAAACAAAAAQAAAAIAAAABAAAAAQAAAAAAAAABAAAAAQAAAAIAAAACAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAQAAAAEAAAACAAAAAgAAAAEAAAABAAAAAgAAAAIAAAACAEGMJgsJAgAAAAEAAAABAEGgJgsJAgAAAAEAAAACAEG0JgsFAgAAAAEAQcQmC/kBAgAAAAIAAAABAAAAAAAAAAEAAAAAAAAAAgAAAAEAAAABAAAAAQAAAAAAAAACAAAAAQAAAAIAAAABAAAAAAAAAAIAAAABAAAAAQAAAAAAAAACAAAAAgAAAAEAAAAAAAAAAgAAAAAAAAACAAAAAQAAAAEAAAACAAAAAAAAAAIAAAABAAAAAgAAAAIAAAAAAAAAAgAAAAEAAAACAAAAAAAAAAIAAAACAAAAAQAAAAAAAAACAAAAAgAAAAIAAAABAAAAAQAAAAIAAAACAAAAAgAAAAEAAAACAAAAAgAAAAIAAAACAAAAAQAAAAIAAAAAAAAAAgAAAAIAAAABAEHIKAu1AgEAAAACAAAAAQAAAAEAAAAAAAAAAQAAAAIAAAABAAAAAgAAAAAAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAIAAAACAAAAAQAAAAAAAAABAAAAAQAAAAIAAAABAAAAAQAAAAEAAAABAAAAAgAAAAEAAAACAAAAAQAAAAEAAAACAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAAAAAAIAAAABAAAAAgAAAAEAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAACAAAAAQAAAAIAAAABAAAAAgAAAAEAAAACAAAAAgAAAAEAAAAAAAAAAgAAAAEAAAACAAAAAgAAAAEAAAACAAAAAQAAAAIAAAACAAAAAgAAAAIAAAABAAAAAgAAAAIAAAACAAAAAQAAAAIAAAACAAAAAgBBjCsLCQEAAAACAAAAAQBBoCsLCQEAAAACAAAAAgBBtCsLBQEAAAACAEHEKwv5AQIAAAABAAAAAgAAAAAAAAABAAAAAAAAAAEAAAACAAAAAQAAAAEAAAAAAAAAAQAAAAIAAAACAAAAAQAAAAAAAAABAAAAAgAAAAEAAAAAAAAAAgAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAQAAAAIAAAABAAAAAgAAAAAAAAABAAAAAgAAAAIAAAACAAAAAAAAAAEAAAACAAAAAgAAAAAAAAACAAAAAQAAAAIAAAAAAAAAAgAAAAIAAAABAAAAAgAAAAEAAAACAAAAAgAAAAEAAAACAAAAAgAAAAIAAAACAAAAAQAAAAIAAAACAAAAAAAAAAIAAAABAAAAAgBByC0LtQIBAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAgAAAAIAAAAAAAAAAQAAAAEAAAACAAAAAAAAAAEAAAACAAAAAQAAAAIAAAAAAAAAAQAAAAEAAAABAAAAAgAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAEAAAABAAAAAQAAAAIAAAABAAAAAQAAAAIAAAABAAAAAgAAAAAAAAACAAAAAQAAAAEAAAACAAAAAQAAAAIAAAABAAAAAQAAAAIAAAACAAAAAgAAAAEAAAABAAAAAgAAAAIAAAABAAAAAgAAAAEAAAACAAAAAAAAAAIAAAACAAAAAgAAAAIAAAABAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAEAAAACAAAAAgAAAAIAQYwwCwEBAEGYMAsBAgBBpDALAQMAQbAwCwEEAEHAMAu9AgQAAAAAAAAABAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAgAAAAEAAAAAAAAAAwAAAAEAAAAAAAAABAAAAAEAAAAAAAAAAQAAAAQAAAAAAAAABAAAAAQAAAABAAAABAAAAAQAAAAEAAAAAAAAAAIAAAAAAAAAAQAAAAIAAAAAAAAAAgAAAAIAAAAAAAAAAwAAAAIAAAAAAAAABAAAAAIAAAAAAAAAAgAAAAQAAAAAAAAABAAAAAQAAAACAAAABAAAAAQAAAAEAAAAAAAAAAMAAAAAAAAAAQAAAAMAAAAAAAAAAgAAAAMAAAAAAAAAAwAAAAMAAAAAAAAABAAAAAMAAAAAAAAAAwAAAAQAAAAAAAAABAAAAAQAAAADAAAABAAAAAQAAAAEAEGIMwv1AgEAAAABAAAAAAAAAAEAAAACAAAAAAAAAAEAAAADAAAAAAAAAAEAAAAEAAAAAAAAAAEAAAAAAAAABAAAAAEAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAQAAAAEAAAADAAAAAQAAAAEAAAAEAAAAAQAAAAEAAAABAAAABAAAAAEAAAAEAAAAAQAAAAQAAAABAAAABAAAAAQAAAAAAAAAAgAAAAEAAAABAAAAAgAAAAEAAAACAAAAAgAAAAEAAAADAAAAAgAAAAEAAAAEAAAAAgAAAAEAAAACAAAABAAAAAEAAAAEAAAAAgAAAAQAAAACAAAABAAAAAQAAAAAAAAAAwAAAAEAAAABAAAAAwAAAAEAAAACAAAAAwAAAAEAAAADAAAAAwAAAAEAAAAEAAAAAwAAAAEAAAADAAAABAAAAAEAAAAEAAAAAwAAAAQAAAADAAAABAAAAAQAQYg2C/UCAgAAAAEAAAAAAAAAAgAAAAIAAAAAAAAAAgAAAAMAAAAAAAAAAgAAAAQAAAAAAAAAAgAAAAAAAAAEAAAAAgAAAAIAAAAAAAAABAAAAAMAAAAAAAAABAAAAAAAAAABAAAAAgAAAAEAAAABAAAAAgAAAAIAAAABAAAAAgAAAAMAAAABAAAAAgAAAAQAAAABAAAAAgAAAAEAAAAEAAAAAgAAAAIAAAABAAAABAAAAAMAAAABAAAABAAAAAAAAAACAAAAAgAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAACAAAAAgAAAAQAAAACAAAAAgAAAAIAAAAEAAAAAgAAAAIAAAACAAAABAAAAAMAAAACAAAABAAAAAAAAAADAAAAAgAAAAEAAAADAAAAAgAAAAIAAAADAAAAAgAAAAMAAAADAAAAAgAAAAQAAAADAAAAAgAAAAMAAAAEAAAAAgAAAAIAAAADAAAABAAAAAMAAAADAAAABABBiDkLPQMAAAABAAAAAAAAAAMAAAACAAAAAAAAAAMAAAADAAAAAAAAAAMAAAAEAAAAAAAAAAMAAAAAAAAABAAAAAMAQdA5C60CBAAAAAEAAAAAAAAABAAAAAAAAAABAAAAAwAAAAEAAAABAAAAAwAAAAIAAAABAAAAAwAAAAMAAAABAAAAAwAAAAQAAAABAAAAAwAAAAEAAAAEAAAAAwAAAAAAAAABAAAABAAAAAEAAAABAAAABAAAAAAAAAACAAAAAwAAAAEAAAACAAAAAwAAAAIAAAACAAAAAwAAAAMAAAACAAAAAwAAAAQAAAACAAAAAwAAAAIAAAAEAAAAAwAAAAAAAAACAAAABAAAAAEAAAACAAAABAAAAAAAAAADAAAAAwAAAAEAAAADAAAAAwAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAQAAAADAAAAAwAAAAMAAAAEAAAAAwAAAAAAAAADAAAABAAAAAEAAAADAAAABABBgMgAC0XMAAAAcQAAAF0AAAA2AAAALAAAABoAAAAWAAAADQAAAAsAAAAGAAAABQAAAAAAAAABAAAAAQAAAAIAAAADAAAABAAAAAUAQdDIAAspBwAAAAYAAAAHAAAABgAAAAUAAAAGAAAABQAAAAYAAAAAAAAAIAAAAD8AQYTJAAsNEAAAACAAAAAvAAAAPwBBoMkACxEyAAAAHAAAABcAAAANAAAACwBBtMkACwMwJwE=";
3
+
4
+ // src/software-astc.ts
5
+ var SoftwareAstcDecoder = class {
6
+ constructor(_exports) {
7
+ this._exports = _exports;
8
+ this._src = 0;
9
+ this._srcSize = 0;
10
+ this._dst = 0;
11
+ this._dstSize = 0;
12
+ }
13
+ /**
14
+ * Decodes one layer of ASTC blocks to RGBA (width * height * 4 bytes). The result is a view
15
+ * into WebAssembly memory, valid until the next call.
16
+ */
17
+ decode(astc, width, height, blockWidth, blockHeight) {
18
+ const ex = this._exports;
19
+ if (astc.length > this._srcSize) {
20
+ ex.astc_free(this._src);
21
+ this._src = ex.astc_alloc(astc.length);
22
+ this._srcSize = astc.length;
23
+ }
24
+ const rgbaSize = width * height * 4;
25
+ if (rgbaSize > this._dstSize) {
26
+ ex.astc_free(this._dst);
27
+ this._dst = ex.astc_alloc(rgbaSize);
28
+ this._dstSize = rgbaSize;
29
+ }
30
+ if (!this._src || !this._dst) throw new Error("Out of memory for software ASTC decoding");
31
+ new Uint8Array(ex.memory.buffer, this._src, astc.length).set(astc);
32
+ const failed = ex.astc_decode_layer(this._src, width, height, blockWidth, blockHeight, this._dst);
33
+ if (failed > 0) console.warn(`[AlphaVideoGpu] ${failed} ASTC blocks failed to decode (drawn magenta)`);
34
+ return new Uint8Array(ex.memory.buffer, this._dst, rgbaSize);
35
+ }
36
+ };
37
+ var loading = null;
38
+ function loadSoftwareAstcDecoder() {
39
+ if (!loading) {
40
+ loading = (async () => {
41
+ const bytes = Uint8Array.from(atob(ASTC_WASM_BASE64), (c) => c.charCodeAt(0));
42
+ const { instance } = await WebAssembly.instantiate(bytes, { env: { emscripten_notify_memory_growth() {
43
+ } } });
44
+ const ex = instance.exports;
45
+ ex._initialize();
46
+ return new SoftwareAstcDecoder(ex);
47
+ })();
48
+ loading.catch(() => {
49
+ loading = null;
50
+ });
51
+ }
52
+ return loading;
53
+ }
54
+ export {
55
+ SoftwareAstcDecoder,
56
+ loadSoftwareAstcDecoder
57
+ };
@@ -0,0 +1,96 @@
1
+ import { StorageKind, ByteStore, ByteSource } from 'range-source-web';
2
+
3
+ /**
4
+ * KTX2 Player Core - Shared Types
5
+ *
6
+ * Framework-agnostic type definitions used by the core engine
7
+ * and all wrapper implementations (React Native Web, React, Vanilla JS).
8
+ */
9
+
10
+ /**
11
+ * What a player plays: a URL (http(s), relative, or asset://path), a Blob or File, bytes in
12
+ * memory, or a ByteSource that reads by offset (an app's own fetcher or cache).
13
+ */
14
+ type KTX2Source = string | Blob | ArrayBuffer | Uint8Array | ByteSource;
15
+ interface KTX2SourceOptions {
16
+ /**
17
+ * Names the stored copy, for URLs that change while the file doesn't (presigned URLs).
18
+ * Defaults to the URL. A Blob or ByteSource is stored only with storage set and a cacheKey.
19
+ */
20
+ cacheKey?: string;
21
+ /** Sent with every request for a URL, e.g. Authorization. */
22
+ headers?: Record<string, string>;
23
+ }
24
+ /**
25
+ * Where streamed bytes are kept between plays: 'auto' (OPFS, else IndexedDB), 'opfs',
26
+ * 'indexeddb', 'cache' (the Cache API), 'memory' (this page only), 'none', or your own store.
27
+ */
28
+ type KTX2Storage = StorageKind | ByteStore;
29
+ /** From the KTX2 header (size, frame count) and its KTXanimData key (frame rate, may be fractional). */
30
+ interface Metadata {
31
+ frameCount: number;
32
+ frameWidth: number;
33
+ frameHeight: number;
34
+ frameRate: number;
35
+ }
36
+ interface KTX2LoadEvent {
37
+ width: number;
38
+ height: number;
39
+ frameCount: number;
40
+ frameRate: number;
41
+ duration: number;
42
+ }
43
+ type PlayerState = 'idle' | 'loading' | 'ready' | 'playing' | 'paused' | 'stopped' | 'error';
44
+ type MemoryStrategy = 'vram' | 'ram';
45
+ /**
46
+ * Options for KTX2PlayerCore constructor.
47
+ * Framework-agnostic — no React or React Native types.
48
+ */
49
+ interface KTX2PlayerCoreOptions {
50
+ /** Whether to start playing automatically (default: true) */
51
+ autoPlay?: boolean;
52
+ /** Whether to loop the animation (default: true) */
53
+ loop?: boolean;
54
+ /** Playback speed multiplier (default: 1.0) */
55
+ playbackSpeed?: number;
56
+ /** Enable streaming mode for texture array playback (default: true) */
57
+ stream?: boolean;
58
+ /** Frames decoded ahead of the shown one, all streaming keeps. Default: 8 */
59
+ streamingPrefetchAhead?: number;
60
+ /** Memory strategy: 'vram' | 'ram'. Default: 'vram' */
61
+ memoryStrategy?: MemoryStrategy;
62
+ /** Log info traces to the console (warnings and errors always log). Default: false */
63
+ verbose?: boolean;
64
+ /**
65
+ * Where a URL's bytes are kept between plays, read back by range. Default: 'auto' for URLs,
66
+ * 'none' for Blobs, memory and ByteSources. With 'none', a clip under 16 MB still stays in
67
+ * memory for loops.
68
+ */
69
+ storage?: KTX2Storage;
70
+ /** Cap on the bytes stored across every clip, evicting the least recently played. Default: 512 MB */
71
+ maxStorageBytes?: number;
72
+ /** ZSTDDecoder class constructor (for zstd decompression) */
73
+ ZSTDDecoderClass?: new () => any;
74
+ onStateChange?: (state: PlayerState) => void;
75
+ onLoad?: (event: KTX2LoadEvent) => void;
76
+ onFrameUpdate?: (frame: number, total: number) => void;
77
+ onFinished?: () => void;
78
+ onError?: (error: Error) => void;
79
+ /** Call onFrameUpdate for every frame played; seeks always call it. Default: true */
80
+ frameEvents?: boolean;
81
+ }
82
+ /**
83
+ * Shared WebGL context resources — used to avoid browser's ~8-16 context limit.
84
+ */
85
+ interface SharedGLResources {
86
+ gl: WebGL2RenderingContext | WebGLRenderingContext;
87
+ canvas: HTMLCanvasElement;
88
+ arrayProgram: WebGLProgram | null;
89
+ positionBuffer: WebGLBuffer;
90
+ texCoordBuffer: WebGLBuffer;
91
+ refCount: number;
92
+ maxWidth: number;
93
+ maxHeight: number;
94
+ }
95
+
96
+ export type { KTX2PlayerCoreOptions as K, Metadata as M, PlayerState as P, SharedGLResources as S, KTX2Source as a, KTX2SourceOptions as b, KTX2LoadEvent as c, KTX2Storage as d, MemoryStrategy as e };
@@ -0,0 +1,96 @@
1
+ import { StorageKind, ByteStore, ByteSource } from 'range-source-web';
2
+
3
+ /**
4
+ * KTX2 Player Core - Shared Types
5
+ *
6
+ * Framework-agnostic type definitions used by the core engine
7
+ * and all wrapper implementations (React Native Web, React, Vanilla JS).
8
+ */
9
+
10
+ /**
11
+ * What a player plays: a URL (http(s), relative, or asset://path), a Blob or File, bytes in
12
+ * memory, or a ByteSource that reads by offset (an app's own fetcher or cache).
13
+ */
14
+ type KTX2Source = string | Blob | ArrayBuffer | Uint8Array | ByteSource;
15
+ interface KTX2SourceOptions {
16
+ /**
17
+ * Names the stored copy, for URLs that change while the file doesn't (presigned URLs).
18
+ * Defaults to the URL. A Blob or ByteSource is stored only with storage set and a cacheKey.
19
+ */
20
+ cacheKey?: string;
21
+ /** Sent with every request for a URL, e.g. Authorization. */
22
+ headers?: Record<string, string>;
23
+ }
24
+ /**
25
+ * Where streamed bytes are kept between plays: 'auto' (OPFS, else IndexedDB), 'opfs',
26
+ * 'indexeddb', 'cache' (the Cache API), 'memory' (this page only), 'none', or your own store.
27
+ */
28
+ type KTX2Storage = StorageKind | ByteStore;
29
+ /** From the KTX2 header (size, frame count) and its KTXanimData key (frame rate, may be fractional). */
30
+ interface Metadata {
31
+ frameCount: number;
32
+ frameWidth: number;
33
+ frameHeight: number;
34
+ frameRate: number;
35
+ }
36
+ interface KTX2LoadEvent {
37
+ width: number;
38
+ height: number;
39
+ frameCount: number;
40
+ frameRate: number;
41
+ duration: number;
42
+ }
43
+ type PlayerState = 'idle' | 'loading' | 'ready' | 'playing' | 'paused' | 'stopped' | 'error';
44
+ type MemoryStrategy = 'vram' | 'ram';
45
+ /**
46
+ * Options for KTX2PlayerCore constructor.
47
+ * Framework-agnostic — no React or React Native types.
48
+ */
49
+ interface KTX2PlayerCoreOptions {
50
+ /** Whether to start playing automatically (default: true) */
51
+ autoPlay?: boolean;
52
+ /** Whether to loop the animation (default: true) */
53
+ loop?: boolean;
54
+ /** Playback speed multiplier (default: 1.0) */
55
+ playbackSpeed?: number;
56
+ /** Enable streaming mode for texture array playback (default: true) */
57
+ stream?: boolean;
58
+ /** Frames decoded ahead of the shown one, all streaming keeps. Default: 8 */
59
+ streamingPrefetchAhead?: number;
60
+ /** Memory strategy: 'vram' | 'ram'. Default: 'vram' */
61
+ memoryStrategy?: MemoryStrategy;
62
+ /** Log info traces to the console (warnings and errors always log). Default: false */
63
+ verbose?: boolean;
64
+ /**
65
+ * Where a URL's bytes are kept between plays, read back by range. Default: 'auto' for URLs,
66
+ * 'none' for Blobs, memory and ByteSources. With 'none', a clip under 16 MB still stays in
67
+ * memory for loops.
68
+ */
69
+ storage?: KTX2Storage;
70
+ /** Cap on the bytes stored across every clip, evicting the least recently played. Default: 512 MB */
71
+ maxStorageBytes?: number;
72
+ /** ZSTDDecoder class constructor (for zstd decompression) */
73
+ ZSTDDecoderClass?: new () => any;
74
+ onStateChange?: (state: PlayerState) => void;
75
+ onLoad?: (event: KTX2LoadEvent) => void;
76
+ onFrameUpdate?: (frame: number, total: number) => void;
77
+ onFinished?: () => void;
78
+ onError?: (error: Error) => void;
79
+ /** Call onFrameUpdate for every frame played; seeks always call it. Default: true */
80
+ frameEvents?: boolean;
81
+ }
82
+ /**
83
+ * Shared WebGL context resources — used to avoid browser's ~8-16 context limit.
84
+ */
85
+ interface SharedGLResources {
86
+ gl: WebGL2RenderingContext | WebGLRenderingContext;
87
+ canvas: HTMLCanvasElement;
88
+ arrayProgram: WebGLProgram | null;
89
+ positionBuffer: WebGLBuffer;
90
+ texCoordBuffer: WebGLBuffer;
91
+ refCount: number;
92
+ maxWidth: number;
93
+ maxHeight: number;
94
+ }
95
+
96
+ export type { KTX2PlayerCoreOptions as K, Metadata as M, PlayerState as P, SharedGLResources as S, KTX2Source as a, KTX2SourceOptions as b, KTX2LoadEvent as c, KTX2Storage as d, MemoryStrategy as e };