From 6ba6cca120cf04b23756d0485f67e5a9566f53b7 Mon Sep 17 00:00:00 2001 From: Krunal Patel Date: Sun, 27 Nov 2022 15:39:41 +0530 Subject: [PATCH] Fix to adopt dynamic aspect ration in PiP mode --- .../libretube/ui/extensions/SetAspectRatio.kt | 22 +++++++++++++++++++ .../libretube/ui/fragments/PlayerFragment.kt | 2 ++ 2 files changed, 24 insertions(+) create mode 100644 app/src/main/java/com/github/libretube/ui/extensions/SetAspectRatio.kt diff --git a/app/src/main/java/com/github/libretube/ui/extensions/SetAspectRatio.kt b/app/src/main/java/com/github/libretube/ui/extensions/SetAspectRatio.kt new file mode 100644 index 000000000..df1ebbf94 --- /dev/null +++ b/app/src/main/java/com/github/libretube/ui/extensions/SetAspectRatio.kt @@ -0,0 +1,22 @@ +package com.github.libretube.ui.extensions + +import android.app.PictureInPictureParams +import android.os.Build +import android.util.Rational +import androidx.annotation.RequiresApi + +@RequiresApi(Build.VERSION_CODES.O) +fun PictureInPictureParams.Builder.setAspectRatio( + width: Int, + height: Int +): PictureInPictureParams.Builder { + val ratio = (width.toFloat() / height).let { + when { + it.isNaN() -> Rational(4, 3) + it <= 0.418410 -> Rational(41841, 100000) + it >= 2.390000 -> Rational(239, 100) + else -> Rational(width, height) + } + } + return setAspectRatio(ratio) +} diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index 381f69409..74fe19af1 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -71,6 +71,7 @@ import com.github.libretube.ui.base.BaseFragment import com.github.libretube.ui.dialogs.AddToPlaylistDialog import com.github.libretube.ui.dialogs.DownloadDialog import com.github.libretube.ui.dialogs.ShareDialog +import com.github.libretube.ui.extensions.setAspectRatio import com.github.libretube.ui.extensions.setFormattedHtml import com.github.libretube.ui.extensions.setInvisible import com.github.libretube.ui.extensions.setupSubscriptionButton @@ -1361,6 +1362,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions { setAutoEnterEnabled(true) } } + .setAspectRatio(exoPlayer.videoSize.width, exoPlayer.videoSize.height) .build() private fun shouldStartPiP(): Boolean {