[Android] Pip: check video dimensions before setting AR
    Duncan McNamara 
    git at videolan.org
       
    Thu Jul  4 05:02:21 UTC 2024
    
    
  
vlc-android | branch: master | Duncan McNamara <dcn.mcnamara at gmail.com> | Thu Jun 27 15:29:52 2024 +0200| [6d5bcc70a6387dae0e1e4c399c82efcf06382eae] | committer: Duncan McNamara
Pip: check video dimensions before setting AR
With videos with dimensions of 0, the ar will be wrong, and creating the
pip window will throw an exception and go to default PiP.
> https://code.videolan.org/videolan/vlc-android/commit/6d5bcc70a6387dae0e1e4c399c82efcf06382eae
---
 .../src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt         | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt b/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt
index debd4b2a81..212609e7e4 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt
@@ -821,9 +821,13 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
                 try {
                     val track = service?.playlistManager?.player?.mediaplayer?.getSelectedVideoTrack()
                             ?: return
-                    val ar = Rational(track.getWidth().coerceAtMost((track.getHeight() * 2.39f).toInt()), track.getHeight())
+                    val width = track.getWidth()
+                    val height = track.getHeight()
+                    val paramBuilder = PictureInPictureParams.Builder()
+                    if (width != 0 && height != 0 && (width.toFloat() / height.toFloat()) in 0.418410f..2.39f)
+                        paramBuilder.setAspectRatio(Rational(width, height))
                     service?.updateWidgetState()
-                    enterPictureInPictureMode(PictureInPictureParams.Builder().setAspectRatio(ar).build())
+                    enterPictureInPictureMode(paramBuilder.build())
                 } catch (e: IllegalArgumentException) { // Fallback with default parameters
                     enterPictureInPictureMode()
                 }
    
    
More information about the Android
mailing list