import { z } from "zod"; import { HashAlgorithmEnum } from '../../types/hash.types'; import { MonoMixType } from '../../utils/audio/AudioPostProcess.types'; /** * Preferred hardware acceleration mode for WebCodecs decoders and encoders. */ export declare enum PreferredAcceleration { HARDWARE = "prefer-hardware", SOFTWARE = "prefer-software", NO_PREFERENCE = "no-preference" } /** * Video codecs supported by the built-in export pipeline. */ export declare enum VideoCodec { H264 = "h264", VP8 = "vp8", VP9 = "vp9" } /** * Bitrate control modes for video encoding. */ export declare enum BitrateMode { CONSTANT = "constant", VARIABLE = "variable" } /** * Encoder tuning presets that trade throughput against visual quality. */ export declare enum PerformanceMode { REALTIME = "realtime", QUALITY = "quality" } /** * Automatic layout strategies used when the display size changes. */ export declare enum AutoLayoutMode { NONE = "none", BOTH = "both", PREFER_WIDTH = "prefer-width", PREFER_HEIGHT = "prefer-height" } /** * Zod schema for serialized project settings. */ export declare const SettingsSchema: z.ZodObject<{ m3u8MaxResolution: z.ZodDefault>>; useInternalTranscoder: z.ZodDefault>; clipAudioStoreSamples: z.ZodDefault>; clipAudioSampleRate: z.ZodDefault>; clipAudioSampleForceMono: z.ZodDefault>; clipAudioMonoMixType: z.ZodDefault>>; clipAudioMonoChannelsWeight: z.ZodDefault>>; clipVideoStoreSamples: z.ZodDefault>; clipVideoStoreFilmstrip: z.ZodDefault>; clipVideoFilmstripInterval: z.ZodDefault>; clipVideoFilmstripMaxFrames: z.ZodDefault>; clipVideoFilmstripMaxHeight: z.ZodDefault>; clipVideoFilmstripMaxWidth: z.ZodDefault>; clipVideoFilmstripMaxWorkers: z.ZodDefault>; clipVideoFilmstripKeyframesOnly: z.ZodDefault>; clipAudioSeekThreshold: z.ZodDefault>; clipVideoSeekThreshold: z.ZodDefault>; clipVideoDynamicLoad: z.ZodDefault>; clipVideoDynamicLoadTime: z.ZodDefault>; renderShowPreview: z.ZodDefault>; renderMaxQueueSize: z.ZodDefault>; renderThrottleFactor: z.ZodDefault>; renderAudioUseWorker: z.ZodDefault>; renderCancelFailTimeout: z.ZodDefault>; renderVideoUseDirectFrames: z.ZodDefault>; renderUseChunkedOutput: z.ZodDefault>; renderChunkedOutputMaxSize: z.ZodDefault>; renderFixAntialiasDiagonal: z.ZodDefault>; decoderUseWebCodecs: z.ZodDefault>; decoderPreferredAcceleration: z.ZodDefault>>; decoderUseSeparateWorker: z.ZodDefault>; decoderUseSubImage: z.ZodDefault>; encoderCodec: z.ZodDefault>>; encoderUseWebCodecs: z.ZodDefault>; encoderUseAlpha: z.ZodDefault>; encoderBitrate: z.ZodDefault>; encoderBitrateMode: z.ZodDefault>>; encoderPerformanceMode: z.ZodDefault>>; encoderDeadline: z.ZodDefault>; encoderCrf: z.ZodDefault>; encoderForcedCodecRFCString: z.ZodDefault>; encoderPreferredAcceleration: z.ZodDefault>>; encoderKeyframeInterval: z.ZodDefault>; subtitlesScaleOnResize: z.ZodDefault>; subtitlesAutoWrapOnResize: z.ZodDefault>; viewAutoLayoutOnResize: z.ZodDefault>>; mediaHashAlgorithm: z.ZodDefault>>; }, "strip", z.ZodTypeAny, { m3u8MaxResolution: [number, number]; useInternalTranscoder: boolean; clipAudioStoreSamples: boolean; clipAudioSampleRate: number; clipAudioSampleForceMono: boolean; clipAudioMonoMixType: MonoMixType; clipAudioMonoChannelsWeight: number[]; clipVideoStoreSamples: boolean; clipVideoStoreFilmstrip: boolean; clipVideoFilmstripInterval: number; clipVideoFilmstripMaxFrames: number; clipVideoFilmstripMaxHeight: number; clipVideoFilmstripMaxWidth: number; clipVideoFilmstripMaxWorkers: number; clipVideoFilmstripKeyframesOnly: boolean; clipAudioSeekThreshold: number; clipVideoSeekThreshold: number; clipVideoDynamicLoad: boolean; clipVideoDynamicLoadTime: number; renderShowPreview: boolean; renderMaxQueueSize: number; renderThrottleFactor: number; renderAudioUseWorker: boolean; renderCancelFailTimeout: number; renderVideoUseDirectFrames: boolean; renderUseChunkedOutput: boolean; renderChunkedOutputMaxSize: number; renderFixAntialiasDiagonal: boolean; decoderUseWebCodecs: boolean; decoderPreferredAcceleration: PreferredAcceleration; decoderUseSeparateWorker: boolean; decoderUseSubImage: boolean; encoderCodec: VideoCodec; encoderUseWebCodecs: boolean; encoderUseAlpha: boolean; encoderBitrate: number; encoderBitrateMode: BitrateMode; encoderPerformanceMode: PerformanceMode; encoderDeadline: number; encoderCrf: number; encoderForcedCodecRFCString: string; encoderPreferredAcceleration: PreferredAcceleration; encoderKeyframeInterval: number; subtitlesScaleOnResize: boolean; subtitlesAutoWrapOnResize: boolean; viewAutoLayoutOnResize: AutoLayoutMode; mediaHashAlgorithm: HashAlgorithmEnum; }, { m3u8MaxResolution?: [number, number] | undefined; useInternalTranscoder?: boolean | undefined; clipAudioStoreSamples?: boolean | undefined; clipAudioSampleRate?: number | undefined; clipAudioSampleForceMono?: boolean | undefined; clipAudioMonoMixType?: MonoMixType | undefined; clipAudioMonoChannelsWeight?: number[] | undefined; clipVideoStoreSamples?: boolean | undefined; clipVideoStoreFilmstrip?: boolean | undefined; clipVideoFilmstripInterval?: number | undefined; clipVideoFilmstripMaxFrames?: number | undefined; clipVideoFilmstripMaxHeight?: number | undefined; clipVideoFilmstripMaxWidth?: number | undefined; clipVideoFilmstripMaxWorkers?: number | undefined; clipVideoFilmstripKeyframesOnly?: boolean | undefined; clipAudioSeekThreshold?: number | undefined; clipVideoSeekThreshold?: number | undefined; clipVideoDynamicLoad?: boolean | undefined; clipVideoDynamicLoadTime?: number | undefined; renderShowPreview?: boolean | undefined; renderMaxQueueSize?: number | undefined; renderThrottleFactor?: number | undefined; renderAudioUseWorker?: boolean | undefined; renderCancelFailTimeout?: number | undefined; renderVideoUseDirectFrames?: boolean | undefined; renderUseChunkedOutput?: boolean | undefined; renderChunkedOutputMaxSize?: number | undefined; renderFixAntialiasDiagonal?: boolean | undefined; decoderUseWebCodecs?: boolean | undefined; decoderPreferredAcceleration?: PreferredAcceleration | undefined; decoderUseSeparateWorker?: boolean | undefined; decoderUseSubImage?: boolean | undefined; encoderCodec?: VideoCodec | undefined; encoderUseWebCodecs?: boolean | undefined; encoderUseAlpha?: boolean | undefined; encoderBitrate?: number | undefined; encoderBitrateMode?: BitrateMode | undefined; encoderPerformanceMode?: PerformanceMode | undefined; encoderDeadline?: number | undefined; encoderCrf?: number | undefined; encoderForcedCodecRFCString?: string | undefined; encoderPreferredAcceleration?: PreferredAcceleration | undefined; encoderKeyframeInterval?: number | undefined; subtitlesScaleOnResize?: boolean | undefined; subtitlesAutoWrapOnResize?: boolean | undefined; viewAutoLayoutOnResize?: AutoLayoutMode | undefined; mediaHashAlgorithm?: HashAlgorithmEnum | undefined; }>; /** * Stores project-wide runtime and export settings used by the engine, renderer, media pipeline, and subtitles. */ export declare class Settings { private m3u8MaxResolution; private useInternalTranscoder; private clipAudioStoreSamples; private clipAudioSampleRate; private clipAudioSampleForceMono; private clipAudioMonoMixType; private clipAudioMonoChannelsWeight; private clipVideoStoreSamples; private clipVideoStoreFilmstrip; private clipVideoFilmstripInterval; private clipVideoFilmstripMaxFrames; private clipVideoFilmstripMaxHeight; private clipVideoFilmstripMaxWidth; private clipVideoFilmstripMaxWorkers; private clipVideoFilmstripKeyframesOnly; private clipAudioSeekThreshold; private clipVideoSeekThreshold; private clipVideoDynamicLoad; private clipVideoDynamicLoadTime; private decoderUseWebCodecs; private decoderPreferredAcceleration; private decoderUseSeparateWorker; private decoderUseSubImage; private encoderCodec; private encoderForcedCodecRFCString; private encoderBitrate; private encoderBitrateMode; private encoderPerformanceMode; private encoderUseWebCodecs; private encoderUseAlpha; private encoderDeadline; private encoderCrf; private encoderPreferredAcceleration; private encoderKeyframeInterval; private renderShowPreview; private renderMaxQueueSize; private renderThrottleFactor; private renderAudioUseWorker; private renderCancelFailTimeout; private renderVideoUseDirectFrames; private renderUseChunkedOutput; private renderChunkedOutputMaxSize; private renderFixAntialiasDiagonal; private subtitlesScaleOnResize; private subtitlesAutoWrapOnResize; private viewAutoLayoutOnResize; private mediaHashAlgorithm; private readonly defaultSettings; /** * Creates a settings object initialized with SDK defaults. */ constructor(); /** * Returns the immutable default settings payload derived from {@link SettingsSchema}. * * @returns The default settings object. */ getDefaultSettings(): { m3u8MaxResolution: [number, number]; useInternalTranscoder: boolean; clipAudioStoreSamples: boolean; clipAudioSampleRate: number; clipAudioSampleForceMono: boolean; clipAudioMonoMixType: MonoMixType; clipAudioMonoChannelsWeight: number[]; clipVideoStoreSamples: boolean; clipVideoStoreFilmstrip: boolean; clipVideoFilmstripInterval: number; clipVideoFilmstripMaxFrames: number; clipVideoFilmstripMaxHeight: number; clipVideoFilmstripMaxWidth: number; clipVideoFilmstripMaxWorkers: number; clipVideoFilmstripKeyframesOnly: boolean; clipAudioSeekThreshold: number; clipVideoSeekThreshold: number; clipVideoDynamicLoad: boolean; clipVideoDynamicLoadTime: number; renderShowPreview: boolean; renderMaxQueueSize: number; renderThrottleFactor: number; renderAudioUseWorker: boolean; renderCancelFailTimeout: number; renderVideoUseDirectFrames: boolean; renderUseChunkedOutput: boolean; renderChunkedOutputMaxSize: number; renderFixAntialiasDiagonal: boolean; decoderUseWebCodecs: boolean; decoderPreferredAcceleration: PreferredAcceleration; decoderUseSeparateWorker: boolean; decoderUseSubImage: boolean; encoderCodec: VideoCodec; encoderUseWebCodecs: boolean; encoderUseAlpha: boolean; encoderBitrate: number; encoderBitrateMode: BitrateMode; encoderPerformanceMode: PerformanceMode; encoderDeadline: number; encoderCrf: number; encoderForcedCodecRFCString: string; encoderPreferredAcceleration: PreferredAcceleration; encoderKeyframeInterval: number; subtitlesScaleOnResize: boolean; subtitlesAutoWrapOnResize: boolean; viewAutoLayoutOnResize: AutoLayoutMode; mediaHashAlgorithm: HashAlgorithmEnum; }; setClipAudioStoreSamples(storeSamples: boolean): void; getClipAudioStoreSamples(): boolean; setClipAudioSampleRate(sampleRate: number): void; getClipAudioSampleRate(): number; setClipAudioSampleForceMono(forceMono: boolean): void; getClipAudioSampleForceMono(): boolean; setClipAudioMonoMixType(mixType: MonoMixType): void; getClipAudioMonoMixType(): MonoMixType; setClipAudioMonoChannelsWeight(weights: number[]): void; getClipAudioMonoChannelsWeight(): number[]; setClipVideoStoreSamples(storeSamples: boolean): void; getClipVideoStoreSamples(): boolean; setClipVideoStoreFilmstrip(storeFilmstrip: boolean): void; getClipVideoStoreFilmstrip(): boolean; setClipVideoFilmstripInterval(interval: number): void; getClipVideoFilmstripInterval(): number; setClipVideoFilmstripMaxFrames(maxFrames: number): void; getClipVideoFilmstripMaxFrames(): number; setClipVideoFilmstripMaxHeight(maxHeight: number): void; getClipVideoFilmstripMaxHeight(): number; setClipVideoFilmstripMaxWidth(maxWidth: number): void; getClipVideoFilmstripMaxWidth(): number; setClipVideoFilmstripMaxWorkers(maxWorkers: number): void; getClipVideoFilmstripMaxWorkers(): number; setClipVideoFilmstripKeyframesOnly(keyframesOnly: boolean): void; getClipVideoFilmstripKeyframesOnly(): boolean; setClipAudioSeekThreshold(threshold: number): void; getClipAudioSeekThreshold(): number; setClipVideoSeekThreshold(threshold: number): void; getClipVideoSeekThreshold(): number; setClipVideoDynamicLoad(enabled: boolean): void; getClipVideoDynamicLoad(): boolean; setClipVideoDynamicLoadTime(seconds: number): void; getClipVideoDynamicLoadTime(): number; setEncoderCrf(crf: number): void; getEncoderCrf(): number; setEncoderDeadline(deadline: number): void; getEncoderDeadline(): number; setEncoderPerformanceMode(mode: PerformanceMode): void; getEncoderPerformanceMode(): PerformanceMode; setEncoderBitrate(bitrate: number): void; getEncoderBitrate(): number; setEncoderBitrateMode(mode: BitrateMode): void; getEncoderBitrateMode(): BitrateMode; setEncoderUseAlpha(use: boolean): void; getEncoderUseAlpha(): boolean; setEncoderUseWebCodecs(use: boolean): void; getEncoderUseWebCodecs(): boolean; setEncoderCodec(codec: VideoCodec): void; getEncoderCodec(): VideoCodec; setEncoderForcedCodecRFCString(codec: string): void; getEncoderForcedCodecRFCString(): string; setEncoderKeyframeInterval(interval: number): void; getEncoderKeyframeInterval(): number; /** * Sets the visibility of the render preview. * * @deprecated - No longer used as there is no intermediate framebuffer * @param show - A boolean indicating whether to show the render preview. */ setRenderShowPreview(show: boolean): void; /** * Gets the visibility of the render preview. * * @deprecated - No longer used as there is no intermediate framebuffer * @returns A boolean indicating whether the render preview is visible. */ getRenderShowPreview(): boolean; setRenderMaxQueueSize(size: number): void; getRenderMaxQueueSize(): number; setRenderThrottleFactor(factor: number): void; getRenderThrottleFactor(): number; setRenderAudioUseWorker(use: boolean): void; getRenderAudioUseWorker(): boolean; setRenderCancelFailTimeout(timeout: number): void; getRenderCancelFailTimeout(): number; setRenderVideoUseDirectFrames(use: boolean): void; getRenderVideoUseDirectFrames(): boolean; setRenderUseChunkedOutput(use: boolean): void; getRenderUseChunkedOutput(): boolean; setRenderChunkedOutputMaxSize(size: number): void; getRenderChunkedOutputMaxSize(): number; setRenderFixAntialiasDiagonal(use: boolean): void; getRenderFixAntialiasDiagonal(): boolean; setDecoderUseWebCodecs(use: boolean): void; getDecoderUseWebCodecs(): boolean; setDecoderPreferredAcceleration(acceleration: PreferredAcceleration): void; getDecoderPreferredAcceleration(): PreferredAcceleration; setDecoderUseSeparateWorker(use: boolean): void; getDecoderUseSeparateWorker(): boolean; setDecoderUseSubImage(use: boolean): void; getDecoderUseSubImage(): boolean; setEncoderPreferredAcceleration(acceleration: PreferredAcceleration): void; getEncoderPreferredAcceleration(): PreferredAcceleration; setM3u8MaxResolution(width: number, height: number): void; getM3u8MaxResolution(): number[]; setUseInternalTranscoder(use: boolean): void; getUseInternalTranscoder(): boolean; setSubtitlesScaleOnResize(scale: boolean): void; getSubtitlesScaleOnResize(): boolean; setSubtitlesAutoWrapOnResize(autoWrap: boolean): void; getSubtitlesAutoWrapOnResize(): boolean; setViewAutoLayoutOnResize(autoLayoutMode: AutoLayoutMode): void; getViewAutoLayoutOnResize(): AutoLayoutMode; setMediaHashAlgorithm(algorithm: HashAlgorithmEnum): void; getMediaHashAlgorithm(): HashAlgorithmEnum; /** * Serializes the current settings into a schema-validated plain object. * * @returns The serialized settings payload. */ serialize(): { m3u8MaxResolution: [number, number]; useInternalTranscoder: boolean; clipAudioStoreSamples: boolean; clipAudioSampleRate: number; clipAudioSampleForceMono: boolean; clipAudioMonoMixType: MonoMixType; clipAudioMonoChannelsWeight: number[]; clipVideoStoreSamples: boolean; clipVideoStoreFilmstrip: boolean; clipVideoFilmstripInterval: number; clipVideoFilmstripMaxFrames: number; clipVideoFilmstripMaxHeight: number; clipVideoFilmstripMaxWidth: number; clipVideoFilmstripMaxWorkers: number; clipVideoFilmstripKeyframesOnly: boolean; clipAudioSeekThreshold: number; clipVideoSeekThreshold: number; clipVideoDynamicLoad: boolean; clipVideoDynamicLoadTime: number; renderShowPreview: boolean; renderMaxQueueSize: number; renderThrottleFactor: number; renderAudioUseWorker: boolean; renderCancelFailTimeout: number; renderVideoUseDirectFrames: boolean; renderUseChunkedOutput: boolean; renderChunkedOutputMaxSize: number; renderFixAntialiasDiagonal: boolean; decoderUseWebCodecs: boolean; decoderPreferredAcceleration: PreferredAcceleration; decoderUseSeparateWorker: boolean; decoderUseSubImage: boolean; encoderCodec: VideoCodec; encoderUseWebCodecs: boolean; encoderUseAlpha: boolean; encoderBitrate: number; encoderBitrateMode: BitrateMode; encoderPerformanceMode: PerformanceMode; encoderDeadline: number; encoderCrf: number; encoderForcedCodecRFCString: string; encoderPreferredAcceleration: PreferredAcceleration; encoderKeyframeInterval: number; subtitlesScaleOnResize: boolean; subtitlesAutoWrapOnResize: boolean; viewAutoLayoutOnResize: AutoLayoutMode; mediaHashAlgorithm: HashAlgorithmEnum; }; /** * Creates a settings instance from serialized data. * * @param data Serialized settings payload to validate and load. * @returns The deserialized settings instance. */ static deserialize(data: object): Settings; }