Merge pull request #12952 from TeamNewPipe/fix/NaN-on-minimize

fix(player): Fix scaleX being NaN on minimize to background app switch
This commit is contained in:
Aayush Gupta 2025-12-30 00:41:31 +08:00 committed by GitHub
commit 8510b4af4d
2 changed files with 8 additions and 3 deletions

View file

@ -1554,6 +1554,11 @@ public abstract class VideoPlayerUi extends PlayerUi implements SeekBar.OnSeekBa
@Override @Override
public void onVideoSizeChanged(@NonNull final VideoSize videoSize) { public void onVideoSizeChanged(@NonNull final VideoSize videoSize) {
super.onVideoSizeChanged(videoSize); super.onVideoSizeChanged(videoSize);
// Starting with ExoPlayer 2.19.0, the VideoSize will report a width and height of 0
// if the renderer is disabled. In that case, we skip updating the aspect ratio.
if (videoSize.width == 0 || videoSize.height == 0) {
return;
}
binding.surfaceView.setAspectRatio(((float) videoSize.width) / videoSize.height); binding.surfaceView.setAspectRatio(((float) videoSize.width) / videoSize.height);
} }
//endregion //endregion

View file

@ -35,12 +35,12 @@ public class ExpandableSurfaceView extends SurfaceView {
&& resizeMode != RESIZE_MODE_FIT && resizeMode != RESIZE_MODE_FIT
&& verticalVideo ? maxHeight : baseHeight; && verticalVideo ? maxHeight : baseHeight;
if (height == 0) { if (width == 0 || height == 0) {
return; return;
} }
final float viewAspectRatio = width / ((float) height); final float viewAspectRatio = width / ((float) height);
final float aspectDeformation = videoAspectRatio / viewAspectRatio - 1; final float aspectDeformation = (videoAspectRatio / viewAspectRatio) - 1;
scaleX = 1.0f; scaleX = 1.0f;
scaleY = 1.0f; scaleY = 1.0f;
@ -100,7 +100,7 @@ public class ExpandableSurfaceView extends SurfaceView {
} }
public void setAspectRatio(final float aspectRatio) { public void setAspectRatio(final float aspectRatio) {
if (videoAspectRatio == aspectRatio) { if (videoAspectRatio == aspectRatio || aspectRatio == 0 || !Float.isFinite(aspectRatio)) {
return; return;
} }