@rendley/sdk 1.14.1 → 1.14.3

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.
@@ -1,4 +1,4 @@
1
- import { DemuxerPacket, FFFSMountOptions, FFFSPath, FFFSType, FFMessageFrameData, FFMessageLoadConfig, FFMessageRenderSettings, FileData, FSNode, IsFirst, LogEventCallback, OK, ProgressEventCallback, FFMessageMuxerData, FFMessageInitMuxerData, FFMessageAuthentificateData, FFMessageFetchTSChunksData, FFMessageTranscodeData, FFMessageFrame, FFMessageChunkedMuxData } from "./types";
1
+ import { AudioDemuxerPacket, DemuxerPacket, FFFSMountOptions, FFFSPath, FFFSType, FFMessageFrameData, FFMessageLoadConfig, FFMessageRenderSettings, FileData, FSNode, IsFirst, LogEventCallback, OK, ProgressEventCallback, FFMessageMuxerData, FFMessageInitMuxerData, FFMessageAuthentificateData, FFMessageFetchTSChunksData, FFMessageTranscodeData, FFMessageFrame, FFMessageChunkedMuxData } from "./types";
2
2
  import { MediaInfo } from '../../modules/ffmpeg/types/FFmpeg.types';
3
3
  import { HashAlgorithmEnum } from '../../types/hash.types';
4
4
  type FFMessageOptions = {
@@ -173,6 +173,10 @@ export declare class FFmpeg {
173
173
  closeDemuxer: (id: string, { signal }?: FFMessageOptions) => Promise<OK>;
174
174
  seekDemuxer: (id: string, time: number, { signal }?: FFMessageOptions) => Promise<OK>;
175
175
  getNextPacketDemuxer: (id: string, { signal }?: FFMessageOptions) => Promise<DemuxerPacket | undefined>;
176
+ initAudioDemuxer: (id: string, path: string, audioStream?: number, { signal }?: FFMessageOptions) => Promise<OK>;
177
+ closeAudioDemuxer: (id: string, { signal }?: FFMessageOptions) => Promise<OK>;
178
+ seekAudioDemuxer: (id: string, time: number, { signal }?: FFMessageOptions) => Promise<OK>;
179
+ getNextPacketAudioDemuxer: (id: string, { signal }?: FFMessageOptions) => Promise<AudioDemuxerPacket | undefined>;
176
180
  initMuxer: (initSettings: FFMessageInitMuxerData, { signal }?: FFMessageOptions) => Promise<OK>;
177
181
  addChunkMuxer: (data: FFMessageMuxerData, { signal }?: FFMessageOptions) => Promise<OK>;
178
182
  closeMuxer: ({ signal }?: FFMessageOptions) => Promise<OK>;
@@ -33,6 +33,10 @@ export declare enum FFMessageType {
33
33
  DEMUXER_SEEK = "DEMUXER_SEEK",
34
34
  DEMUXER_CLOSE = "DEMUXER_CLOSE",
35
35
  DEMUXER_GET_PACKET = "DEMUXER_GET_PACKET",
36
+ AUDIO_DEMUXER_INIT = "AUDIO_DEMUXER_INIT",
37
+ AUDIO_DEMUXER_SEEK = "AUDIO_DEMUXER_SEEK",
38
+ AUDIO_DEMUXER_CLOSE = "AUDIO_DEMUXER_CLOSE",
39
+ AUDIO_DEMUXER_GET_PACKET = "AUDIO_DEMUXER_GET_PACKET",
36
40
  MUXER_INIT = "MUXER_INIT",
37
41
  MUXER_ADD_VIDEO_CHUNK = "MUXER_ADD_VIDEO_CHUNK",
38
42
  MUXER_CLOSE = "MUXER_FINALIZE",
@@ -68,6 +68,18 @@ export interface FFMessageSeekDemuxerData {
68
68
  export interface FFMessageIdDemuxerData {
69
69
  id: string;
70
70
  }
71
+ export interface FFMessageInitAudioDemuxerData {
72
+ id: string;
73
+ path: FFFSPath;
74
+ audioStream: number;
75
+ }
76
+ export interface FFMessageSeekAudioDemuxerData {
77
+ id: string;
78
+ time: number;
79
+ }
80
+ export interface FFMessageIdAudioDemuxerData {
81
+ id: string;
82
+ }
71
83
  export interface FFMessageMuxerData {
72
84
  packet: Uint8Array;
73
85
  timestamp: bigint;
@@ -215,7 +227,7 @@ export interface FFMessageMountData {
215
227
  export interface FFMessageUnmountData {
216
228
  mountPoint: FFFSPath;
217
229
  }
218
- export type FFMessageData = FFMessageLoadConfig | FFMessageExecData | FFMessageWriteFileData | FFMessageReadFileData | FFMessageReadFilesAsBlobData | FFMessageDeleteFileData | FFMessageRenameData | FFMessageCreateDirData | FFMessageListDirData | FFMessageDeleteDirData | FFMessageMountData | FFMessageUnmountData | FFMessageGetInfoData | FFMessageGetSubtitlesData | FFMessageFrameData | FFMessageFrame | FFMessageRenderSettings | FFMessageChunkedMuxData | FFMessageInitDemuxerData | FFMessageSeekDemuxerData | FFMessageIdDemuxerData | FFMessageMuxerData | FFMessageAuthentificateData | FFMessageFetchTSChunksData | FFMessageTranscodeData | FFMessageCreateArchiveData | FFMessageOpenArchiveData | FFMessageSaveArchiveData | FFMessageCloseArchiveData | FFMessageAddDataToArchiveData | FFMessageReadFileFromArchiveData | FFMessageExtractAllFromArchiveData | FFMessageAddFileToArchiveData | FFMessageAddFilesToArchiveData | FFMessageListFilesFromArchiveData | FFMessageExtractFileFromArchiveData | FFMessagePathExistsData;
230
+ export type FFMessageData = FFMessageLoadConfig | FFMessageExecData | FFMessageWriteFileData | FFMessageReadFileData | FFMessageReadFilesAsBlobData | FFMessageDeleteFileData | FFMessageRenameData | FFMessageCreateDirData | FFMessageListDirData | FFMessageDeleteDirData | FFMessageMountData | FFMessageUnmountData | FFMessageGetInfoData | FFMessageGetSubtitlesData | FFMessageFrameData | FFMessageFrame | FFMessageRenderSettings | FFMessageChunkedMuxData | FFMessageInitDemuxerData | FFMessageSeekDemuxerData | FFMessageIdDemuxerData | FFMessageInitAudioDemuxerData | FFMessageSeekAudioDemuxerData | FFMessageIdAudioDemuxerData | FFMessageMuxerData | FFMessageAuthentificateData | FFMessageFetchTSChunksData | FFMessageTranscodeData | FFMessageCreateArchiveData | FFMessageOpenArchiveData | FFMessageSaveArchiveData | FFMessageCloseArchiveData | FFMessageAddDataToArchiveData | FFMessageReadFileFromArchiveData | FFMessageExtractAllFromArchiveData | FFMessageAddFileToArchiveData | FFMessageAddFilesToArchiveData | FFMessageListFilesFromArchiveData | FFMessageExtractFileFromArchiveData | FFMessagePathExistsData;
219
231
  export interface Message {
220
232
  type: string;
221
233
  data?: FFMessageData;
@@ -240,6 +252,11 @@ export interface DemuxerPacket {
240
252
  timestamp: bigint;
241
253
  duration: bigint;
242
254
  }
255
+ export interface AudioDemuxerPacket {
256
+ packet: Uint8Array;
257
+ timestamp: bigint;
258
+ duration: bigint;
259
+ }
243
260
  export type ExitCode = number;
244
261
  export type ErrorMessage = string;
245
262
  export type FileData = Uint8Array | string;
@@ -919,9 +919,9 @@ export declare const ClipSchema: z.ZodObject<{
919
919
  }, "strip", z.ZodTypeAny, {
920
920
  type: string;
921
921
  id: string;
922
+ duration: number;
922
923
  subtitlesOffset: number;
923
924
  startTime: number;
924
- duration: number;
925
925
  leftTrim: number;
926
926
  rightTrim: number;
927
927
  filters: {
@@ -1015,9 +1015,9 @@ export declare const ClipSchema: z.ZodObject<{
1015
1015
  }, {
1016
1016
  type: string;
1017
1017
  id: string;
1018
+ duration: number;
1018
1019
  subtitlesOffset: number;
1019
1020
  startTime: number;
1020
- duration: number;
1021
1021
  leftTrim: number;
1022
1022
  rightTrim: number;
1023
1023
  filters: {
@@ -1335,9 +1335,9 @@ export declare class Clip<T extends PIXI.Sprite = PIXI.Sprite, K extends ClipSty
1335
1335
  serialize(): {
1336
1336
  type: string;
1337
1337
  id: string;
1338
+ duration: number;
1338
1339
  subtitlesOffset: number;
1339
1340
  startTime: number;
1340
- duration: number;
1341
1341
  leftTrim: number;
1342
1342
  rightTrim: number;
1343
1343
  filters: {
@@ -91,10 +91,10 @@ export declare class AudioClip extends Clip {
91
91
  serialize(): {
92
92
  type: string;
93
93
  id: string;
94
+ duration: number;
94
95
  mediaDataId: string;
95
96
  subtitlesOffset: number;
96
97
  startTime: number;
97
- duration: number;
98
98
  leftTrim: number;
99
99
  rightTrim: number;
100
100
  filters: {
@@ -11,9 +11,9 @@ export declare class CustomClip extends Clip<PIXI.Sprite, ClipStyle> {
11
11
  serialize(): {
12
12
  type: string;
13
13
  id: string;
14
+ duration: number;
14
15
  subtitlesOffset: number;
15
16
  startTime: number;
16
- duration: number;
17
17
  leftTrim: number;
18
18
  rightTrim: number;
19
19
  filters: {
@@ -28,6 +28,7 @@ declare const HtmlTextStyleSchema: zod.ZodObject<{
28
28
  }, "strip", zod.ZodTypeAny, {
29
29
  color: string;
30
30
  padding: number;
31
+ align: "left" | "center" | "right" | "justify";
31
32
  fontSize: number;
32
33
  fontWeight: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900";
33
34
  fontFamily: string;
@@ -42,7 +43,6 @@ declare const HtmlTextStyleSchema: zod.ZodObject<{
42
43
  dropShadowBlur: number;
43
44
  dropShadowColor: string;
44
45
  dropShadowDistance: number;
45
- align: "left" | "center" | "right" | "justify";
46
46
  breakWords: boolean;
47
47
  fontVariant: "normal" | "small-caps";
48
48
  stroke: string;
@@ -91,6 +91,7 @@ export declare class HtmlTextClip extends Clip<PIXI.Sprite, ClipStyle<PIXI.Sprit
91
91
  getHtmlStyle(): {
92
92
  color: string;
93
93
  padding: number;
94
+ align: "left" | "center" | "right" | "justify";
94
95
  fontSize: number;
95
96
  fontWeight: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900";
96
97
  fontFamily: string;
@@ -105,7 +106,6 @@ export declare class HtmlTextClip extends Clip<PIXI.Sprite, ClipStyle<PIXI.Sprit
105
106
  dropShadowBlur: number;
106
107
  dropShadowColor: string;
107
108
  dropShadowDistance: number;
108
- align: "left" | "center" | "right" | "justify";
109
109
  breakWords: boolean;
110
110
  fontVariant: "normal" | "small-caps";
111
111
  stroke: string;
@@ -120,9 +120,9 @@ export declare class HtmlTextClip extends Clip<PIXI.Sprite, ClipStyle<PIXI.Sprit
120
120
  serialize(): {
121
121
  type: string;
122
122
  id: string;
123
+ duration: number;
123
124
  subtitlesOffset: number;
124
125
  startTime: number;
125
- duration: number;
126
126
  leftTrim: number;
127
127
  rightTrim: number;
128
128
  filters: {
@@ -138,6 +138,7 @@ export declare class HtmlTextClip extends Clip<PIXI.Sprite, ClipStyle<PIXI.Sprit
138
138
  htmlStyle: {
139
139
  color: string;
140
140
  padding: number;
141
+ align: "left" | "center" | "right" | "justify";
141
142
  fontSize: number;
142
143
  fontWeight: "normal" | "bold" | "bolder" | "lighter" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900";
143
144
  fontFamily: string;
@@ -152,7 +153,6 @@ export declare class HtmlTextClip extends Clip<PIXI.Sprite, ClipStyle<PIXI.Sprit
152
153
  dropShadowBlur: number;
153
154
  dropShadowColor: string;
154
155
  dropShadowDistance: number;
155
- align: "left" | "center" | "right" | "justify";
156
156
  breakWords: boolean;
157
157
  fontVariant: "normal" | "small-caps";
158
158
  stroke: string;
@@ -163,8 +163,8 @@ export declare class HtmlTextClip extends Clip<PIXI.Sprite, ClipStyle<PIXI.Sprit
163
163
  name?: string | undefined;
164
164
  wrapMode?: import('../../../../types').WrapModeEnum | undefined;
165
165
  blendMode?: import('../../../../types').BlendModeEnum | undefined;
166
- mediaDataId?: string | undefined;
167
166
  style?: unknown;
167
+ mediaDataId?: string | undefined;
168
168
  customData?: [string, unknown][] | undefined;
169
169
  subtitlesId?: string | undefined;
170
170
  animationController?: {
@@ -187,9 +187,9 @@ export declare class LottieClip extends Clip<PIXI.Sprite, ClipStyle<PIXI.Sprite>
187
187
  serialize(): {
188
188
  type: string;
189
189
  id: string;
190
+ duration: number;
190
191
  subtitlesOffset: number;
191
192
  startTime: number;
192
- duration: number;
193
193
  leftTrim: number;
194
194
  rightTrim: number;
195
195
  filters: {
@@ -207,8 +207,8 @@ export declare class LottieClip extends Clip<PIXI.Sprite, ClipStyle<PIXI.Sprite>
207
207
  name?: string | undefined;
208
208
  wrapMode?: WrapModeEnum | undefined;
209
209
  blendMode?: import('../../../../types').BlendModeEnum | undefined;
210
- mediaDataId?: string | undefined;
211
210
  style?: unknown;
211
+ mediaDataId?: string | undefined;
212
212
  customData?: [string, unknown][] | undefined;
213
213
  subtitlesId?: string | undefined;
214
214
  animationController?: {
@@ -14,9 +14,9 @@ export declare class ShapeClip extends Clip<ShapeSprite, ShapeStyle> {
14
14
  serialize(): {
15
15
  type: string;
16
16
  id: string;
17
+ duration: number;
17
18
  subtitlesOffset: number;
18
19
  startTime: number;
19
- duration: number;
20
20
  leftTrim: number;
21
21
  rightTrim: number;
22
22
  filters: {
@@ -99,8 +99,8 @@ export declare const ShapeStyleSchema: z.ZodObject<{
99
99
  width: z.ZodOptional<z.ZodNumber>;
100
100
  alpha: z.ZodNumber;
101
101
  rotation: z.ZodNumber;
102
- mediaDataId: z.ZodOptional<z.ZodString>;
103
102
  height: z.ZodOptional<z.ZodNumber>;
103
+ mediaDataId: z.ZodOptional<z.ZodString>;
104
104
  clipId: z.ZodString;
105
105
  position: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
106
106
  crop: z.ZodDefault<z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>>;
@@ -202,8 +202,8 @@ export declare const ShapeStyleSchema: z.ZodObject<{
202
202
  relativeCornerRadius: boolean;
203
203
  hasFill: boolean;
204
204
  width?: number | undefined;
205
- mediaDataId?: string | undefined;
206
205
  height?: number | undefined;
206
+ mediaDataId?: string | undefined;
207
207
  cornerRadius?: [number, number, number, number] | undefined;
208
208
  fillColor?: string | undefined;
209
209
  strokeColor?: string | undefined;
@@ -240,8 +240,8 @@ export declare const ShapeStyleSchema: z.ZodObject<{
240
240
  position: [number, number];
241
241
  zIndex: number;
242
242
  width?: number | undefined;
243
- mediaDataId?: string | undefined;
244
243
  height?: number | undefined;
244
+ mediaDataId?: string | undefined;
245
245
  crop?: [number, number, number, number] | undefined;
246
246
  cropOffset?: [number, number] | undefined;
247
247
  zoom?: [number, number] | undefined;
@@ -333,8 +333,8 @@ export declare class ShapeStyle extends ClipStyle<ShapeSprite> {
333
333
  relativeCornerRadius: boolean;
334
334
  hasFill: boolean;
335
335
  width?: number | undefined;
336
- mediaDataId?: string | undefined;
337
336
  height?: number | undefined;
337
+ mediaDataId?: string | undefined;
338
338
  cornerRadius?: [number, number, number, number] | undefined;
339
339
  fillColor?: string | undefined;
340
340
  strokeColor?: string | undefined;
@@ -21,9 +21,9 @@ export declare class SvgClip extends Clip<PIXI.Sprite, ClipStyle<PIXI.Sprite>> {
21
21
  serialize(): {
22
22
  type: string;
23
23
  id: string;
24
+ duration: number;
24
25
  subtitlesOffset: number;
25
26
  startTime: number;
26
- duration: number;
27
27
  leftTrim: number;
28
28
  rightTrim: number;
29
29
  filters: {
@@ -23,9 +23,9 @@ export declare class TextClip extends Clip<TextSprite, TextStyle> {
23
23
  type: string;
24
24
  text: string;
25
25
  id: string;
26
+ duration: number;
26
27
  subtitlesOffset: number;
27
28
  startTime: number;
28
- duration: number;
29
29
  leftTrim: number;
30
30
  rightTrim: number;
31
31
  filters: {
@@ -40,8 +40,8 @@ export declare class TextClip extends Clip<TextSprite, TextStyle> {
40
40
  name?: string | undefined;
41
41
  wrapMode?: import('../../../../index').WrapModeEnum | undefined;
42
42
  blendMode?: import('../../../../index').BlendModeEnum | undefined;
43
- mediaDataId?: string | undefined;
44
43
  style?: unknown;
44
+ mediaDataId?: string | undefined;
45
45
  customData?: [string, unknown][] | undefined;
46
46
  subtitlesId?: string | undefined;
47
47
  animationController?: {
@@ -28,8 +28,8 @@ export declare const TextStyleSchema: z.ZodObject<{
28
28
  width: z.ZodOptional<z.ZodNumber>;
29
29
  alpha: z.ZodNumber;
30
30
  rotation: z.ZodNumber;
31
- mediaDataId: z.ZodOptional<z.ZodString>;
32
31
  height: z.ZodOptional<z.ZodNumber>;
32
+ mediaDataId: z.ZodOptional<z.ZodString>;
33
33
  clipId: z.ZodString;
34
34
  position: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
35
35
  crop: z.ZodDefault<z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>>;
@@ -88,8 +88,8 @@ export declare const TextStyleSchema: z.ZodObject<{
88
88
  dropShadowColor: string;
89
89
  dropShadowDistance: number;
90
90
  width?: number | undefined;
91
- mediaDataId?: string | undefined;
92
91
  height?: number | undefined;
92
+ mediaDataId?: string | undefined;
93
93
  cornerRadius?: [number, number, number, number] | undefined;
94
94
  }, {
95
95
  scale: [number, number];
@@ -106,8 +106,8 @@ export declare const TextStyleSchema: z.ZodObject<{
106
106
  fontStyle: "normal" | "italic" | "oblique";
107
107
  backgroundColor: string | null;
108
108
  width?: number | undefined;
109
- mediaDataId?: string | undefined;
110
109
  height?: number | undefined;
110
+ mediaDataId?: string | undefined;
111
111
  crop?: [number, number, number, number] | undefined;
112
112
  cropOffset?: [number, number] | undefined;
113
113
  zoom?: [number, number] | undefined;
@@ -222,8 +222,8 @@ export declare class TextStyle extends ClipStyle<TextSprite> {
222
222
  dropShadowColor: string;
223
223
  dropShadowDistance: number;
224
224
  width?: number | undefined;
225
- mediaDataId?: string | undefined;
226
225
  height?: number | undefined;
226
+ mediaDataId?: string | undefined;
227
227
  cornerRadius?: [number, number, number, number] | undefined;
228
228
  };
229
229
  static deserialize(payload: object): TextStyle;
@@ -31,6 +31,7 @@ export declare class VideoClip extends Clip<PIXI.Sprite, ClipStyle<PIXI.Sprite>>
31
31
  private freezeTime?;
32
32
  private actions;
33
33
  private isProcessing;
34
+ private lastProcessingAction;
34
35
  private lastUpdateTime;
35
36
  private lastStartTime;
36
37
  private lastLeftTrim;
@@ -63,6 +64,7 @@ export declare class VideoClip extends Clip<PIXI.Sprite, ClipStyle<PIXI.Sprite>>
63
64
  updateMediaData(newMediaId?: string, options?: ReplaceMediaOptions): Promise<boolean>;
64
65
  preload(currentTime: number): void;
65
66
  private addActionToQueue;
67
+ private setProcessingAction;
66
68
  private processNextQueue;
67
69
  private seekedCallback;
68
70
  private playingCallback;
@@ -167,10 +169,10 @@ export declare class VideoClip extends Clip<PIXI.Sprite, ClipStyle<PIXI.Sprite>>
167
169
  serialize(): {
168
170
  type: string;
169
171
  id: string;
172
+ duration: number;
170
173
  mediaDataId: string;
171
174
  subtitlesOffset: number;
172
175
  startTime: number;
173
- duration: number;
174
176
  leftTrim: number;
175
177
  rightTrim: number;
176
178
  filters: {
@@ -117,9 +117,7 @@ export declare class MediaData {
117
117
  private ensureWorkerFSRoot;
118
118
  private cleanupWorkerFSMount;
119
119
  private mountInputToWorkerFS;
120
- private deinterleaveAudioSamples;
121
- private mixToMono;
122
- private extractAudioSamples;
120
+ private doExtractAudioSamples;
123
121
  getAudioSamples(startTime: number, duration?: number): Float32Array[] | null;
124
122
  private checkPlaceholderClips;
125
123
  setCustomData(key: string, value: unknown, overwrite?: boolean): boolean;
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { HashAlgorithmEnum } from '../../types/hash.types';
3
+ import { MonoMixType } from '../../utils/audio/AudioPostProcess.types';
3
4
  export declare enum PreferredAcceleration {
4
5
  HARDWARE = "prefer-hardware",
5
6
  SOFTWARE = "prefer-software",
@@ -24,14 +25,6 @@ export declare enum AutoLayoutMode {
24
25
  PREFER_WIDTH = "prefer-width",
25
26
  PREFER_HEIGHT = "prefer-height"
26
27
  }
27
- export declare enum MonoMixType {
28
- AVERAGE = "average",
29
- ABSOLUTE_AVERAGE = "absolute-average",
30
- PEAK_MIN = "peak-min",
31
- PEAK_MAX = "peak-max",
32
- ABSOLUTE_MAX = "absolute-max",
33
- ABSOLUTE_MIN = "absolute-min"
34
- }
35
28
  export declare const SettingsSchema: z.ZodObject<{
36
29
  m3u8MaxResolution: z.ZodDefault<z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
37
30
  useInternalTranscoder: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
@@ -1 +1,2 @@
1
1
  export * from "./Settings";
2
+ export { MonoMixType } from '../../utils/audio/AudioPostProcess.types';
@@ -0,0 +1,19 @@
1
+ import { AudioPostProcessSettings } from "./AudioPostProcess.types";
2
+ export type { AudioPostProcessSettings } from "./AudioPostProcess.types";
3
+ export interface DecodeAndPostProcessResult {
4
+ channels: Float32Array[];
5
+ decodedChannels: number;
6
+ decodedDuration: number;
7
+ }
8
+ /**
9
+ * Send already-decoded channel data to the worker for resample + mono mix.
10
+ * Buffers are transferred (zero-copy) both ways.
11
+ */
12
+ export declare function postProcessAudioChannels(channels: Float32Array[], settings: AudioPostProcessSettings): Promise<Float32Array[]>;
13
+ /**
14
+ * Send raw encoded audio data to the worker for decode + resample + mono mix.
15
+ * When OfflineAudioContext is available in the worker (secure context), the entire
16
+ * pipeline runs off the main thread. Otherwise, decoding falls back to the main
17
+ * thread's AudioContext, with resample + mix still handled by the worker.
18
+ */
19
+ export declare function decodeAndPostProcessInWorker(audioData: ArrayBuffer, settings: AudioPostProcessSettings): Promise<DecodeAndPostProcessResult>;
@@ -0,0 +1,53 @@
1
+ export declare enum MonoMixType {
2
+ AVERAGE = "average",
3
+ ABSOLUTE_AVERAGE = "absolute-average",
4
+ PEAK_MIN = "peak-min",
5
+ PEAK_MAX = "peak-max",
6
+ ABSOLUTE_MAX = "absolute-max",
7
+ ABSOLUTE_MIN = "absolute-min"
8
+ }
9
+ export interface AudioPostProcessSettings {
10
+ inputSampleRate: number;
11
+ outputSampleRate: number;
12
+ forceMono: boolean;
13
+ monoMixType: MonoMixType;
14
+ monoChannelsWeight: number[];
15
+ }
16
+ export declare enum AudioPostProcessMsgType {
17
+ PROCESS = "process",
18
+ DECODE_AND_PROCESS = "decode_and_process",
19
+ RESULT = "result",
20
+ DECODE_UNSUPPORTED = "decode_unsupported",
21
+ ERROR = "error"
22
+ }
23
+ export interface AudioPostProcessRequest {
24
+ id: number;
25
+ type: AudioPostProcessMsgType.PROCESS;
26
+ channels: Float32Array[];
27
+ settings: AudioPostProcessSettings;
28
+ }
29
+ export interface AudioDecodeAndProcessRequest {
30
+ id: number;
31
+ type: AudioPostProcessMsgType.DECODE_AND_PROCESS;
32
+ audioData: ArrayBuffer;
33
+ settings: AudioPostProcessSettings;
34
+ }
35
+ export interface AudioPostProcessResultResponse {
36
+ id: number;
37
+ type: AudioPostProcessMsgType.RESULT;
38
+ channels: Float32Array[];
39
+ decodedChannels: number;
40
+ decodedDuration: number;
41
+ }
42
+ export interface AudioPostProcessDecodeUnsupportedResponse {
43
+ id: number;
44
+ type: AudioPostProcessMsgType.DECODE_UNSUPPORTED;
45
+ audioData: ArrayBuffer;
46
+ settings: AudioPostProcessSettings;
47
+ }
48
+ export interface AudioPostProcessErrorResponse {
49
+ id: number;
50
+ type: AudioPostProcessMsgType.ERROR;
51
+ error: string;
52
+ }
53
+ export type AudioPostProcessResponse = AudioPostProcessResultResponse | AudioPostProcessDecodeUnsupportedResponse | AudioPostProcessErrorResponse;
@@ -0,0 +1,2 @@
1
+ /// <reference no-default-lib="true"/>
2
+ export {};
@@ -0,0 +1,19 @@
1
+ import { MediaInfoStream } from '../../modules/ffmpeg/types/FFmpeg.types';
2
+ export interface AudioSampleExtractionParams {
3
+ mediaId: string;
4
+ mediaSource: Blob | File;
5
+ filename: string;
6
+ fileSize: number;
7
+ audioStream: MediaInfoStream | undefined;
8
+ storePath: string | undefined;
9
+ }
10
+ /**
11
+ * Main entry point for audio sample extraction.
12
+ *
13
+ * Strategy:
14
+ * 1. File < 1GB → decodeAudioData directly on the media source (no FFmpeg)
15
+ * 2. File >= 1GB, decoded samples fit in memory → FFmpeg demux audio stream, then decodeAudioData
16
+ * 3. Decoded samples would overflow or compressed audio too large → FFmpeg chunked extraction,
17
+ * decode + post-process per chunk, then join downsampled results
18
+ */
19
+ export declare function extractAudioSamples(params: AudioSampleExtractionParams): Promise<Float32Array[] | null>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rendley/sdk",
3
- "version": "1.14.1",
3
+ "version": "1.14.3",
4
4
  "license": "LICENSE",
5
5
  "author": "Onix Technologies",
6
6
  "homepage": "https://rendleysdk.com",