Revert "Fix memory corruption in BasicDesktopFrame::CopyTo"
This reverts commit 0ba10283fb3cbdf1cedea79d84e4bc3b720da6a1. Reason for revert: This workaround is no longer needed, as the libyuv team has already fixed the underlying issue (in b/234824290) Original change's description: > Fix memory corruption in BasicDesktopFrame::CopyTo > > This memory corruption happens inside libyuv::CopyPlane() > on platforms that support AVX. I opened b/234824290 so the libyuv team > can investigate and fix this, but in the mean time we need to get this > fixed asap as this is causing crashes on both M102 (which is released to > stable) and M103 (which has this issue marked as beta blocking). > > Fixed: b/234824290 > Fixed: chromium:1330019 > Test: Manually reproduced on zork board > Change-Id: I6bfd1e089020dfb23d974d3912d45c01a4e5ce26 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/265041 > Auto-Submit: Jeroen Dhollander <jeroendh@google.com> > Commit-Queue: Alexander Cooper <alcooper@chromium.org> > Reviewed-by: Alexander Cooper <alcooper@chromium.org> > Cr-Commit-Position: refs/heads/main@{#37121} Fixed: b/234824290 Fixed: chromium:1330019 Change-Id: Iafc0eac651fbc7a7fce5092306b12c4377248839 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/265165 Auto-Submit: Jeroen Dhollander <jeroendh@google.com> Reviewed-by: Alexander Cooper <alcooper@chromium.org> Commit-Queue: Alexander Cooper <alcooper@chromium.org> Reviewed-by: Frank Barchard <fbarchard@google.com> Cr-Commit-Position: refs/heads/main@{#37142}
This commit is contained in:

committed by
WebRTC LUCI CQ

parent
0e230fd022
commit
c949016e13
@ -13,7 +13,6 @@
|
||||
#include <string.h>
|
||||
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
|
||||
@ -24,15 +23,6 @@
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
namespace {
|
||||
|
||||
// Calculate the size of the data buffer size used to store a BasicDesktopFrame.
|
||||
int CalculateDataSizeFor(const DesktopSize& size) {
|
||||
return DesktopFrame::kBytesPerPixel * size.width() * size.height();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
DesktopFrame::DesktopFrame(DesktopSize size,
|
||||
int stride,
|
||||
uint8_t* data,
|
||||
@ -157,7 +147,7 @@ void DesktopFrame::MoveFrameInfoFrom(DesktopFrame* other) {
|
||||
BasicDesktopFrame::BasicDesktopFrame(DesktopSize size)
|
||||
: DesktopFrame(size,
|
||||
kBytesPerPixel * size.width(),
|
||||
new uint8_t[CalculateDataSizeFor(size)](),
|
||||
new uint8_t[kBytesPerPixel * size.width() * size.height()](),
|
||||
nullptr) {}
|
||||
|
||||
BasicDesktopFrame::~BasicDesktopFrame() {
|
||||
@ -167,9 +157,9 @@ BasicDesktopFrame::~BasicDesktopFrame() {
|
||||
// static
|
||||
DesktopFrame* BasicDesktopFrame::CopyOf(const DesktopFrame& frame) {
|
||||
DesktopFrame* result = new BasicDesktopFrame(frame.size());
|
||||
// TODO(b/234824290): Using memcpy until libyuv::CopyPlane() is fixed to no
|
||||
// longer introduce memory corruption on platforms that support AVX.
|
||||
memcpy(result->data(), frame.data(), CalculateDataSizeFor(result->size()));
|
||||
libyuv::CopyPlane(frame.data(), frame.stride(), result->data(),
|
||||
result->stride(), frame.size().width() * kBytesPerPixel,
|
||||
frame.size().height());
|
||||
result->CopyFrameInfoFrom(frame);
|
||||
return result;
|
||||
}
|
||||
|
Reference in New Issue
Block a user