<!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: VAProcFilterCapDeinterlacing 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="structVAProcFilterCapDeinterlacing-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">VAProcFilterCapDeinterlacing 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>Capabilities specification for the deinterlacing filter.  
 <a href="structVAProcFilterCapDeinterlacing.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:aae76b2e36379d2288c480787783dd0ae"><td class="memItemLeft" align="right" valign="top"><a id="aae76b2e36379d2288c480787783dd0ae"></a>
<a class="el" href="group__api__vpp.html#ga26d39907f38d00352223908836f78046">VAProcDeinterlacingType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVAProcFilterCapDeinterlacing.html#aae76b2e36379d2288c480787783dd0ae">type</a></td></tr>
<tr class="memdesc:aae76b2e36379d2288c480787783dd0ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deinterlacing algorithm. <br /></td></tr>
<tr class="separator:aae76b2e36379d2288c480787783dd0ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28cde3504f2cd600da4e7bcb80dce8f7"><td class="memItemLeft" align="right" valign="top"><a id="a28cde3504f2cd600da4e7bcb80dce8f7"></a>
uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVAProcFilterCapDeinterlacing.html#a28cde3504f2cd600da4e7bcb80dce8f7">va_reserved</a> [<a class="el" href="group__api__core.html#gaaa4fb20d1c2606379cccfa562c2ebb3b">VA_PADDING_LOW</a>]</td></tr>
<tr class="memdesc:a28cde3504f2cd600da4e7bcb80dce8f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reserved bytes for future use, must be zero. <br /></td></tr>
<tr class="separator:a28cde3504f2cd600da4e7bcb80dce8f7"><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>Capabilities specification for the deinterlacing filter. </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>
