libbitsub 1.9.0 → 1.10.0
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/README.md +176 -8
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/ts/diagnostics.d.ts +35 -0
- package/dist/ts/diagnostics.d.ts.map +1 -0
- package/dist/ts/diagnostics.js +102 -0
- package/dist/ts/diagnostics.js.map +1 -0
- package/dist/ts/frame-export.d.ts +6 -0
- package/dist/ts/frame-export.d.ts.map +1 -0
- package/dist/ts/frame-export.js +235 -0
- package/dist/ts/frame-export.js.map +1 -0
- package/dist/ts/parsers.d.ts +44 -4
- package/dist/ts/parsers.d.ts.map +1 -1
- package/dist/ts/parsers.js +269 -56
- package/dist/ts/parsers.js.map +1 -1
- package/dist/ts/renderers.d.ts +19 -2
- package/dist/ts/renderers.d.ts.map +1 -1
- package/dist/ts/renderers.js +150 -27
- package/dist/ts/renderers.js.map +1 -1
- package/dist/ts/types.d.ts +110 -1
- package/dist/ts/types.d.ts.map +1 -1
- package/dist/ts/utils.d.ts +1 -1
- package/dist/ts/utils.d.ts.map +1 -1
- package/dist/ts/utils.js +8 -1
- package/dist/ts/utils.js.map +1 -1
- package/dist/ts/worker.d.ts.map +1 -1
- package/dist/ts/worker.js +6 -4
- package/dist/ts/worker.js.map +1 -1
- package/dist/wrapper.d.ts +4 -2
- package/dist/wrapper.d.ts.map +1 -1
- package/dist/wrapper.js +4 -1
- package/dist/wrapper.js.map +1 -1
- package/package.json +1 -1
- package/pkg/README.md +176 -8
- package/pkg/libbitsub.d.ts +15 -0
- package/pkg/libbitsub.js +48 -0
- package/pkg/libbitsub_bg.wasm +0 -0
- package/pkg/libbitsub_bg.wasm.d.ts +3 -0
- package/pkg/package.json +1 -1
- package/src/wrapper.ts +20 -1
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { getSubtitleBounds } from './utils';
|
|
2
|
+
function blendSourceOver(dst, dstIndex, src, srcIndex) {
|
|
3
|
+
const srcAlpha = src[srcIndex + 3];
|
|
4
|
+
if (srcAlpha === 0)
|
|
5
|
+
return;
|
|
6
|
+
if (srcAlpha === 255) {
|
|
7
|
+
dst[dstIndex] = src[srcIndex];
|
|
8
|
+
dst[dstIndex + 1] = src[srcIndex + 1];
|
|
9
|
+
dst[dstIndex + 2] = src[srcIndex + 2];
|
|
10
|
+
dst[dstIndex + 3] = 255;
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const dstAlpha = dst[dstIndex + 3];
|
|
14
|
+
if (dstAlpha === 0) {
|
|
15
|
+
dst[dstIndex] = src[srcIndex];
|
|
16
|
+
dst[dstIndex + 1] = src[srcIndex + 1];
|
|
17
|
+
dst[dstIndex + 2] = src[srcIndex + 2];
|
|
18
|
+
dst[dstIndex + 3] = srcAlpha;
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const srcAlphaNorm = srcAlpha / 255;
|
|
22
|
+
const dstAlphaNorm = dstAlpha / 255;
|
|
23
|
+
const outAlphaNorm = srcAlphaNorm + dstAlphaNorm * (1 - srcAlphaNorm);
|
|
24
|
+
if (outAlphaNorm <= 0) {
|
|
25
|
+
dst[dstIndex] = 0;
|
|
26
|
+
dst[dstIndex + 1] = 0;
|
|
27
|
+
dst[dstIndex + 2] = 0;
|
|
28
|
+
dst[dstIndex + 3] = 0;
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const srcRed = src[srcIndex] * srcAlphaNorm;
|
|
32
|
+
const srcGreen = src[srcIndex + 1] * srcAlphaNorm;
|
|
33
|
+
const srcBlue = src[srcIndex + 2] * srcAlphaNorm;
|
|
34
|
+
const dstRed = dst[dstIndex] * dstAlphaNorm;
|
|
35
|
+
const dstGreen = dst[dstIndex + 1] * dstAlphaNorm;
|
|
36
|
+
const dstBlue = dst[dstIndex + 2] * dstAlphaNorm;
|
|
37
|
+
dst[dstIndex] = Math.round((srcRed + dstRed * (1 - srcAlphaNorm)) / outAlphaNorm);
|
|
38
|
+
dst[dstIndex + 1] = Math.round((srcGreen + dstGreen * (1 - srcAlphaNorm)) / outAlphaNorm);
|
|
39
|
+
dst[dstIndex + 2] = Math.round((srcBlue + dstBlue * (1 - srcAlphaNorm)) / outAlphaNorm);
|
|
40
|
+
dst[dstIndex + 3] = Math.round(outAlphaNorm * 255);
|
|
41
|
+
}
|
|
42
|
+
function resolveCropMode(frame, options) {
|
|
43
|
+
if ('imageData' in frame) {
|
|
44
|
+
return options?.crop ?? frame.crop;
|
|
45
|
+
}
|
|
46
|
+
return options?.crop ?? 'bounds';
|
|
47
|
+
}
|
|
48
|
+
function getEmptyFrameSize(frame, crop) {
|
|
49
|
+
if ('imageData' in frame) {
|
|
50
|
+
return {
|
|
51
|
+
width: Math.max(1, frame.imageData.width),
|
|
52
|
+
height: Math.max(1, frame.imageData.height)
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (crop === 'screen') {
|
|
56
|
+
return {
|
|
57
|
+
width: Math.max(1, frame.width),
|
|
58
|
+
height: Math.max(1, frame.height)
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return { width: 1, height: 1 };
|
|
62
|
+
}
|
|
63
|
+
function isCanvasContext(target) {
|
|
64
|
+
return 'putImageData' in target && 'canvas' in target;
|
|
65
|
+
}
|
|
66
|
+
function resizeCanvas(canvas, width, height) {
|
|
67
|
+
canvas.width = width;
|
|
68
|
+
canvas.height = height;
|
|
69
|
+
}
|
|
70
|
+
function createCanvas(width, height) {
|
|
71
|
+
if (typeof OffscreenCanvas !== 'undefined') {
|
|
72
|
+
return new OffscreenCanvas(width, height);
|
|
73
|
+
}
|
|
74
|
+
if (typeof document !== 'undefined') {
|
|
75
|
+
const canvas = document.createElement('canvas');
|
|
76
|
+
canvas.width = width;
|
|
77
|
+
canvas.height = height;
|
|
78
|
+
return canvas;
|
|
79
|
+
}
|
|
80
|
+
throw new Error('Canvas export requires OffscreenCanvas or document.createElement("canvas").');
|
|
81
|
+
}
|
|
82
|
+
function getCanvasContext(canvas) {
|
|
83
|
+
const context = canvas.getContext('2d');
|
|
84
|
+
if (!context) {
|
|
85
|
+
throw new Error('Could not acquire a 2D canvas context for subtitle frame export.');
|
|
86
|
+
}
|
|
87
|
+
return context;
|
|
88
|
+
}
|
|
89
|
+
function isHtmlCanvas(canvas) {
|
|
90
|
+
return 'toBlob' in canvas;
|
|
91
|
+
}
|
|
92
|
+
function normalizeRenderedFrame(frame, options) {
|
|
93
|
+
if ('imageData' in frame) {
|
|
94
|
+
if (!options?.crop || options.crop === frame.crop) {
|
|
95
|
+
return frame;
|
|
96
|
+
}
|
|
97
|
+
return renderFrameData({
|
|
98
|
+
width: frame.screenWidth,
|
|
99
|
+
height: frame.screenHeight,
|
|
100
|
+
compositionData: [
|
|
101
|
+
{
|
|
102
|
+
pixelData: frame.imageData,
|
|
103
|
+
x: frame.offsetX,
|
|
104
|
+
y: frame.offsetY
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
}, options);
|
|
108
|
+
}
|
|
109
|
+
return renderFrameData(frame, options);
|
|
110
|
+
}
|
|
111
|
+
export function renderFrameData(frame, options = {}) {
|
|
112
|
+
const crop = options.crop ?? 'bounds';
|
|
113
|
+
const bounds = getSubtitleBounds(frame);
|
|
114
|
+
if (!bounds && crop === 'bounds') {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
const offsetX = crop === 'screen' ? 0 : bounds?.x ?? 0;
|
|
118
|
+
const offsetY = crop === 'screen' ? 0 : bounds?.y ?? 0;
|
|
119
|
+
const targetWidth = Math.max(1, crop === 'screen' ? frame.width : bounds?.width ?? 1);
|
|
120
|
+
const targetHeight = Math.max(1, crop === 'screen' ? frame.height : bounds?.height ?? 1);
|
|
121
|
+
const output = new Uint8ClampedArray(targetWidth * targetHeight * 4);
|
|
122
|
+
for (const composition of frame.compositionData) {
|
|
123
|
+
const src = composition.pixelData.data;
|
|
124
|
+
const srcWidth = composition.pixelData.width;
|
|
125
|
+
const srcHeight = composition.pixelData.height;
|
|
126
|
+
if (srcWidth <= 0 || srcHeight <= 0)
|
|
127
|
+
continue;
|
|
128
|
+
const dstX = composition.x - offsetX;
|
|
129
|
+
const dstY = composition.y - offsetY;
|
|
130
|
+
const startX = Math.max(0, dstX);
|
|
131
|
+
const startY = Math.max(0, dstY);
|
|
132
|
+
const endX = Math.min(targetWidth, dstX + srcWidth);
|
|
133
|
+
const endY = Math.min(targetHeight, dstY + srcHeight);
|
|
134
|
+
if (startX >= endX || startY >= endY)
|
|
135
|
+
continue;
|
|
136
|
+
for (let y = startY; y < endY; y += 1) {
|
|
137
|
+
const srcY = y - dstY;
|
|
138
|
+
for (let x = startX; x < endX; x += 1) {
|
|
139
|
+
const srcX = x - dstX;
|
|
140
|
+
const srcIndex = (srcY * srcWidth + srcX) * 4;
|
|
141
|
+
const dstIndex = (y * targetWidth + x) * 4;
|
|
142
|
+
blendSourceOver(output, dstIndex, src, srcIndex);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
imageData: new ImageData(output, targetWidth, targetHeight),
|
|
148
|
+
bounds,
|
|
149
|
+
offsetX,
|
|
150
|
+
offsetY,
|
|
151
|
+
screenWidth: frame.width,
|
|
152
|
+
screenHeight: frame.height,
|
|
153
|
+
crop,
|
|
154
|
+
compositionCount: frame.compositionData.length
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
export function toCanvas(frame, target, options = {}) {
|
|
158
|
+
const rendered = normalizeRenderedFrame(frame, options);
|
|
159
|
+
const crop = resolveCropMode(frame, options);
|
|
160
|
+
const fallbackSize = rendered
|
|
161
|
+
? { width: rendered.imageData.width, height: rendered.imageData.height }
|
|
162
|
+
: getEmptyFrameSize(frame, crop);
|
|
163
|
+
let canvas;
|
|
164
|
+
let context;
|
|
165
|
+
if (target) {
|
|
166
|
+
if (isCanvasContext(target)) {
|
|
167
|
+
canvas = target.canvas;
|
|
168
|
+
context = target;
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
canvas = target;
|
|
172
|
+
context = getCanvasContext(canvas);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
canvas = createCanvas(fallbackSize.width, fallbackSize.height);
|
|
177
|
+
context = getCanvasContext(canvas);
|
|
178
|
+
}
|
|
179
|
+
const resizeTarget = options.resizeCanvas ?? (target ? !isCanvasContext(target) : true);
|
|
180
|
+
if (resizeTarget) {
|
|
181
|
+
resizeCanvas(canvas, fallbackSize.width, fallbackSize.height);
|
|
182
|
+
context = getCanvasContext(canvas);
|
|
183
|
+
}
|
|
184
|
+
const clearCanvas = options.clearCanvas ?? !resizeTarget;
|
|
185
|
+
if (clearCanvas) {
|
|
186
|
+
context.clearRect(0, 0, canvas.width, canvas.height);
|
|
187
|
+
}
|
|
188
|
+
if (rendered) {
|
|
189
|
+
const drawX = resizeTarget ? 0 : rendered.offsetX;
|
|
190
|
+
const drawY = resizeTarget ? 0 : rendered.offsetY;
|
|
191
|
+
context.putImageData(rendered.imageData, drawX, drawY);
|
|
192
|
+
}
|
|
193
|
+
return canvas;
|
|
194
|
+
}
|
|
195
|
+
export async function toImageBitmap(frame, options = {}) {
|
|
196
|
+
const rendered = normalizeRenderedFrame(frame, options);
|
|
197
|
+
if (rendered && typeof createImageBitmap === 'function') {
|
|
198
|
+
return createImageBitmap(rendered.imageData);
|
|
199
|
+
}
|
|
200
|
+
const canvas = toCanvas(frame, undefined, {
|
|
201
|
+
...options,
|
|
202
|
+
resizeCanvas: true,
|
|
203
|
+
clearCanvas: false
|
|
204
|
+
});
|
|
205
|
+
if (typeof createImageBitmap === 'function') {
|
|
206
|
+
return createImageBitmap(canvas);
|
|
207
|
+
}
|
|
208
|
+
if ('transferToImageBitmap' in canvas && typeof canvas.transferToImageBitmap === 'function') {
|
|
209
|
+
return canvas.transferToImageBitmap();
|
|
210
|
+
}
|
|
211
|
+
throw new Error('ImageBitmap export requires createImageBitmap() or OffscreenCanvas.transferToImageBitmap().');
|
|
212
|
+
}
|
|
213
|
+
export async function toBlob(frame, type = 'image/png', quality, options = {}) {
|
|
214
|
+
const canvas = toCanvas(frame, undefined, {
|
|
215
|
+
...options,
|
|
216
|
+
resizeCanvas: true,
|
|
217
|
+
clearCanvas: false
|
|
218
|
+
});
|
|
219
|
+
if ('convertToBlob' in canvas && typeof canvas.convertToBlob === 'function') {
|
|
220
|
+
return canvas.convertToBlob({ type, quality });
|
|
221
|
+
}
|
|
222
|
+
if (!isHtmlCanvas(canvas)) {
|
|
223
|
+
throw new Error('Blob export requires HTMLCanvasElement.toBlob() or OffscreenCanvas.convertToBlob().');
|
|
224
|
+
}
|
|
225
|
+
return new Promise((resolve, reject) => {
|
|
226
|
+
canvas.toBlob((blob) => {
|
|
227
|
+
if (blob) {
|
|
228
|
+
resolve(blob);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
reject(new Error('Failed to encode subtitle frame blob.'));
|
|
232
|
+
}, type, quality);
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=frame-export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-export.js","sourceRoot":"","sources":["../../src/ts/frame-export.ts"],"names":[],"mappings":"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"}
|
package/dist/ts/parsers.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Low-level subtitle parsers for libbitsub.
|
|
3
3
|
* Use these for programmatic access to subtitle data without video integration.
|
|
4
4
|
*/
|
|
5
|
-
import type { AutoSubtitleSource, SubtitleData, SubtitleCueMetadata, SubtitleParserMetadata, SubtitleFormatName } from './types';
|
|
5
|
+
import type { AutoSubtitleSource, OpenedSubtitles, SubtitleDiagnosticsOptions, SubtitleData, SubtitleCueMetadata, SubtitleFrameRenderOptions, SubtitleRenderedFrameData, SubtitleParserMetadata, SubtitleFormatName } from './types';
|
|
6
6
|
/**
|
|
7
7
|
* Low-level PGS subtitle parser using WASM.
|
|
8
8
|
* Use this for programmatic access to PGS data without video integration.
|
|
@@ -11,7 +11,9 @@ export declare class PgsParser {
|
|
|
11
11
|
private parser;
|
|
12
12
|
private timestamps;
|
|
13
13
|
private cueMetadataCache;
|
|
14
|
-
|
|
14
|
+
private readonly debug;
|
|
15
|
+
private readonly onWarning?;
|
|
16
|
+
constructor(options?: SubtitleDiagnosticsOptions);
|
|
15
17
|
/**
|
|
16
18
|
* Load PGS subtitle data from a Uint8Array.
|
|
17
19
|
*/
|
|
@@ -32,6 +34,7 @@ export declare class PgsParser {
|
|
|
32
34
|
* Render subtitle at the given index.
|
|
33
35
|
*/
|
|
34
36
|
renderAtIndex(index: number): SubtitleData | undefined;
|
|
37
|
+
getLastRenderIssue(): string | null;
|
|
35
38
|
/** Get parser-level metadata. */
|
|
36
39
|
getMetadata(): SubtitleParserMetadata;
|
|
37
40
|
/** Get cue metadata for the given index. */
|
|
@@ -40,6 +43,14 @@ export declare class PgsParser {
|
|
|
40
43
|
* Render subtitle at the given timestamp in seconds.
|
|
41
44
|
*/
|
|
42
45
|
renderAtTimestamp(timeSeconds: number): SubtitleData | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Render flattened frame pixels at the given index.
|
|
48
|
+
*/
|
|
49
|
+
renderFrameDataAtIndex(index: number, options?: SubtitleFrameRenderOptions): SubtitleRenderedFrameData | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Render flattened frame pixels at the given timestamp in seconds.
|
|
52
|
+
*/
|
|
53
|
+
renderFrameDataAtTimestamp(timeSeconds: number, options?: SubtitleFrameRenderOptions): SubtitleRenderedFrameData | undefined;
|
|
43
54
|
/**
|
|
44
55
|
* Convert WASM frame to SubtitleData.
|
|
45
56
|
*/
|
|
@@ -52,6 +63,7 @@ export declare class PgsParser {
|
|
|
52
63
|
* Dispose of resources.
|
|
53
64
|
*/
|
|
54
65
|
dispose(): void;
|
|
66
|
+
private emitWarning;
|
|
55
67
|
}
|
|
56
68
|
/**
|
|
57
69
|
* Low-level VobSub subtitle parser using WASM.
|
|
@@ -61,7 +73,9 @@ export declare class VobSubParserLowLevel {
|
|
|
61
73
|
private parser;
|
|
62
74
|
private timestamps;
|
|
63
75
|
private cueMetadataCache;
|
|
64
|
-
|
|
76
|
+
private readonly debug;
|
|
77
|
+
private readonly onWarning?;
|
|
78
|
+
constructor(options?: SubtitleDiagnosticsOptions);
|
|
65
79
|
/**
|
|
66
80
|
* Load VobSub from IDX and SUB data.
|
|
67
81
|
*/
|
|
@@ -90,6 +104,7 @@ export declare class VobSubParserLowLevel {
|
|
|
90
104
|
* Render subtitle at the given index.
|
|
91
105
|
*/
|
|
92
106
|
renderAtIndex(index: number): SubtitleData | undefined;
|
|
107
|
+
getLastRenderIssue(): string | null;
|
|
93
108
|
/** Get parser-level metadata. */
|
|
94
109
|
getMetadata(): SubtitleParserMetadata;
|
|
95
110
|
/** Get cue metadata for the given index. */
|
|
@@ -98,6 +113,14 @@ export declare class VobSubParserLowLevel {
|
|
|
98
113
|
* Render subtitle at the given timestamp in seconds.
|
|
99
114
|
*/
|
|
100
115
|
renderAtTimestamp(timeSeconds: number): SubtitleData | undefined;
|
|
116
|
+
/**
|
|
117
|
+
* Render flattened frame pixels at the given index.
|
|
118
|
+
*/
|
|
119
|
+
renderFrameDataAtIndex(index: number, options?: SubtitleFrameRenderOptions): SubtitleRenderedFrameData | undefined;
|
|
120
|
+
/**
|
|
121
|
+
* Render flattened frame pixels at the given timestamp in seconds.
|
|
122
|
+
*/
|
|
123
|
+
renderFrameDataAtTimestamp(timeSeconds: number, options?: SubtitleFrameRenderOptions): SubtitleRenderedFrameData | undefined;
|
|
101
124
|
/**
|
|
102
125
|
* Convert WASM frame to SubtitleData.
|
|
103
126
|
*/
|
|
@@ -126,6 +149,7 @@ export declare class VobSubParserLowLevel {
|
|
|
126
149
|
* Dispose of resources.
|
|
127
150
|
*/
|
|
128
151
|
dispose(): void;
|
|
152
|
+
private emitWarning;
|
|
129
153
|
}
|
|
130
154
|
/**
|
|
131
155
|
* Unified subtitle parser that handles both PGS and VobSub formats.
|
|
@@ -134,7 +158,9 @@ export declare class UnifiedSubtitleParser {
|
|
|
134
158
|
private renderer;
|
|
135
159
|
private timestamps;
|
|
136
160
|
private cueMetadataCache;
|
|
137
|
-
|
|
161
|
+
private readonly debug;
|
|
162
|
+
private readonly onWarning?;
|
|
163
|
+
constructor(options?: SubtitleDiagnosticsOptions);
|
|
138
164
|
/**
|
|
139
165
|
* Load PGS subtitle data.
|
|
140
166
|
*/
|
|
@@ -173,6 +199,7 @@ export declare class UnifiedSubtitleParser {
|
|
|
173
199
|
* Render subtitle at the given index.
|
|
174
200
|
*/
|
|
175
201
|
renderAtIndex(index: number): SubtitleData | undefined;
|
|
202
|
+
getLastRenderIssue(): string | null;
|
|
176
203
|
/** Get parser-level metadata. */
|
|
177
204
|
getMetadata(): SubtitleParserMetadata | null;
|
|
178
205
|
/** Get cue metadata for the given index. */
|
|
@@ -181,6 +208,14 @@ export declare class UnifiedSubtitleParser {
|
|
|
181
208
|
* Render subtitle at the given timestamp in seconds.
|
|
182
209
|
*/
|
|
183
210
|
renderAtTimestamp(timeSeconds: number): SubtitleData | undefined;
|
|
211
|
+
/**
|
|
212
|
+
* Render flattened frame pixels at the given index.
|
|
213
|
+
*/
|
|
214
|
+
renderFrameDataAtIndex(index: number, options?: SubtitleFrameRenderOptions): SubtitleRenderedFrameData | undefined;
|
|
215
|
+
/**
|
|
216
|
+
* Render flattened frame pixels at the given timestamp in seconds.
|
|
217
|
+
*/
|
|
218
|
+
renderFrameDataAtTimestamp(timeSeconds: number, options?: SubtitleFrameRenderOptions): SubtitleRenderedFrameData | undefined;
|
|
184
219
|
/**
|
|
185
220
|
* Convert WASM result to SubtitleData.
|
|
186
221
|
*/
|
|
@@ -193,5 +228,10 @@ export declare class UnifiedSubtitleParser {
|
|
|
193
228
|
* Dispose of resources.
|
|
194
229
|
*/
|
|
195
230
|
dispose(): void;
|
|
231
|
+
private emitWarning;
|
|
196
232
|
}
|
|
233
|
+
/**
|
|
234
|
+
* Open subtitle data with automatic format detection and return a normalized low-level handle.
|
|
235
|
+
*/
|
|
236
|
+
export declare function openSubtitles(source: AutoSubtitleSource, options?: SubtitleDiagnosticsOptions): Promise<OpenedSubtitles>;
|
|
197
237
|
//# sourceMappingURL=parsers.d.ts.map
|
package/dist/ts/parsers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/ts/parsers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,
|
|
1
|
+
{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/ts/parsers.ts"],"names":[],"mappings":"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"}
|