H.264: VTDecompressionSessionDecodeFrame завершается с ошибкой с кодом 12909.

Я показываю RTSP-потоки с IP-камер. Я хочу заменить этот метод avcodec_decode_video2 фреймворком VideoToolbox. Я новичок в обработке видеоданных, поэтому немного потерялся...

Я протестировал оба решения из здесь и здесь, но я получаю ошибку для этого метода VTDecompressionSessionDecodeFrame.

Error Domain=NSOSStatusErrorDomain Code=-12909 "The operation couldn’t be completed. (OSStatus error -12909.)" - -12909

Я подозреваю, что это происходит из сеанса, потому что если я вызову это VTDecompressionSessionCanAcceptFormatDescription сразу после создания сеанса, результат будет NO.

Вот как создается моя сессия:

VTDecompressionOutputCallbackRecord callback;
callback.decompressionOutputCallback = decompressionSessionDecodeFrameCallback;
callback.decompressionOutputRefCon = (__bridge void *)self;
NSDictionary *destinationImageBufferAttributes =[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],(id)kCVPixelBufferOpenGLESCompatibilityKey,[NSNumber numberWithInt:kCVPixelFormatType_32RGBA],(id)kCVPixelBufferPixelFormatTypeKey,nil];
OSStatus status = VTDecompressionSessionCreate(kCFAllocatorDefault, _formatDesc, NULL,
                                                   (__bridge CFDictionaryRef)destinationImageBufferAttributes,
                                                   &callback, &_decompressionSession);

Я также не уверен в данных для использования. У меня есть выбор между AVPacket.data, AVCodecContext.extradata, AVPacket.buf->data. Может ли кто-нибудь сказать мне, какой из них я должен использовать (может быть, есть другой)?

Спасибо заранее,

PS.: Это мой первый пост; дайте мне знать, если это неправильно представлено / объяснено.


person pyonpyon    schedule 16.02.2016    source источник


Ответы (1)


Мне удалось получить один успешный статус для этого метода. Оказалось, что у меня были проблемы с индексами, а код, который я вставил, содержал некоторые ошибки (по крайней мере, он не был адаптирован для моей ситуации, особенно для управления NALU типов 1 и 5).

У меня есть другие проблемы, потому что все остальные вызовы возвращают ошибку, но я думаю, что должен опубликовать еще один вопрос.

person pyonpyon    schedule 17.02.2016
comment
Привет @pyonpyon, можешь опубликовать свое решение? или подскажите из-за чего возникла ошибка? - person Ramsundar Shandilya; 06.01.2018