Bläddra i källkod

视频析构数据

jsonwang 3 år sedan
förälder
incheckning
32478d553b
1 ändrade filer med 14 tillägg och 1 borttagningar
  1. 14 1
      BFFramework/Classes/PQGPUImage/akfilters/PQMovieFilter.swift

+ 14 - 1
BFFramework/Classes/PQGPUImage/akfilters/PQMovieFilter.swift

@@ -111,6 +111,8 @@ class PQMovieFilter: PQBaseFilter {
     
     // 当前帧 id
     var framebufferIndex:Int = 0
+    
+    var imageVertexBuffer: GLuint = 0
 
     deinit {
         BFLog(1, message: "movie filter release")
@@ -122,6 +124,11 @@ class PQMovieFilter: PQBaseFilter {
         if assetReader != nil {
             assetReader?.cancelReading()
         }
+        
+        if(imageVertexBuffer != 0){
+            PQGPUImageTools.deleteVBO(imageVertexBuffer)
+            imageVertexBuffer = 0
+        }
     }
 
     public init(url: URL) {
@@ -545,11 +552,17 @@ class PQMovieFilter: PQBaseFilter {
 
         let verticesPoint: [GLfloat] = PQGPUImageTools.getVerticesPoint(sticker: moveSticker!, textureSize: (moveAssetRotation() == .rotateLeftTextureCoordinates || moveAssetRotation() == .rotateRightTextureCoordinates) ? CGSize(width: videoSize.height, height: videoSize.width) : videoSize, cannvasSize: inputSize)
 
+        imageVertexBuffer = PQGPUImageTools.NXGenerateVBO(for: verticesPoint)
         renderQuadWithShader(shader,
                              uniformSettings: uniformSettings,
-                             vertexBufferObject: PQGPUImageTools.NXGenerateVBO(for: verticesPoint),
+                             vertexBufferObject: imageVertexBuffer,
                              inputTextures: cropTextureProperties)
         releaseIncomingFramebuffers()
+        
+        if(imageVertexBuffer != 0){
+            PQGPUImageTools.deleteVBO(imageVertexBuffer)
+            imageVertexBuffer = 0
+        }
 
         luminanceFramebuffer.unlock()
         chrominanceFramebuffer.unlock()