Revert "Improve thread-safety of MTL Renderer."
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 <kthelgason@webrtc.org> > Reviewed-by: Anders Carlsson <andersc@webrtc.org> > 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 <jtteh@webrtc.org> Commit-Queue: JT Teh <jtteh@webrtc.org> Cr-Commit-Position: refs/heads/master@{#22800}
This commit is contained in:
@ -18,7 +18,6 @@
|
|||||||
#import "WebRTC/RTCVideoFrameBuffer.h"
|
#import "WebRTC/RTCVideoFrameBuffer.h"
|
||||||
|
|
||||||
#import "RTCMTLRenderer+Private.h"
|
#import "RTCMTLRenderer+Private.h"
|
||||||
#include "rtc_base/checks.h"
|
|
||||||
|
|
||||||
#define MTL_STRINGIFY(s) @ #s
|
#define MTL_STRINGIFY(s) @ #s
|
||||||
|
|
||||||
@ -86,7 +85,6 @@ static NSString *const shaderSource = MTL_STRINGIFY(
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)setupTexturesForFrame:(nonnull RTCVideoFrame *)frame {
|
- (BOOL)setupTexturesForFrame:(nonnull RTCVideoFrame *)frame {
|
||||||
RTC_DCHECK([frame.buffer isKindOfClass:[RTCCVPixelBuffer class]]);
|
|
||||||
[super setupTexturesForFrame:frame];
|
[super setupTexturesForFrame:frame];
|
||||||
CVPixelBufferRef pixelBuffer = ((RTCCVPixelBuffer *)frame.buffer).pixelBuffer;
|
CVPixelBufferRef pixelBuffer = ((RTCCVPixelBuffer *)frame.buffer).pixelBuffer;
|
||||||
|
|
||||||
|
@ -105,32 +105,32 @@
|
|||||||
|
|
||||||
- (void)drawInMTKView:(nonnull MTKView *)view {
|
- (void)drawInMTKView:(nonnull MTKView *)view {
|
||||||
NSAssert(view == self.metalView, @"Receiving draw callbacks from foreign instance.");
|
NSAssert(view == self.metalView, @"Receiving draw callbacks from foreign instance.");
|
||||||
RTCVideoFrame *videoFrame = self.videoFrame;
|
if (!self.videoFrame) {
|
||||||
if (!videoFrame) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ([videoFrame.buffer isKindOfClass:[RTCCVPixelBuffer class]]) {
|
id<RTCMTLRenderer> renderer = nil;
|
||||||
static dispatch_once_t nv12_token;
|
if ([self.videoFrame.buffer isKindOfClass:[RTCCVPixelBuffer class]]) {
|
||||||
dispatch_once(&nv12_token, ^{
|
if (!self.rendererNV12) {
|
||||||
self.rendererNV12 = [RTCMTLVideoView createNV12Renderer];
|
self.rendererNV12 = [RTCMTLVideoView createNV12Renderer];
|
||||||
if (![self.rendererNV12 addRenderingDestination:self.metalView]) {
|
if (![self.rendererNV12 addRenderingDestination:self.metalView]) {
|
||||||
self.rendererNV12 = nil;
|
self.rendererNV12 = nil;
|
||||||
RTCLogError(@"Failed to create NV12 renderer");
|
RTCLogError(@"Failed to create NV12 renderer");
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
[self.rendererNV12 drawFrame:videoFrame];
|
renderer = self.rendererNV12;
|
||||||
} else {
|
} else {
|
||||||
static dispatch_once_t i420_token;
|
if (!self.rendererI420) {
|
||||||
dispatch_once(&i420_token, ^{
|
|
||||||
self.rendererI420 = [RTCMTLVideoView createI420Renderer];
|
self.rendererI420 = [RTCMTLVideoView createI420Renderer];
|
||||||
if (![self.rendererI420 addRenderingDestination:self.metalView]) {
|
if (![self.rendererI420 addRenderingDestination:self.metalView]) {
|
||||||
self.rendererI420 = nil;
|
self.rendererI420 = nil;
|
||||||
RTCLogError(@"Failed to create I420 renderer");
|
RTCLogError(@"Failed to create I420 renderer");
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
[self.rendererI420 drawFrame:videoFrame];
|
renderer = self.rendererI420;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[renderer drawFrame:self.videoFrame];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)mtkView:(MTKView *)view drawableSizeWillChange:(CGSize)size {
|
- (void)mtkView:(MTKView *)view drawableSizeWillChange:(CGSize)size {
|
||||||
|
Reference in New Issue
Block a user