diff --git a/docs/customization.md b/docs/customization.md index 41f1d151f1..ffe455a91f 100644 --- a/docs/customization.md +++ b/docs/customization.md @@ -209,18 +209,15 @@ described for customizing extractor flags above. ### Enabling asynchronous buffer queueing ### -Asynchronous buffer queueing is an enhancement in ExoPlayer's rendering pipeline -that improves dropped frames and audio underruns. With asynchronous buffer -queueing, the player is operating the platform's `MediaCodec` in [asynchronous -mode][], thus the feature is applicable when content is decoded using the -platform decoders. The player also utilizes additional threads for scheduling -decoding and rendering of data. +Asynchronous buffer queueing is an enhancement in ExoPlayer's rendering +pipeline, which operates `MediaCodec` instances in [asynchronous mode][] and +uses additional threads to schedule decoding and rendering of data. Enabling it +can reduce dropped frames and audio underruns. -The feature is enabled by default on devices with Android 12 onwards and you can -also enable it in your app for other devices too. For example, consider enabling -asynchronous buffer queueing if you observe dropped frames or audio underruns on -specific devices, particularly with Widevine-protected or high frame-rate -content. +Asynchronous buffer queueing is enabled by default on devices running Android 12 +and above, and can be enabled manually from Android 6. Consider enabling the +feature for specific devices on which you observe dropped frames or audio +underruns, particularly when playing DRM protected or high frame rate content. In the simplest case, you need to inject a `DefaultRenderersFactory` to the player as follows: @@ -233,10 +230,9 @@ ExoPlayer exoPlayer = new ExoPlayer.Builder(context, renderersFactory).build(); ~~~ {: .language-java} -If however in your app you are instantiating the player with custom renderers, -then make sure to create the `MediaCodecVideoRenderer` and -`MediaCodecAudioRenderer` instances passing an -`AsynchronousMediaCodecAdapter.Factory` to their constructor. +If you're instantiating renderers directly, pass a +`AsynchronousMediaCodecAdapter.Factory` to the `MediaCodecVideoRenderer` and +`MediaCodecAudioRenderer` constructors. ## MediaSource customization ## diff --git a/docs/drm.md b/docs/drm.md index 92b0027ad1..8994bf9d64 100644 --- a/docs/drm.md +++ b/docs/drm.md @@ -101,9 +101,9 @@ MediaSource.Factory mediaSourceFactory = ### Improving playback performance ### -If you're experiencing video stuttering (dropped frames and/or audio underruns) -with Widevide-protected content on a device with Android version prior to 12, -you can try [enabling asynchronous buffer queueing]. +If you're experiencing video stuttering on a device running Android 6 to 11 when +playing DRM protected content, you can try [enabling asynchronous buffer +queueing]. [main demo app]: {{ site.release_v2 }}/demos/main [`MediaDrm`]: {{ site.android_sdk }}/android/media/MediaDrm.html diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index f66f446462..d60330324b 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -296,13 +296,12 @@ is the official way to play YouTube videos on Android. #### Video playback is stuttering ### -The device on which you're observing this may not be able to decode the content -fast enough if, for example, the content bitrate or resolution exceeds the -device capabilities. You may need to use lower quality content to obtain good -performance on such devices. +The device may not be able to decode the content fast enough if, for example, +the content bitrate or resolution exceeds the device capabilities. You may need +to use lower quality content to obtain good performance on such devices. -If you're experiencing this on a device with Android version prior to 12, -particularly with Widevine-protected or high frame-rate content, you can try +If you're experiencing video stuttering on a device running Android 6 to 11, +particularly when playing DRM protected or high frame rate content, you can try [enabling asynchronous buffer queueing]. [Fixing "Cleartext HTTP traffic not permitted" errors]: #fixing-cleartext-http-traffic-not-permitted-errors