Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > by-pkgid > 9f39b42a4a9bb5f46373ffcca30c81df > files > 28

libzvbi0-devel-0.2.3-1mdk.ppc.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Raw VBI decoder</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.18 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; <a class="qindex" href="examples.html">Examples</a> &nbsp; </center>
<hr><h1>Raw VBI decoder<br>
<small>
[<a class="el" href="group__Raw.html">Raw VBI</a>]</small>
</h1>Converting raw VBI samples to bits and bytes. 
<a href="#_details">More...</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
<tr><td nowrap align=right valign=top>struct &nbsp;</td><td valign=bottom><a class="el" href="structvbi__bit__slicer.html">vbi_bit_slicer</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Bit slicer context.</em> <a href="structvbi__bit__slicer.html#_details">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>struct &nbsp;</td><td valign=bottom><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Raw vbi decoder context.</em> <a href="structvbi__raw__decoder.html#_details">More...</a><em></em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
<tr><td nowrap align=right valign=top>typedef vbi_bit_slicer&nbsp;</td><td valign=bottom><a class="el" href="group__Rawdec.html#a0">vbi_bit_slicer</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Bit slicer context.</em> <a href="#a0"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>typedef vbi_raw_decoder&nbsp;</td><td valign=bottom><a class="el" href="group__Rawdec.html#a1">vbi_raw_decoder</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Raw vbi decoder context.</em> <a href="#a1"></a><em></em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Enumerations</h2></td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group__Rawdec.html#a11">vbi_pixfmt</a> </td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Image format used as source to <a class="el" href="group__Rawdec.html#a3">vbi_bit_slice()</a> and <a class="el" href="group__Rawdec.html#a10">vbi_raw_decode()</a>.</em> <a href="#a11">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group__Rawdec.html#a12">vbi_modulation</a> { <br>
&nbsp;&nbsp;<a class="el" href="group__Rawdec.html#a12a30">VBI_MODULATION_NRZ_LSB</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Rawdec.html#a12a31">VBI_MODULATION_NRZ_MSB</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Rawdec.html#a12a32">VBI_MODULATION_BIPHASE_LSB</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Rawdec.html#a12a33">VBI_MODULATION_BIPHASE_MSB</a>
<br>
 }</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Modulation used for VBI data transmission.</em> <a href="#a12">More...</a><em></em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Functions</h2></td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__Rawdec.html#a2">vbi_bit_slicer_init</a> (<a class="el" href="structvbi__bit__slicer.html">vbi_bit_slicer</a> *slicer, int raw_samples, int sampling_rate, int cri_rate, int bit_rate, unsigned int cri_frc, unsigned int cri_mask, int cri_bits, int frc_bits, int payload, <a class="el" href="group__Rawdec.html#a12">vbi_modulation</a> modulation, <a class="el" href="group__Rawdec.html#a11">vbi_pixfmt</a> fmt)</td></tr>
<tr><td nowrap align=right valign=top>static_inline vbi_bool&nbsp;</td><td valign=bottom><a class="el" href="group__Rawdec.html#a3">vbi_bit_slice</a> (<a class="el" href="structvbi__bit__slicer.html">vbi_bit_slicer</a> *slicer, uint8_t *raw, uint8_t *buf)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__Rawdec.html#a4">vbi_raw_decoder_init</a> (<a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *rd)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__Rawdec.html#a5">vbi_raw_decoder_reset</a> (<a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *rd)</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="group__Rawdec.html#a6">vbi_raw_decoder_destroy</a> (<a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *rd)</td></tr>
<tr><td nowrap align=right valign=top>unsigned int&nbsp;</td><td valign=bottom><a class="el" href="group__Rawdec.html#a7">vbi_raw_decoder_add_services</a> (<a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *rd, unsigned int services, int strict)</td></tr>
<tr><td nowrap align=right valign=top>unsigned int&nbsp;</td><td valign=bottom><a class="el" href="group__Rawdec.html#a8">vbi_raw_decoder_remove_services</a> (<a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *rd, unsigned int services)</td></tr>
<tr><td nowrap align=right valign=top>unsigned int&nbsp;</td><td valign=bottom><a class="el" href="group__Rawdec.html#a9">vbi_raw_decoder_parameters</a> (<a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *rd, unsigned int services, int scanning, int *max_rate)</td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group__Rawdec.html#a10">vbi_raw_decode</a> (<a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *rd, uint8_t *raw, <a class="el" href="structvbi__sliced.html">vbi_sliced</a> *out)</td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Converting raw VBI samples to bits and bytes.
<p>
The libzvbi already offers hardware interfaces to obtain sliced VBI data for further processing. However if you want to write your own interface or decode data services not covered by libzvbi you can use these lower level functions. <hr><h2>Typedef Documentation</h2>
<a name="a0" doxytag="decoder.h::vbi_bit_slicer"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct vbi_bit_slicer  vbi_bit_slicer
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Bit slicer context.
<p>
The contents of this structure are private, use <a class="el" href="group__Rawdec.html#a2">vbi_bit_slicer_init()</a> to initialize.     </td>
  </tr>
</table>
<a name="a1" doxytag="decoder.h::vbi_raw_decoder"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct vbi_raw_decoder  vbi_raw_decoder
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Raw vbi decoder context.
<p>
Only the sampling parameters are public. See <a class="el" href="group__Rawdec.html#a9">vbi_raw_decoder_parameters()</a> and <a class="el" href="group__Rawdec.html#a7">vbi_raw_decoder_add_services()</a> for usage.     </td>
  </tr>
</table>
<hr><h2>Enumeration Type Documentation</h2>
<a name="a11" doxytag="decoder.h::vbi_pixfmt"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum vbi_pixfmt
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Image format used as source to <a class="el" href="group__Rawdec.html#a3">vbi_bit_slice()</a> and <a class="el" href="group__Rawdec.html#a10">vbi_raw_decode()</a>.
<p>

 <table border=1>
 <tr><th>Symbol</th><th>Byte&nbsp;0</th><th>Byte&nbsp;1</th><th>Byte&nbsp;2</th><th>Byte&nbsp;3</th></tr>
 <tr><td colspan=5>Planar YUV 4:2:0 data.</td></tr>
 <tr><td>VBI_PIXFMT_YUV420</td><td colspan=4>
 <table>
 <tr><th>Y plane</th><th>U plane</th><th>V plane</th></tr>
 <tr><td><table border=1>
 <tr><td>Y00</td><td>Y01</td><td>Y02</td><td>Y03</td></tr>
 <tr><td>Y10</td><td>Y11</td><td>Y12</td><td>Y13</td></tr>
 <tr><td>Y20</td><td>Y21</td><td>Y22</td><td>Y23</td></tr>
 <tr><td>Y30</td><td>Y31</td><td>Y32</td><td>Y33</td></tr>
 </table></td>
 <td><table border=1>
 <tr><td>Cb00</td><td>Cb01</td></tr>
 <tr><td>Cb10</td><td>Cb11</td></tr>
 </table></td>
 <td><table border=1>
 <tr><td>Cr00</td><td>Cr01</td></tr>
 <tr><td>Cr10</td><td>Cr11</td></tr>
 </table></td>
 </tr></table></td>
 </tr>
 <tr><td colspan=5>Packed YUV 4:2:2 data.</td></tr>
 <tr><td>VBI_PIXFMT_YUYV</td><td>Y0</td><td>Cb</td><td>Y1</td><td>Cr</td></tr>
 <tr><td>VBI_PIXFMT_YVYU</td><td>Y0</td><td>Cr</td><td>Y1</td><td>Cb</td></tr>
 <tr><td>VBI_PIXFMT_UYVY</td><td>Cb</td><td>Y0</td><td>Cr</td><td>Y1</td></tr>
 <tr><td>VBI_PIXFMT_VYUY</td><td>Cr</td><td>Y0</td><td>Cb</td><td>Y1</td></tr>
 <tr><td colspan=5>Packed 32 bit RGB data.</td></tr>
 <tr><td>VBI_PIXFMT_RGBA32_LE VBI_PIXFMT_ARGB32_BE</td>
 <td>r7&nbsp;...&nbsp;r0</td><td>g7&nbsp;...&nbsp;g0</td>
 <td>b7&nbsp;...&nbsp;b0</td><td>a7&nbsp;...&nbsp;a0</td></tr>
 <tr><td>VBI_PIXFMT_BGRA32_LE VBI_PIXFMT_ARGB32_BE</td>
 <td>b7&nbsp;...&nbsp;b0</td><td>g7&nbsp;...&nbsp;g0</td>
 <td>r7&nbsp;...&nbsp;r0</td><td>a7&nbsp;...&nbsp;a0</td></tr>
 <tr><td>VBI_PIXFMT_ARGB32_LE VBI_PIXFMT_BGRA32_BE</td>
 <td>a7&nbsp;...&nbsp;a0</td><td>r7&nbsp;...&nbsp;r0</td>
 <td>g7&nbsp;...&nbsp;g0</td><td>b7&nbsp;...&nbsp;b0</td></tr>
 <tr><td>VBI_PIXFMT_ABGR32_LE VBI_PIXFMT_RGBA32_BE</td>
 <td>a7&nbsp;...&nbsp;a0</td><td>b7&nbsp;...&nbsp;b0</td>
 <td>g7&nbsp;...&nbsp;g0</td><td>r7&nbsp;...&nbsp;r0</td></tr>
 <tr><td colspan=5>Packed 24 bit RGB data.</td></tr>
 <tr><td>VBI_PIXFMT_RGBA24</td>
 <td>r7&nbsp;...&nbsp;r0</td><td>g7&nbsp;...&nbsp;g0</td>
 <td>b7&nbsp;...&nbsp;b0</td><td>&nbsp;</td></tr>
 <tr><td>VBI_PIXFMT_BGRA24</td>
 <td>b7&nbsp;...&nbsp;b0</td><td>g7&nbsp;...&nbsp;g0</td>
 <td>r7&nbsp;...&nbsp;r0</td><td>&nbsp;</td></tr>
 <tr><td colspan=5>Packed 16 bit RGB data.</td></tr>
 <tr><td>VBI_PIXFMT_RGB16_LE</td>
 <td>g2&nbsp;g1&nbsp;g0&nbsp;r4&nbsp;r3&nbsp;r2&nbsp;r1&nbsp;r0</td>
 <td>b4&nbsp;b3&nbsp;b2&nbsp;b1&nbsp;b0&nbsp;g5&nbsp;g4&nbsp;g3</td>
 <td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>VBI_PIXFMT_BGR16_LE</td>
 <td>g2&nbsp;g1&nbsp;g0&nbsp;b4&nbsp;b3&nbsp;b2&nbsp;b1&nbsp;b0</td>
 <td>r4&nbsp;r3&nbsp;r2&nbsp;r1&nbsp;r0&nbsp;g5&nbsp;g4&nbsp;g3</td>
 <td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>VBI_PIXFMT_RGB16_BE</td>
 <td>b4&nbsp;b3&nbsp;b2&nbsp;b1&nbsp;b0&nbsp;g5&nbsp;g4&nbsp;g3</td>
 <td>g2&nbsp;g1&nbsp;g0&nbsp;r4&nbsp;r3&nbsp;r2&nbsp;r1&nbsp;r0</td>
 <td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>VBI_PIXFMT_BGR16_BE</td>
 <td>r4&nbsp;r3&nbsp;r2&nbsp;r1&nbsp;r0&nbsp;g5&nbsp;g4&nbsp;g3</td>
 <td>g2&nbsp;g1&nbsp;g0&nbsp;b4&nbsp;b3&nbsp;b2&nbsp;b1&nbsp;b0</td>
 <td>&nbsp;</td><td>&nbsp;</td></tr>
 <tr><td colspan=5>Packed 15 bit RGB data.</td></tr>
 <tr><td>VBI_PIXFMT_RGBA15_LE</td>
 <td>g2&nbsp;g1&nbsp;g0&nbsp;r4&nbsp;r3&nbsp;r2&nbsp;r1&nbsp;r0</td>
 <td>a0&nbsp;b4&nbsp;b3&nbsp;b2&nbsp;b1&nbsp;b0&nbsp;g4&nbsp;g3</td>
 <td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>VBI_PIXFMT_BGRA15_LE</td>
 <td>g2&nbsp;g1&nbsp;g0&nbsp;b4&nbsp;b3&nbsp;b2&nbsp;b1&nbsp;b0</td>
 <td>a0&nbsp;r4&nbsp;r3&nbsp;r2&nbsp;r1&nbsp;r0&nbsp;g4&nbsp;g3</td>
 <td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>VBI_PIXFMT_ARGB15_LE</td>
 <td>g1&nbsp;g0&nbsp;r4&nbsp;r3&nbsp;r2&nbsp;r1&nbsp;r0&nbsp;a0</td>
 <td>b4&nbsp;b3&nbsp;b2&nbsp;b1&nbsp;b0&nbsp;g4&nbsp;g3&nbsp;g2</td>
 <td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>VBI_PIXFMT_ABGR15_LE</td>
 <td>g1&nbsp;g0&nbsp;b4&nbsp;b3&nbsp;b2&nbsp;b1&nbsp;b0&nbsp;a0</td>
 <td>r4&nbsp;r3&nbsp;r2&nbsp;r1&nbsp;r0&nbsp;g4&nbsp;g3&nbsp;g2</td>
 <td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>VBI_PIXFMT_RGBA15_BE</td>
 <td>a0&nbsp;b4&nbsp;b3&nbsp;b2&nbsp;b1&nbsp;b0&nbsp;g4&nbsp;g3</td>
 <td>g2&nbsp;g1&nbsp;g0&nbsp;r4&nbsp;r3&nbsp;r2&nbsp;r1&nbsp;r0</td>
 <td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>VBI_PIXFMT_BGRA15_BE</td>
 <td>a0&nbsp;r4&nbsp;r3&nbsp;r2&nbsp;r1&nbsp;r0&nbsp;g4&nbsp;g3</td>
 <td>g2&nbsp;g1&nbsp;g0&nbsp;b4&nbsp;b3&nbsp;b2&nbsp;b1&nbsp;b0</td>
 <td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>VBI_PIXFMT_ARGB15_BE</td>
 <td>b4&nbsp;b3&nbsp;b2&nbsp;b1&nbsp;b0&nbsp;g4&nbsp;g3&nbsp;g2</td>
 <td>g1&nbsp;g0&nbsp;r4&nbsp;r3&nbsp;r2&nbsp;r1&nbsp;r0&nbsp;a0</td>
 <td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>VBI_PIXFMT_ABGR15_BE</td>
 <td>r4&nbsp;r3&nbsp;r2&nbsp;r1&nbsp;r0&nbsp;g4&nbsp;g3&nbsp;g2</td>
 <td>g1&nbsp;g0&nbsp;b4&nbsp;b3&nbsp;b2&nbsp;b1&nbsp;b0&nbsp;a0</td>
 <td>&nbsp;</td><td>&nbsp;</td></tr>
 </table>
    </td>
  </tr>
</table>
<a name="a12" doxytag="decoder.h::vbi_modulation"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum vbi_modulation
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Modulation used for VBI data transmission.
<p>
<dl compact><dt><b>Enumeration values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em><a name="a12a30" doxytag="VBI_MODULATION_NRZ_LSB"></a><em>VBI_MODULATION_NRZ_LSB</em></em>&nbsp;</td><td>
The data is 'non-return to zero' coded, logical '1' bits are described by high sample values, logical '0' bits by low values. The data is last significant bit first transmitted. </td></tr>
<tr><td valign=top><em><a name="a12a31" doxytag="VBI_MODULATION_NRZ_MSB"></a><em>VBI_MODULATION_NRZ_MSB</em></em>&nbsp;</td><td>
'Non-return to zero' coded, most significant bit first transmitted. </td></tr>
<tr><td valign=top><em><a name="a12a32" doxytag="VBI_MODULATION_BIPHASE_LSB"></a><em>VBI_MODULATION_BIPHASE_LSB</em></em>&nbsp;</td><td>
The data is 'bi-phase' coded. Each data bit is described by two complementary signalling elements, a logical '1' by a sequence of '10' elements, a logical '0' by a '01' sequence. The data is last significant bit first transmitted. </td></tr>
<tr><td valign=top><em><a name="a12a33" doxytag="VBI_MODULATION_BIPHASE_MSB"></a><em>VBI_MODULATION_BIPHASE_MSB</em></em>&nbsp;</td><td>
'Bi-phase' coded, most significant bit first transmitted. </td></tr>
</table>
</dl>
    </td>
  </tr>
</table>
<hr><h2>Function Documentation</h2>
<a name="a2" doxytag="decoder.c::vbi_bit_slicer_init"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void vbi_bit_slicer_init </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structvbi__bit__slicer.html">vbi_bit_slicer</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>slicer</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>raw_samples</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>sampling_rate</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>cri_rate</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>bit_rate</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>unsigned int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>cri_frc</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>unsigned int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>cri_mask</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>cri_bits</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>frc_bits</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>payload</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group__Rawdec.html#a12">vbi_modulation</a>&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>modulation</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group__Rawdec.html#a11">vbi_pixfmt</a>&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>fmt</em></td>
        </tr>
        <tr>
          <td></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>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>slicer</em>&nbsp;</td><td>
Pointer to <a class="el" href="structvbi__bit__slicer.html">vbi_bit_slicer</a> object to be initialized.  </td></tr>
<tr><td valign=top><em>raw_samples</em>&nbsp;</td><td>
Number of samples or pixels in one raw vbi line later passed to <a class="el" href="group__Rawdec.html#a3">vbi_bit_slice()</a>. This limits the number of bytes read from the sample buffer. </td></tr>
<tr><td valign=top><em>sampling_rate</em>&nbsp;</td><td>
Raw vbi sampling rate in Hz, that is the number of samples or pixels sampled per second by the hardware.  </td></tr>
<tr><td valign=top><em>cri_rate</em>&nbsp;</td><td>
The Clock Run In is a NRZ modulated sequence of '0' and '1' bits prepending most data transmissions to synchronize data acquisition circuits. This parameter gives the CRI bit rate in Hz, that is the number of CRI bits transmitted per second. </td></tr>
<tr><td valign=top><em>bit_rate</em>&nbsp;</td><td>
The transmission bit rate of all data bits following the CRI in Hz. </td></tr>
<tr><td valign=top><em>cri_frc</em>&nbsp;</td><td>
The FRaming Code usually following the CRI is a bit sequence identifying the data service, and per libzvbi definition modulated and transmitted at the same bit rate as the payload (however nothing stops you from counting all nominal CRI and FRC bits as CRI). The bit slicer compares the bits in this word, lsb last transmitted, against the transmitted CRI and FRC. Decoding of payload starts with the next bit after a match. </td></tr>
<tr><td valign=top><em>cri_mask</em>&nbsp;</td><td>
Of the CRI bits in <code>cri_frc</code>, only these bits are actually significant for a match. For instance it is wise not to rely on the very first CRI bits transmitted. Note this mask is not shifted left by <em>frc_bits</em>. </td></tr>
<tr><td valign=top><em>cri_bits</em>&nbsp;</td><td>
</td></tr>
<tr><td valign=top><em>frc_bits</em>&nbsp;</td><td>
Number of CRI and FRC bits in <em>cri_frc</em>, respectively. Their sum is limited to 32. </td></tr>
<tr><td valign=top><em>payload</em>&nbsp;</td><td>
Number of payload <em>bits</em>. Only this data will be stored in the <a class="el" href="group__Rawdec.html#a3">vbi_bit_slice()</a> output. If this number is no multiple of eight, the most significant bits of the last byte are undefined. </td></tr>
<tr><td valign=top><em>modulation</em>&nbsp;</td><td>
Modulation of the vbi data, see vbi_modulation. </td></tr>
<tr><td valign=top><em>fmt</em>&nbsp;</td><td>
Format of the raw data, see vbi_pixfmt.</td></tr>
</table>
</dl>Initializes <a class="el" href="structvbi__bit__slicer.html">vbi_bit_slicer</a> object. Usually you will not use this function but <a class="el" href="group__Rawdec.html#a10">vbi_raw_decode()</a>, the vbi image decoder which handles all these details.     </td>
  </tr>
</table>
<a name="a3" doxytag="decoder.h::vbi_bit_slice"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> static_inline vbi_bool vbi_bit_slice </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structvbi__bit__slicer.html">vbi_bit_slicer</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>slicer</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>uint8_t *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>raw</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>uint8_t *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>buf</em></td>
        </tr>
        <tr>
          <td></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>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>slicer</em>&nbsp;</td><td>
Pointer to initialized <a class="el" href="structvbi__bit__slicer.html">vbi_bit_slicer</a> object. </td></tr>
<tr><td valign=top><em>raw</em>&nbsp;</td><td>
Input data. At least the number of pixels or samples given as <em>raw_samples</em> to <a class="el" href="group__Rawdec.html#a2">vbi_bit_slicer_init()</a>. </td></tr>
<tr><td valign=top><em>buf</em>&nbsp;</td><td>
Output data. The buffer must be large enough to store the number of bits given as <em>payload</em> to <a class="el" href="group__Rawdec.html#a2">vbi_bit_slicer_init()</a>.</td></tr>
</table>
</dl>Decode one scan line of raw vbi data. Note the bit slicer tries to adapt to the average signal amplitude, you should avoid using the same <a class="el" href="structvbi__bit__slicer.html">vbi_bit_slicer</a> object for data from different devices.
<p>
<dl compact><dt><b>Note: </b></dt><dd>
As a matter of speed this function does not lock the <em>slicer</em>. When you want to share a <a class="el" href="structvbi__bit__slicer.html">vbi_bit_slicer</a> object between multiple threads you must implement your own locking mechanism.</dl><dl compact><dt><b>Returns: </b></dt><dd>
 <code>FALSE</code> if the raw data does not contain the expected information, i. e. the CRI/FRC has not been found. This may also result from a too weak or noisy signal. Error correction must be implemented at a higher layer. </dl>    </td>
  </tr>
</table>
<a name="a4" doxytag="decoder.c::vbi_raw_decoder_init"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void vbi_raw_decoder_init </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>rd</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>rd</em>&nbsp;</td><td>
Pointer to a <a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> structure.</td></tr>
</table>
</dl>Initializes a <a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> structure.     </td>
  </tr>
</table>
<a name="a5" doxytag="decoder.c::vbi_raw_decoder_reset"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void vbi_raw_decoder_reset </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>rd</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>rd</em>&nbsp;</td><td>
Initialized <a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> structure.</td></tr>
</table>
</dl>Reset a <a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> structure. This removes all previously added services to be decoded (if any) but does not touch the sampling parameters. You are free to change the sampling parameters after calling this.     </td>
  </tr>
</table>
<a name="a6" doxytag="decoder.c::vbi_raw_decoder_destroy"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void vbi_raw_decoder_destroy </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>rd</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>rd</em>&nbsp;</td><td>
Pointer to initialized <a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> structure, can be <code>NULL</code>.</td></tr>
</table>
</dl>Free all resources associated with <em>rd</em>.     </td>
  </tr>
</table>
<a name="a7" doxytag="decoder.c::vbi_raw_decoder_add_services"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> unsigned int vbi_raw_decoder_add_services </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>rd</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>unsigned int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>services</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>strict</em></td>
        </tr>
        <tr>
          <td></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>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>rd</em>&nbsp;</td><td>
Initialized <a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> structure. </td></tr>
<tr><td valign=top><em>services</em>&nbsp;</td><td>
Set of VBI_SLICED_ symbols. </td></tr>
<tr><td valign=top><em>strict</em>&nbsp;</td><td>
A value of 0, 1 or 2 requests loose, reliable or strict matching of sampling parameters. For example if the data service requires knowledge of line numbers while they are not known, <code>0</code> will accept the service (which may work if the scan lines are populated in a non-confusing way) but <code>1</code> or <code>2</code> will not. If the data service <em>may</em> use more lines than are sampled, <code>1</code> will accept but <code>2</code> will not. If unsure, set to <code>1</code>.</td></tr>
</table>
</dl>After you initialized the sampling parameters in <em>rd</em> (according to the abilities of your raw vbi source), this function adds one or more data services to be decoded. The libzvbi raw vbi decoder can decode up to eight data services in parallel. You can call this function while already decoding, it does not change sampling parameters and you must not change them either after calling this.
<p>
<dl compact><dt><b>Returns: </b></dt><dd>
 Set of VBI_SLICED_ symbols describing the data services that actually will be decoded. This excludes those services not decodable given the sampling parameters in <em>rd</em>. </dl>    </td>
  </tr>
</table>
<a name="a8" doxytag="decoder.c::vbi_raw_decoder_remove_services"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> unsigned int vbi_raw_decoder_remove_services </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>rd</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>unsigned int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>services</em></td>
        </tr>
        <tr>
          <td></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>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>rd</em>&nbsp;</td><td>
Initialized <a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> structure. </td></tr>
<tr><td valign=top><em>services</em>&nbsp;</td><td>
Set of VBI_SLICED_ symbols.</td></tr>
</table>
</dl>Removes one or more data services to be decoded from the <a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> structure. This function can be called at any time and does not touch sampling parameters.
<p>
<dl compact><dt><b>Returns: </b></dt><dd>
 Set of VBI_SLICED_ symbols describing the remaining data services that will be decoded. </dl>    </td>
  </tr>
</table>
<a name="a9" doxytag="decoder.c::vbi_raw_decoder_parameters"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> unsigned int vbi_raw_decoder_parameters </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>rd</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>unsigned int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>services</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>scanning</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>max_rate</em></td>
        </tr>
        <tr>
          <td></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>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>rd</em>&nbsp;</td><td>
Initialized <a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> structure. </td></tr>
<tr><td valign=top><em>services</em>&nbsp;</td><td>
Set of VBI_SLICED_ symbols. Here (and only here) you can add <code>VBI_SLICED_VBI_625</code> or <code>VBI_SLICED_VBI_525</code> to include all vbi scan lines in the calculated sampling parameters. </td></tr>
<tr><td valign=top><em>scanning</em>&nbsp;</td><td>
When 525 accept only NTSC services, when 625 only PAL/SECAM services. When scanning is 0, assume the scanning from the requested services, an ambiguous set will pick a 525 or 625 line system at random. </td></tr>
<tr><td valign=top><em>max_rate</em>&nbsp;</td><td>
If given, the highest data bit rate in Hz of all services requested is stored here. (The sampling rate should be at least twice as high; rd-&gt;sampling_rate will be set to a more reasonable value of 27 MHz derived from ITU-R Rec. 601.)</td></tr>
</table>
</dl>Calculate the sampling parameters in <em>rd</em> required to receive and decode the requested data <em>services</em>. rd-&gt;sampling_format will be <code>VBI_PIXFMT_YUV420</code>, rd-&gt;bytes_per_line set accordingly to a reasonable minimum. This function can be used to initialize hardware prior to calling vbi_raw_decoder_add_service().
<p>
<dl compact><dt><b>Returns: </b></dt><dd>
 Set of VBI_SLICED_ symbols describing the data services covered by the calculated sampling parameters. This excludes services the libzvbi raw decoder cannot decode. </dl>    </td>
  </tr>
</table>
<a name="a10" doxytag="decoder.c::vbi_raw_decode"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int vbi_raw_decode </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>rd</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>uint8_t *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>raw</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="structvbi__sliced.html">vbi_sliced</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>out</em></td>
        </tr>
        <tr>
          <td></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>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>rd</em>&nbsp;</td><td>
Initialized <a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> structure. </td></tr>
<tr><td valign=top><em>raw</em>&nbsp;</td><td>
A raw vbi image as defined in the <a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> structure (rd-&gt;sampling_format, rd-&gt;bytes_per_line, rd-&gt;count[0] + rd-&gt;count[1] scan lines). </td></tr>
<tr><td valign=top><em>out</em>&nbsp;</td><td>
Buffer to store the decoded <a class="el" href="structvbi__sliced.html">vbi_sliced</a> data. Since every vbi scan line may contain data, this must be an array of <a class="el" href="structvbi__sliced.html">vbi_sliced</a> with the same number of entries as scan lines in the raw image (rd-&gt;count[0] + rd-&gt;count[1]).</td></tr>
</table>
</dl>Decode a raw vbi image, consisting of several scan lines of raw vbi data, into sliced vbi data. The output is sorted by line number.
<p>
Note this function attempts to learn which lines carry which data service, or none, to speed up decoding. You should avoid using the same <a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> structure for different sources.
<p>
<dl compact><dt><b><a class="el" href="bug.html#_bug000001">Bug: </a></b></dt><dd>
This function ignores the sampling_format field in struct <a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a>, always assuming VBI_PIXFMT_YUV420.</dl>
<p>
<dl compact><dt><b>Returns: </b></dt><dd>
 The number of lines decoded, i. e. the number of <a class="el" href="structvbi__sliced.html">vbi_sliced</a> records written. </dl>    </td>
  </tr>
</table>
<hr><address style="align: right;"><small>Generated on Thu Jan 2 16:03:41 2003 for ZVBI Library by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.18 </small></address>
</body>
</html>