From 14d4e9f186952f02323ec43750252accb7ad5012 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= Date: Tue, 2 May 2023 10:00:54 +0200 Subject: [PATCH] Fix crash in RTCMTLVideoView when trying to draw an invalid sized frame MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:14892 Change-Id: I6321380444fa1de34c64fe72b587f1f5b245fad8 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/304000 Commit-Queue: Kári Helgason Reviewed-by: Kári Helgason Cr-Commit-Position: refs/heads/main@{#39971} --- sdk/objc/components/renderer/metal/RTCMTLI420Renderer.mm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sdk/objc/components/renderer/metal/RTCMTLI420Renderer.mm b/sdk/objc/components/renderer/metal/RTCMTLI420Renderer.mm index f4c76fa313..eba8800240 100644 --- a/sdk/objc/components/renderer/metal/RTCMTLI420Renderer.mm +++ b/sdk/objc/components/renderer/metal/RTCMTLI420Renderer.mm @@ -116,6 +116,13 @@ static NSString *const shaderSource = MTL_STRINGIFY( return NO; } + // Chroma size must be >= 1 as per the Apple documentation, so skip ?x1 + // and 1x? frames. + // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=14892 + if (frame.width < 2 || frame.height < 2) { + return NO; + } + id buffer = [frame.buffer toI420]; // Luma (y) texture.