Title: [275034] trunk/Source/ThirdParty/libwebrtc
Revision
275034
Author
[email protected]
Date
2021-03-25 08:28:52 -0700 (Thu, 25 Mar 2021)

Log Message

Align RemoteVideoDecoder destruction strategy with RemoteVideoEncoder
https://bugs.webkit.org/show_bug.cgi?id=223745

Reviewed by Eric Carlson.

When decoder is released, we make sure to nullify the decoder callback.
We wait to release WebKit decoder at RemoteVideoDecoder destruction time.

* Source/webrtc/sdk/WebKit/WebKitDecoder.mm:
(webrtc::RemoteVideoDecoder::~RemoteVideoDecoder):
(webrtc::RemoteVideoDecoder::Release):

Modified Paths

Diff

Modified: trunk/Source/ThirdParty/libwebrtc/ChangeLog (275033 => 275034)


--- trunk/Source/ThirdParty/libwebrtc/ChangeLog	2021-03-25 15:28:10 UTC (rev 275033)
+++ trunk/Source/ThirdParty/libwebrtc/ChangeLog	2021-03-25 15:28:52 UTC (rev 275034)
@@ -1,3 +1,17 @@
+2021-03-25  Youenn Fablet  <[email protected]>
+
+        Align RemoteVideoDecoder destruction strategy with RemoteVideoEncoder
+        https://bugs.webkit.org/show_bug.cgi?id=223745
+
+        Reviewed by Eric Carlson.
+
+        When decoder is released, we make sure to nullify the decoder callback.
+        We wait to release WebKit decoder at RemoteVideoDecoder destruction time.
+
+        * Source/webrtc/sdk/WebKit/WebKitDecoder.mm:
+        (webrtc::RemoteVideoDecoder::~RemoteVideoDecoder):
+        (webrtc::RemoteVideoDecoder::Release):
+
 2021-03-10  Jer Noble  <[email protected]>
 
         CRASH in MergeUVRow_AVX2

Modified: trunk/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoder.mm (275033 => 275034)


--- trunk/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoder.mm	2021-03-25 15:28:10 UTC (rev 275033)
+++ trunk/Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitDecoder.mm	2021-03-25 15:28:52 UTC (rev 275034)
@@ -125,7 +125,7 @@
 class RemoteVideoDecoder final : public webrtc::VideoDecoder {
 public:
     explicit RemoteVideoDecoder(WebKitVideoDecoder);
-    ~RemoteVideoDecoder() = default;
+    ~RemoteVideoDecoder();
 
 private:
     int32_t InitDecode(const VideoCodec*, int32_t number_of_cores) final;
@@ -163,6 +163,11 @@
 {
 }
 
+RemoteVideoDecoder::~RemoteVideoDecoder()
+{
+    videoDecoderCallbacks().releaseCallback(m_internalDecoder);
+}
+
 void videoDecoderTaskComplete(void* callback, uint32_t timeStamp, CVPixelBufferRef pixelBuffer, uint32_t timeStampRTP)
 {
     auto videoFrame = VideoFrame::Builder().set_video_frame_buffer(pixelBufferToFrame(pixelBuffer))
@@ -198,7 +203,8 @@
 
 int32_t RemoteVideoDecoder::Release()
 {
-    return videoDecoderCallbacks().releaseCallback(m_internalDecoder);
+    RegisterDecodeCompleteCallback(nullptr);
+    return 0;
 }
 
 RemoteVideoDecoderFactory::RemoteVideoDecoderFactory(std::unique_ptr<VideoDecoderFactory>&& internalFactory)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to