From 8ec6cf154ccc4c232bccaee4f3df9f6d0bd277b3 Mon Sep 17 00:00:00 2001 From: olly Date: Mon, 28 Oct 2019 12:18:49 +0000 Subject: [PATCH] Fix incorrect anamorphic handling in Leanback extension The leanback library doesn't know about non-square pixels. So if we're playing content that uses non-square pixels, we need to adjust the video dimensions that we provide to leanback such that it renders the video with the correct aspect ratio. PiperOrigin-RevId: 277042560 --- .../exoplayer2/ext/leanback/LeanbackPlayerAdapter.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/extensions/leanback/src/main/java/com/google/android/exoplayer2/ext/leanback/LeanbackPlayerAdapter.java b/extensions/leanback/src/main/java/com/google/android/exoplayer2/ext/leanback/LeanbackPlayerAdapter.java index 7eb8dac49f..1f990e8465 100644 --- a/extensions/leanback/src/main/java/com/google/android/exoplayer2/ext/leanback/LeanbackPlayerAdapter.java +++ b/extensions/leanback/src/main/java/com/google/android/exoplayer2/ext/leanback/LeanbackPlayerAdapter.java @@ -307,7 +307,11 @@ public final class LeanbackPlayerAdapter extends PlayerAdapter implements Runnab @Override public void onVideoSizeChanged( int width, int height, int unappliedRotationDegrees, float pixelWidthHeightRatio) { - getCallback().onVideoSizeChanged(LeanbackPlayerAdapter.this, width, height); + // There's no way to pass pixelWidthHeightRatio to leanback, so we scale the width that we + // pass to take it into account. This is necessary to ensure that leanback uses the correct + // aspect ratio when playing content with non-square pixels. + int scaledWidth = Math.round(width * pixelWidthHeightRatio); + getCallback().onVideoSizeChanged(LeanbackPlayerAdapter.this, scaledWidth, height); } @Override