Files
plexswift/Sources/Plexswift/models/operations/GetMediaMetaDataMedia.swift

168 lines
8.7 KiB
Swift

// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
import Foundation
extension Operations {
/// A model object
public struct GetMediaMetaDataMedia {
/// Indicates whether voice activity is detected.
public let hasVoiceActivity: Bool
/// Unique media identifier.
public let id: Int
/// An array of parts for this media item.
public let part: [Operations.GetMediaMetaDataPart]
/// Aspect ratio of the video.
@DecimalSerialized
public private(set) var aspectRatio: Double?
/// Number of audio channels.
public let audioChannels: Int?
/// Audio codec used.
public let audioCodec: String?
/// The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).
public let audioProfile: String?
/// Bitrate in bits per second.
public let bitrate: Int?
/// File container type.
public let container: String?
public let displayOffset: Int?
/// Duration of the media in milliseconds.
public let duration: Int?
public let has64bitOffsets: Bool?
/// Video height in pixels.
public let height: Int?
/// Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true
public let optimizedForStreaming: Operations.GetMediaMetaDataOptimizedForStreaming?
/// Video codec used.
public let videoCodec: String?
/// Frame rate of the video. Values found include NTSC, PAL, 24p
///
public let videoFrameRate: String?
/// Video profile (e.g., main 10).
public let videoProfile: String?
/// Video resolution (e.g., 4k).
public let videoResolution: String?
/// Video width in pixels.
public let width: Int?
/// Creates an object with the specified parameters
///
/// - Parameter hasVoiceActivity: Indicates whether voice activity is detected.
/// - Parameter id: Unique media identifier.
/// - Parameter part: An array of parts for this media item.
/// - Parameter aspectRatio: Aspect ratio of the video.
/// - Parameter audioChannels: Number of audio channels.
/// - Parameter audioCodec: Audio codec used.
/// - Parameter audioProfile: The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).
/// - Parameter bitrate: Bitrate in bits per second.
/// - Parameter container: File container type.
/// - Parameter duration: Duration of the media in milliseconds.
/// - Parameter height: Video height in pixels.
/// - Parameter optimizedForStreaming: Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true
/// - Parameter videoCodec: Video codec used.
/// - Parameter videoFrameRate: Frame rate of the video. Values found include NTSC, PAL, 24p
///
/// - Parameter videoProfile: Video profile (e.g., main 10).
/// - Parameter videoResolution: Video resolution (e.g., 4k).
/// - Parameter width: Video width in pixels.
///
public init(hasVoiceActivity: Bool, id: Int, part: [Operations.GetMediaMetaDataPart], aspectRatio: Double? = nil, audioChannels: Int? = nil, audioCodec: String? = nil, audioProfile: String? = nil, bitrate: Int? = nil, container: String? = nil, displayOffset: Int? = nil, duration: Int? = nil, has64bitOffsets: Bool? = nil, height: Int? = nil, optimizedForStreaming: Operations.GetMediaMetaDataOptimizedForStreaming? = nil, videoCodec: String? = nil, videoFrameRate: String? = nil, videoProfile: String? = nil, videoResolution: String? = nil, width: Int? = nil) {
self.hasVoiceActivity = hasVoiceActivity
self.id = id
self.part = part
self._aspectRatio = DecimalSerialized<Double?>(wrappedValue: aspectRatio)
self.audioChannels = audioChannels
self.audioCodec = audioCodec
self.audioProfile = audioProfile
self.bitrate = bitrate
self.container = container
self.displayOffset = displayOffset
self.duration = duration
self.has64bitOffsets = has64bitOffsets
self.height = height
self.optimizedForStreaming = optimizedForStreaming
self.videoCodec = videoCodec
self.videoFrameRate = videoFrameRate
self.videoProfile = videoProfile
self.videoResolution = videoResolution
self.width = width
}
}}
extension Operations.GetMediaMetaDataMedia: Codable {
enum CodingKeys: String, CodingKey {
case hasVoiceActivity
case id
case part = "Part"
case aspectRatio
case audioChannels
case audioCodec
case audioProfile
case bitrate
case container
case displayOffset
case duration
case has64bitOffsets
case height
case optimizedForStreaming
case videoCodec
case videoFrameRate
case videoProfile
case videoResolution
case width
}
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.hasVoiceActivity = try container.decode(Bool.self, forKey: .hasVoiceActivity)
self.id = try container.decode(Int.self, forKey: .id)
self.part = try container.decode([Operations.GetMediaMetaDataPart].self, forKey: .part)
self._aspectRatio = try container.decodeIfPresent(DecimalSerialized<Double?>.self, forKey: .aspectRatio) ?? DecimalSerialized<Double?>(wrappedValue: nil)
self.audioChannels = try container.decodeIfPresent(Int.self, forKey: .audioChannels)
self.audioCodec = try container.decodeIfPresent(String.self, forKey: .audioCodec)
self.audioProfile = try container.decodeIfPresent(String.self, forKey: .audioProfile)
self.bitrate = try container.decodeIfPresent(Int.self, forKey: .bitrate)
self.container = try container.decodeIfPresent(String.self, forKey: .container)
self.displayOffset = try container.decodeIfPresent(Int.self, forKey: .displayOffset)
self.duration = try container.decodeIfPresent(Int.self, forKey: .duration)
self.has64bitOffsets = try container.decodeIfPresent(Bool.self, forKey: .has64bitOffsets)
self.height = try container.decodeIfPresent(Int.self, forKey: .height)
self.optimizedForStreaming = try container.decodeIfPresent(Operations.GetMediaMetaDataOptimizedForStreaming.self, forKey: .optimizedForStreaming)
self.videoCodec = try container.decodeIfPresent(String.self, forKey: .videoCodec)
self.videoFrameRate = try container.decodeIfPresent(String.self, forKey: .videoFrameRate)
self.videoProfile = try container.decodeIfPresent(String.self, forKey: .videoProfile)
self.videoResolution = try container.decodeIfPresent(String.self, forKey: .videoResolution)
self.width = try container.decodeIfPresent(Int.self, forKey: .width)
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(self.hasVoiceActivity, forKey: .hasVoiceActivity)
try container.encode(self.id, forKey: .id)
try container.encode(self.part, forKey: .part)
if self.aspectRatio != nil {
try container.encode(self._aspectRatio, forKey: .aspectRatio)
}
try container.encodeIfPresent(self.audioChannels, forKey: .audioChannels)
try container.encodeIfPresent(self.audioCodec, forKey: .audioCodec)
try container.encodeIfPresent(self.audioProfile, forKey: .audioProfile)
try container.encodeIfPresent(self.bitrate, forKey: .bitrate)
try container.encodeIfPresent(self.container, forKey: .container)
try container.encodeIfPresent(self.displayOffset, forKey: .displayOffset)
try container.encodeIfPresent(self.duration, forKey: .duration)
try container.encodeIfPresent(self.has64bitOffsets, forKey: .has64bitOffsets)
try container.encodeIfPresent(self.height, forKey: .height)
try container.encodeIfPresent(self.optimizedForStreaming, forKey: .optimizedForStreaming)
try container.encodeIfPresent(self.videoCodec, forKey: .videoCodec)
try container.encodeIfPresent(self.videoFrameRate, forKey: .videoFrameRate)
try container.encodeIfPresent(self.videoProfile, forKey: .videoProfile)
try container.encodeIfPresent(self.videoResolution, forKey: .videoResolution)
try container.encodeIfPresent(self.width, forKey: .width)
}
}
extension Operations.GetMediaMetaDataMedia {
var aspectRatioWrapper: DecimalSerialized<Double?> {
return _aspectRatio
}
}