Changeset 283610 in webkit
- Timestamp:
- Oct 6, 2021, 3:13:15 AM (5 years ago)
- Location:
- trunk/Source/ThirdParty/libwebrtc
- Files:
-
- 8 edited
-
ChangeLog (modified) (1 diff)
-
Source/webrtc/sdk/WebKit/WebKitEncoder.mm (modified) (1 diff)
-
Source/webrtc/sdk/objc/api/video_frame_buffer/RTCNativeI420Buffer+Private.h (modified) (1 diff)
-
Source/webrtc/sdk/objc/api/video_frame_buffer/RTCNativeI420Buffer.mm (modified) (1 diff)
-
Source/webrtc/sdk/objc/base/RTCVideoFrameBuffer.h (modified) (1 diff)
-
Source/webrtc/sdk/objc/components/video_frame_buffer/RTCCVPixelBuffer.h (modified) (1 diff)
-
Source/webrtc/sdk/objc/components/video_frame_buffer/RTCCVPixelBuffer.mm (modified) (1 diff)
-
Source/webrtc/sdk/objc/native/src/objc_frame_buffer.mm (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/ThirdParty/libwebrtc/ChangeLog
r283431 r283610 1 2021-10-06 Youenn Fablet <youenn@apple.com> 2 3 ObjectiveC WebRTC frame buffers are autoreleased late, especially on Debug builds 4 https://bugs.webkit.org/show_bug.cgi?id=231162 5 6 Reviewed by David Kilzer. 7 8 Instead of waiting for the autorelease pool to release these objects, we explicitly release them by calling close. 9 This ensures that pixel buffers get released very quickly. 10 11 * Source/webrtc/sdk/WebKit/WebKitEncoder.mm: 12 * Source/webrtc/sdk/objc/api/video_frame_buffer/RTCNativeI420Buffer+Private.h: 13 * Source/webrtc/sdk/objc/api/video_frame_buffer/RTCNativeI420Buffer.mm: 14 * Source/webrtc/sdk/objc/base/RTCI420Buffer.h: 15 * Source/webrtc/sdk/objc/base/RTCVideoFrameBuffer.h: 16 * Source/webrtc/sdk/objc/components/video_frame_buffer/RTCCVPixelBuffer.h: 17 * Source/webrtc/sdk/objc/components/video_frame_buffer/RTCCVPixelBuffer.mm: 18 * Source/webrtc/sdk/objc/native/src/objc_frame_buffer.mm: 19 1 20 2021-10-01 Chris Dumez <cdumez@apple.com> 2 21 -
trunk/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitEncoder.mm
r278701 r283610 371 371 [rtcFrameTypes addObject:@(RTCFrameType(RTCFrameTypeVideoFrameKey))]; 372 372 373 auto *videoFrame = [[RTCVideoFrame alloc] initWithBuffer:ToObjCVideoFrameBuffer(pixelBufferToFrame(pixelBuffer)) rotation:RTCVideoRotation(rotation) timeStampNs:timeStampNs]; 373 auto videoFrameBuffer = pixelBufferToFrame(pixelBuffer); 374 auto *videoFrame = [[RTCVideoFrame alloc] initWithBuffer:ToObjCVideoFrameBuffer(videoFrameBuffer) rotation:RTCVideoRotation(rotation) timeStampNs:timeStampNs]; 374 375 videoFrame.timeStamp = timeStamp; 375 376 auto *encoder = (__bridge WK_RTCLocalVideoH264H265Encoder *)(localEncoder); -
trunk/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/api/video_frame_buffer/RTCNativeI420Buffer+Private.h
r237075 r283610 24 24 - (rtc::scoped_refptr<webrtc::I420BufferInterface>)nativeI420Buffer; 25 25 26 #if defined(WEBRTC_WEBKIT_BUILD) 27 - (void)close; 28 #endif 26 29 @end 27 30 -
trunk/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/api/video_frame_buffer/RTCNativeI420Buffer.mm
r264517 r283610 110 110 } 111 111 112 #if defined(WEBRTC_WEBKIT_BUILD) 113 - (void)close { 114 _i420Buffer = nullptr; 115 } 116 #endif 117 112 118 #pragma mark - Debugging 113 119 -
trunk/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/base/RTCVideoFrameBuffer.h
r252472 r283610 26 26 - (id<RTCI420Buffer>)toI420; 27 27 28 #if defined(WEBRTC_WEBKIT_BUILD) 29 - (void)close; 30 #endif 28 31 @end 29 32 -
trunk/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_frame_buffer/RTCCVPixelBuffer.h
r248077 r283610 49 49 withTempBuffer:(nullable uint8_t *)tmpBuffer; 50 50 51 #if defined(WEBRTC_WEBKIT_BUILD) 52 - (void)close; 53 #endif 51 54 @end 52 55 -
trunk/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_frame_buffer/RTCCVPixelBuffer.mm
r237075 r283610 346 346 } 347 347 348 #if defined(WEBRTC_WEBKIT_BUILD) 349 - (void)close { 350 CVBufferRelease(_pixelBuffer); 351 _pixelBuffer = nil; 352 } 353 #endif 354 348 355 @end -
trunk/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/native/src/objc_frame_buffer.mm
r252472 r283610 23 23 explicit ObjCI420FrameBuffer(id<RTCI420Buffer> frame_buffer) 24 24 : frame_buffer_(frame_buffer), width_(frame_buffer.width), height_(frame_buffer.height) {} 25 ~ObjCI420FrameBuffer() override {} 25 ~ObjCI420FrameBuffer() override { 26 #if defined(WEBRTC_WEBKIT_BUILD) 27 [frame_buffer_ close]; 28 #endif 29 } 26 30 27 31 int width() const override { return width_; } … … 52 56 : frame_buffer_(frame_buffer), width_(frame_buffer.width), height_(frame_buffer.height) {} 53 57 54 ObjCFrameBuffer::~ObjCFrameBuffer() {} 58 ObjCFrameBuffer::~ObjCFrameBuffer() { 59 #if defined(WEBRTC_WEBKIT_BUILD) 60 [frame_buffer_ close]; 61 #endif 62 } 55 63 56 64 VideoFrameBuffer::Type ObjCFrameBuffer::type() const {
Note:
See TracChangeset
for help on using the changeset viewer.