| Index: source/libvpx/examples/simple_decoder.txt
|
| ===================================================================
|
| --- source/libvpx/examples/simple_decoder.txt (revision 247498)
|
| +++ source/libvpx/examples/simple_decoder.txt (working copy)
|
| @@ -1,96 +0,0 @@
|
| -@TEMPLATE decoder_tmpl.c
|
| -Simple Decoder
|
| -==============
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ INTRODUCTION
|
| -This is an example of a simple decoder loop. It takes an input file
|
| -containing the compressed data (in IVF format), passes it through the
|
| -decoder, and writes the decompressed frames to disk. Other decoder
|
| -examples build upon this one.
|
| -
|
| -The details of the IVF format have been elided from this example for
|
| -simplicity of presentation, as IVF files will not generally be used by
|
| -your application. In general, an IVF file consists of a file header,
|
| -followed by a variable number of frames. Each frame consists of a frame
|
| -header followed by a variable length payload. The length of the payload
|
| -is specified in the first four bytes of the frame header. The payload is
|
| -the raw compressed data.
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ INTRODUCTION
|
| -
|
| -
|
| -Standard Includes
|
| ------------------
|
| -For decoders, you only have to include `vpx_decoder.h` and then any
|
| -header files for the specific codecs you use. In this case, we're using
|
| -vp8. The `VPX_CODEC_DISABLE_COMPAT` macro can be defined to ensure
|
| -strict compliance with the latest SDK by disabling some backwards
|
| -compatibility features. Defining this macro is encouraged.
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DEC_INCLUDES
|
| -@DEFAULT
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DEC_INCLUDES
|
| -
|
| -
|
| -Initializing The Codec
|
| -----------------------
|
| -The decoder is initialized by the following code. This is an example for
|
| -the VP8 decoder, but the code is analogous for all algorithms. Replace
|
| -`vpx_codec_vp8_dx()` with a pointer to the interface exposed by the
|
| -algorithm you want to use. The `cfg` argument is left as NULL in this
|
| -example, because we want the algorithm to determine the stream
|
| -configuration (width/height) and allocate memory automatically. This
|
| -parameter is generally only used if you need to preallocate memory,
|
| -particularly in External Memory Allocation mode.
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DEC_INIT
|
| -@DEFAULT
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DEC_INIT
|
| -
|
| -
|
| -Decoding A Frame
|
| -----------------
|
| -Once the frame has been read into memory, it is decoded using the
|
| -`vpx_codec_decode` function. The call takes a pointer to the data
|
| -(`frame`) and the length of the data (`frame_sz`). No application data
|
| -is associated with the frame in this example, so the `user_priv`
|
| -parameter is NULL. The `deadline` parameter is left at zero for this
|
| -example. This parameter is generally only used when doing adaptive
|
| -postprocessing.
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DECODE
|
| -@DEFAULT
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DECODE
|
| -
|
| -Codecs may produce a variable number of output frames for every call to
|
| -`vpx_codec_decode`. These frames are retrieved by the
|
| -`vpx_codec_get_frame` iterator function. The iterator variable `iter` is
|
| -initialized to NULL each time `vpx_codec_decode` is called.
|
| -`vpx_codec_get_frame` is called in a loop, returning a pointer to a
|
| -decoded image or NULL to indicate the end of list.
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GET_FRAME
|
| -@DEFAULT
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GET_FRAME
|
| -
|
| -
|
| -Processing The Decoded Data
|
| ----------------------------
|
| -In this example, we simply write the encoded data to disk. It is
|
| -important to honor the image's `stride` values.
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PROCESS_DX
|
| -@DEFAULT
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PROCESS_DX
|
| -
|
| -
|
| -Cleanup
|
| --------
|
| -The `vpx_codec_destroy` call frees any memory allocated by the codec.
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DESTROY
|
| -@DEFAULT
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DESTROY
|
| -
|
| -
|
| -Error Handling
|
| ---------------
|
| -This example does not special case any error return codes. If there was
|
| -an error, a descriptive message is printed and the program exits. With
|
| -few exeptions, vpx_codec functions return an enumerated error status,
|
| -with the value `0` indicating success.
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DIE_CODEC
|
| -@DEFAULT
|
| -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DIE_CODEC
|
|
|