2014-01-13 8 views
0

Я пытаюсь воссоздать некоторые функции от https://github.com/Lockerios/VideoFromImage и обсуждалось в этом посте: ASSETWriterInput for making Video from UIImages on Iphone IssuesCVPixelBufferCreate в RubyMotion

В pixelBufferFromCGImage: метод размера, я следующий до сих пор:

options = {KCVPixelBufferCGImageCompatibilityKey => 1, KCVPixelBufferCGBitmapContextCompatibilityKey => 1} 

pxbuffer = nil 
status = CVPixelBufferCreate(KCFAllocatorDefault, imageSize.width, imageSize.height, KCVPixelFormatType_32ARGB, options, pxbuffer) 

где imageSize.width == 640.0 и imageSize.height == 1136.0

Однако статус всегда возвращает -6661. Я немного смущен, почему это может произойти. Этот метод вызывается в другом месте со следующим:

buffer = pixelBufferFromCGImage(array.objectAtIndex(0).CGImage, size:CGSizeMake(640, 1136)) 

Когда я проверить изображение из функции pixelBufferFromCGImage, то, как представляется, типа «# < __NSCFType: 0x9ba7fa0>» Я не уверен, что мощь вносить свой вклад в эту проблему.

Похоже, что я могу передать неправильный параметр функции CVPixelBufferCreate в соответствии с https://developer.apple.com/library/ios/documentation/QuartzCore/Reference/CVConstantsRef/Reference/reference.html#//apple_ref/doc/uid/TP40010164-CH4g-BABIIDJJ, наиболее вероятным из которых является последний аргумент «pixelBufferOut».

Любое понимание этой проблемы было бы весьма полезным. У меня есть следующая сущность с полным кодом моего кода до сих пор на https://gist.github.com/naderhen/8407730

Спасибо!

ответ

1

Похоже, что последний параметр должен быть указателем на объект CVPixelBufferRef. Вы можете попробовать следующее:

pxbuffer = Pointer.new(:object) 

Выполнение этой задачи, я получаю статус 0 вместо -6661.

Затем, чтобы получить доступ к буферу, используйте pxbuffer[0]

+0

Это работало отлично. Потрясающие! –