     // swiftlint:disable force_cast
     private func channelCount(from assetReader: AVAssetReader) -> Int {
         let audioTrack = (assetReader.outputs.first as? AVAssetReaderTrackOutput)?.track
-
         var channelCount = 0
-        audioTrack?.formatDescriptions.forEach { formatDescription in
-            let audioDescription = CFBridgingRetain(formatDescription) as! CMAudioFormatDescription
-            if let basicDescription = CMAudioFormatDescriptionGetStreamBasicDescription(audioDescription) {
+        
+        autoreleasepool {
+            let descriptions = audioTrack?.formatDescriptions as! [CMFormatDescription]
+            descriptions.forEach { formatDescription in
+                guard let basicDescription = CMAudioFormatDescriptionGetStreamBasicDescription(formatDescription) else { return }
                 channelCount = Int(basicDescription.pointee.mChannelsPerFrame)
             }
         }

                    let processedSamples = process(blockSamples,
                                                   ofLength: sampleLength,
                                                   from: assetReader,
                                                   downsampledTo: targetSampleCount)
                    outputSamples += processedSamples
                }
            }

    private func process(_ samples: UnsafeMutablePointer<Int16>,
                         ofLength sampleLength: Int,
                         from assetReader: AVAssetReader,
                         downsampledTo targetSampleCount: Int,
                         samplesPerPixel: Int) -> [Float] {
        var loudestClipValue: Float = 0.0
        var quietestClipValue = silenceDbThreshold
        var zeroDbEquivalent: Float = Float(Int16.max) // maximum amplitude storable in Int16 = 0 Db (loudest)
