try: Improvements from WWDC 2021 1:1 workshop (#197)
* perf: Automatically determine Pixel Format depending on active format. (More efficient video recording 🚀)
* perf: Skip `AVAssetWriter` transform by directly correctly orienting the Video Output connection
* feat: Support camera flipping while recording
* feat: Run frame processor on separate queue, avoids stutters in video recordigns
* feat: Automatically drop late frame processor frames
			
			
This commit is contained in:
		| @@ -68,7 +68,7 @@ class RecordingSession { | ||||
|   /** | ||||
|    Initializes an AssetWriter for video frames (CMSampleBuffers). | ||||
|    */ | ||||
|   func initializeVideoWriter(withSettings settings: [String: Any], isVideoMirrored: Bool) { | ||||
|   func initializeVideoWriter(withSettings settings: [String: Any], pixelFormat: OSType) { | ||||
|     guard !settings.isEmpty else { | ||||
|       ReactLogger.log(level: .error, message: "Tried to initialize Video Writer with empty settings!", alsoLogToJS: true) | ||||
|       return | ||||
| @@ -81,14 +81,10 @@ class RecordingSession { | ||||
|     let videoWriter = AVAssetWriterInput(mediaType: .video, outputSettings: settings) | ||||
|     videoWriter.expectsMediaDataInRealTime = true | ||||
|  | ||||
|     if isVideoMirrored { | ||||
|       videoWriter.transform = CGAffineTransform(rotationAngle: -(.pi / 2)) | ||||
|     } else { | ||||
|       videoWriter.transform = CGAffineTransform(rotationAngle: .pi / 2) | ||||
|     } | ||||
|  | ||||
|     assetWriter.add(videoWriter) | ||||
|     bufferAdaptor = AVAssetWriterInputPixelBufferAdaptor(assetWriterInput: videoWriter, withVideoSettings: settings) | ||||
|     bufferAdaptor = AVAssetWriterInputPixelBufferAdaptor(assetWriterInput: videoWriter, | ||||
|                                                          withVideoSettings: settings, | ||||
|                                                          pixelFormat: pixelFormat) | ||||
|     ReactLogger.log(level: .info, message: "Initialized Video AssetWriter.") | ||||
|   } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user