From 6144fa53629c821f42b37b32efc74ad86ad5fedf Mon Sep 17 00:00:00 2001 From: JT Teh Date: Tue, 10 Apr 2018 00:27:04 +0000 Subject: [PATCH] Revert "Improve thread-safety of MTL Renderer." MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit a8f13ccad400eb8ff84a379042c0595951ca9658. Reason for revert: It's causing no video to be shown after the 1st call. Original change's description: > Improve thread-safety of MTL Renderer. > > Bug: b/77579859 > Change-Id: I427d0f41593155dc5cbf98a09d7ec826497b803c > Reviewed-on: https://webrtc-review.googlesource.com/67040 > Commit-Queue: Kári Helgason > Reviewed-by: Anders Carlsson > Cr-Commit-Position: refs/heads/master@{#22795} TBR=andersc@webrtc.org,kthelgason@webrtc.org Change-Id: Ia8f33995e087178f1c3be7753f70be8ba18447f8 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: b/77579859 Reviewed-on: https://webrtc-review.googlesource.com/68860 Reviewed-by: JT Teh Commit-Queue: JT Teh Cr-Commit-Position: refs/heads/master@{#22800} --- .../Classes/Metal/RTCMTLNV12Renderer.mm | 2 -- .../Framework/Classes/Metal/RTCMTLVideoView.m | 22 +++++++++---------- 2 files changed, 11 insertions(+), 13 deletions(-) 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 {