Как мы можем использовать AVSampleBufferDisplayLayer для рендеринга CMSampleBufferRef?

У меня есть этот метод делегата

-(void)airPlayServer:(id)server sampleBufferReceived:(CMSampleBufferRef)sampleBuffer
{
}

что дает мне sampleBuffer.

Теперь мне нужно знать, как использовать AVSampleBufferDisplayLayer для рендеринга моего sampleBuffer. Я знаю, что мы должны использовать - enqueueSampleBuffer - но я новичок в iOS, так как мы можем это сделать?

Я не хочу преобразовывать sampleBuffer в CGImage, а затем рисовать его.

Пример кода очень ценится :)


person Abid Mehmood    schedule 31.01.2019    source источник


Ответы (1)


Вот так:

   CMSampleBufferRef sampleBufferRef = ...;

    // Force display as soon as possible

    CFArrayRef attachments = CMSampleBufferGetSampleAttachmentsArray(sampleBufferRef, YES);
    CFMutableDictionaryRef dict = (CFMutableDictionaryRef)CFArrayGetValueAtIndex(attachments, 0);
    CFDictionarySetValue(dict, kCMSampleAttachmentKey_DisplayImmediately, kCFBooleanTrue);

    [sampleBufferLayer enqueueSampleBuffer:sampleBufferRef];            
    [sampleBufferLayer setNeedsDisplay];
person MoDJ    schedule 31.01.2019