TeraPreparedMediaHandle.swift (1061B)
1 import TeraKitBindings 2 3 /// Admission is synchronous while the coordinator still owns the original file. 4 /// Async closures retain this immutable Rust owner even after native close. 5 struct TeraPreparedMediaHandle: Sendable, Equatable { 6 let media: TeraPreparedMedia 7 private let file: FfiMediaFile 8 9 init(media: TeraPreparedMedia, fileDescriptor: UInt64) throws { 10 self.media = media 11 file = try FfiMediaFile(fileDescriptor: fileDescriptor, byteSize: media.byteSize) 12 } 13 14 static func == (lhs: Self, rhs: Self) -> Bool { 15 // This is transient owner identity, never a persistent media/request key. 16 lhs.media == rhs.media && lhs.file === rhs.file 17 } 18 19 var generatedValue: FfiPreparedMediaInput { 20 FfiPreparedMediaInput( 21 schemaVersion: 2, 22 opaqueReference: media.opaqueReference, 23 file: file, 24 sha256: media.sha256, 25 mediaType: media.mediaType, 26 byteSize: media.byteSize, 27 width: media.width, 28 height: media.height, 29 alt: media.alt, 30 preparedAtUnixS: media.preparedAtUnixSeconds 31 ) 32 } 33 }