Sophie

Sophie

distrib > Mageia > 6 > x86_64 > media > core-release > by-pkgid > 2a781e5f78e233aedaa1e51ed196dcc3 > files > 60

lib64zvbi-devel-0.2.35-5.mga6.x86_64.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.11"/>
<title>ZVBI Library: Data Service Decoder</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">ZVBI Library
   &#160;<span id="projectnumber">0.2.35</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li class="current"><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">Data Service Decoder<div class="ingroups"><a class="el" href="group__HiDec.html">High Level Decoding</a></div></div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga3c09b7fa196326f51409a91e2857ba5e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structvbi__decoder.html">vbi_decoder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Service.html#ga3c09b7fa196326f51409a91e2857ba5e">vbi_decoder_new</a> (void)</td></tr>
<tr class="memdesc:ga3c09b7fa196326f51409a91e2857ba5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a new data service decoder instance.  <a href="#ga3c09b7fa196326f51409a91e2857ba5e">More...</a><br /></td></tr>
<tr class="separator:ga3c09b7fa196326f51409a91e2857ba5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab3f52f0b71746c9081c053a33cad7bce"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Service.html#gab3f52f0b71746c9081c053a33cad7bce">vbi_decoder_delete</a> (<a class="el" href="structvbi__decoder.html">vbi_decoder</a> *vbi)</td></tr>
<tr class="memdesc:gab3f52f0b71746c9081c053a33cad7bce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete a data service decoder instance.  <a href="#gab3f52f0b71746c9081c053a33cad7bce">More...</a><br /></td></tr>
<tr class="separator:gab3f52f0b71746c9081c053a33cad7bce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2e2201e3b2bab9b7fb1bb66ade716772"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Service.html#ga2e2201e3b2bab9b7fb1bb66ade716772">vbi_decode</a> (<a class="el" href="structvbi__decoder.html">vbi_decoder</a> *vbi, <a class="el" href="structvbi__sliced.html">vbi_sliced</a> *sliced, int lines, double timestamp)</td></tr>
<tr class="memdesc:ga2e2201e3b2bab9b7fb1bb66ade716772"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main function of the data service decoder.  <a href="#ga2e2201e3b2bab9b7fb1bb66ade716772">More...</a><br /></td></tr>
<tr class="separator:ga2e2201e3b2bab9b7fb1bb66ade716772"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga76b4210fb90365e6f09426fcde7ebec6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Service.html#ga76b4210fb90365e6f09426fcde7ebec6">vbi_channel_switched</a> (<a class="el" href="structvbi__decoder.html">vbi_decoder</a> *vbi, <a class="el" href="group__Event.html#gaf7674e0718ecde1f3340325e34296b6a">vbi_nuid</a> nuid)</td></tr>
<tr class="separator:ga76b4210fb90365e6f09426fcde7ebec6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga791491ac674cacc52fa27d8207f1c8e5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__HiDec.html#gac59ccd99e4d2acdd8b48a2289047725f">vbi_page_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Service.html#ga791491ac674cacc52fa27d8207f1c8e5">vbi_classify_page</a> (<a class="el" href="structvbi__decoder.html">vbi_decoder</a> *vbi, <a class="el" href="group__HiDec.html#ga8711c9b42b61d518b7f79e941fe94eb1">vbi_pgno</a> pgno, <a class="el" href="group__HiDec.html#ga06ee2e75548bbd0fcca06a71395c940e">vbi_subno</a> *subno, char **language)</td></tr>
<tr class="separator:ga791491ac674cacc52fa27d8207f1c8e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf2e31cbf38e933d930d1bcbe4b259caa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Service.html#gaf2e31cbf38e933d930d1bcbe4b259caa">vbi_version</a> (unsigned int *major, unsigned int *minor, unsigned int *micro)</td></tr>
<tr class="separator:gaf2e31cbf38e933d930d1bcbe4b259caa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga594dbe49c85f00a11c3586a131203b61"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Service.html#ga594dbe49c85f00a11c3586a131203b61">vbi_set_log_fn</a> (<a class="el" href="group__Basic.html#ga14be5ab1155e94b01c79a4ed044e64ac">vbi_log_mask</a> mask, vbi_log_fn *log_fn, void *user_data)</td></tr>
<tr class="separator:ga594dbe49c85f00a11c3586a131203b61"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="ga3c09b7fa196326f51409a91e2857ba5e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structvbi__decoder.html">vbi_decoder</a>* vbi_decoder_new </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Allocate a new data service decoder instance. </p>
<dl class="section return"><dt>Returns</dt><dd><a class="el" href="structvbi__decoder.html">vbi_decoder</a> pointer or <code>NULL</code> on failure, probably due to lack of memory. </dd></dl>

</div>
</div>
<a class="anchor" id="gab3f52f0b71746c9081c053a33cad7bce"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vbi_decoder_delete </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structvbi__decoder.html">vbi_decoder</a> *&#160;</td>
          <td class="paramname"><em>vbi</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Delete a data service decoder instance. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">vbi</td><td>Decoder structure allocated with <a class="el" href="group__Service.html#ga3c09b7fa196326f51409a91e2857ba5e" title="Allocate a new data service decoder instance. ">vbi_decoder_new()</a>. </td></tr>
  </table>
  </dd>
</dl>

<p>References <a class="el" href="group__Event.html#ga66482e26705f140e24781e35cc661a01">vbi_event_handler_unregister()</a>.</p>

</div>
</div>
<a class="anchor" id="ga2e2201e3b2bab9b7fb1bb66ade716772"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vbi_decode </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structvbi__decoder.html">vbi_decoder</a> *&#160;</td>
          <td class="paramname"><em>vbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structvbi__sliced.html">vbi_sliced</a> *&#160;</td>
          <td class="paramname"><em>sliced</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>lines</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>time</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Main function of the data service decoder. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">vbi</td><td>Initialized vbi decoding context as returned by <a class="el" href="group__Service.html#ga3c09b7fa196326f51409a91e2857ba5e" title="Allocate a new data service decoder instance. ">vbi_decoder_new()</a>. </td></tr>
    <tr><td class="paramname">sliced</td><td>Array of <a class="el" href="structvbi__sliced.html" title="This structure holds one scan line of sliced vbi data. ">vbi_sliced</a> data packets to be decoded. </td></tr>
    <tr><td class="paramname">lines</td><td>Number of <a class="el" href="structvbi__sliced.html" title="This structure holds one scan line of sliced vbi data. ">vbi_sliced</a> data packets, i. e. VBI lines. </td></tr>
    <tr><td class="paramname">time</td><td>Timestamp associated with <em>all</em> sliced data packets. This is the time in seconds and fractions since 1970-01-01 00:00, for example from function gettimeofday(). <em>time</em> should only increment, the latest time entered is considered the current time for activity calculation.</td></tr>
  </table>
  </dd>
</dl>
<p>Decodes zero or more lines of sliced VBI data from the same video frame, updates the decoder state and calls event handlers.</p>
<p><em>timestamp</em> shall advance by 1/30 to 1/25 seconds whenever calling this function. Failure to do so will be interpreted as frame dropping, which starts a resynchronization cycle, eventually a channel switch may be assumed which resets even more decoder state. So even if a frame did not contain any useful data this function must be called, with <em>lines</em> set to zero.</p>
<dl class="section note"><dt>Note</dt><dd>This is one of the few not reentrant libzvbi functions. If multiple threads call this with the same <em>vbi</em> context you must implement your own locking mechanism. Never call this function from an event handler. </dd></dl>

<p>References <a class="el" href="structvbi__sliced.html#aaec2527f9c9aada8be8519401ccafb48">vbi_sliced::data</a>, <a class="el" href="structvbi__aspect__ratio.html#a197262e5744b7a479c6f73b248d97f9b">vbi_aspect_ratio::film_mode</a>, <a class="el" href="structvbi__aspect__ratio.html#a267a0d6766bef01c441335cfc1123100">vbi_aspect_ratio::first_line</a>, <a class="el" href="structvbi__sliced.html#add8a7578942158880b5e3472adcd5eed">vbi_sliced::id</a>, <a class="el" href="structvbi__sliced.html#a72fee7fa9e5be3767e0dbd91f68d4633">vbi_sliced::line</a>, <a class="el" href="structvbi__aspect__ratio.html#a4083e63f4561a8ce1192bd9ebf479ca3">vbi_aspect_ratio::open_subtitles</a>, <a class="el" href="structvbi__aspect__ratio.html#a80d437bf520678ca5e79767168fe7622">vbi_aspect_ratio::ratio</a>, <a class="el" href="group__Event.html#gad875d1642007931ee27cb99563c29ec0">vbi_reset_prog_info()</a>, and <a class="el" href="group__Event.html#ggafc47bd05db9e7b3a7a40a6224674c608ab25d29710cb3e0e5e4dc7f944ff04374">VBI_SUBT_UNKNOWN</a>.</p>

</div>
</div>
<a class="anchor" id="ga76b4210fb90365e6f09426fcde7ebec6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vbi_channel_switched </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structvbi__decoder.html">vbi_decoder</a> *&#160;</td>
          <td class="paramname"><em>vbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Event.html#gaf7674e0718ecde1f3340325e34296b6a">vbi_nuid</a>&#160;</td>
          <td class="paramname"><em>nuid</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">vbi</td><td>VBI decoding context. </td></tr>
    <tr><td class="paramname">nuid</td><td>Set to zero for now.</td></tr>
  </table>
  </dd>
</dl>
<p>Call this after switching away from the channel (RF channel, video input line, precisely: the network) from which this context used to receive vbi data, to reset the decoding context accordingly. This includes deletion of all cached Teletext and Closed Caption pages.</p>
<p>The decoder attempts to detect channel switches automatically, but this is not 100 % reliable, especially without receiving and decoding Teletext or VPS which frequently transmit network identifiers.</p>
<p>Note the reset is not executed until the next frame is about to be decoded, so you may still receive "old" events after calling this. You may also receive blank events (e. g. unknown network, unknown aspect ratio) revoking a previously sent event, until new information becomes available. </p>

</div>
</div>
<a class="anchor" id="ga791491ac674cacc52fa27d8207f1c8e5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__HiDec.html#gac59ccd99e4d2acdd8b48a2289047725f">vbi_page_type</a> vbi_classify_page </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structvbi__decoder.html">vbi_decoder</a> *&#160;</td>
          <td class="paramname"><em>vbi</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__HiDec.html#ga8711c9b42b61d518b7f79e941fe94eb1">vbi_pgno</a>&#160;</td>
          <td class="paramname"><em>pgno</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__HiDec.html#ga06ee2e75548bbd0fcca06a71395c940e">vbi_subno</a> *&#160;</td>
          <td class="paramname"><em>subno</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char **&#160;</td>
          <td class="paramname"><em>language</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">vbi</td><td>Initialized vbi decoding context. </td></tr>
    <tr><td class="paramname">pgno</td><td>Teletext or Closed Caption page to examine, see vbi_pgno. </td></tr>
    <tr><td class="paramname">subno</td><td>The highest subpage number of this page will be stored here. <em>subno</em> can be <code>NULL</code>. </td></tr>
    <tr><td class="paramname">language</td><td>If it is possible to determine the language a page is written in, a pointer to the language name (Latin-1) will be stored here, <code>NULL</code> if the language is unknown. <em>language</em> can be <code>NULL</code> if this information is not needed.</td></tr>
  </table>
  </dd>
</dl>
<p>Returns information about the page.</p>
<p>For Closed Caption pages (<em>pgno</em> 1 ... 8) <em>subno</em> will always be zero, <em>language</em> set or <code>NULL</code>. The return value will be <code>VBI_SUBTITLE_PAGE</code> for page 1 ... 4 (Closed Caption channel 1 ... 4), <code>VBI_NORMAL_PAGE</code> for page 5 ... 8 (Text channel 1 ... 4), or <code>VBI_NO_PAGE</code> if no data is currently transmitted on the channel.</p>
<p>For Teletext pages (<em>pgno</em> 0x100 ... 0x8FF) <em>subno</em> returns the highest subpage number used. Note this number can be larger (but not smaller) than the number of subpages actually received and cached. Still there is no guarantee the advertised subpages will ever appear or stay in cache.</p>
<table class="doxtable">
<tr>
<td><b>subno</b></td><td><b>meaning</b> </td></tr>
<tr>
<td>0</td><td>single page, no subpages </td></tr>
<tr>
<td>1</td><td>never </td></tr>
<tr>
<td>2 ... 0x3F7F</td><td>has subpages 1 ... <em>subno</em>  </td></tr>
<tr>
<td>0xFFFE</td><td>has unknown number (two or more) of subpages </td></tr>
<tr>
<td>0xFFFF</td><td>presence of subpages unknown </td></tr>
</table>
<p><em>language</em> currently returns the language of subtitle pages, <code>NULL</code> if unknown or the page is not classified as <code>VBI_SUBTITLE_PAGE</code>.</p>
<p>Other page types are:</p>
<table class="doxtable">
<tr>
<td>VBI_NO_PAGE</td><td>Page is not in transmission </td></tr>
<tr>
<td>VBI_NORMAL_PAGE</td><td>&#160; </td></tr>
<tr>
<td>VBI_SUBTITLE_PAGE</td><td>&#160; </td></tr>
<tr>
<td>VBI_SUBTITLE_INDEX</td><td>List of subtitle pages </td></tr>
<tr>
<td>VBI_NONSTD_SUBPAGES</td><td>For example a world time page </td></tr>
<tr>
<td>VBI_PROGR_WARNING</td><td>Program related warning (perhaps schedule change anouncements, the Teletext specification does not elaborate on this) </td></tr>
<tr>
<td>VBI_CURRENT_PROGR</td><td>Information about the current program </td></tr>
<tr>
<td>VBI_NOW_AND_NEXT</td><td>Brief information about the current and next program </td></tr>
<tr>
<td>VBI_PROGR_INDEX</td><td>Program index page (perhaps the front page of all program related pages) </td></tr>
<tr>
<td>VBI_PROGR_SCHEDULE</td><td>Program schedule page </td></tr>
<tr>
<td>VBI_UNKNOWN_PAGE</td><td>&#160; </td></tr>
</table>
<dl class="section note"><dt>Note</dt><dd>The results of this function are volatile: As more information becomes available and pages are edited (e. g. activation of subtitles, news updates, program related pages) subpage numbers can grow, page types, subno 0xFFFE and 0xFFFF and languages can change.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>Page type. </dd></dl>

<p>References <a class="el" href="structttx__page__stat.html#aa5b0ef2e80cd045960255bbafae257ed">ttx_page_stat::charset_code</a>, <a class="el" href="structttx__page__stat.html#a1331996279ff4a8689845e890cda1720">ttx_page_stat::page_type</a>, and <a class="el" href="structttx__page__stat.html#a48fe2f994a318d13f061c4f4336f5e1b">ttx_page_stat::subcode</a>.</p>

</div>
</div>
<a class="anchor" id="gaf2e31cbf38e933d930d1bcbe4b259caa"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vbi_version </td>
          <td>(</td>
          <td class="paramtype">unsigned int *&#160;</td>
          <td class="paramname"><em>major</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int *&#160;</td>
          <td class="paramname"><em>minor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int *&#160;</td>
          <td class="paramname"><em>micro</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">major</td><td>Store major number here, can be NULL. </td></tr>
    <tr><td class="paramname">minor</td><td>Store minor number here, can be NULL. </td></tr>
    <tr><td class="paramname">micro</td><td>Store micro number here, can be NULL.</td></tr>
  </table>
  </dd>
</dl>
<p>Returns the library version defined in the libzvbi.h header file when the library was compiled.</p>
<dl class="section since"><dt>Since</dt><dd>0.2.5 </dd></dl>

</div>
</div>
<a class="anchor" id="ga594dbe49c85f00a11c3586a131203b61"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vbi_set_log_fn </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__Basic.html#ga14be5ab1155e94b01c79a4ed044e64ac">vbi_log_mask</a>&#160;</td>
          <td class="paramname"><em>mask</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">vbi_log_fn *&#160;</td>
          <td class="paramname"><em>log_fn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>user_data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">mask</td><td>Which kind of information to log. Can be <code>0</code>. </td></tr>
    <tr><td class="paramname">log_fn</td><td>This function is called with log messages. Consider <a class="el" href="group__Basic.html#ga892c64da1c60919512f0c4db6641a708">vbi_log_on_stderr()</a>. Can be <code>NULL</code> to disable logging. </td></tr>
    <tr><td class="paramname">user_data</td><td>User pointer passed through to the <em>log_fn</em> function.</td></tr>
  </table>
  </dd>
</dl>
<p>Various library functions can print warnings, errors and information useful to debug the library. With this function you can enable these messages and designate a function to print them.</p>
<p>This function enables logging globally. You can also call the set_log_fn() function of individual modules to reduce the scope or redirect messages from that module to another log function.</p>
<dl class="section note"><dt>Note</dt><dd>The number of contents of messages may change in the future.</dd></dl>
<dl class="section since"><dt>Since</dt><dd>0.2.22 </dd></dl>

<p>References <a class="el" href="group__Event.html#gad875d1642007931ee27cb99563c29ec0">vbi_reset_prog_info()</a>.</p>

</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.11
</small></address>
</body>
</html>