<!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.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>VA-API: Deprecated List</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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.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 id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">VA-API
   &#160;<span id="projectnumber">2.19.0</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">Deprecated List </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><dl class="reflist">
<dt><a class="anchor" id="_deprecated000006"></a>Member <a class="el" href="group__api__core.html#gga8ed0af9059a2d06bca1a54e774e679eaa86d498fbfde9d7a847864d6b6c67e2aa">va_deprecated_enum</a>  </dt>
<dd><p class="startdd">This is a deprecated packed header type. All applications can use <code>VAEncPackedHeaderRawData</code> to insert a codec-specific packed header </p>
<p>This is a deprecated packed header flag, All applications can use <code>VA_ENC_PACKED_HEADER_RAW_DATA</code> to pass the corresponding packed SEI header data buffer to the driver </p>
<p class="enddd">This is a deprecated packed header flag, All applications can use <code>VA_ENC_PACKED_HEADER_RAW_DATA</code> to pass the corresponding packed SEI header data buffer to the driver  </p>
</dd>
<dt><a class="anchor" id="_deprecated000003"></a>Member <a class="el" href="group__api__core.html#ga8fb355619e9b0b3e129ca4a2b42c0cfc">VA_ENC_PACKED_HEADER_MISC</a>  </dt>
<dd>This is a deprecated packed header flag, All applications can use <code>VA_ENC_PACKED_HEADER_RAW_DATA</code> to pass the corresponding packed header data buffer to the driver  </dd>
<dt><a class="anchor" id="_deprecated000005"></a>Member <a class="el" href="group__api__core.html#ga6ed94da0b1543db329f4c8385370103a">VA_FOURCC_IYUV</a>  </dt>
<dd>Use I420 instead.  </dd>
<dt><a class="anchor" id="_deprecated000001"></a>Member <a class="el" href="group__api__core.html#gae1c4093783110899a548372bd63bf161">VA_RT_FORMAT_RGB32_10BPP</a>  </dt>
<dd>use VA_RT_FORMAT_RGB32_10 instead.  </dd>
<dt><a class="anchor" id="_deprecated000002"></a>Member <a class="el" href="group__api__core.html#gaf0a40b7ab606d8e855c7a8934d7bf48a">VA_RT_FORMAT_YUV420_10BPP</a>  </dt>
<dd>use VA_RT_FORMAT_YUV420_10 instead.  </dd>
<dt><a class="anchor" id="_deprecated000004"></a>Class <a class="el" href="structVAEncSliceParameterBuffer.html">VAEncSliceParameterBuffer</a>  </dt>
<dd>This is a deprecated encode slice parameter buffer, All applications <code>can</code> use VAEncSliceParameterBufferXXX (XXX = MPEG2, HEVC, H264, JPEG) </dd>
</dl>
</div></div><!-- contents -->
<hr class="footer"/><address class="footer"><small>
Generated for VA-API by&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13</small></address>
</body>
</html>
