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

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

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

, который дает мне sampleBuffer.

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

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

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

1 Ответ

0 голосов
/ 31 января 2019

Вроде так:

   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];
...