Sophie

Sophie

distrib > Mageia > 6 > armv7hl > by-pkgid > b4d0ffc838646a67b3dd59a6006ff212 > files > 69

libgavl-devel-1.4.0-7.mga6.armv7hl.rpm

<!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.12"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>gavl: Scaler</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="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">gavl
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.12 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',false,false,'search.php','Search');
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">Scaler<div class="ingroups"><a class="el" href="group__video.html">Video</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>Video scaler.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga8b4210889926401c0af62a9c423e14ab"><td class="memItemLeft" align="right" valign="top">typedef struct gavl_video_scaler_s&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__video__scaler.html#ga8b4210889926401c0af62a9c423e14ab">gavl_video_scaler_t</a></td></tr>
<tr class="memdesc:ga8b4210889926401c0af62a9c423e14ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque scaler structure.  <a href="#ga8b4210889926401c0af62a9c423e14ab">More...</a><br /></td></tr>
<tr class="separator:ga8b4210889926401c0af62a9c423e14ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga65a5adb9b0ec0c47177d858f4b9841a3"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC <a class="el" href="group__video__scaler.html#ga8b4210889926401c0af62a9c423e14ab">gavl_video_scaler_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__video__scaler.html#ga65a5adb9b0ec0c47177d858f4b9841a3">gavl_video_scaler_create</a> ()</td></tr>
<tr class="memdesc:ga65a5adb9b0ec0c47177d858f4b9841a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a video scaler.  <a href="#ga65a5adb9b0ec0c47177d858f4b9841a3">More...</a><br /></td></tr>
<tr class="separator:ga65a5adb9b0ec0c47177d858f4b9841a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4913e9fbbce90576e3f73e4b910bf74f"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__video__scaler.html#ga4913e9fbbce90576e3f73e4b910bf74f">gavl_video_scaler_destroy</a> (<a class="el" href="group__video__scaler.html#ga8b4210889926401c0af62a9c423e14ab">gavl_video_scaler_t</a> *scaler)</td></tr>
<tr class="memdesc:ga4913e9fbbce90576e3f73e4b910bf74f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy a video scaler.  <a href="#ga4913e9fbbce90576e3f73e4b910bf74f">More...</a><br /></td></tr>
<tr class="separator:ga4913e9fbbce90576e3f73e4b910bf74f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5630854ec9ee864186562ef9f69e864b"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC <a class="el" href="group__video__options.html#ga661526ac8e31c3a162f8607c2bcda6ee">gavl_video_options_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__video__scaler.html#ga5630854ec9ee864186562ef9f69e864b">gavl_video_scaler_get_options</a> (<a class="el" href="group__video__scaler.html#ga8b4210889926401c0af62a9c423e14ab">gavl_video_scaler_t</a> *scaler)</td></tr>
<tr class="memdesc:ga5630854ec9ee864186562ef9f69e864b"><td class="mdescLeft">&#160;</td><td class="mdescRight">gets options of a scaler  <a href="#ga5630854ec9ee864186562ef9f69e864b">More...</a><br /></td></tr>
<tr class="separator:ga5630854ec9ee864186562ef9f69e864b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga048d636f7fc6ca5afb522cffc1c57f11"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__video__scaler.html#ga048d636f7fc6ca5afb522cffc1c57f11">gavl_video_scaler_init</a> (<a class="el" href="group__video__scaler.html#ga8b4210889926401c0af62a9c423e14ab">gavl_video_scaler_t</a> *scaler, const <a class="el" href="group__video__format.html#ga0ffc9c60fb71a5fb835e453531fd442c">gavl_video_format_t</a> *src_format, const <a class="el" href="group__video__format.html#ga0ffc9c60fb71a5fb835e453531fd442c">gavl_video_format_t</a> *dst_format)</td></tr>
<tr class="memdesc:ga048d636f7fc6ca5afb522cffc1c57f11"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize a video scaler.  <a href="#ga048d636f7fc6ca5afb522cffc1c57f11">More...</a><br /></td></tr>
<tr class="separator:ga048d636f7fc6ca5afb522cffc1c57f11"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae0d9ec30ee5a353802baadacb027ec0a"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__video__scaler.html#gae0d9ec30ee5a353802baadacb027ec0a">gavl_video_scaler_init_convolve</a> (<a class="el" href="group__video__scaler.html#ga8b4210889926401c0af62a9c423e14ab">gavl_video_scaler_t</a> *scaler, const <a class="el" href="group__video__format.html#ga0ffc9c60fb71a5fb835e453531fd442c">gavl_video_format_t</a> *format, int h_radius, const float *h_coeffs, int v_radius, const float *v_coeffs)</td></tr>
<tr class="memdesc:gae0d9ec30ee5a353802baadacb027ec0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize a video scaler as a generic convolver.  <a href="#gae0d9ec30ee5a353802baadacb027ec0a">More...</a><br /></td></tr>
<tr class="separator:gae0d9ec30ee5a353802baadacb027ec0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaac3cfffdb618b683fe36150beee810c5"><td class="memItemLeft" align="right" valign="top">GAVL_PUBLIC void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__video__scaler.html#gaac3cfffdb618b683fe36150beee810c5">gavl_video_scaler_scale</a> (<a class="el" href="group__video__scaler.html#ga8b4210889926401c0af62a9c423e14ab">gavl_video_scaler_t</a> *scaler, const <a class="el" href="structgavl__video__frame__t.html">gavl_video_frame_t</a> *input_frame, <a class="el" href="structgavl__video__frame__t.html">gavl_video_frame_t</a> *output_frame)</td></tr>
<tr class="memdesc:gaac3cfffdb618b683fe36150beee810c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Scale video.  <a href="#gaac3cfffdb618b683fe36150beee810c5">More...</a><br /></td></tr>
<tr class="separator:gaac3cfffdb618b683fe36150beee810c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Video scaler. </p>
<p>The scaler does the elementary operation to take a rectangular area of the source image and scale it into a specified rectangular area of the destination image. The source rectangle has floating point coordinates, the destination rectangle must have integer coordinates, which are aligned to chroma subsampling factors.</p>
<p>The internal scale tables are created for each plane and field separately. This means that:</p>
<ul>
<li>We handle all flavors of chroma placement correctly</li>
<li>We can convert chroma subsampling by scaling the chroma planes and copying the luminance plane.</li>
<li>Since the scaler knows about fields, it will scale interlaced frames field-wise (not a good idea to scale interlaced frames vertically though).</li>
<li>Simple deinterlacing (See <a class="el" href="group__video__options.html#gga498099f87328c97f303f538eb79eded9a85b2118c04bb86c6b35f95ca793a3c9a">GAVL_DEINTERLACE_SCALE</a>) can be done by taking one source field and scale it vertically to the entire destination frame.</li>
</ul>
<p>You can use the scaler directly (through <a class="el" href="group__video__scaler.html#ga8b4210889926401c0af62a9c423e14ab">gavl_video_scaler_t</a>). The generic video converter (<a class="el" href="group__video__converter.html#ga8608b4a917f962a192fbb4e7d1a180f5">gavl_video_converter_t</a>) will create an internal scaler if necessary. </p>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="ga8b4210889926401c0af62a9c423e14ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8b4210889926401c0af62a9c423e14ab">&sect;&nbsp;</a></span>gavl_video_scaler_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct gavl_video_scaler_s <a class="el" href="group__video__scaler.html#ga8b4210889926401c0af62a9c423e14ab">gavl_video_scaler_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Opaque scaler structure. </p>
<p>You don't want to know what's inside. </p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga65a5adb9b0ec0c47177d858f4b9841a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga65a5adb9b0ec0c47177d858f4b9841a3">&sect;&nbsp;</a></span>gavl_video_scaler_create()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GAVL_PUBLIC <a class="el" href="group__video__scaler.html#ga8b4210889926401c0af62a9c423e14ab">gavl_video_scaler_t</a>* gavl_video_scaler_create </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a video scaler. </p>
<dl class="section return"><dt>Returns</dt><dd>A newly allocated video scaler </dd></dl>

</div>
</div>
<a id="ga4913e9fbbce90576e3f73e4b910bf74f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4913e9fbbce90576e3f73e4b910bf74f">&sect;&nbsp;</a></span>gavl_video_scaler_destroy()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GAVL_PUBLIC void gavl_video_scaler_destroy </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__video__scaler.html#ga8b4210889926401c0af62a9c423e14ab">gavl_video_scaler_t</a> *&#160;</td>
          <td class="paramname"><em>scaler</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Destroy a video scaler. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">scaler</td><td>A video scaler </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ga5630854ec9ee864186562ef9f69e864b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5630854ec9ee864186562ef9f69e864b">&sect;&nbsp;</a></span>gavl_video_scaler_get_options()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GAVL_PUBLIC <a class="el" href="group__video__options.html#ga661526ac8e31c3a162f8607c2bcda6ee">gavl_video_options_t</a>* gavl_video_scaler_get_options </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__video__scaler.html#ga8b4210889926401c0af62a9c423e14ab">gavl_video_scaler_t</a> *&#160;</td>
          <td class="paramname"><em>scaler</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>gets options of a scaler </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">scaler</td><td>A video scaler</td></tr>
  </table>
  </dd>
</dl>
<p>After you called this, you can use the gavl_video_options_set_*() functions to change the options. Options will become valid with the next call to <a class="el" href="group__video__scaler.html#ga048d636f7fc6ca5afb522cffc1c57f11">gavl_video_scaler_init</a> </p>

</div>
</div>
<a id="ga048d636f7fc6ca5afb522cffc1c57f11"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga048d636f7fc6ca5afb522cffc1c57f11">&sect;&nbsp;</a></span>gavl_video_scaler_init()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GAVL_PUBLIC int gavl_video_scaler_init </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__video__scaler.html#ga8b4210889926401c0af62a9c423e14ab">gavl_video_scaler_t</a> *&#160;</td>
          <td class="paramname"><em>scaler</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__video__format.html#ga0ffc9c60fb71a5fb835e453531fd442c">gavl_video_format_t</a> *&#160;</td>
          <td class="paramname"><em>src_format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__video__format.html#ga0ffc9c60fb71a5fb835e453531fd442c">gavl_video_format_t</a> *&#160;</td>
          <td class="paramname"><em>dst_format</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize a video scaler. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">scaler</td><td>A video scaler </td></tr>
    <tr><td class="paramname">src_format</td><td>Input format </td></tr>
    <tr><td class="paramname">dst_format</td><td>Output format </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>If something goes wrong (should never happen), -1 is returned.</dd></dl>
<p>You should have equal pixelformats in the source and destination. This function can be called multiple times with one instance. </p>

</div>
</div>
<a id="gae0d9ec30ee5a353802baadacb027ec0a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae0d9ec30ee5a353802baadacb027ec0a">&sect;&nbsp;</a></span>gavl_video_scaler_init_convolve()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GAVL_PUBLIC int gavl_video_scaler_init_convolve </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__video__scaler.html#ga8b4210889926401c0af62a9c423e14ab">gavl_video_scaler_t</a> *&#160;</td>
          <td class="paramname"><em>scaler</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__video__format.html#ga0ffc9c60fb71a5fb835e453531fd442c">gavl_video_format_t</a> *&#160;</td>
          <td class="paramname"><em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>h_radius</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const float *&#160;</td>
          <td class="paramname"><em>h_coeffs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>v_radius</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const float *&#160;</td>
          <td class="paramname"><em>v_coeffs</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Initialize a video scaler as a generic convolver. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">scaler</td><td>A video scaler </td></tr>
    <tr><td class="paramname">format</td><td>Format (must be the same for input and output) </td></tr>
    <tr><td class="paramname">h_radius</td><td>Horizontal radius </td></tr>
    <tr><td class="paramname">h_coeffs</td><td>Horizontal coefficients </td></tr>
    <tr><td class="paramname">v_radius</td><td>Vertical radius </td></tr>
    <tr><td class="paramname">v_coeffs</td><td>Vertical coefficients </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>If something goes wrong (should never happen), -1 is returned.</dd></dl>
<p>This initialized a scaler for use as a generic convolver. The h_radius and v_radius arguments denote the numbers of pixels, which are taken in both left and right from the center pixel, i.e. a value of 1 will result in a 3-tap filter. The coefficients must be given for ALL taps (the convolver does not assume the coeffitients to be symmetric)</p>
<p>This function can be called multiple times with one instance. </p>

</div>
</div>
<a id="gaac3cfffdb618b683fe36150beee810c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaac3cfffdb618b683fe36150beee810c5">&sect;&nbsp;</a></span>gavl_video_scaler_scale()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">GAVL_PUBLIC void gavl_video_scaler_scale </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__video__scaler.html#ga8b4210889926401c0af62a9c423e14ab">gavl_video_scaler_t</a> *&#160;</td>
          <td class="paramname"><em>scaler</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structgavl__video__frame__t.html">gavl_video_frame_t</a> *&#160;</td>
          <td class="paramname"><em>input_frame</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structgavl__video__frame__t.html">gavl_video_frame_t</a> *&#160;</td>
          <td class="paramname"><em>output_frame</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Scale video. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">scaler</td><td>A video scaler </td></tr>
    <tr><td class="paramname">input_frame</td><td>Input frame </td></tr>
    <tr><td class="paramname">output_frame</td><td>Output frame </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.12
</small></address>
</body>
</html>