blob: 7b8c378aa9525ebc40c416f773266d7198a65e49 [file] [log] [blame]
<!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: VAProcFilterParameterBuffer3DLUT 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="structVAProcFilterParameterBuffer3DLUT-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">VAProcFilterParameterBuffer3DLUT Struct Reference<div class="ingroups"><a class="el" href="group__api__vpp.html">Video processing API</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>3DLUT filter parametrization.
<a href="structVAProcFilterParameterBuffer3DLUT.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="va__vpp_8h_source.html">va_vpp.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:a5fb615c466b9e5c8267563a6a709c31b"><td class="memItemLeft" align="right" valign="top"><a id="a5fb615c466b9e5c8267563a6a709c31b"></a>
<a class="el" href="group__api__vpp.html#ga3614dbee76b8ac89dd5a3dc8b1a12bb7">VAProcFilterType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVAProcFilterParameterBuffer3DLUT.html#a5fb615c466b9e5c8267563a6a709c31b">type</a></td></tr>
<tr class="memdesc:a5fb615c466b9e5c8267563a6a709c31b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Filter type. Shall be set to <a class="el" href="group__api__vpp.html#gga3614dbee76b8ac89dd5a3dc8b1a12bb7af106b377f5ec5d36a609507f6ceefa21" title="Three-Dimensional Look Up Table (3DLUT). ">VAProcFilter3DLUT</a>. <br /></td></tr>
<tr class="separator:a5fb615c466b9e5c8267563a6a709c31b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d8ddd7d9c661f81ee45746e13b32693"><td class="memItemLeft" align="right" valign="top"><a id="a8d8ddd7d9c661f81ee45746e13b32693"></a>
VASurfaceID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVAProcFilterParameterBuffer3DLUT.html#a8d8ddd7d9c661f81ee45746e13b32693">lut_surface</a></td></tr>
<tr class="memdesc:a8d8ddd7d9c661f81ee45746e13b32693"><td class="mdescLeft">&#160;</td><td class="mdescRight">lut_surface contains 3DLUT data in the 3DLUT memory layout, must be linear <br /></td></tr>
<tr class="separator:a8d8ddd7d9c661f81ee45746e13b32693"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52691377c6783c81853f0927404bda2f"><td class="memItemLeft" align="right" valign="top"><a id="a52691377c6783c81853f0927404bda2f"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVAProcFilterParameterBuffer3DLUT.html#a52691377c6783c81853f0927404bda2f">lut_size</a></td></tr>
<tr class="memdesc:a52691377c6783c81853f0927404bda2f"><td class="mdescLeft">&#160;</td><td class="mdescRight">lut_size is the number of valid points on every dimension of the three dimensional look up table. The size of LUT (lut_size) shall be same among every dimension of the three dimensional look up table. The size of LUT (lut_size) shall be smaller than lut_stride[0/1/2]. <br /></td></tr>
<tr class="separator:a52691377c6783c81853f0927404bda2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9933f829bc5c3fcb977baf2a155c5d69"><td class="memItemLeft" align="right" valign="top"><a id="a9933f829bc5c3fcb977baf2a155c5d69"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVAProcFilterParameterBuffer3DLUT.html#a9933f829bc5c3fcb977baf2a155c5d69">lut_stride</a> [3]</td></tr>
<tr class="memdesc:a9933f829bc5c3fcb977baf2a155c5d69"><td class="mdescLeft">&#160;</td><td class="mdescRight">lut_stride are the number of points on every dimension of the three dimensional look up table. Three dimension can has 3 different stride, lut3d[lut_stride[0]][lut_stride[1]][lut_stride[2]]. But the valid point shall start from 0, the range of valid point is [0, lut_size-1] for every dimension. <br /></td></tr>
<tr class="separator:a9933f829bc5c3fcb977baf2a155c5d69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a682756be15d09327ba725b74a863cbcc"><td class="memItemLeft" align="right" valign="top"><a id="a682756be15d09327ba725b74a863cbcc"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVAProcFilterParameterBuffer3DLUT.html#a682756be15d09327ba725b74a863cbcc">bit_depth</a></td></tr>
<tr class="memdesc:a682756be15d09327ba725b74a863cbcc"><td class="mdescLeft">&#160;</td><td class="mdescRight">bit_depth is the number of bits for every channel R, G or B (or Y, U, V) <br /></td></tr>
<tr class="separator:a682756be15d09327ba725b74a863cbcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:accb5f033dc66a2101d84bbf88bbd50cb"><td class="memItemLeft" align="right" valign="top"><a id="accb5f033dc66a2101d84bbf88bbd50cb"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVAProcFilterParameterBuffer3DLUT.html#accb5f033dc66a2101d84bbf88bbd50cb">num_channel</a></td></tr>
<tr class="memdesc:accb5f033dc66a2101d84bbf88bbd50cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">num_channel is the number of channels <br /></td></tr>
<tr class="separator:accb5f033dc66a2101d84bbf88bbd50cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2d7c21309e4ba2a723312b275da2ea3"><td class="memItemLeft" align="right" valign="top"><a id="aa2d7c21309e4ba2a723312b275da2ea3"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVAProcFilterParameterBuffer3DLUT.html#aa2d7c21309e4ba2a723312b275da2ea3">channel_mapping</a></td></tr>
<tr class="memdesc:aa2d7c21309e4ba2a723312b275da2ea3"><td class="mdescLeft">&#160;</td><td class="mdescRight">channel_mapping defines the mapping of input and output channels, could be one of VA_3DLUT_CHANNEL_XXX <br /></td></tr>
<tr class="separator:aa2d7c21309e4ba2a723312b275da2ea3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a136ce4f72a5f1a77a09542e185566198"><td class="memItemLeft" align="right" valign="top"><a id="a136ce4f72a5f1a77a09542e185566198"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVAProcFilterParameterBuffer3DLUT.html#a136ce4f72a5f1a77a09542e185566198">va_reserved</a> [VA_PADDING_HIGH]</td></tr>
<tr class="memdesc:a136ce4f72a5f1a77a09542e185566198"><td class="mdescLeft">&#160;</td><td class="mdescRight">reserved bytes for future use, must be zero <br /></td></tr>
<tr class="separator:a136ce4f72a5f1a77a09542e185566198"><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>3DLUT filter parametrization. </p>
<p>3DLUT (Three Dimensional Look Up Table) is often used when converting an image or a video frame from one color representation to another, for example, when converting log and gamma encodings, changing the color space, applying a color correction, changing the dynamic range, gamut mapping etc.</p>
<p>This buffer defines 3DLUT attributes and memory layout. The typical 3DLUT has fixed number(lut_size) per dimension and memory layout is 3 dimensional array as 3dlut[stride_0][stride_1]<a href="lut_size
shall be smaller than stride_0/1/2">stride_2</a>.</p>
<p>API user should query hardware capability by using the <a class="el" href="structVAProcFilterCap3DLUT.html" title="Capabilities specification for the 3DLUT filter. ">VAProcFilterCap3DLUT</a> to get the 3DLUT attributes which hardware supports, and use these attributes. For example, if the user queries hardware, the API user could get caps with 3dlut[33][33]<a href="lut_size = 33, lut_stride[0/1/2] = 33/33/64">64</a>. API user shall not use the attributes which hardware can not support.</p>
<p>3DLUT is usually used to transform input RGB/YUV values in one color space to output RGB values in another color space. Based on 1) the format and color space of VPP input and output and 2) 3DLUT memory layout and channel mapping, driver will enable some color space conversion implicitly if needed. For example, the input of VPP is P010 format in BT2020 color space, the output of VPP is NV12 in BT709 color space and the 3DLUT channel mapping is VA_3DLUT_CHANNEL_RGB_RGB, driver could build the data pipeline as P010(BT2020)-&gt;RGB(BT2020) -&gt;3DULT(BT709)-&gt;NV12(BT709). Please note, the limitation of 3DLUT filter color space is that the color space of 3DLUT filter input data needs to be same as the input data of VPP; the color space of 3DLUT filter output data needs to be same as the output data of VPP; format does not have such limitation. </p>
</div><hr/>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="va__vpp_8h_source.html">va_vpp.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>