Commit c8e8bb14 by olly Committed by Ian Baker

Copy edit async buffer queueing documentation

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