Merge "CTS of CtsMediaTestCases#android.media.cts.DecodeAccuracyTest may fail when video is cropped. When we use GPU to copy the data, rendering would choose filter. But we need add shrink in border to ensure the sampler not reach border like what GUI does." am: 06e16941d5
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1801770 Change-Id: I1e34d4b25af83a4761e7a2fc81bf5b79d7b2aa08
This commit is contained in:
@@ -32,6 +32,8 @@
|
||||
|
||||
using namespace android::uirenderer::renderthread;
|
||||
|
||||
static constexpr bool sEnableExtraCropInset = true;
|
||||
|
||||
namespace android {
|
||||
namespace uirenderer {
|
||||
|
||||
@@ -64,6 +66,20 @@ CopyResult Readback::copySurfaceInto(ANativeWindow* window, const Rect& inSrcRec
|
||||
ALOGW("Surface doesn't have any previously queued frames, nothing to readback from");
|
||||
return CopyResult::SourceEmpty;
|
||||
}
|
||||
|
||||
if (sEnableExtraCropInset &&
|
||||
(cropRect.right - cropRect.left != bitmap->width() ||
|
||||
cropRect.bottom - cropRect.top != bitmap->height())) {
|
||||
/*
|
||||
* When we need use filtering, we should also make border shrink here like gui.
|
||||
* But we could not check format for YUV or RGB here... Just use 1 pix.
|
||||
*/
|
||||
cropRect.left += 0.5f;
|
||||
cropRect.top += 0.5f;
|
||||
cropRect.right -= 0.5f;
|
||||
cropRect.bottom -= 0.5f;
|
||||
}
|
||||
|
||||
UniqueAHardwareBuffer sourceBuffer{rawSourceBuffer};
|
||||
AHardwareBuffer_Desc description;
|
||||
AHardwareBuffer_describe(sourceBuffer.get(), &description);
|
||||
|
||||
Reference in New Issue
Block a user