diff options
author | Martin Stransky <stransky@redhat.com> | 2021-04-20 09:11:49 +0200 |
---|---|---|
committer | Martin Stransky <stransky@redhat.com> | 2021-04-20 09:11:49 +0200 |
commit | c78ce968a861d6bbed272367b1ed8685a4a39795 (patch) | |
tree | 2b7616832a5ed0c31863584ed1e2ec1c4713a8de /mozilla-1645671.patch | |
parent | Added fix for mozbz#1701089 (Widevine playback issues) (diff) | |
download | librewolf-fedora-ff-c78ce968a861d6bbed272367b1ed8685a4a39795.tar.gz librewolf-fedora-ff-c78ce968a861d6bbed272367b1ed8685a4a39795.tar.bz2 librewolf-fedora-ff-c78ce968a861d6bbed272367b1ed8685a4a39795.zip |
Updated to 88.0
Diffstat (limited to 'mozilla-1645671.patch')
-rw-r--r-- | mozilla-1645671.patch | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/mozilla-1645671.patch b/mozilla-1645671.patch deleted file mode 100644 index 0943469..0000000 --- a/mozilla-1645671.patch +++ /dev/null @@ -1,67 +0,0 @@ -changeset: 544864:a8603f131703 -tag: tip -parent: 544861:161920b70ae4 -user: Martin Stransky <stransky@redhat.com> -date: Fri Jul 31 13:39:48 2020 +0200 -files: dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h -description: -Bug 1645671 [Linux/VA-API] Create DMABufSurfaceWrapper directly at nsTAttay and disable DMABufSurfaceWrapper class copy and assignment constructors, r?jya - -When DMABufSurfaceWrapper is added to nsTArray, a temporary local DMABufSurfaceWrapper object is created. When the temporary -object is deleted after the adding, associated dmabuf data is released which leads to rendering artifact during VA-API video playback. - -As a fix in this patch we create DMABufSurfaceWrapper 'in-place' at nsTAttay. -We also disable DMABufSurfaceWrapper class copy and assignment constructors to avoid similar potential issues. - -Differential Revision: https://phabricator.services.mozilla.com/D85152 - - -diff --git a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp ---- a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp -+++ b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp -@@ -777,17 +777,17 @@ MediaResult FFmpegVideoDecoder<LIBAV_VER - RESULT_DETAIL("Unable to get DMABufSurfaceYUV")); - } - - # ifdef MOZ_LOGGING - static int uid = 0; - surface->SetUID(++uid); - FFMPEG_LOG("Created new DMABufSurface UID = %d", uid); - # endif -- mDMABufSurfaces.AppendElement(DMABufSurfaceWrapper(surface, mLib)); -+ mDMABufSurfaces.EmplaceBack(surface, mLib); - surfaceWrapper = &(mDMABufSurfaces[mDMABufSurfaces.Length() - 1]); - } else { - surface = surfaceWrapper->GetDMABufSurface(); - bool ret; - - if (mVAAPIDeviceContext) { - ret = surface->UpdateYUVData(vaDesc); - } else { -diff --git a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h ---- a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h -+++ b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h -@@ -70,16 +70,22 @@ class DMABufSurfaceWrapper final { - // Check if DMABufSurface is used by any gecko rendering process - // (WebRender or GL compositor) or by DMABUFSurfaceImage/VideoData. - bool IsUsed() const { return mSurface->IsGlobalRefSet(); } - - RefPtr<DMABufSurfaceYUV> GetDMABufSurface() const { - return mSurface->GetAsDMABufSurfaceYUV(); - } - -+ // Don't allow DMABufSurfaceWrapper plain copy as it leads to -+ // enexpected DMABufSurface/HW buffer releases and we don't want to -+ // deep copy them. -+ DMABufSurfaceWrapper(const DMABufSurfaceWrapper&) = delete; -+ const DMABufSurfaceWrapper& operator=(DMABufSurfaceWrapper const&) = delete; -+ - private: - const RefPtr<DMABufSurface> mSurface; - const FFmpegLibWrapper* mLib; - AVBufferRef* mAVHWFramesContext; - AVBufferRef* mHWAVBuffer; - }; - #endif - - |