<!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: VALmcsDataVVC 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="structVALmcsDataVVC-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">VALmcsDataVVC Struct Reference<div class="ingroups"><a class="el" href="group__api__dec__vvc.html">VVC decoding API</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>VVC Luma Mapping with Chroma Scaling Data Structure.  
 <a href="structVALmcsDataVVC.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="va__dec__vvc_8h_source.html">va_dec_vvc.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:a69ad3179c57df3346501513a22a335f0"><td class="memItemLeft" align="right" valign="top"><a id="a69ad3179c57df3346501513a22a335f0"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVALmcsDataVVC.html#a69ad3179c57df3346501513a22a335f0">aps_adaptation_parameter_set_id</a></td></tr>
<tr class="memdesc:a69ad3179c57df3346501513a22a335f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">VVC Luma Mapping with Chroma Scaling parameters. All the parameters except reserved bytes are VVC syntax or spec variables. <br /></td></tr>
<tr class="separator:a69ad3179c57df3346501513a22a335f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca70b6d837c4f61786f3128d63fe91ed"><td class="memItemLeft" align="right" valign="top"><a id="aca70b6d837c4f61786f3128d63fe91ed"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVALmcsDataVVC.html#aca70b6d837c4f61786f3128d63fe91ed">reserved8b</a> [<a class="el" href="group__api__core.html#gaaa4fb20d1c2606379cccfa562c2ebb3b">VA_PADDING_LOW</a> - 1]</td></tr>
<tr class="memdesc:aca70b6d837c4f61786f3128d63fe91ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reserved for future use, must be zero. <br /></td></tr>
<tr class="separator:aca70b6d837c4f61786f3128d63fe91ed"><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>VVC Luma Mapping with Chroma Scaling Data Structure. </p>
<p>Host decoder sends in an array of VVC LMCS sets through one or multiple buffers which may contain 1 to 4 <a class="el" href="structVALmcsDataVVC.html" title="VVC Luma Mapping with Chroma Scaling Data Structure.">VALmcsDataVVC</a> data structures in total. Each buffer contains an integer number of <a class="el" href="structVALmcsDataVVC.html" title="VVC Luma Mapping with Chroma Scaling Data Structure.">VALmcsDataVVC</a> data structures with no gap in between. Driver may store the data internally. Host decoder may choose not to send the same LMCS data for each frame. When a <a class="el" href="structVALmcsDataVVC.html" title="VVC Luma Mapping with Chroma Scaling Data Structure.">VALmcsDataVVC</a> structure carries a same value of aps_adaptation_parameter_set_id as a previously stored structure, driver should override the old structure with values in the new structure. VALmcsBufferType is used to send this buffer. </p>
</div><hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="va__dec__vvc_8h_source.html">va_dec_vvc.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>
