| | |
| | | |
| | | private var currentPixelBuffer: CVPixelBuffer? |
| | | private let textureCache: CVMetalTextureCache |
| | | private var rotate:Int = 0; |
| | | |
| | | init(mtkView: MTKView) { |
| | | guard let device = MTLCreateSystemDefaultDevice(), |
| | |
| | | guard drawableSize.width > 0, drawableSize.height > 0 else { return } |
| | | |
| | | // 加方向修正:顺时针旋转90度 |
| | | var ciImage = CIImage(cvPixelBuffer: pixelBuffer).oriented(.right) |
| | | var orien:CGImagePropertyOrientation = .up; |
| | | switch self.rotate{ |
| | | case 0: |
| | | break; |
| | | case 90: |
| | | orien = .right; |
| | | break; |
| | | case 180: |
| | | orien = .down; |
| | | break; |
| | | case 270: |
| | | orien = .left; |
| | | break; |
| | | default: |
| | | orien = .up; |
| | | } |
| | | print(" roate = \(rotate)") |
| | | var ciImage = CIImage(cvPixelBuffer: pixelBuffer).oriented(orien) |
| | | |
| | | // 等比缩放后居中 |
| | | let sourceExtent = ciImage.extent |
| | |
| | | //刷新 |
| | | |
| | | } |
| | | |
| | | func updateRotate(angle:Int){ |
| | | rotate = angle; |
| | | } |
| | | |
| | | } |