MINI MINI MANI MO
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>WebM VP8 Codec SDK: Decoder Algorithm Interface</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">WebM VP8 Codec SDK
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#groups">Modules</a> |
<a href="#files">Files</a> |
<a href="#nested-classes">Data Structures</a> |
<a href="#define-members">Macros</a> |
<a href="#typedef-members">Typedefs</a> |
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">Decoder Algorithm Interface<div class="ingroups"><a class="el" href="group__codec.html">Common Algorithm Interface</a></div></div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
Modules</h2></td></tr>
<tr class="memitem:group__cap__put__frame"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__cap__put__frame.html">Frame-Based Decoding Functions</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:group__cap__put__slice"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__cap__put__slice.html">Slice-Based Decoding Functions</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:vpx__decoder_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="vpx__decoder_8h.html">vpx_decoder.h</a></td></tr>
<tr class="memdesc:vpx__decoder_8h"><td class="mdescLeft"> </td><td class="mdescRight">Describes the decoder algorithm interface to applications. <br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structvpx__codec__stream__info.html">vpx_codec_stream_info</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Stream properties. <a href="structvpx__codec__stream__info.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structvpx__codec__dec__cfg.html">vpx_codec_dec_cfg</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Initialization Configurations. <a href="structvpx__codec__dec__cfg.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga462b459e7ae13937e1eae1776245db12"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga462b459e7ae13937e1eae1776245db12"></a>
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#ga462b459e7ae13937e1eae1776245db12">VPX_DECODER_ABI_VERSION</a></td></tr>
<tr class="memdesc:ga462b459e7ae13937e1eae1776245db12"><td class="mdescLeft"> </td><td class="mdescRight">Current ABI version number. <br/></td></tr>
<tr class="separator:ga462b459e7ae13937e1eae1776245db12"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga9e33b8ee81025d5fc3d01b0975ad5f96"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#ga9e33b8ee81025d5fc3d01b0975ad5f96">VPX_CODEC_CAP_PUT_SLICE</a>   0x10000</td></tr>
<tr class="memdesc:ga9e33b8ee81025d5fc3d01b0975ad5f96"><td class="mdescLeft"> </td><td class="mdescRight">Decoder capabilities bitfield. <a href="#ga9e33b8ee81025d5fc3d01b0975ad5f96">More...</a><br/></td></tr>
<tr class="separator:ga9e33b8ee81025d5fc3d01b0975ad5f96"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga0ef59ca8067ac1dc8c8378042277ccc8"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#ga0ef59ca8067ac1dc8c8378042277ccc8">VPX_CODEC_CAP_PUT_FRAME</a>   0x20000</td></tr>
<tr class="separator:ga0ef59ca8067ac1dc8c8378042277ccc8"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga7825ade982ab85a5583d3d8a669baa3b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#ga7825ade982ab85a5583d3d8a669baa3b">VPX_CODEC_CAP_POSTPROC</a>   0x40000</td></tr>
<tr class="separator:ga7825ade982ab85a5583d3d8a669baa3b"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac44cd9e4722e1eb32a37c3eaec8d97b9"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#gac44cd9e4722e1eb32a37c3eaec8d97b9">VPX_CODEC_CAP_ERROR_CONCEALMENT</a>   0x80000</td></tr>
<tr class="separator:gac44cd9e4722e1eb32a37c3eaec8d97b9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gae89cbd3e8089803c6f4a67fc67a8c531"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#gae89cbd3e8089803c6f4a67fc67a8c531">VPX_CODEC_CAP_INPUT_FRAGMENTS</a>   0x100000</td></tr>
<tr class="separator:gae89cbd3e8089803c6f4a67fc67a8c531"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaee3981006b67dfdccad895cbef7936e6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#gaee3981006b67dfdccad895cbef7936e6">VPX_CODEC_CAP_FRAME_THREADING</a>   0x200000</td></tr>
<tr class="memdesc:gaee3981006b67dfdccad895cbef7936e6"><td class="mdescLeft"> </td><td class="mdescRight">Initialization-time Feature Enabling. <a href="#gaee3981006b67dfdccad895cbef7936e6">More...</a><br/></td></tr>
<tr class="separator:gaee3981006b67dfdccad895cbef7936e6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga6fe14f30254aff769412b128b29664cc"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#ga6fe14f30254aff769412b128b29664cc">VPX_CODEC_USE_POSTPROC</a>   0x10000</td></tr>
<tr class="separator:ga6fe14f30254aff769412b128b29664cc"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga520d7005e360202f5844982fa2392581"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#ga520d7005e360202f5844982fa2392581">VPX_CODEC_USE_ERROR_CONCEALMENT</a>   0x20000</td></tr>
<tr class="separator:ga520d7005e360202f5844982fa2392581"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga378855a0318396d6e4e585bd3bacbf3f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#ga378855a0318396d6e4e585bd3bacbf3f">VPX_CODEC_USE_INPUT_FRAGMENTS</a>   0x40000</td></tr>
<tr class="separator:ga378855a0318396d6e4e585bd3bacbf3f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga203295122fe98b675f94f4409d4684e0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#ga203295122fe98b675f94f4409d4684e0">VPX_CODEC_USE_FRAME_THREADING</a>   0x80000</td></tr>
<tr class="separator:ga203295122fe98b675f94f4409d4684e0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8c2f0b12f1bd4927eb3c68b01eab19d3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#ga8c2f0b12f1bd4927eb3c68b01eab19d3">vpx_codec_dec_init</a>(ctx, iface, cfg, flags)   <a class="el" href="group__decoder.html#ga26fe82cf8fd697f885935cea53be964f">vpx_codec_dec_init_ver</a>(ctx, iface, cfg, flags, <a class="el" href="group__decoder.html#ga462b459e7ae13937e1eae1776245db12">VPX_DECODER_ABI_VERSION</a>)</td></tr>
<tr class="memdesc:ga8c2f0b12f1bd4927eb3c68b01eab19d3"><td class="mdescLeft"> </td><td class="mdescRight">Convenience macro for <a class="el" href="group__decoder.html#ga26fe82cf8fd697f885935cea53be964f" title="Initialize a decoder instance. ">vpx_codec_dec_init_ver()</a> <a href="#ga8c2f0b12f1bd4927eb3c68b01eab19d3">More...</a><br/></td></tr>
<tr class="separator:ga8c2f0b12f1bd4927eb3c68b01eab19d3"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga900420e8f7cb9c1b3070b2ba7d636974"><td class="memItemLeft" align="right" valign="top">typedef struct <br class="typebreak"/>
<a class="el" href="structvpx__codec__stream__info.html">vpx_codec_stream_info</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#ga900420e8f7cb9c1b3070b2ba7d636974">vpx_codec_stream_info_t</a></td></tr>
<tr class="memdesc:ga900420e8f7cb9c1b3070b2ba7d636974"><td class="mdescLeft"> </td><td class="mdescRight">Stream properties. <a href="#ga900420e8f7cb9c1b3070b2ba7d636974">More...</a><br/></td></tr>
<tr class="separator:ga900420e8f7cb9c1b3070b2ba7d636974"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga4a2e808eb43f1e798024b5a409c484f9"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structvpx__codec__dec__cfg.html">vpx_codec_dec_cfg</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#ga4a2e808eb43f1e798024b5a409c484f9">vpx_codec_dec_cfg_t</a></td></tr>
<tr class="memdesc:ga4a2e808eb43f1e798024b5a409c484f9"><td class="mdescLeft"> </td><td class="mdescRight">Initialization Configurations. <a href="#ga4a2e808eb43f1e798024b5a409c484f9">More...</a><br/></td></tr>
<tr class="separator:ga4a2e808eb43f1e798024b5a409c484f9"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga26fe82cf8fd697f885935cea53be964f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__codec.html#gada1084710837ad363b92f2379dd2b8d2">vpx_codec_err_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#ga26fe82cf8fd697f885935cea53be964f">vpx_codec_dec_init_ver</a> (<a class="el" href="group__codec.html#gad03e2dfa6ae511db7d25be6bbb336233">vpx_codec_ctx_t</a> *ctx, <a class="el" href="group__codec.html#gad654f3da60151f5dfef70aca00ef1e9e">vpx_codec_iface_t</a> *iface, <a class="el" href="group__decoder.html#ga4a2e808eb43f1e798024b5a409c484f9">vpx_codec_dec_cfg_t</a> *cfg, <a class="el" href="group__codec.html#ga3b36d5af89ddc463489fe5bde0a57877">vpx_codec_flags_t</a> flags, int ver)</td></tr>
<tr class="memdesc:ga26fe82cf8fd697f885935cea53be964f"><td class="mdescLeft"> </td><td class="mdescRight">Initialize a decoder instance. <a href="#ga26fe82cf8fd697f885935cea53be964f">More...</a><br/></td></tr>
<tr class="separator:ga26fe82cf8fd697f885935cea53be964f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gadfee4664d644175d5aac1465ef11c4b0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__codec.html#gada1084710837ad363b92f2379dd2b8d2">vpx_codec_err_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#gadfee4664d644175d5aac1465ef11c4b0">vpx_codec_peek_stream_info</a> (<a class="el" href="group__codec.html#gad654f3da60151f5dfef70aca00ef1e9e">vpx_codec_iface_t</a> *iface, const uint8_t *data, unsigned int data_sz, <a class="el" href="group__decoder.html#ga900420e8f7cb9c1b3070b2ba7d636974">vpx_codec_stream_info_t</a> *si)</td></tr>
<tr class="memdesc:gadfee4664d644175d5aac1465ef11c4b0"><td class="mdescLeft"> </td><td class="mdescRight">Parse stream info from a buffer. <a href="#gadfee4664d644175d5aac1465ef11c4b0">More...</a><br/></td></tr>
<tr class="separator:gadfee4664d644175d5aac1465ef11c4b0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga552f1044d36a84e8b05ce6902e9ae8c9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__codec.html#gada1084710837ad363b92f2379dd2b8d2">vpx_codec_err_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#ga552f1044d36a84e8b05ce6902e9ae8c9">vpx_codec_get_stream_info</a> (<a class="el" href="group__codec.html#gad03e2dfa6ae511db7d25be6bbb336233">vpx_codec_ctx_t</a> *ctx, <a class="el" href="group__decoder.html#ga900420e8f7cb9c1b3070b2ba7d636974">vpx_codec_stream_info_t</a> *si)</td></tr>
<tr class="memdesc:ga552f1044d36a84e8b05ce6902e9ae8c9"><td class="mdescLeft"> </td><td class="mdescRight">Return information about the current stream. <a href="#ga552f1044d36a84e8b05ce6902e9ae8c9">More...</a><br/></td></tr>
<tr class="separator:ga552f1044d36a84e8b05ce6902e9ae8c9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga3441e157a7a69108bca9a069f2ee8e0d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__codec.html#gada1084710837ad363b92f2379dd2b8d2">vpx_codec_err_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#ga3441e157a7a69108bca9a069f2ee8e0d">vpx_codec_decode</a> (<a class="el" href="group__codec.html#gad03e2dfa6ae511db7d25be6bbb336233">vpx_codec_ctx_t</a> *ctx, const uint8_t *data, unsigned int data_sz, void *user_priv, long deadline)</td></tr>
<tr class="memdesc:ga3441e157a7a69108bca9a069f2ee8e0d"><td class="mdescLeft"> </td><td class="mdescRight">Decode data. <a href="#ga3441e157a7a69108bca9a069f2ee8e0d">More...</a><br/></td></tr>
<tr class="separator:ga3441e157a7a69108bca9a069f2ee8e0d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga0e231c3a5ce445fdb2268d741da97500"><td class="memItemLeft" align="right" valign="top"><a class="el" href="vpx__image_8h.html#abf5ac962cc6d71b4f0e39b1b0d033e55">vpx_image_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__decoder.html#ga0e231c3a5ce445fdb2268d741da97500">vpx_codec_get_frame</a> (<a class="el" href="group__codec.html#gad03e2dfa6ae511db7d25be6bbb336233">vpx_codec_ctx_t</a> *ctx, <a class="el" href="group__codec.html#ga6ea348f76b1f8a1fe50e14db684146c6">vpx_codec_iter_t</a> *iter)</td></tr>
<tr class="memdesc:ga0e231c3a5ce445fdb2268d741da97500"><td class="mdescLeft"> </td><td class="mdescRight">Decoded frames iterator. <a href="#ga0e231c3a5ce445fdb2268d741da97500">More...</a><br/></td></tr>
<tr class="separator:ga0e231c3a5ce445fdb2268d741da97500"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>This abstraction allows applications using this decoder to easily support multiple video formats with minimal code duplication. This section describes the interface common to all decoders. </p>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ga9e33b8ee81025d5fc3d01b0975ad5f96"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define VPX_CODEC_CAP_PUT_SLICE   0x10000</td>
</tr>
</table>
</div><div class="memdoc">
<p>Decoder capabilities bitfield. </p>
<p>Each decoder advertises the capabilities it supports as part of its <a class="el" href="group__codec.html#gad654f3da60151f5dfef70aca00ef1e9e" title="Codec interface structure. ">vpx_codec_iface_t</a> interface structure. Capabilities are extra interfaces or functionality, and are not required to be supported by a decoder.</p>
<p>The available flags are specified by VPX_CODEC_CAP_* defines.Will issue put_slice callbacks </p>
</div>
</div>
<a class="anchor" id="ga0ef59ca8067ac1dc8c8378042277ccc8"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define VPX_CODEC_CAP_PUT_FRAME   0x20000</td>
</tr>
</table>
</div><div class="memdoc">
<p>Will issue put_frame callbacks </p>
</div>
</div>
<a class="anchor" id="ga7825ade982ab85a5583d3d8a669baa3b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define VPX_CODEC_CAP_POSTPROC   0x40000</td>
</tr>
</table>
</div><div class="memdoc">
<p>Can postprocess decoded frame </p>
</div>
</div>
<a class="anchor" id="gac44cd9e4722e1eb32a37c3eaec8d97b9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define VPX_CODEC_CAP_ERROR_CONCEALMENT   0x80000</td>
</tr>
</table>
</div><div class="memdoc">
<p>Can conceal errors due to packet loss </p>
</div>
</div>
<a class="anchor" id="gae89cbd3e8089803c6f4a67fc67a8c531"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define VPX_CODEC_CAP_INPUT_FRAGMENTS   0x100000</td>
</tr>
</table>
</div><div class="memdoc">
<p>Can receive encoded frames one fragment at a time </p>
</div>
</div>
<a class="anchor" id="gaee3981006b67dfdccad895cbef7936e6"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define VPX_CODEC_CAP_FRAME_THREADING   0x200000</td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialization-time Feature Enabling. </p>
<p>Certain codec features must be known at initialization time, to allow for proper memory allocation.</p>
<p>The available flags are specified by VPX_CODEC_USE_* defines.Can support frame-based multi-threading </p>
</div>
</div>
<a class="anchor" id="ga6fe14f30254aff769412b128b29664cc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define VPX_CODEC_USE_POSTPROC   0x10000</td>
</tr>
</table>
</div><div class="memdoc">
<p>Postprocess decoded frame </p>
</div>
</div>
<a class="anchor" id="ga520d7005e360202f5844982fa2392581"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define VPX_CODEC_USE_ERROR_CONCEALMENT   0x20000</td>
</tr>
</table>
</div><div class="memdoc">
<p>Conceal errors in decoded frames </p>
</div>
</div>
<a class="anchor" id="ga378855a0318396d6e4e585bd3bacbf3f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define VPX_CODEC_USE_INPUT_FRAGMENTS   0x40000</td>
</tr>
</table>
</div><div class="memdoc">
<p>The input frame should be passed to the decoder one fragment at a time </p>
</div>
</div>
<a class="anchor" id="ga203295122fe98b675f94f4409d4684e0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define VPX_CODEC_USE_FRAME_THREADING   0x80000</td>
</tr>
</table>
</div><div class="memdoc">
<p>Enable frame-based multi-threading </p>
</div>
</div>
<a class="anchor" id="ga8c2f0b12f1bd4927eb3c68b01eab19d3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define vpx_codec_dec_init</td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">ctx, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">iface, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">cfg, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">flags </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td>   <a class="el" href="group__decoder.html#ga26fe82cf8fd697f885935cea53be964f">vpx_codec_dec_init_ver</a>(ctx, iface, cfg, flags, <a class="el" href="group__decoder.html#ga462b459e7ae13937e1eae1776245db12">VPX_DECODER_ABI_VERSION</a>)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Convenience macro for <a class="el" href="group__decoder.html#ga26fe82cf8fd697f885935cea53be964f" title="Initialize a decoder instance. ">vpx_codec_dec_init_ver()</a> </p>
<p>Ensures the ABI version parameter is properly set. </p>
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="ga900420e8f7cb9c1b3070b2ba7d636974"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="structvpx__codec__stream__info.html">vpx_codec_stream_info</a> <a class="el" href="group__decoder.html#ga900420e8f7cb9c1b3070b2ba7d636974">vpx_codec_stream_info_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Stream properties. </p>
<p>This structure is used to query or set properties of the decoded stream. Algorithms may extend this structure with data specific to their bitstream by setting the sz member appropriately. </p>
</div>
</div>
<a class="anchor" id="ga4a2e808eb43f1e798024b5a409c484f9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="structvpx__codec__dec__cfg.html">vpx_codec_dec_cfg</a> <a class="el" href="group__decoder.html#ga4a2e808eb43f1e798024b5a409c484f9">vpx_codec_dec_cfg_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialization Configurations. </p>
<p>This structure is used to pass init time configuration options to the decoder.alias for struct <a class="el" href="structvpx__codec__dec__cfg.html" title="Initialization Configurations. ">vpx_codec_dec_cfg</a> </p>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga26fe82cf8fd697f885935cea53be964f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__codec.html#gada1084710837ad363b92f2379dd2b8d2">vpx_codec_err_t</a> vpx_codec_dec_init_ver </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__codec.html#gad03e2dfa6ae511db7d25be6bbb336233">vpx_codec_ctx_t</a> * </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__codec.html#gad654f3da60151f5dfef70aca00ef1e9e">vpx_codec_iface_t</a> * </td>
<td class="paramname"><em>iface</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__decoder.html#ga4a2e808eb43f1e798024b5a409c484f9">vpx_codec_dec_cfg_t</a> * </td>
<td class="paramname"><em>cfg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__codec.html#ga3b36d5af89ddc463489fe5bde0a57877">vpx_codec_flags_t</a> </td>
<td class="paramname"><em>flags</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>ver</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize a decoder instance. </p>
<p>Initializes a decoder context using the given interface. Applications should call the vpx_codec_dec_init convenience macro instead of this function directly, to ensure that the ABI version number parameter is properly initialized.</p>
<p>If the library was configured with –disable-multithread, this call is not thread safe and should be guarded with a lock if being used in a multithreaded context.</p>
<p>In XMA mode (activated by setting VPX_CODEC_USE_XMA in the flags parameter), the storage pointed to by the cfg parameter must be kept readable and stable until all memory maps have been set.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to this instance's context. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">iface</td><td>Pointer to the algorithm interface to use. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">cfg</td><td>Configuration to use, if known. May be NULL. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>Bitfield of VPX_CODEC_USE_* flags </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ver</td><td>ABI version number. Must be set to VPX_DECODER_ABI_VERSION </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="group__codec.html#ggada1084710837ad363b92f2379dd2b8d2af1dcde74b1c5ff7b29f31246dfd90986" title="Operation completed without error. ">VPX_CODEC_OK</a></td><td>The decoder algorithm initialized. </td></tr>
<tr><td class="paramname"><a class="el" href="group__codec.html#ggada1084710837ad363b92f2379dd2b8d2a96c6d2600dc0ec25c2cb798e8d2f4760" title="Memory operation failed. ">VPX_CODEC_MEM_ERROR</a></td><td>Memory allocation failed. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="gadfee4664d644175d5aac1465ef11c4b0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__codec.html#gada1084710837ad363b92f2379dd2b8d2">vpx_codec_err_t</a> vpx_codec_peek_stream_info </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__codec.html#gad654f3da60151f5dfef70aca00ef1e9e">vpx_codec_iface_t</a> * </td>
<td class="paramname"><em>iface</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t * </td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int </td>
<td class="paramname"><em>data_sz</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__decoder.html#ga900420e8f7cb9c1b3070b2ba7d636974">vpx_codec_stream_info_t</a> * </td>
<td class="paramname"><em>si</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Parse stream info from a buffer. </p>
<p>Performs high level parsing of the bitstream. Construction of a decoder context is not necessary. Can be used to determine if the bitstream is of the proper format, and to extract information from the stream.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">iface</td><td>Pointer to the algorithm interface </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>Pointer to a block of data to parse </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data_sz</td><td>Size of the data buffer </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">si</td><td>Pointer to stream info to update. The size member <a class="el" href="rfc2119.html#MUST">MUST</a> be properly initialized, but <a class="el" href="rfc2119.html#MAY">MAY</a> be clobbered by the algorithm. This parameter <a class="el" href="rfc2119.html#MAY">MAY</a> be NULL.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="group__codec.html#ggada1084710837ad363b92f2379dd2b8d2af1dcde74b1c5ff7b29f31246dfd90986" title="Operation completed without error. ">VPX_CODEC_OK</a></td><td>Bitstream is parsable and stream information updated </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga552f1044d36a84e8b05ce6902e9ae8c9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__codec.html#gada1084710837ad363b92f2379dd2b8d2">vpx_codec_err_t</a> vpx_codec_get_stream_info </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__codec.html#gad03e2dfa6ae511db7d25be6bbb336233">vpx_codec_ctx_t</a> * </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__decoder.html#ga900420e8f7cb9c1b3070b2ba7d636974">vpx_codec_stream_info_t</a> * </td>
<td class="paramname"><em>si</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Return information about the current stream. </p>
<p>Returns information about the stream that has been parsed during decoding.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to this instance's context </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">si</td><td>Pointer to stream info to update. The size member <a class="el" href="rfc2119.html#MUST">MUST</a> be properly initialized, but <a class="el" href="rfc2119.html#MAY">MAY</a> be clobbered by the algorithm. This parameter <a class="el" href="rfc2119.html#MAY">MAY</a> be NULL.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="group__codec.html#ggada1084710837ad363b92f2379dd2b8d2af1dcde74b1c5ff7b29f31246dfd90986" title="Operation completed without error. ">VPX_CODEC_OK</a></td><td>Bitstream is parsable and stream information updated </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga3441e157a7a69108bca9a069f2ee8e0d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__codec.html#gada1084710837ad363b92f2379dd2b8d2">vpx_codec_err_t</a> vpx_codec_decode </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__codec.html#gad03e2dfa6ae511db7d25be6bbb336233">vpx_codec_ctx_t</a> * </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const uint8_t * </td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int </td>
<td class="paramname"><em>data_sz</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>user_priv</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long </td>
<td class="paramname"><em>deadline</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Decode data. </p>
<p>Processes a buffer of coded data. If the processing results in a new decoded frame becoming available, PUT_SLICE and PUT_FRAME events may be generated, as appropriate. Encoded data <a class="el" href="rfc2119.html#MUST">MUST</a> be passed in DTS (decode time stamp) order. Frames produced will always be in PTS (presentation time stamp) order. If the decoder is configured with VPX_CODEC_USE_INPUT_FRAGMENTS enabled, data and data_sz can contain a fragment of the encoded frame. Fragment #n must contain at least partition #n, but can also contain subsequent partitions (#n+1 - #n+i), and if so, fragments #n+1, .., #n+i must be empty. When no more data is available, this function should be called with NULL as data and 0 as data_sz. The memory passed to this function must be available until the frame has been decoded.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to this instance's context </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>Pointer to this block of new coded data. If NULL, a VPX_CODEC_CB_PUT_FRAME event is posted for the previously decoded frame. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">data_sz</td><td>Size of the coded data, in bytes. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">user_priv</td><td>Application specific data to associate with this frame. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">deadline</td><td>Soft deadline the decoder should attempt to meet, in us. Set to zero for unlimited.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns <a class="el" href="group__codec.html#ggada1084710837ad363b92f2379dd2b8d2af1dcde74b1c5ff7b29f31246dfd90986" title="Operation completed without error. ">VPX_CODEC_OK</a> if the coded data was processed completely and future pictures can be decoded without error. Otherwise, see the descriptions of the other error codes in <a class="el" href="group__codec.html#gada1084710837ad363b92f2379dd2b8d2" title="Algorithm return codes. ">vpx_codec_err_t</a> for recoverability capabilities. </dd></dl>
</div>
</div>
<a class="anchor" id="ga0e231c3a5ce445fdb2268d741da97500"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="vpx__image_8h.html#abf5ac962cc6d71b4f0e39b1b0d033e55">vpx_image_t</a>* vpx_codec_get_frame </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__codec.html#gad03e2dfa6ae511db7d25be6bbb336233">vpx_codec_ctx_t</a> * </td>
<td class="paramname"><em>ctx</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__codec.html#ga6ea348f76b1f8a1fe50e14db684146c6">vpx_codec_iter_t</a> * </td>
<td class="paramname"><em>iter</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Decoded frames iterator. </p>
<p>Iterates over a list of the frames available for display. The iterator storage should be initialized to NULL to start the iteration. Iteration is complete when this function returns NULL.</p>
<p>The list of available frames becomes valid upon completion of the vpx_codec_decode call, and remains valid until the next call to vpx_codec_decode.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ctx</td><td>Pointer to this instance's context </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">iter</td><td>Iterator storage, initialized to NULL</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns a pointer to an image, if one is ready for display. Frames produced will always be in PTS (presentation time stamp) order. </dd></dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
OHA YOOOO