From ba1e9c8e1bd29618cee6c7b0e07369aae4ddde1a Mon Sep 17 00:00:00 2001 From: Thompson3142 <115718208+Thompson3142@users.noreply.github.com> Date: Thu, 24 Oct 2024 19:35:39 +0200 Subject: [PATCH] Update comment Co-authored-by: Tobi --- .../SeekbarPreviewThumbnailHolder.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHolder.java b/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHolder.java index 2db6d39b2..38c2d5d38 100644 --- a/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHolder.java +++ b/app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHolder.java @@ -133,7 +133,7 @@ public class SeekbarPreviewThumbnailHolder { // Get the bounds where the frame is found final int[] bounds = frameset.getFrameBoundsAt(currentPosMs); generatedDataForUrl.put(currentPosMs, - createBitmapSupplier(srcBitMap, bounds, frameset)); + createBitmapSupplier(srcBitMap, bounds, frameset)); currentPosMs += frameset.getDurationPerFrame(); pos++; @@ -168,6 +168,18 @@ public class SeekbarPreviewThumbnailHolder { return null; } + // Under some rare circumstances the YouTube API returns slightly too small storyboards, + // (or not the matching frame width/height) + // This would lead to createBitmap cutting out a bitmap that is out of bounds, + // so we need to adjust the bounds accordingly + if (srcBitMap.getWidth() < bounds[1] + frameset.getFrameWidth()) { + bounds[1] = srcBitMap.getWidth() - frameset.getFrameWidth(); + } + + if (srcBitMap.getHeight() < bounds[2] + frameset.getFrameHeight()) { + bounds[2] = srcBitMap.getHeight() - frameset.getFrameHeight(); + } + // Cut out the corresponding bitmap form the "srcBitMap" final Bitmap cutOutBitmap = Bitmap.createBitmap(srcBitMap, bounds[1], bounds[2], frameset.getFrameWidth(), frameset.getFrameHeight());