Skip to content

Commit

Permalink
Copy edit async buffer queueing documentation
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 436176051
  • Loading branch information
ojw28 authored and icbaker committed Mar 21, 2022
1 parent ea47089 commit c8e8bb1
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 25 deletions.
28 changes: 12 additions & 16 deletions docs/customization.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

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 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.

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:
Expand All @@ -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 ##

Expand Down
6 changes: 3 additions & 3 deletions docs/drm.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
11 changes: 5 additions & 6 deletions docs/troubleshooting.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit c8e8bb1

Please sign in to comment.