OSDN Git Service

media: clarify frame dropping behavior for decoder output
authorLajos Molnar <lajos@google.com>
Wed, 19 Jun 2019 22:10:09 +0000 (15:10 -0700)
committerLajos Molnar <lajos@google.com>
Wed, 19 Jun 2019 23:37:43 +0000 (23:37 +0000)
Bug: 135390389
Change-Id: Ie1b83e2db85703ea6fb03483b0ce08924de93e4f

media/java/android/media/MediaCodec.java

index 56e8e85..510ee44 100644 (file)
@@ -644,6 +644,16 @@ import java.util.concurrent.locks.ReentrantLock;
  <p>
  Also since {@link android.os.Build.VERSION_CODES#M}, you can change the output Surface
  dynamically using {@link #setOutputSurface setOutputSurface}.
+ <p>
+ When rendering output to a Surface, the Surface may be configured to drop excessive frames (that
+ are not consumed by the Surface in a timely manner). Or it may be configured to not drop excessive
+ frames. In the latter mode if the Surface is not consuming output frames fast enough, it will
+ eventually block the decoder. Prior to {@link android.os.Build.VERSION_CODES#Q} the exact behavior
+ was undefined, with the exception that View surfaces (SuerfaceView or TextureView) always dropped
+ excessive frames. Since {@link android.os.Build.VERSION_CODES#Q} the default behavior is to drop
+ excessive frames. Applications can opt out of this behavior for non-View surfaces (such as
+ ImageReader or SurfaceTexture) by targeting SDK {@link android.os.Build.VERSION_CODES#Q} and
+ setting the key {@code "allow-frame-drop"} to {@code 0} in their configure format.
 
  <h4>Transformations When Rendering onto Surface</h4>