embeddedsw/XilinxProcessorIPLib/drivers/deinterlacer/doc/html/api/xdeint_8c.html

455 lines
20 KiB
HTML
Raw Normal View History

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>
xdeint.c File Reference
</title>
<link href="$DriverApiDocsCssPath" rel="stylesheet" type="text/css">
</head>
<h3 class="PageHeader">Xilinx Processor IP Library</h3>
<hl>Software Drivers</hl>
<hr class="whs1">
<!-- Generated by Doxygen 1.4.5 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>xdeint.c File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
This is main code of Xilinx Vide Deinterlacer device driver. Please see xdeint.h for more details of the driver.<p>
<pre>
MODIFICATION HISTORY:</pre><p>
<pre> Ver Who Date Changes
----- ---- -------- -------------------------------------------------------
1.00a rjh 07/10/11 First release
2.00a rjh 18/01/12 Updated for v_deinterlacer 2.00
</pre>
<p>
<code>#include &quot;xdeint.h&quot;</code><br>
<code>#include &quot;xenv.h&quot;</code><br>
<code>#include &quot;xil_assert.h&quot;</code><br>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdeint_8c.html#243608553ecfe4c9503a7a164200a9a9">XDeint_ConfigInitialize</a> (<a class="el" href="struct_x_deint.html">XDeint</a> *InstancePtr, <a class="el" href="struct_x_deint___config.html">XDeint_Config</a> *CfgPtr, u32 EffectiveAddr)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdeint_8c.html#9d91e01b0f333c0d0d60bf909de7250c">XDeint_SetFramestore</a> (<a class="el" href="struct_x_deint.html">XDeint</a> *InstancePtr, u32 FieldAddr1, u32 FieldAddr2, u32 FieldAddr3, u32 FrameSize)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdeint_8c.html#d55eb5ed2114d03ef7dbcdf35a3e2422">XDeint_SetVideo</a> (<a class="el" href="struct_x_deint.html">XDeint</a> *InstancePtr, u32 Packing, u32 Colour, u32 Order, u32 PSF)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdeint_8c.html#c592375c48b72516dfb21183c91dcf50">XDeint_SetThresholds</a> (<a class="el" href="struct_x_deint.html">XDeint</a> *InstancePtr, u32 t1, u32 t2)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdeint_8c.html#d6bc359152618e313022022aa22bbe33">XDeint_SetPulldown</a> (<a class="el" href="struct_x_deint.html">XDeint</a> *InstancePtr, u32 enable_32, u32 enable_22)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdeint_8c.html#b91d89518f4234a53ef3c0ee6f3ccac9">XDeint_GetVersion</a> (<a class="el" href="struct_x_deint.html">XDeint</a> *InstancePtr, u16 *Major, u16 *Minor, u16 *Revision)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdeint_8c.html#8eb9c691b2bbc3413d6a84db98b39562">XDeint_SetSize</a> (<a class="el" href="struct_x_deint.html">XDeint</a> *InstancePtr, u32 Width, u32 Height)</td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="243608553ecfe4c9503a7a164200a9a9"></a><!-- doxytag: member="xdeint.c::XDeint_ConfigInitialize" ref="243608553ecfe4c9503a7a164200a9a9" args="(XDeint *InstancePtr, XDeint_Config *CfgPtr, u32 EffectiveAddr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XDeint_ConfigInitialize </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_deint.html">XDeint</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap><a class="el" href="struct_x_deint___config.html">XDeint_Config</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>CfgPtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>EffectiveAddr</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
This function initializes an Deinterlacer device. This function must be called prior to using a Deinterlacer device. Initialization of an Deinterlacer includes setting up the instance data, and ensuring the hardware is in a quiescent state.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstancePtr</em>&nbsp;</td><td>is a pointer to the Deinterlacer device instance to be worked on. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>CfgPtr</em>&nbsp;</td><td>points to the configuration structure associated with the Deinterlacer device. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>EffectiveAddr</em>&nbsp;</td><td>is the base address of the device. If address translation is being used, then this parameter must reflect the virtual base address. Otherwise, the physical address should be used. </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>XST_SUCCESS </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="b91d89518f4234a53ef3c0ee6f3ccac9"></a><!-- doxytag: member="xdeint.c::XDeint_GetVersion" ref="b91d89518f4234a53ef3c0ee6f3ccac9" args="(XDeint *InstancePtr, u16 *Major, u16 *Minor, u16 *Revision)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDeint_GetVersion </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_deint.html">XDeint</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u16 *&nbsp;</td>
<td class="mdname" nowrap> <em>Major</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u16 *&nbsp;</td>
<td class="mdname" nowrap> <em>Minor</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u16 *&nbsp;</td>
<td class="mdname" nowrap> <em>Revision</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
This function returns the version of a Deinterlacer device.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstancePtr</em>&nbsp;</td><td>is a pointer to the Deinterlacer device instance to be worked on. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Major</em>&nbsp;</td><td>points to an unsigned 16-bit variable that will be assigned with the major version number after this function returns. Value range is from 0x0 to 0xF. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Minor</em>&nbsp;</td><td>points to an unsigned 16-bit variable that will be assigned with the minor version number after this function returns. Value range is from 0x00 to 0xFF. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Revision</em>&nbsp;</td><td>points to an unsigned 16-bit variable that will be assigned with the revision version number after this function returns. Value range is from 0xA to 0xF. </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None. </dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>Example: Device version should read v2.01.c if major version number is 0x2, minor version number is 0x1, and revision version number is 0xC. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="9d91e01b0f333c0d0d60bf909de7250c"></a><!-- doxytag: member="xdeint.c::XDeint_SetFramestore" ref="9d91e01b0f333c0d0d60bf909de7250c" args="(XDeint *InstancePtr, u32 FieldAddr1, u32 FieldAddr2, u32 FieldAddr3, u32 FrameSize)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDeint_SetFramestore </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_deint.html">XDeint</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>FieldAddr1</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>FieldAddr2</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>FieldAddr3</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>FrameSize</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
This function sets up input field buffer addresses of an Deinterlacer device.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstancePtr</em>&nbsp;</td><td>is a pointer to the DEINT device instance to be worked on. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>FieldAddr1</em>&nbsp;</td><td>is the address of the 1st input field buffer. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>FieldAddr2</em>&nbsp;</td><td>is the address of the 2nd input field buffer. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>FieldAddr3</em>&nbsp;</td><td>is the address of the 3rd input field buffer. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>FrameSize</em>&nbsp;</td><td>is the size in 32bit words of a single field buffer </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="d6bc359152618e313022022aa22bbe33"></a><!-- doxytag: member="xdeint.c::XDeint_SetPulldown" ref="d6bc359152618e313022022aa22bbe33" args="(XDeint *InstancePtr, u32 enable_32, u32 enable_22)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDeint_SetPulldown </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_deint.html">XDeint</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>enable_32</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>enable_22</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
This function sets up the pulldown controller<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstancePtr</em>&nbsp;</td><td>is a pointer to the DEINT device instance to be worked on. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>enable</em>&nbsp;</td><td></td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="8eb9c691b2bbc3413d6a84db98b39562"></a><!-- doxytag: member="xdeint.c::XDeint_SetSize" ref="8eb9c691b2bbc3413d6a84db98b39562" args="(XDeint *InstancePtr, u32 Width, u32 Height)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDeint_SetSize </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_deint.html">XDeint</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>Width</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>Height</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
This function sets up the input frame size of the deinterlacer<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstancePtr</em>&nbsp;</td><td>is a pointer to the DEINT device instance to be worked on. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Width</em>&nbsp;</td><td></td></tr>
<tr><td valign="top"></td><td valign="top"><em>Height</em>&nbsp;</td><td></td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="c592375c48b72516dfb21183c91dcf50"></a><!-- doxytag: member="xdeint.c::XDeint_SetThresholds" ref="c592375c48b72516dfb21183c91dcf50" args="(XDeint *InstancePtr, u32 t1, u32 t2)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDeint_SetThresholds </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_deint.html">XDeint</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>t1</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>t2</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
This function sets up the threshold used by the motion adaptive kernel<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstancePtr</em>&nbsp;</td><td>is a pointer to the DEINT device instance to be worked on. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>T1</em>&nbsp;</td><td>is the lower threshold of the motion kernel </td></tr>
<tr><td valign="top"></td><td valign="top"><em>T2</em>&nbsp;</td><td>is the upper threshold of the motion kernel </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="d55eb5ed2114d03ef7dbcdf35a3e2422"></a><!-- doxytag: member="xdeint.c::XDeint_SetVideo" ref="d55eb5ed2114d03ef7dbcdf35a3e2422" args="(XDeint *InstancePtr, u32 Packing, u32 Colour, u32 Order, u32 PSF)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDeint_SetVideo </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_deint.html">XDeint</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>Packing</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>Colour</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>Order</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>PSF</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
This function sets up the video format<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>Packing</em>&nbsp;</td><td>selects the XSVI video packing mode. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Colour</em>&nbsp;</td><td>selects what colourspace to use </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Order</em>&nbsp;</td><td>selects which field ordering is being used </td></tr>
<tr><td valign="top"></td><td valign="top"><em>psf</em>&nbsp;</td><td>enables psf (progressive segmented frame mode) </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
Copyright @ 1995-2014 Xilinx, Inc. All rights reserved.