From 04732337756526ceb8cc9ed5ccca7be1325bd449 Mon Sep 17 00:00:00 2001 From: Acaki Date: Fri, 11 Jul 2025 19:36:21 +0800 Subject: [PATCH] fix: pip video freeze --- VoidLink/Stream/VideoDecoderRenderer.m | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/VoidLink/Stream/VideoDecoderRenderer.m b/VoidLink/Stream/VideoDecoderRenderer.m index 246194ef..b1b9238d 100644 --- a/VoidLink/Stream/VideoDecoderRenderer.m +++ b/VoidLink/Stream/VideoDecoderRenderer.m @@ -39,10 +39,11 @@ extern int ff_isom_write_av1c(AVIOContext *pb, const uint8_t *buf, int size, - (void)reinitializeDisplayLayer { - CALayer *oldLayer = _displayLayer; - - _displayLayer = [[AVSampleBufferDisplayLayer alloc] init]; - _displayLayer.backgroundColor = [UIColor blackColor].CGColor; + if (_displayLayer == nil) { + _displayLayer = [[AVSampleBufferDisplayLayer alloc] init]; + _displayLayer.backgroundColor = [UIColor blackColor].CGColor; + [_view.layer addSublayer:_displayLayer]; + } // Ensure the AVSampleBufferDisplayLayer is sized to preserve the aspect ratio // of the video stream. We used to use AVLayerVideoGravityResizeAspect, but that @@ -63,14 +64,6 @@ extern int ff_isom_write_av1c(AVIOContext *pb, const uint8_t *buf, int size, // can see the loading progress label as the stream is starting. _displayLayer.hidden = YES; - if (oldLayer != nil) { - // Switch out the old display layer with the new one - [_view.layer replaceSublayer:oldLayer with:_displayLayer]; - } - else { - [_view.layer addSublayer:_displayLayer]; - } - if (formatDesc != nil) { CFRelease(formatDesc); formatDesc = nil;