فهرست منبع

打破循环引用圈

harry 3 سال پیش
والد
کامیت
22914d0b7f

+ 11 - 11
BFFramework/Classes/PQGPUImage/akfilters/PQGifFilter.swift

@@ -48,28 +48,28 @@ open class PQGifFilter: PQBaseFilter {
             BFLog(message: "gif数据有问题!")
             return
         }
-        PQPHAssetVideoParaseUtil.parasGIFImage(data: gifData) { [unowned self] _, images, duration in
+        PQPHAssetVideoParaseUtil.parasGIFImage(data: gifData) { [weak self] _, images, duration in
 
-            self.mGifImages = images ?? []
-            self.mDuration = duration ?? 0
-            BFLog(2, message: "gif 原始时长 \(String(describing: duration)) 逻辑时长: \(String(describing: self.mSticker?.aptDuration)) 帧数:\(String(describing: images?.count))")
+            self?.mGifImages = images ?? []
+            self?.mDuration = duration ?? 0
+            BFLog(2, message: "gif 原始时长 \(String(describing: duration)) 逻辑时长: \(String(describing: self?.mSticker?.aptDuration)) 帧数:\(String(describing: images?.count))")
 
             if images!.count > 0 {
-                self.gifSize = images!.first!.size
+                self?.gifSize = images!.first!.size
             }
 
             // 每一帧的时间 速度自适应
-            self.delayTime = (self.mSticker?.aptDuration)! / Double(self.mGifImages.count)
+            self?.delayTime = (self?.mSticker?.aptDuration ?? 1) / Double(self?.mGifImages.count ?? 1)
             // 不改变速度还是原速度
 
-            if self.mSticker?.materialDurationFit?.fitType == adapterMode.loopAuto.rawValue || self.mSticker?.materialDurationFit?.fitType == adapterMode.staticFrame.rawValue {
-                self.delayTime = self.mDuration / Double(self.mGifImages.count)
-                BFLog(message: "正常速度每一帧的时间:\(String(describing: self.delayTime))")
+            if self?.mSticker?.materialDurationFit?.fitType == adapterMode.loopAuto.rawValue || self?.mSticker?.materialDurationFit?.fitType == adapterMode.staticFrame.rawValue {
+                self?.delayTime = self?.mDuration ?? 1 / Double(self?.mGifImages.count ?? 1)
+                BFLog(message: "正常速度每一帧的时间:\(String(describing: self?.delayTime))")
             }
             sharedImageProcessingContext.runOperationSynchronously {
                 // ( 提前渲染一帧
-                if self.mGifImages.count > 0, self.mGifImages[0].cgImage != nil {
-                    self.imageTexture = PQGPUImageTools.setupTexture(image: (self.mGifImages[0].cgImage)!)
+                if self?.mGifImages.count ?? 0 > 0, let image = self?.mGifImages[0].cgImage{
+                    self?.imageTexture = PQGPUImageTools.setupTexture(image: image)
                 }
 
                 gifData = nil

+ 7 - 6
BFFramework/Classes/PQGPUImage/akfilters/Tools/PQCompositionExporter.swift

@@ -277,10 +277,11 @@ public class PQCompositionExporter {
                   
                 }else{
                     if(weatMaskFilter != nil){
-                        
+                        BFLog(1, message: "find show stricker")
                         currentTarget.addTarget(showFitler!, atTargetIndex: 0)
                         showFitler?.addTarget(weatMaskFilter!, atTargetIndex: 0)
                         weatMaskFilter?.addTarget(output!, atTargetIndex: 0)
+                        
                     }else{
                         currentTarget.addTarget(showFitler!, atTargetIndex: 0)
                         showFitler?.addTarget(output!, atTargetIndex: 0)
@@ -296,10 +297,10 @@ public class PQCompositionExporter {
     }
 
     public func start(playeTimeRange:CMTimeRange = CMTimeRange.init()) {
-        input?.completion = { [unowned self] in
-            self.output?.finishRecording { [weak self] in
+        input?.completion = { [weak self] in
+            self?.output?.finishRecording { [weak self] in
                 BFLog(message: "导出视频完成发通知")
-                DispatchQueue.main.async {
+                DispatchQueue.main.async {[weak self] in
                     if let url = self?.tmpExportURL {
                         self?.handleCaption(for: AVURLAsset(url: url, options: nil))
                     } else {
@@ -321,13 +322,13 @@ public class PQCompositionExporter {
             }
         }
 
-        output?.startRecording { [unowned self] started, error in
+        output?.startRecording { [weak self] started, error in
             guard started else {
                 NXLog(message: "MovieOutput unable to start writing with error: \(String(describing: error)) ")
                 return
             }
 
-            self.input?.start(isFreeBuffer: false, isExport: true,timeRange: playeTimeRange)
+            self?.input?.start(isFreeBuffer: false, isExport: true,timeRange: playeTimeRange)
         }
     }