<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>VA-API: VAEncROI 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.23.0</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</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="structVAEncROI-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">VAEncROI Struct Reference<div class="ingroups"><a class="el" href="group__api__core.html">Core API</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>Encoding region-of-interest (ROI).  
 <a href="structVAEncROI.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="va_8h_source.html">va.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:af208e76384852c86cfb884a1fc0e6865"><td class="memItemLeft" align="right" valign="top"><a id="af208e76384852c86cfb884a1fc0e6865"></a>
<a class="el" href="structVARectangle.html">VARectangle</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVAEncROI.html#af208e76384852c86cfb884a1fc0e6865">roi_rectangle</a></td></tr>
<tr class="memdesc:af208e76384852c86cfb884a1fc0e6865"><td class="mdescLeft">&#160;</td><td class="mdescRight">Defines the ROI boundary in pixels, the driver will map it to appropriate codec coding units. It is relative to frame coordinates for the frame case and to field coordinates for the field case. <br /></td></tr>
<tr class="separator:af208e76384852c86cfb884a1fc0e6865"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12dbd086a3c56093730c8b88c042b6ef"><td class="memItemLeft" align="right" valign="top">int8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVAEncROI.html#a12dbd086a3c56093730c8b88c042b6ef">roi_value</a></td></tr>
<tr class="memdesc:a12dbd086a3c56093730c8b88c042b6ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">ROI value.  <a href="structVAEncROI.html#a12dbd086a3c56093730c8b88c042b6ef">More...</a><br /></td></tr>
<tr class="separator:a12dbd086a3c56093730c8b88c042b6ef"><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>Encoding region-of-interest (ROI). </p>
<p>The encoding ROI can be set through VAEncMiscParameterBufferROI, if the implementation supports ROI input. The ROI set through this structure is applicable only to the current frame or field, so must be sent every frame or field to be applied. The number of supported ROIs can be queried through the VAConfigAttribEncROI. The encoder will use the ROI information to adjust the QP values of the MB's that fall within the ROIs. </p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="a12dbd086a3c56093730c8b88c042b6ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a12dbd086a3c56093730c8b88c042b6ef">&#9670;&nbsp;</a></span>roi_value</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int8_t VAEncROI::roi_value</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>ROI value. </p>
<p><a class="el" href="structVAEncROI.html#a12dbd086a3c56093730c8b88c042b6ef">roi_value</a> specifies ROI delta QP or ROI priority. &ndash; ROI delta QP is the value that will be added on top of the frame level QP. &ndash; ROI priority specifies the priority of a region, it can be positive (more important) or negative (less important) values and is compared with non-ROI region (taken as value 0), E.g. ROI region with <a class="el" href="structVAEncROI.html#a12dbd086a3c56093730c8b88c042b6ef">roi_value</a> -3 is less important than the non-ROI region (<a class="el" href="structVAEncROI.html#a12dbd086a3c56093730c8b88c042b6ef">roi_value</a> implied to be 0) which is less important than ROI region with roi_value +2. For overlapping regions, the roi_value that is first in the ROI array will have priority.</p>
<p><a class="el" href="structVAEncROI.html#a12dbd086a3c56093730c8b88c042b6ef">roi_value</a> always specifes ROI delta QP when VAConfigAttribRateControl == VA_RC_CQP, no matter the value of <code>roi_value_is_qp_delta</code> in #VAEncMiscParameterBufferROI.</p>
<p><a class="el" href="structVAEncROI.html#a12dbd086a3c56093730c8b88c042b6ef">roi_value</a> depends on <code>roi_value_is_qp_delta</code> in #VAEncMiscParameterBufferROI when VAConfigAttribRateControl != VA_RC_CQP. <a class="el" href="structVAEncROI.html#a12dbd086a3c56093730c8b88c042b6ef">roi_value</a> specifies ROI_delta QP if <code>roi_value_is_qp_delta</code> in VAEncMiscParameterBufferROI is 1, otherwise <a class="el" href="structVAEncROI.html#a12dbd086a3c56093730c8b88c042b6ef">roi_value</a> specifies ROI priority. </p>

</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="va_8h_source.html">va.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.9.1</small></address>
</body>
</html>
