diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoFrameReleaseHelper.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoFrameReleaseHelper.java index 2735852372..00aac0e00e 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoFrameReleaseHelper.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoFrameReleaseHelper.java @@ -622,21 +622,30 @@ public final class VideoFrameReleaseHelper { } private void createChoreographerInstanceInternal() { - choreographer = Choreographer.getInstance(); + try { + choreographer = Choreographer.getInstance(); + } catch (RuntimeException e) { + // See [Internal: b/213926330]. + Log.w(TAG, "Vsync sampling disabled due to platform error", e); + } } private void addObserverInternal() { - observerCount++; - if (observerCount == 1) { - checkNotNull(choreographer).postFrameCallback(this); + if (choreographer != null) { + observerCount++; + if (observerCount == 1) { + choreographer.postFrameCallback(this); + } } } private void removeObserverInternal() { - observerCount--; - if (observerCount == 0) { - checkNotNull(choreographer).removeFrameCallback(this); - sampledVsyncTimeNs = C.TIME_UNSET; + if (choreographer != null) { + observerCount--; + if (observerCount == 0) { + choreographer.removeFrameCallback(this); + sampledVsyncTimeNs = C.TIME_UNSET; + } } } }