Sophie

Sophie

distrib > Mandriva > 2010.1 > x86_64 > media > main-release > by-pkgid > 1af184c486f5d5f476d50602700ee0a0 > files > 31

lib64zvbi-devel-0.2.33-2mdv2010.0.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>ZVBI Library: DVB VBI demultiplexer</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>DVB VBI demultiplexer<br>
<small>
[<a class="el" href="group__LowDec.html">Low Level Decoding</a>]</small>
</h1>Extracting VBI data from a DVB PES or TS stream.  
<a href="#_details">More...</a>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef struct _vbi_dvb_demux&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">DVB VBI demultiplexer.  <a href="#g3d8ea8fb42aa99b702185ada0e3465d0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef vbi_bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DVBDemux.html#ga4e8890adfc554241d2fb50b675e90d0">vbi_dvb_demux_cb</a> (<a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a> *dx, void *user_data, const <a class="el" href="structvbi__sliced.html">vbi_sliced</a> *sliced, unsigned int sliced_lines, int64_t pts)</td></tr>

<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DVBDemux.html#g35041d796a51879278439b657dfb42c1">vbi_dvb_demux_reset</a> (<a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a> *dx)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Resets DVB VBI demux.  <a href="#g35041d796a51879278439b657dfb42c1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DVBDemux.html#g4ba8fc52a6c73e780e92f35899e84e67">vbi_dvb_demux_cor</a> (<a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a> *dx, <a class="el" href="structvbi__sliced.html">vbi_sliced</a> *sliced, unsigned int sliced_lines, int64_t *pts, const uint8_t **buffer, unsigned int *buffer_left)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">DVB VBI demux coroutine.  <a href="#g4ba8fc52a6c73e780e92f35899e84e67"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">vbi_bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DVBDemux.html#g8f9c94782bb25d042180d98fd2b00f67">vbi_dvb_demux_feed</a> (<a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a> *dx, const uint8_t *buffer, unsigned int buffer_size)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Feeds DVB VBI demux with data.  <a href="#g8f9c94782bb25d042180d98fd2b00f67"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DVBDemux.html#gba6263446dd7f180486140b4951097f3">vbi_dvb_demux_set_log_fn</a> (<a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a> *dx, <a class="el" href="group__Basic.html#g14be5ab1155e94b01c79a4ed044e64ac">vbi_log_mask</a> mask, vbi_log_fn *log_fn, void *user_data)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DVBDemux.html#g501c9d925a5d5946417f5c251c4ec8b8">vbi_dvb_demux_delete</a> (<a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a> *dx)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deletes DVB VBI demux.  <a href="#g501c9d925a5d5946417f5c251c4ec8b8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__DVBDemux.html#g1e996d59787ce58b8682d27e8eca7edc">vbi_dvb_pes_demux_new</a> (<a class="el" href="group__DVBDemux.html#ga4e8890adfc554241d2fb50b675e90d0">vbi_dvb_demux_cb</a> *callback, void *user_data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocates DVB VBI demux.  <a href="#g1e996d59787ce58b8682d27e8eca7edc"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Extracting VBI data from a DVB PES or TS stream. 
<p>
These functions extract raw and/or sliced VBI data from a DVB Packetized Elementary Stream or Transport Stream as defined in EN 300 472 "Digital Video Broadcasting (DVB); Specification for conveying ITU-R System B Teletext in DVB bitstreams" and EN 301 775 "Digital Video Broadcasting (DVB); Specification for the carriage of Vertical Blanking Information (VBI) data in DVB bitstreams".<p>
Note EN 300 468 "Specification for Service Information (SI) in DVB systems" defines another method to transmit VPS data in DVB streams. Libzvbi does not provide functions to decode SI tables but the vbi_decode_dvb_pdc_descriptor() function is available to convert a PDC descriptor to a VPS PIL. <hr><h2>Typedef Documentation</h2>
<a class="anchor" name="g3d8ea8fb42aa99b702185ada0e3465d0"></a><!-- doxytag: member="dvb_demux.h::vbi_dvb_demux" ref="g3d8ea8fb42aa99b702185ada0e3465d0" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct _vbi_dvb_demux <a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
DVB VBI demultiplexer. 
<p>
The contents of this structure are private. Call <a class="el" href="group__DVBDemux.html#g1e996d59787ce58b8682d27e8eca7edc" title="Allocates DVB VBI demux.">vbi_dvb_pes_demux_new()</a> to allocate a DVB demultiplexer. 
</div>
</div><p>
<a class="anchor" name="ga4e8890adfc554241d2fb50b675e90d0"></a><!-- doxytag: member="dvb_demux.h::vbi_dvb_demux_cb" ref="ga4e8890adfc554241d2fb50b675e90d0" args="(vbi_dvb_demux *dx, void *user_data, const vbi_sliced *sliced, unsigned int sliced_lines, int64_t pts)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef vbi_bool <a class="el" href="group__DVBDemux.html#ga4e8890adfc554241d2fb50b675e90d0">vbi_dvb_demux_cb</a>(<a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a> *dx, void *user_data, const <a class="el" href="structvbi__sliced.html">vbi_sliced</a> *sliced, unsigned int sliced_lines, int64_t pts)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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>dx</em>&nbsp;</td><td>DVB demultiplexer context allocated with <a class="el" href="group__DVBDemux.html#g1e996d59787ce58b8682d27e8eca7edc" title="Allocates DVB VBI demux.">vbi_dvb_pes_demux_new()</a>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>User data pointer given to <a class="el" href="group__DVBDemux.html#g1e996d59787ce58b8682d27e8eca7edc" title="Allocates DVB VBI demux.">vbi_dvb_pes_demux_new()</a>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sliced</em>&nbsp;</td><td>Pointer to demultiplexed sliced data. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sliced_lines</em>&nbsp;</td><td>Number of lines in the <em>sliced</em> array. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pts</em>&nbsp;</td><td>Presentation Time Stamp associated with the first sliced line.</td></tr>
  </table>
</dl>
The <a class="el" href="group__DVBDemux.html#g8f9c94782bb25d042180d98fd2b00f67" title="Feeds DVB VBI demux with data.">vbi_dvb_demux_feed()</a> function calls a function of this type when a new frame of sliced data is complete. 
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g35041d796a51879278439b657dfb42c1"></a><!-- doxytag: member="dvb_demux.h::vbi_dvb_demux_reset" ref="g35041d796a51879278439b657dfb42c1" args="(vbi_dvb_demux *dx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vbi_dvb_demux_reset           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a> *&nbsp;</td>
          <td class="paramname"> <em>dx</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Resets DVB VBI demux. 
<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>dx</em>&nbsp;</td><td>DVB demultiplexer context allocated with <a class="el" href="group__DVBDemux.html#g1e996d59787ce58b8682d27e8eca7edc" title="Allocates DVB VBI demux.">vbi_dvb_pes_demux_new()</a>.</td></tr>
  </table>
</dl>
Resets the DVB demux to the initial state as after <a class="el" href="group__DVBDemux.html#g1e996d59787ce58b8682d27e8eca7edc" title="Allocates DVB VBI demux.">vbi_dvb_pes_demux_new()</a>, useful for example after a channel change.<p>
<dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.10 </dd></dl>

</div>
</div><p>
<a class="anchor" name="g4ba8fc52a6c73e780e92f35899e84e67"></a><!-- doxytag: member="dvb_demux.h::vbi_dvb_demux_cor" ref="g4ba8fc52a6c73e780e92f35899e84e67" args="(vbi_dvb_demux *dx, vbi_sliced *sliced, unsigned int sliced_lines, int64_t *pts, const uint8_t **buffer, unsigned int *buffer_left)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int vbi_dvb_demux_cor           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a> *&nbsp;</td>
          <td class="paramname"> <em>dx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structvbi__sliced.html">vbi_sliced</a> *&nbsp;</td>
          <td class="paramname"> <em>sliced</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>max_lines</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int64_t *&nbsp;</td>
          <td class="paramname"> <em>pts</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t **&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int *&nbsp;</td>
          <td class="paramname"> <em>buffer_left</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
DVB VBI demux coroutine. 
<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>dx</em>&nbsp;</td><td>DVB demultiplexer context allocated with <a class="el" href="group__DVBDemux.html#g1e996d59787ce58b8682d27e8eca7edc" title="Allocates DVB VBI demux.">vbi_dvb_pes_demux_new()</a>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sliced</em>&nbsp;</td><td>Demultiplexed sliced data will be stored here. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>max_lines</em>&nbsp;</td><td>At most this number of sliced lines will be stored at <em>sliced</em>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pts</em>&nbsp;</td><td>If not <code>NULL</code> the Presentation Time Stamp associated with the first line of the demultiplexed frame will be stored here. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>*buffer points to DVB PES data, will be incremented by the number of bytes read from the buffer. This pointer need not align with packet boundaries. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer_left</em>&nbsp;</td><td>*buffer_left is the number of bytes left in <em>buffer</em>, will be decremented by the number of bytes read. *buffer_left need not align with packet size. The packet filter works faster with larger buffers. When you read from an MPEG file, mapping the file into memory and passing pointers to the mapped data will be fastest.</td></tr>
  </table>
</dl>
This function consumes an arbitrary number of bytes from a DVB Packetized Elementary Stream (PES), filters out PRIVATE_STREAM_1 PES packets, filters out valid VBI data units, converts them to <a class="el" href="structvbi__sliced.html" title="This structure holds one scan line of sliced vbi data.">vbi_sliced</a> format and stores the sliced data at <em>sliced</em>.<p>
You must not call this function when you passed a callback function to <a class="el" href="group__DVBDemux.html#g1e996d59787ce58b8682d27e8eca7edc" title="Allocates DVB VBI demux.">vbi_dvb_pes_demux_new()</a>. Call <a class="el" href="group__DVBDemux.html#g8f9c94782bb25d042180d98fd2b00f67" title="Feeds DVB VBI demux with data.">vbi_dvb_demux_feed()</a> instead.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>When a frame is complete, the function returns the number of elements stored in the <em>sliced</em> array. When more data is needed (<em>*buffer_left</em> is zero) or an error occurred it returns the value zero.</dd></dl>
<dl class="bug" compact><dt><b><a class="el" href="bug.html#_bug000002">Bug:</a></b></dt><dd>Demultiplexing of raw VBI data is not supported yet, raw data will be discarded.</dd></dl>
<dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.10 </dd></dl>

</div>
</div><p>
<a class="anchor" name="g8f9c94782bb25d042180d98fd2b00f67"></a><!-- doxytag: member="dvb_demux.h::vbi_dvb_demux_feed" ref="g8f9c94782bb25d042180d98fd2b00f67" args="(vbi_dvb_demux *dx, const uint8_t *buffer, unsigned int buffer_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">vbi_bool vbi_dvb_demux_feed           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a> *&nbsp;</td>
          <td class="paramname"> <em>dx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>buffer_size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Feeds DVB VBI demux with data. 
<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>dx</em>&nbsp;</td><td>DVB demultiplexer context allocated with <a class="el" href="group__DVBDemux.html#g1e996d59787ce58b8682d27e8eca7edc" title="Allocates DVB VBI demux.">vbi_dvb_pes_demux_new()</a>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>DVB PES data, need not align with packet boundaries. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer_size</em>&nbsp;</td><td>Number of bytes in <em>buffer</em>, need not align with packet size. The packet filter works faster with larger buffers.</td></tr>
  </table>
</dl>
This function consumes and arbitrary number of bytes from a DVB Packetized Elementary Stream (PES), filters out PRIVATE_STREAM_1 PES packets, filters out valid VBI data units, converts them to <a class="el" href="structvbi__sliced.html" title="This structure holds one scan line of sliced vbi data.">vbi_sliced</a> format and calls the vbi_dvb_demux_cb function given to <a class="el" href="group__DVBDemux.html#g1e996d59787ce58b8682d27e8eca7edc" title="Allocates DVB VBI demux.">vbi_dvb_pes_demux_new()</a> when a new frame is complete.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd><code>FALSE</code> if the data contained errors.</dd></dl>
<dl class="bug" compact><dt><b><a class="el" href="bug.html#_bug000003">Bug:</a></b></dt><dd>Demultiplexing of raw VBI data is not supported yet, raw data will be discarded.</dd></dl>
<dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.10 </dd></dl>

</div>
</div><p>
<a class="anchor" name="gba6263446dd7f180486140b4951097f3"></a><!-- doxytag: member="dvb_demux.h::vbi_dvb_demux_set_log_fn" ref="gba6263446dd7f180486140b4951097f3" args="(vbi_dvb_demux *dx, vbi_log_mask mask, vbi_log_fn *log_fn, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vbi_dvb_demux_set_log_fn           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a> *&nbsp;</td>
          <td class="paramname"> <em>dx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Basic.html#g14be5ab1155e94b01c79a4ed044e64ac">vbi_log_mask</a>&nbsp;</td>
          <td class="paramname"> <em>mask</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">vbi_log_fn *&nbsp;</td>
          <td class="paramname"> <em>log_fn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>user_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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>dx</em>&nbsp;</td><td>DVB demultiplexer context allocated with <a class="el" href="group__DVBDemux.html#g1e996d59787ce58b8682d27e8eca7edc" title="Allocates DVB VBI demux.">vbi_dvb_pes_demux_new()</a>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mask</em>&nbsp;</td><td>Which kind of information to log. Can be <code>0</code>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>log_fn</em>&nbsp;</td><td>This function is called with log messages. Consider <a class="el" href="group__Basic.html#g892c64da1c60919512f0c4db6641a708">vbi_log_on_stderr()</a>. Can be <code>NULL</code> to disable logging. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>User pointer passed through to the <em>log_fn</em> function.</td></tr>
  </table>
</dl>
The DVB demultiplexer supports the logging of errors in the PES stream and information useful to debug the demultiplexer.<p>
With this function you can redirect log messages generated by this module which would normally go to the global log function (see <a class="el" href="group__Basic.html#g594dbe49c85f00a11c3586a131203b61">vbi_set_log_fn()</a>), or enable logging only in the DVB demultiplexer <em>dx</em>.<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>The log messages may change in the future.</dd></dl>
<dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.22 </dd></dl>

</div>
</div><p>
<a class="anchor" name="g501c9d925a5d5946417f5c251c4ec8b8"></a><!-- doxytag: member="dvb_demux.h::vbi_dvb_demux_delete" ref="g501c9d925a5d5946417f5c251c4ec8b8" args="(vbi_dvb_demux *dx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vbi_dvb_demux_delete           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a> *&nbsp;</td>
          <td class="paramname"> <em>dx</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Deletes DVB VBI demux. 
<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>dx</em>&nbsp;</td><td>DVB demultiplexer context allocated with <a class="el" href="group__DVBDemux.html#g1e996d59787ce58b8682d27e8eca7edc" title="Allocates DVB VBI demux.">vbi_dvb_pes_demux_new()</a>, can be <code>NULL</code>.</td></tr>
  </table>
</dl>
Frees all resources associated with <em>dx</em>.<p>
<dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.10 </dd></dl>

</div>
</div><p>
<a class="anchor" name="g1e996d59787ce58b8682d27e8eca7edc"></a><!-- doxytag: member="dvb_demux.h::vbi_dvb_pes_demux_new" ref="g1e996d59787ce58b8682d27e8eca7edc" args="(vbi_dvb_demux_cb *callback, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__DVBDemux.html#g3d8ea8fb42aa99b702185ada0e3465d0">vbi_dvb_demux</a>* vbi_dvb_pes_demux_new           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__DVBDemux.html#ga4e8890adfc554241d2fb50b675e90d0">vbi_dvb_demux_cb</a> *&nbsp;</td>
          <td class="paramname"> <em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>user_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Allocates DVB VBI demux. 
<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>callback</em>&nbsp;</td><td>Function to be called by <a class="el" href="group__DVBDemux.html#g8f9c94782bb25d042180d98fd2b00f67" title="Feeds DVB VBI demux with data.">vbi_dvb_demux_feed()</a> when a new frame is available. If you want to use the <a class="el" href="group__DVBDemux.html#g4ba8fc52a6c73e780e92f35899e84e67" title="DVB VBI demux coroutine.">vbi_dvb_demux_cor()</a> function instead, <em>callback</em> must be <code>NULL</code>. Conversely you must not call <a class="el" href="group__DVBDemux.html#g4ba8fc52a6c73e780e92f35899e84e67" title="DVB VBI demux coroutine.">vbi_dvb_demux_cor()</a> if a <em>callback</em> is given. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>User pointer passed through to <em>callback</em> function.</td></tr>
  </table>
</dl>
Allocates a new DVB VBI (EN 301 472, EN 301 775) demultiplexer taking a PES stream as input.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to newly allocated DVB demux context which must be freed with <a class="el" href="group__DVBDemux.html#g501c9d925a5d5946417f5c251c4ec8b8" title="Deletes DVB VBI demux.">vbi_dvb_demux_delete()</a> when done. <code>NULL</code> on failure (out of memory).</dd></dl>
<dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.10 </dd></dl>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Wed May 27 04:47:58 2009 for ZVBI Library by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>