Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions Examples/iOS/PreferenceView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,6 @@ struct PreferenceView: View {
Text(String(describing: view)).tag(view)
}
}
Toggle(isOn: $model.isGPURendererEnabled) {
Text("Use GPU rendering.")
}
} header: {
Text("Others")
}
Expand Down
1 change: 0 additions & 1 deletion Examples/iOS/PreferenceViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ final class PreferenceViewModel: ObservableObject {

// MARK: - Others
@Published var viewType: ViewType = .metal
var isGPURendererEnabled: Bool = true

init() {
if #available(iOS 16.0, tvOS 16.0, *) {
Expand Down
5 changes: 0 additions & 5 deletions Examples/iOS/PublishViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -251,11 +251,6 @@ final class PublishViewModel: ObservableObject {
guard let videoScreenObject else {
return
}
if await preference.isGPURendererEnabled {
await mixer.screen.isGPURendererEnabled = true
} else {
await mixer.screen.isGPURendererEnabled = false
}
videoScreenObject.cornerRadius = 16.0
videoScreenObject.track = 1
videoScreenObject.horizontalAlignment = .right
Expand Down
5 changes: 0 additions & 5 deletions Examples/iOS/UVCViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -197,11 +197,6 @@ final class UVCViewModel: ObservableObject {
await makeSession(preference)
}
Task { @ScreenActor in
if await preference.isGPURendererEnabled {
await mixer.screen.isGPURendererEnabled = true
} else {
await mixer.screen.isGPURendererEnabled = false
}
await mixer.screen.size = .init(width: 720, height: 1280)
await mixer.screen.backgroundColor = UIColor.black.cgColor
}
Expand Down
5 changes: 0 additions & 5 deletions Examples/macOS/PublishViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -98,11 +98,6 @@ final class PublishViewModel: ObservableObject {
await makeSession(preference)
}
Task { @ScreenActor in
if await preference.isGPURendererEnabled {
await mixer.screen.isGPURendererEnabled = true
} else {
await mixer.screen.isGPURendererEnabled = false
}
let assetScreenObject = AssetScreenObject()
assetScreenObject.size = .init(width: 180, height: 180)
assetScreenObject.layoutMargin = .init(top: 16, left: 16, bottom: 0, right: 0)
Expand Down
36 changes: 0 additions & 36 deletions HaishinKit/Sources/Extension/vImage_Buffer+Extension.swift

This file was deleted.

31 changes: 6 additions & 25 deletions HaishinKit/Sources/Mixer/DynamicRangeMode.swift
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,6 @@ public enum DynamicRangeMode: Sendable {
]
}

private var pixelFormat: OSType {
switch self {
case .sdr:
return kCVPixelFormatType_32ARGB
case .hdr:
return kCVPixelFormatType_64RGBAHalf
}
}

func attach(_ pixelBuffer: CVPixelBuffer) {
switch self {
case .sdr:
Expand Down Expand Up @@ -88,21 +79,11 @@ public enum DynamicRangeMode: Sendable {
}

func makePixelBufferAttributes(_ size: CGSize) -> CFDictionary {
switch self {
case .sdr:
return [
kCVPixelBufferPixelFormatTypeKey: NSNumber(value: pixelFormat),
kCVPixelBufferMetalCompatibilityKey: kCFBooleanTrue,
kCVPixelBufferWidthKey: NSNumber(value: Int(size.width)),
kCVPixelBufferHeightKey: NSNumber(value: Int(size.height))
] as CFDictionary
case .hdr:
return [
kCVPixelBufferPixelFormatTypeKey: NSNumber(value: videoFormat),
kCVPixelBufferMetalCompatibilityKey: kCFBooleanTrue,
kCVPixelBufferWidthKey: NSNumber(value: Int(size.width)),
kCVPixelBufferHeightKey: NSNumber(value: Int(size.height))
] as CFDictionary
}
return [
kCVPixelBufferPixelFormatTypeKey: NSNumber(value: videoFormat),
kCVPixelBufferMetalCompatibilityKey: kCFBooleanTrue,
kCVPixelBufferWidthKey: NSNumber(value: Int(size.width)),
kCVPixelBufferHeightKey: NSNumber(value: Int(size.height))
] as CFDictionary
}
}
7 changes: 0 additions & 7 deletions HaishinKit/Sources/Screen/AssetScreenObject.swift
Original file line number Diff line number Diff line change
Expand Up @@ -90,13 +90,6 @@ public final class AssetScreenObject: ScreenObject, ChromaKeyProcessable {
}
}

override public func makeImage(_ renderer: some ScreenRenderer) -> CGImage? {
guard let image: CIImage = makeImage(renderer) else {
return nil
}
return renderer.context.createCGImage(image, from: videoGravity.region(bounds, image: image.extent))
}

override public func makeImage(_ renderer: some ScreenRenderer) -> CIImage? {
guard let sampleBuffer, let pixelBuffer = sampleBuffer.imageBuffer else {
return nil
Expand Down
17 changes: 9 additions & 8 deletions HaishinKit/Sources/Screen/ImageScreenObject.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,15 @@ public final class ImageScreenObject: ScreenObject {
}
}

override public func makeImage(_ renderer: some ScreenRenderer) -> CGImage? {
override public func makeImage(_ renderer: some ScreenRenderer) -> CIImage? {
let intersection = bounds.intersection(renderer.bounds)

guard bounds != intersection else {
return cgImage
if let cgImage {
return CIImage(cgImage: cgImage)
} else {
return nil
}
}

// Handling when the drawing area is exceeded.
Expand All @@ -40,14 +44,11 @@ public final class ImageScreenObject: ScreenObject {
y = abs(bounds.origin.y)
}

return cgImage?.cropping(to: .init(origin: .init(x: x, y: y), size: intersection.size))
}

override public func makeImage(_ renderer: some ScreenRenderer) -> CIImage? {
guard let image: CGImage = makeImage(renderer) else {
if let cgImage = cgImage?.cropping(to: .init(origin: .init(x: x, y: y), size: intersection.size)) {
return CIImage(cgImage: cgImage)
} else {
return nil
}
return CIImage(cgImage: image)
}

override public func makeBounds(_ size: CGSize) -> CGRect {
Expand Down
23 changes: 2 additions & 21 deletions HaishinKit/Sources/Screen/Screen.swift
Original file line number Diff line number Diff line change
Expand Up @@ -42,21 +42,6 @@ public final class Screen: ScreenObjectContainerConvertible {
}
}

/// Specifies the gpu rendering enabled.
@available(*, deprecated)
public var isGPURendererEnabled = false {
didSet {
guard isGPURendererEnabled != oldValue else {
return
}
if isGPURendererEnabled {
renderer = ScreenRendererByGPU(dynamicRangeMode: dynamicRangeMode)
} else {
renderer = ScreenRendererByCPU(dynamicRangeMode: dynamicRangeMode)
}
}
}

#if os(macOS)
/// Specifies the background color.
public var backgroundColor: CGColor = NSColor.black.cgColor {
Expand Down Expand Up @@ -92,15 +77,11 @@ public final class Screen: ScreenObjectContainerConvertible {
guard dynamicRangeMode != oldValue else {
return
}
if isGPURendererEnabled {
renderer = ScreenRendererByGPU(dynamicRangeMode: dynamicRangeMode)
} else {
renderer = ScreenRendererByCPU(dynamicRangeMode: dynamicRangeMode)
}
renderer = ScreenRendererByGPU(dynamicRangeMode: dynamicRangeMode)
CVPixelBufferPoolCreate(nil, nil, dynamicRangeMode.makePixelBufferAttributes(size), &pixelBufferPool)
}
}
private(set) var renderer: (any ScreenRenderer) = ScreenRendererByCPU(dynamicRangeMode: .sdr) {
private(set) var renderer: (any ScreenRenderer) = ScreenRendererByGPU(dynamicRangeMode: .sdr) {
didSet {
renderer.bounds = oldValue.bounds
renderer.backgroundColor = oldValue.backgroundColor
Expand Down
6 changes: 0 additions & 6 deletions HaishinKit/Sources/Screen/ScreenObject.swift
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,6 @@ open class ScreenObject {
shouldInvalidateLayout = true
}

/// Makes cgImage for offscreen image.
@available(*, deprecated, message: "It will be removed in the next major update. Please migrate to using CIImage instead.")
open func makeImage(_ renderer: some ScreenRenderer) -> CGImage? {
return nil
}

/// Makes ciImage for offscreen image.
open func makeImage(_ renderer: some ScreenRenderer) -> CIImage? {
return nil
Expand Down
Loading
Loading