@@ -82,6 +82,110 @@ interface RendererFfmpegAudioMuxMetrics {
8282 muxedVideoBytes ?: number ;
8383}
8484
85+ interface RendererWindowsGpuExportSummary {
86+ success ?: boolean ;
87+ width ?: number ;
88+ height ?: number ;
89+ fps ?: number ;
90+ seconds ?: number ;
91+ mediaMs ?: number ;
92+ frames ?: number ;
93+ gpuDecodeSurface ?: boolean ;
94+ webcamOverlay ?: boolean ;
95+ cursorOverlay ?: boolean ;
96+ zoomOverlay ?: boolean ;
97+ surfacePoolSize ?: number ;
98+ adapterIndex ?: number ;
99+ adapterVendorId ?: number ;
100+ adapterDeviceId ?: number ;
101+ adapterDedicatedVideoMemoryMB ?: number ;
102+ encoderBackend ?: string ;
103+ encoderTuningApplied ?: boolean ;
104+ nvencOutputBytes ?: number ;
105+ initializeMs ?: number ;
106+ initCoInitializeMs ?: number ;
107+ initMfStartupMs ?: number ;
108+ initD3DDeviceMs ?: number ;
109+ initSourceReaderMs ?: number ;
110+ initWebcamReaderMs ?: number ;
111+ initVideoProcessorMs ?: number ;
112+ initTexturesMs ?: number ;
113+ initShaderPipelineMs ?: number ;
114+ initSinkWriterMs ?: number ;
115+ totalMs ?: number ;
116+ readMs ?: number ;
117+ clearMs ?: number ;
118+ videoProcessMs ?: number ;
119+ writeSampleMs ?: number ;
120+ finalizeMs ?: number ;
121+ realtimeMultiplier ?: number ;
122+ }
123+
124+ interface RendererNativeStaticLayoutChunkMetric {
125+ index : number ;
126+ startSec : number ;
127+ durationSec : number ;
128+ backend :
129+ | "cuda-overlay"
130+ | "cuda-scale-cpu-pad"
131+ | "cuda-static-composite"
132+ | "nvidia-cuda-compositor"
133+ | "windows-d3d11-compositor" ;
134+ elapsedMs : number ;
135+ outputBytes : number ;
136+ fallbackReason ?: string ;
137+ windowsGpuSummary ?: RendererWindowsGpuExportSummary ;
138+ }
139+
140+ interface RendererNativeStaticLayoutMetrics extends RendererFfmpegAudioMuxMetrics {
141+ chunkCount : number ;
142+ chunkDurationSec : number ;
143+ chunkExecMs : number ;
144+ concatExecMs ?: number ;
145+ staticAssetExecMs ?: number ;
146+ fallbackChunkCount : number ;
147+ videoOnlyBytes ?: number ;
148+ chunks : RendererNativeStaticLayoutChunkMetric [ ] ;
149+ }
150+
151+ interface RendererNativeStaticLayoutProgress {
152+ sessionId ?: string ;
153+ backend ?: RendererNativeStaticLayoutChunkMetric [ "backend" ] ;
154+ elapsedMs ?: number ;
155+ averageFps ?: number ;
156+ instantFps ?: number ;
157+ intervalMs ?: number ;
158+ intervalFrames ?: number ;
159+ intervalDecodeWallMs ?: number ;
160+ intervalEncodeMs ?: number ;
161+ intervalPipelineWaitMs ?: number ;
162+ intervalCompositeMs ?: number ;
163+ intervalNvencMs ?: number ;
164+ intervalPacketWriteMs ?: number ;
165+ intervalWebcamDecodeMs ?: number ;
166+ intervalWebcamCopyMs ?: number ;
167+ intervalRoiCompositeFrames ?: number ;
168+ intervalMonolithicCompositeFrames ?: number ;
169+ intervalCopyCompositeFrames ?: number ;
170+ currentFrame : number ;
171+ totalFrames : number ;
172+ percentage : number ;
173+ }
174+
175+ interface RendererNativeVideoMetadataProbe {
176+ width : number ;
177+ height : number ;
178+ duration : number ;
179+ mediaStartTime ?: number ;
180+ streamStartTime ?: number ;
181+ streamDuration ?: number ;
182+ frameRate : number ;
183+ codec : string ;
184+ hasAudio : boolean ;
185+ audioCodec ?: string ;
186+ audioSampleRate ?: number ;
187+ }
188+
85189interface Window {
86190 electronAPI : {
87191 hudOverlaySetIgnoreMouse : ( ignore : boolean ) => void ;
@@ -193,6 +297,82 @@ interface Window {
193297 generateWallpaperThumbnail : (
194298 filePath : string ,
195299 ) => Promise < { success : boolean ; data ?: Uint8Array ; error ?: string } > ;
300+ probeNativeVideoMetadata : ( filePath : string ) => Promise < {
301+ success : boolean ;
302+ metadata ?: RendererNativeVideoMetadataProbe ;
303+ error ?: string ;
304+ } > ;
305+ nativeStaticLayoutExport : ( options : {
306+ sessionId ?: string ;
307+ inputPath : string ;
308+ width : number ;
309+ height : number ;
310+ frameRate : number ;
311+ bitrate : number ;
312+ encodingMode : "fast" | "balanced" | "quality" ;
313+ durationSec : number ;
314+ contentWidth : number ;
315+ contentHeight : number ;
316+ offsetX : number ;
317+ offsetY : number ;
318+ backgroundColor : string ;
319+ backgroundImagePath ?: string | null ;
320+ borderRadius ?: number ;
321+ shadowIntensity ?: number ;
322+ webcamInputPath ?: string | null ;
323+ webcamLeft ?: number ;
324+ webcamTop ?: number ;
325+ webcamSize ?: number ;
326+ webcamRadius ?: number ;
327+ webcamShadowIntensity ?: number ;
328+ webcamMirror ?: boolean ;
329+ webcamTimeOffsetMs ?: number ;
330+ cursorTelemetry ?: Array < {
331+ timeMs : number ;
332+ cx : number ;
333+ cy : number ;
334+ cursorTypeIndex ?: number ;
335+ bounceScale ?: number ;
336+ } > ;
337+ cursorSize ?: number ;
338+ cursorAtlasPngDataUrl ?: string | null ;
339+ cursorAtlasEntries ?: Array < {
340+ index : number ;
341+ x : number ;
342+ y : number ;
343+ width : number ;
344+ height : number ;
345+ anchorX : number ;
346+ anchorY : number ;
347+ aspectRatio : number ;
348+ } > ;
349+ zoomTelemetry ?: Array < { timeMs : number ; scale : number ; x : number ; y : number } > ;
350+ chunkDurationSec ?: number ;
351+ experimentalWindowsGpuCompositor ?: boolean ;
352+ audioOptions ?: {
353+ audioMode ?: "none" | "copy-source" | "trim-source" | "edited-track" ;
354+ audioSourcePath ?: string | null ;
355+ audioSourceSampleRate ?: number ;
356+ outputDurationSec ?: number ;
357+ trimSegments ?: Array < { startMs : number ; endMs : number } > ;
358+ editedTrackStrategy ?: "filtergraph-fast-path" | "offline-render-fallback" ;
359+ editedTrackSegments ?: Array < { startMs : number ; endMs : number ; speed : number } > ;
360+ editedAudioData ?: ArrayBuffer ;
361+ editedAudioMimeType ?: string | null ;
362+ } ;
363+ } ) => Promise < {
364+ success : boolean ;
365+ tempPath ?: string ;
366+ encoderName ?: string ;
367+ error ?: string ;
368+ metrics ?: RendererNativeStaticLayoutMetrics ;
369+ } > ;
370+ nativeStaticLayoutExportCancel : ( sessionId : string ) => Promise < {
371+ success : boolean ;
372+ } > ;
373+ onNativeStaticLayoutExportProgress : (
374+ callback : ( progress : RendererNativeStaticLayoutProgress ) => void ,
375+ ) => ( ) => void ;
196376 nativeVideoExportStart : ( options : {
197377 width : number ;
198378 height : number ;
@@ -216,6 +396,7 @@ interface Window {
216396 audioMode ?: "none" | "copy-source" | "trim-source" | "edited-track" ;
217397 audioSourcePath ?: string | null ;
218398 audioSourceSampleRate ?: number ;
399+ outputDurationSec ?: number ;
219400 trimSegments ?: Array < { startMs : number ; endMs : number } > ;
220401 editedTrackStrategy ?: "filtergraph-fast-path" | "offline-render-fallback" ;
221402 editedTrackSegments ?: Array < { startMs : number ; endMs : number ; speed : number } > ;
0 commit comments