Skip to content

Commit 72a250b

Browse files
authored
Merge pull request #9479 from Stypox/create-scaled-bitmap
Use smoother bitmap downscaling for thumbnails
2 parents 0590350 + b0516fb commit 72a250b

3 files changed

Lines changed: 12 additions & 6 deletions

File tree

app/src/main/java/org/schabi/newpipe/player/seekbarpreview/SeekbarPreviewThumbnailHelper.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import androidx.annotation.IntDef;
1010
import androidx.annotation.NonNull;
11+
import androidx.core.graphics.BitmapCompat;
1112
import androidx.core.math.MathUtils;
1213
import androidx.preference.PreferenceManager;
1314

@@ -91,8 +92,8 @@ public static void tryResizeAndSetSeekbarPreviewThumbnail(
9192
final float scaleFactor = (float) newWidth / srcWidth;
9293
final int newHeight = (int) (srcBitmap.getHeight() * scaleFactor);
9394

94-
currentSeekbarPreviewThumbnail.setImageBitmap(
95-
Bitmap.createScaledBitmap(srcBitmap, newWidth, newHeight, true));
95+
currentSeekbarPreviewThumbnail.setImageBitmap(BitmapCompat.createScaledBitmap(srcBitmap,
96+
newWidth, newHeight, null, true));
9697
} catch (final Exception ex) {
9798
Log.e(TAG, "Failed to resize and set seekbar preview thumbnail", ex);
9899
currentSeekbarPreviewThumbnail.setVisibility(View.GONE);

app/src/main/java/org/schabi/newpipe/player/ui/VideoPlayerUi.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import androidx.appcompat.content.res.AppCompatResources;
4343
import androidx.appcompat.view.ContextThemeWrapper;
4444
import androidx.appcompat.widget.PopupMenu;
45+
import androidx.core.graphics.BitmapCompat;
4546
import androidx.core.graphics.Insets;
4647
import androidx.core.math.MathUtils;
4748
import androidx.core.view.ViewCompat;
@@ -455,10 +456,11 @@ private void updateEndScreenThumbnail(@Nullable final Bitmap thumbnail) {
455456
}
456457

457458
final float endScreenHeight = calculateMaxEndScreenThumbnailHeight(thumbnail);
458-
final Bitmap endScreenBitmap = Bitmap.createScaledBitmap(
459+
final Bitmap endScreenBitmap = BitmapCompat.createScaledBitmap(
459460
thumbnail,
460461
(int) (thumbnail.getWidth() / (thumbnail.getHeight() / endScreenHeight)),
461462
(int) endScreenHeight,
463+
null,
462464
true);
463465

464466
if (DEBUG) {

app/src/main/java/org/schabi/newpipe/util/PicassoHelper.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import android.util.Log;
1010

1111
import androidx.annotation.Nullable;
12+
import androidx.core.graphics.BitmapCompat;
1213

1314
import com.squareup.picasso.Cache;
1415
import com.squareup.picasso.LruCache;
@@ -139,21 +140,23 @@ public Bitmap transform(final Bitmap source) {
139140
.getDimension(R.dimen.player_notification_thumbnail_width),
140141
source.getWidth());
141142

142-
final Bitmap result = Bitmap.createScaledBitmap(
143+
final Bitmap result = BitmapCompat.createScaledBitmap(
143144
source,
144145
(int) notificationThumbnailWidth,
145146
(int) (source.getHeight()
146147
/ (source.getWidth() / notificationThumbnailWidth)),
148+
null,
147149
true);
148150

149-
if (result == source) {
151+
if (result == source || !result.isMutable()) {
150152
// create a new mutable bitmap to prevent strange crashes on some
151153
// devices (see #4638)
152-
final Bitmap copied = Bitmap.createScaledBitmap(
154+
final Bitmap copied = BitmapCompat.createScaledBitmap(
153155
source,
154156
(int) notificationThumbnailWidth - 1,
155157
(int) (source.getHeight() / (source.getWidth()
156158
/ (notificationThumbnailWidth - 1))),
159+
null,
157160
true);
158161
source.recycle();
159162
return copied;

0 commit comments

Comments
 (0)