From 423b60df8d4e9d7271fcc3eb44c5a4ef2b936644 Mon Sep 17 00:00:00 2001 From: Alex Pelan Date: Wed, 24 Feb 2021 09:58:33 -0500 Subject: [PATCH 1/3] Add scaleFactor to parameters to control file size This lets consumers specify the scaleFactor to use when talking to `AVCaptureScreenInput`. This was useful to me for keeping file sizes down, particularly on my Macbook Pro's retina display. --- Sources/Aperture/Aperture.swift | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Sources/Aperture/Aperture.swift b/Sources/Aperture/Aperture.swift index ab4122c..31ba0d5 100644 --- a/Sources/Aperture/Aperture.swift +++ b/Sources/Aperture/Aperture.swift @@ -86,6 +86,7 @@ public final class Aperture: NSObject { - Parameter screenId: The ID of the screen to be captured. - Parameter audioDevice: An optional audio device to capture. - Parameter videoCodec: The video codec to use when capturing. + - Parameter scaleFactor: The factor by which video buffers are to be scaled */ public convenience init( destination: URL, @@ -95,7 +96,8 @@ public final class Aperture: NSObject { highlightClicks: Bool = false, screenId: CGDirectDisplayID = .main, audioDevice: AVCaptureDevice? = .default(for: .audio), - videoCodec: AVVideoCodecType? = nil + videoCodec: AVVideoCodecType? = nil, + scaleFactor: CGFloat? = nil ) throws { let input = try AVCaptureScreenInput(displayID: screenId).unwrapOrThrow(Error.invalidScreen) @@ -105,6 +107,10 @@ public final class Aperture: NSObject { input.cropRect = cropRect } + if let scaleFactor = scaleFactor { + input.scaleFactor = scaleFactor + } + input.capturesCursor = showCursor input.capturesMouseClicks = highlightClicks From 428bc703e29d3020d09e868bbb999db537bd9ae7 Mon Sep 17 00:00:00 2001 From: Alex Pelan Date: Wed, 24 Mar 2021 11:27:47 -0400 Subject: [PATCH 2/3] PR feedback --- Sources/Aperture/Aperture.swift | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Sources/Aperture/Aperture.swift b/Sources/Aperture/Aperture.swift index 31ba0d5..661bb06 100644 --- a/Sources/Aperture/Aperture.swift +++ b/Sources/Aperture/Aperture.swift @@ -86,7 +86,7 @@ public final class Aperture: NSObject { - Parameter screenId: The ID of the screen to be captured. - Parameter audioDevice: An optional audio device to capture. - Parameter videoCodec: The video codec to use when capturing. - - Parameter scaleFactor: The factor by which video buffers are to be scaled + - Parameter scaleFactor: The actual height and width of the capture will be multiplied by this number to create the height and width of the output. */ public convenience init( destination: URL, @@ -97,7 +97,7 @@ public final class Aperture: NSObject { screenId: CGDirectDisplayID = .main, audioDevice: AVCaptureDevice? = .default(for: .audio), videoCodec: AVVideoCodecType? = nil, - scaleFactor: CGFloat? = nil + scaleFactor: Double = 1 ) throws { let input = try AVCaptureScreenInput(displayID: screenId).unwrapOrThrow(Error.invalidScreen) @@ -107,9 +107,7 @@ public final class Aperture: NSObject { input.cropRect = cropRect } - if let scaleFactor = scaleFactor { - input.scaleFactor = scaleFactor - } + input.scaleFactor = CGFloat(scaleFactor) input.capturesCursor = showCursor input.capturesMouseClicks = highlightClicks From dcb280b5c6a8fcc51a9b5199a6684ca76e2e22e1 Mon Sep 17 00:00:00 2001 From: Sindre Sorhus Date: Thu, 25 Mar 2021 00:56:22 +0700 Subject: [PATCH 3/3] Update Aperture.swift --- Sources/Aperture/Aperture.swift | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Sources/Aperture/Aperture.swift b/Sources/Aperture/Aperture.swift index 661bb06..6c2091c 100644 --- a/Sources/Aperture/Aperture.swift +++ b/Sources/Aperture/Aperture.swift @@ -107,8 +107,7 @@ public final class Aperture: NSObject { input.cropRect = cropRect } - input.scaleFactor = CGFloat(scaleFactor) - + input.scaleFactor = CGFloat(scaleFactor) input.capturesCursor = showCursor input.capturesMouseClicks = highlightClicks