2014-09-02 78 views
1

我在斯威夫特這個代碼,並得到一個錯誤:CVImageBuffer是不能轉換到非託管如何將CVImageBuffer轉換爲Unmanaged <CVImageBuffer>?

func getTextureFromSampleBuffer(sampleBuffer: CMSampleBuffer!) -> GLuint { 
    cleanupVideoTextures() 
    var unmanagedImageBuffer: Unmanaged<CVImageBuffer> = CMSampleBufferGetImageBuffer(sampleBuffer) // Here get the error 
    var imageBuffer = unmanagedImageBuffer.takeUnretainedValue() 
    var opaqueImageBuffer = unmanagedImageBuffer.toOpaque() 

我怎麼能投嗎?

謝謝!

回答

1

CMSampleBufferGetImageBuffer()不接受一個非託管對象(不再是? - 也許這改變了測試版之間的 )。您可以通過

var imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) 
+0

更換

var unmanagedImageBuffer: Unmanaged<CVImageBuffer> = CMSampleBufferGetImageBuffer(sampleBuffer) // Here get the error var imageBuffer = unmanagedImageBuffer.takeUnretainedValue() 

簡單但隨後需要opaqueImageBuffer爲:VAR cameraFrame:CVPixelBuffer =非託管 .fromOpaque(opaqueImageBuffer).takeUnretainedValue() \t \t textureWidth = CVPixelBufferGetWidth(cameraFrame ) \t \t textureHeight = CVPixelBufferGetHeight(cameraFrame) – user3745888 2014-09-03 06:02:24

+0

@ user3745888:嘗試'var imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer)as CVPixelBuffer' and'textureHeight = CVPixel BufferGetHeight(ImageBuffer的)'。 – 2014-09-03 12:31:49

相關問題