<!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: VAEncFEIDistortionHevc Struct Reference</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="summary">
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="structVAEncFEIDistortionHevc-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">VAEncFEIDistortionHevc Struct Reference<div class="ingroups"><a class="el" href="group__api__fei__hevc.html">HEVC FEI encoding API</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p><a class="el" href="structVAEncFEIDistortionHevc.html" title="VAEncFEIDistortionHevc defines the data structure for VAEncFEIDistortionBufferType per CTB block...">VAEncFEIDistortionHevc</a> defines the data structure for VAEncFEIDistortionBufferType per CTB block. It is output buffer of ENC and ENC_PAK modes, The CTB block is in raster scan order. Buffer size shall not be less than the number of CTB blocks multiple by sizeof(VAEncFEIDistortionHevc).  
 <a href="structVAEncFEIDistortionHevc.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="va__fei__hevc_8h_source.html">va_fei_hevc.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a9d70b02e75d05f00b0732a4514276ee5"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVAEncFEIDistortionHevc.html#a9d70b02e75d05f00b0732a4514276ee5">best_distortion</a></td></tr>
<tr class="separator:a9d70b02e75d05f00b0732a4514276ee5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ca5468b8121c5bf5da327283949aabd"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVAEncFEIDistortionHevc.html#a8ca5468b8121c5bf5da327283949aabd">colocated_ctb_distortion</a></td></tr>
<tr class="separator:a8ca5468b8121c5bf5da327283949aabd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="structVAEncFEIDistortionHevc.html" title="VAEncFEIDistortionHevc defines the data structure for VAEncFEIDistortionBufferType per CTB block...">VAEncFEIDistortionHevc</a> defines the data structure for VAEncFEIDistortionBufferType per CTB block. It is output buffer of ENC and ENC_PAK modes, The CTB block is in raster scan order. Buffer size shall not be less than the number of CTB blocks multiple by sizeof(VAEncFEIDistortionHevc). </p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="a9d70b02e75d05f00b0732a4514276ee5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d70b02e75d05f00b0732a4514276ee5">&#9670;&nbsp;</a></span>best_distortion</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t VAEncFEIDistortionHevc::best_distortion</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>best CTB distortion </p>

</div>
</div>
<a id="a8ca5468b8121c5bf5da327283949aabd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ca5468b8121c5bf5da327283949aabd">&#9670;&nbsp;</a></span>colocated_ctb_distortion</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t VAEncFEIDistortionHevc::colocated_ctb_distortion</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>only when colocated_ctb_distortion in <a class="el" href="structVAEncMiscParameterFEIFrameControlHEVC.html" title="FEI frame level control buffer for HEVC. ">VAEncMiscParameterFEIFrameControlHEVC</a> is set </p>

</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="va__fei__hevc_8h_source.html">va_fei_hevc.h</a></li>
</ul>
</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>
