
Cherry-Picked the following commits: 0defd8f Changed "WebM" to "AOMedia" & "webm" to "aomedia" 54e6676 Replace "VPx" by "AVx" 5082a36 Change "Vpx" to "Avx" 7df44f1 Replace "Vp9" w/ "Av1" 967f722 Remove kVp9CodecId 828f30c Change "Vp8" to "AOM" 030b5ff AUTHORS regenerated 2524cae Add ref-mv experimental flag 016762b Change copyright notice to AOMedia form 81e5526 Replace vp9 w/ av1 9b94565 Add missing files fa8ca9f Change "vp9" to "av1" ec838b7 Convert "vp8" to "aom" 80edfa0 Change "VP9" to "AV1" d1a11fb Change "vp8" to "aom" 7b58251 Point to WebM test data dd1a5c8 Replace "VP8" with "AOM" ff00fc0 Change "VPX" to "AOM" 01dee0b Change "vp10" to "av1" in source code cebe6f0 Convert "vpx" to "aom" 17b0567 rename vp10*.mk to av1_*.mk fe5f8a8 rename files vp10_* to av1_* Change-Id: I6fc3d18eb11fc171e46140c836ad5339cf6c9419
63 lines
3.6 KiB
Plaintext
63 lines
3.6 KiB
Plaintext
/*! \page usage_decode Decoding
|
|
|
|
The aom_codec_decode() function is at the core of the decode loop. It
|
|
processes packets of compressed data passed by the application, producing
|
|
decoded images. The decoder expects packets to comprise exactly one image
|
|
frame of data. Packets \ref MUST be passed in decode order. If the
|
|
application wishes to associate some data with the frame, the
|
|
<code>user_priv</code> member may be set. The <code>deadline</code>
|
|
parameter controls the amount of time in microseconds the decoder should
|
|
spend working on the frame. This is typically used to support adaptive
|
|
\ref usage_postproc based on the amount of free CPU time. For more
|
|
information on the <code>deadline</code> parameter, see \ref usage_deadline.
|
|
|
|
\ref samples
|
|
|
|
|
|
\section usage_cb Callback Based Decoding
|
|
There are two methods for the application to access decoded frame data. Some
|
|
codecs support asynchronous (callback-based) decoding \ref usage_features
|
|
that allow the application to register a callback to be invoked by the
|
|
decoder when decoded data becomes available. Decoders are not required to
|
|
support this feature, however. Like all \ref usage_features, support can be
|
|
determined by calling aom_codec_get_caps(). Callbacks are available in both
|
|
frame-based and slice-based variants. Frame based callbacks conform to the
|
|
signature of #aom_codec_put_frame_cb_fn_t and are invoked once the entire
|
|
frame has been decoded. Slice based callbacks conform to the signature of
|
|
#aom_codec_put_slice_cb_fn_t and are invoked after a subsection of the frame
|
|
is decoded. For example, a slice callback could be issued for each
|
|
macroblock row. However, the number and size of slices to return is
|
|
implementation specific. Also, the image data passed in a slice callback is
|
|
not necessarily in the same memory segment as the data will be when it is
|
|
assembled into a full frame. For this reason, the application \ref MUST
|
|
examine the rectangles that describe what data is valid to access and what
|
|
data has been updated in this call. For all their additional complexity,
|
|
slice based decoding callbacks provide substantial speed gains to the
|
|
overall application in some cases, due to improved cache behavior.
|
|
|
|
|
|
\section usage_frame_iter Frame Iterator Based Decoding
|
|
If the codec does not support callback based decoding, or the application
|
|
chooses not to make use of that feature, decoded frames are made available
|
|
through the aom_codec_get_frame() iterator. The application initializes the
|
|
iterator storage (of type #aom_codec_iter_t) to NULL, then calls
|
|
aom_codec_get_frame repeatedly until it returns NULL, indicating that all
|
|
images have been returned. This process may result in zero, one, or many
|
|
frames that are ready for display, depending on the codec.
|
|
|
|
|
|
\section usage_postproc Postprocessing
|
|
Postprocessing is a process that is applied after a frame is decoded to
|
|
enhance the image's appearance by removing artifacts introduced in the
|
|
compression process. It is not required to properly decode the frame, and
|
|
is generally done only when there is enough spare CPU time to execute
|
|
the required filters. Codecs may support a number of different
|
|
postprocessing filters, and the available filters may differ from platform
|
|
to platform. Embedded devices often do not have enough CPU to implement
|
|
postprocessing in software. The filter selection is generally handled
|
|
automatically by the codec, depending on the amount of time remaining before
|
|
hitting the user-specified \ref usage_deadline after decoding the frame.
|
|
|
|
|
|
*/
|