diff --git a/sdk/objc/Framework/Classes/Metal/RTCMTLNV12Renderer.mm b/sdk/objc/Framework/Classes/Metal/RTCMTLNV12Renderer.mm index 6de9c347e6..079b5fb76c 100644 --- a/sdk/objc/Framework/Classes/Metal/RTCMTLNV12Renderer.mm +++ b/sdk/objc/Framework/Classes/Metal/RTCMTLNV12Renderer.mm @@ -18,7 +18,6 @@ #import "WebRTC/RTCVideoFrameBuffer.h" #import "RTCMTLRenderer+Private.h" -#include "rtc_base/checks.h" #define MTL_STRINGIFY(s) @ #s @@ -86,7 +85,6 @@ static NSString *const shaderSource = MTL_STRINGIFY( } - (BOOL)setupTexturesForFrame:(nonnull RTCVideoFrame *)frame { - RTC_DCHECK([frame.buffer isKindOfClass:[RTCCVPixelBuffer class]]); [super setupTexturesForFrame:frame]; CVPixelBufferRef pixelBuffer = ((RTCCVPixelBuffer *)frame.buffer).pixelBuffer; diff --git a/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m b/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m index e343bb48b4..0e17777c4a 100644 --- a/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m +++ b/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m @@ -105,32 +105,32 @@ - (void)drawInMTKView:(nonnull MTKView *)view { NSAssert(view == self.metalView, @"Receiving draw callbacks from foreign instance."); - RTCVideoFrame *videoFrame = self.videoFrame; - if (!videoFrame) { + if (!self.videoFrame) { return; } - if ([videoFrame.buffer isKindOfClass:[RTCCVPixelBuffer class]]) { - static dispatch_once_t nv12_token; - dispatch_once(&nv12_token, ^{ + id renderer = nil; + if ([self.videoFrame.buffer isKindOfClass:[RTCCVPixelBuffer class]]) { + if (!self.rendererNV12) { self.rendererNV12 = [RTCMTLVideoView createNV12Renderer]; if (![self.rendererNV12 addRenderingDestination:self.metalView]) { self.rendererNV12 = nil; RTCLogError(@"Failed to create NV12 renderer"); } - }); - [self.rendererNV12 drawFrame:videoFrame]; + } + renderer = self.rendererNV12; } else { - static dispatch_once_t i420_token; - dispatch_once(&i420_token, ^{ + if (!self.rendererI420) { self.rendererI420 = [RTCMTLVideoView createI420Renderer]; if (![self.rendererI420 addRenderingDestination:self.metalView]) { self.rendererI420 = nil; RTCLogError(@"Failed to create I420 renderer"); } - }); - [self.rendererI420 drawFrame:videoFrame]; + } + renderer = self.rendererI420; } + + [renderer drawFrame:self.videoFrame]; } - (void)mtkView:(MTKView *)view drawableSizeWillChange:(CGSize)size {