diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java index 54d065969228c..42e29b0695e5e 100644 --- a/media/java/android/media/MediaCodec.java +++ b/media/java/android/media/MediaCodec.java @@ -60,10 +60,10 @@ import java.util.concurrent.locks.ReentrantLock; with {@link MediaExtractor}, {@link MediaSync}, {@link MediaMuxer}, {@link MediaCrypto}, {@link MediaDrm}, {@link Image}, {@link Surface}, and {@link AudioTrack}.)

-

MediaCodec buffer flow diagram
+
+ MediaCodec buffer flow diagram +

In broad terms, a codec processes input data to generate output data. It processes data asynchronously and uses a set of input and output buffers. At a simplistic level, you request @@ -237,10 +237,10 @@ import java.util.concurrent.locks.ReentrantLock; Uninitialized, Configured and Error, whereas the Executing state conceptually progresses through three sub-states: Flushed, Running and End-of-Stream.

-

MediaCodec state diagram
+
+ MediaCodec state diagram +

When you create a codec using one of the factory methods, the codec is in the Uninitialized state. First, you need to configure it via {@link #configure configure(…)}, which brings @@ -482,10 +482,10 @@ import java.util.concurrent.locks.ReentrantLock; Similarly, upon an initial call to {@code start} the codec will move directly to the Running sub-state and start passing available input buffers via the callback.

-

MediaCodec state diagram for asynchronous operation
+
+ MediaCodec state diagram for asynchronous operation +

MediaCodec is typically used like this in asynchronous mode: