Sophie

Sophie

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

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: Raw VBI decoder</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>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>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvbi__bit__slicer.html">vbi_bit_slicer</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bit slicer context.  <a href="structvbi__bit__slicer.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Raw vbi decoder context.  <a href="structvbi__raw__decoder.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Rawdec.html#g48120afcb79d98fe9305e368cc86def7">vbi_pixfmt</a> { <br>
&nbsp;&nbsp;<b>VBI_PIXFMT_YUV420</b> =  1, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_YUYV</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_YVYU</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_UYVY</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_VYUY</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_PAL8</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_RGBA32_LE</b> =  32, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_RGBA32_BE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_BGRA32_LE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_BGRA32_BE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_ABGR32_BE</b> =  32, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_ABGR32_LE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_ARGB32_BE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_ARGB32_LE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_RGB24</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_BGR24</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_RGB16_LE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_RGB16_BE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_BGR16_LE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_BGR16_BE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_RGBA15_LE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_RGBA15_BE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_BGRA15_LE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_BGRA15_BE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_ARGB15_LE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_ARGB15_BE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_ABGR15_LE</b>, 
<br>
&nbsp;&nbsp;<b>VBI_PIXFMT_ABGR15_BE</b>
<br>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Image format used as source to <a class="el" href="group__Rawdec.html#gf6a526b0a602300a3c4a7d98c44d18c6">vbi_bit_slice()</a> and <a class="el" href="group__Rawdec.html#g590834a98acc13c74c08b72de4fbfe80">vbi_raw_decode()</a>.  <a href="group__Rawdec.html#g48120afcb79d98fe9305e368cc86def7">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Rawdec.html#g7753248b42586973b29190f866d2ab42">vbi_modulation</a> { <br>
&nbsp;&nbsp;<a class="el" href="group__Rawdec.html#gg7753248b42586973b29190f866d2ab4243c3fde169d3ec67f7b0b4fdf5accc89">VBI_MODULATION_NRZ_LSB</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Rawdec.html#gg7753248b42586973b29190f866d2ab4279cdf18de4c70f8f7358adb6907ca2c8">VBI_MODULATION_NRZ_MSB</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Rawdec.html#gg7753248b42586973b29190f866d2ab42f5b36f6b72fe6bdd945279141e7efd4e">VBI_MODULATION_BIPHASE_LSB</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group__Rawdec.html#gg7753248b42586973b29190f866d2ab427cfff7b4e1ab2ad51cac039784e988fe">VBI_MODULATION_BIPHASE_MSB</a>
<br>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Modulation used for VBI data transmission.  <a href="group__Rawdec.html#g7753248b42586973b29190f866d2ab42">More...</a><br></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__Rawdec.html#g144a98b21646c04e58d7b9339121e755">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#g7753248b42586973b29190f866d2ab42">vbi_modulation</a> modulation, <a class="el" href="group__Rawdec.html#g48120afcb79d98fe9305e368cc86def7">vbi_pixfmt</a> fmt)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">_vbi_inline vbi_bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Rawdec.html#gf6a526b0a602300a3c4a7d98c44d18c6">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 class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Rawdec.html#g5bbc43c12196c9be0065ecc566906adb">vbi_raw_decoder_init</a> (<a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *rd)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Rawdec.html#geeda3450a070ed6825a9918dc81f1c33">vbi_raw_decoder_reset</a> (<a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *rd)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Rawdec.html#g69e50cfd06f93243368c9a57043e3f85">vbi_raw_decoder_destroy</a> (<a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *rd)</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__Rawdec.html#g18c46d4a4885261c45e32e8eb509d1b9">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 class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Rawdec.html#g41b4b2619ef2938fb8886f4498becd58">vbi_raw_decoder_check_services</a> (<a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *rd, unsigned int services, int strict)</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__Rawdec.html#g75566fd215814d3282ac0788d95760e0">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 class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Rawdec.html#g8fd9e11965e789bd15bd4350ca310848">vbi_raw_decoder_resize</a> (<a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *rd, int *start, unsigned int *count)</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__Rawdec.html#g7256bd42077c333b17910f2b4b7a69b3">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 class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Rawdec.html#g590834a98acc13c74c08b72de4fbfe80">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>Enumeration Type Documentation</h2>
<a class="anchor" name="g48120afcb79d98fe9305e368cc86def7"></a><!-- doxytag: member="decoder.h::vbi_pixfmt" ref="g48120afcb79d98fe9305e368cc86def7" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__Rawdec.html#g48120afcb79d98fe9305e368cc86def7">vbi_pixfmt</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Image format used as source to <a class="el" href="group__Rawdec.html#gf6a526b0a602300a3c4a7d98c44d18c6">vbi_bit_slice()</a> and <a class="el" href="group__Rawdec.html#g590834a98acc13c74c08b72de4fbfe80">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>
 
</div>
</div><p>
<a class="anchor" name="g7753248b42586973b29190f866d2ab42"></a><!-- doxytag: member="decoder.h::vbi_modulation" ref="g7753248b42586973b29190f866d2ab42" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__Rawdec.html#g7753248b42586973b29190f866d2ab42">vbi_modulation</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Modulation used for VBI data transmission. 
<p>
<dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="gg7753248b42586973b29190f866d2ab4243c3fde169d3ec67f7b0b4fdf5accc89"></a><!-- doxytag: member="VBI_MODULATION_NRZ_LSB" ref="gg7753248b42586973b29190f866d2ab4243c3fde169d3ec67f7b0b4fdf5accc89" args="" -->VBI_MODULATION_NRZ_LSB</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 class="anchor" name="gg7753248b42586973b29190f866d2ab4279cdf18de4c70f8f7358adb6907ca2c8"></a><!-- doxytag: member="VBI_MODULATION_NRZ_MSB" ref="gg7753248b42586973b29190f866d2ab4279cdf18de4c70f8f7358adb6907ca2c8" args="" -->VBI_MODULATION_NRZ_MSB</em>&nbsp;</td><td>
'Non-return to zero' coded, most significant bit first transmitted. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg7753248b42586973b29190f866d2ab42f5b36f6b72fe6bdd945279141e7efd4e"></a><!-- doxytag: member="VBI_MODULATION_BIPHASE_LSB" ref="gg7753248b42586973b29190f866d2ab42f5b36f6b72fe6bdd945279141e7efd4e" args="" -->VBI_MODULATION_BIPHASE_LSB</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 class="anchor" name="gg7753248b42586973b29190f866d2ab427cfff7b4e1ab2ad51cac039784e988fe"></a><!-- doxytag: member="VBI_MODULATION_BIPHASE_MSB" ref="gg7753248b42586973b29190f866d2ab427cfff7b4e1ab2ad51cac039784e988fe" args="" -->VBI_MODULATION_BIPHASE_MSB</em>&nbsp;</td><td>
'Bi-phase' coded, most significant bit first transmitted. </td></tr>
</table>
</dl>

</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g144a98b21646c04e58d7b9339121e755"></a><!-- doxytag: member="decoder.h::vbi_bit_slicer_init" ref="g144a98b21646c04e58d7b9339121e755" args="(vbi_bit_slicer *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, vbi_modulation modulation, vbi_pixfmt fmt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vbi_bit_slicer_init           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structvbi__bit__slicer.html">vbi_bit_slicer</a> *&nbsp;</td>
          <td class="paramname"> <em>slicer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>raw_samples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>sampling_rate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>cri_rate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>bit_rate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>cri_frc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>cri_mask</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>cri_bits</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>frc_bits</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>payload</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Rawdec.html#g7753248b42586973b29190f866d2ab42">vbi_modulation</a>&nbsp;</td>
          <td class="paramname"> <em>modulation</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__Rawdec.html#g48120afcb79d98fe9305e368cc86def7">vbi_pixfmt</a>&nbsp;</td>
          <td class="paramname"> <em>fmt</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>slicer</em>&nbsp;</td><td>Pointer to <a class="el" href="structvbi__bit__slicer.html" title="Bit slicer context.">vbi_bit_slicer</a> object to be initialized. </td></tr>
    <tr><td valign="top"></td><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#gf6a526b0a602300a3c4a7d98c44d18c6">vbi_bit_slice()</a>. This limits the number of bytes read from the sample buffer. </td></tr>
    <tr><td valign="top"></td><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"></td><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"></td><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"></td><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"></td><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"></td><td valign="top"><em>cri_bits</em>&nbsp;</td><td></td></tr>
    <tr><td valign="top"></td><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"></td><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#gf6a526b0a602300a3c4a7d98c44d18c6">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"></td><td valign="top"><em>modulation</em>&nbsp;</td><td>Modulation of the vbi data, see vbi_modulation. </td></tr>
    <tr><td valign="top"></td><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" title="Bit slicer context.">vbi_bit_slicer</a> object. Usually you will not use this function but <a class="el" href="group__Rawdec.html#g590834a98acc13c74c08b72de4fbfe80">vbi_raw_decode()</a>, the vbi image decoder which handles all these details. 
</div>
</div><p>
<a class="anchor" name="gf6a526b0a602300a3c4a7d98c44d18c6"></a><!-- doxytag: member="decoder.h::vbi_bit_slice" ref="gf6a526b0a602300a3c4a7d98c44d18c6" args="(vbi_bit_slicer *slicer, uint8_t *raw, uint8_t *buf)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">_vbi_inline vbi_bool vbi_bit_slice           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structvbi__bit__slicer.html">vbi_bit_slicer</a> *&nbsp;</td>
          <td class="paramname"> <em>slicer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&nbsp;</td>
          <td class="paramname"> <em>raw</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&nbsp;</td>
          <td class="paramname"> <em>buf</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>slicer</em>&nbsp;</td><td>Pointer to initialized <a class="el" href="structvbi__bit__slicer.html" title="Bit slicer context.">vbi_bit_slicer</a> object. </td></tr>
    <tr><td valign="top"></td><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#g144a98b21646c04e58d7b9339121e755">vbi_bit_slicer_init()</a>. </td></tr>
    <tr><td valign="top"></td><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#g144a98b21646c04e58d7b9339121e755">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" title="Bit slicer context.">vbi_bit_slicer</a> object for data from different devices.<p>
<dl class="note" 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" title="Bit slicer context.">vbi_bit_slicer</a> object between multiple threads you must implement your own locking mechanism.</dd></dl>
<dl class="return" 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. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g5bbc43c12196c9be0065ecc566906adb"></a><!-- doxytag: member="decoder.h::vbi_raw_decoder_init" ref="g5bbc43c12196c9be0065ecc566906adb" args="(vbi_raw_decoder *rd)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vbi_raw_decoder_init           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="paramname"> <em>rd</em>          </td>
          <td>&nbsp;)&nbsp;</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>rd</em>&nbsp;</td><td>Pointer to a <a class="el" href="structvbi__raw__decoder.html" title="Raw vbi decoder context.">vbi_raw_decoder</a> structure.</td></tr>
  </table>
</dl>
Initializes a <a class="el" href="structvbi__raw__decoder.html" title="Raw vbi decoder context.">vbi_raw_decoder</a> structure. 
</div>
</div><p>
<a class="anchor" name="geeda3450a070ed6825a9918dc81f1c33"></a><!-- doxytag: member="decoder.h::vbi_raw_decoder_reset" ref="geeda3450a070ed6825a9918dc81f1c33" args="(vbi_raw_decoder *rd)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vbi_raw_decoder_reset           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="paramname"> <em>rd</em>          </td>
          <td>&nbsp;)&nbsp;</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>rd</em>&nbsp;</td><td>Initialized <a class="el" href="structvbi__raw__decoder.html" title="Raw vbi decoder context.">vbi_raw_decoder</a> structure.</td></tr>
  </table>
</dl>
Reset a <a class="el" href="structvbi__raw__decoder.html" title="Raw vbi decoder context.">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. 
</div>
</div><p>
<a class="anchor" name="g69e50cfd06f93243368c9a57043e3f85"></a><!-- doxytag: member="decoder.h::vbi_raw_decoder_destroy" ref="g69e50cfd06f93243368c9a57043e3f85" args="(vbi_raw_decoder *rd)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vbi_raw_decoder_destroy           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="paramname"> <em>rd</em>          </td>
          <td>&nbsp;)&nbsp;</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>rd</em>&nbsp;</td><td>Pointer to initialized <a class="el" href="structvbi__raw__decoder.html" title="Raw vbi decoder context.">vbi_raw_decoder</a> structure, can be <code>NULL</code>.</td></tr>
  </table>
</dl>
Free all resources associated with <em>rd</em>. 
</div>
</div><p>
<a class="anchor" name="g18c46d4a4885261c45e32e8eb509d1b9"></a><!-- doxytag: member="decoder.h::vbi_raw_decoder_add_services" ref="g18c46d4a4885261c45e32e8eb509d1b9" args="(vbi_raw_decoder *rd, unsigned int services, int strict)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int vbi_raw_decoder_add_services           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="paramname"> <em>rd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>services</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>strict</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>rd</em>&nbsp;</td><td>Initialized <a class="el" href="structvbi__raw__decoder.html" title="Raw vbi decoder context.">vbi_raw_decoder</a> structure. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>services</em>&nbsp;</td><td>Set of <a class="el" href="sliced_8h.html#VBI_SLICED_">VBI_SLICED_</a> symbols. </td></tr>
    <tr><td valign="top"></td><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 class="return" compact><dt><b>Returns:</b></dt><dd>Set of <a class="el" href="sliced_8h.html#VBI_SLICED_">VBI_SLICED_</a> symbols describing the data services that actually will be decoded. This excludes those services not decodable given the sampling parameters in <em>rd</em>. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g41b4b2619ef2938fb8886f4498becd58"></a><!-- doxytag: member="decoder.h::vbi_raw_decoder_check_services" ref="g41b4b2619ef2938fb8886f4498becd58" args="(vbi_raw_decoder *rd, unsigned int services, int strict)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int vbi_raw_decoder_check_services           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="paramname"> <em>rd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>services</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>strict</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>rd</em>&nbsp;</td><td>Initialized <a class="el" href="structvbi__raw__decoder.html" title="Raw vbi decoder context.">vbi_raw_decoder</a> structure. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>services</em>&nbsp;</td><td>Set of <a class="el" href="sliced_8h.html#VBI_SLICED_">VBI_SLICED_</a> symbols. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>strict</em>&nbsp;</td><td>See description of <a class="el" href="group__Rawdec.html#g18c46d4a4885261c45e32e8eb509d1b9">vbi_raw_decoder_add_services()</a></td></tr>
  </table>
</dl>
Check which of the given services can be decoded with current capture parameters at a given strictness level.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Subset of services actually decodable. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g75566fd215814d3282ac0788d95760e0"></a><!-- doxytag: member="decoder.h::vbi_raw_decoder_remove_services" ref="g75566fd215814d3282ac0788d95760e0" args="(vbi_raw_decoder *rd, unsigned int services)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int vbi_raw_decoder_remove_services           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="paramname"> <em>rd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>services</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>rd</em>&nbsp;</td><td>Initialized <a class="el" href="structvbi__raw__decoder.html" title="Raw vbi decoder context.">vbi_raw_decoder</a> structure. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>services</em>&nbsp;</td><td>Set of <a class="el" href="sliced_8h.html#VBI_SLICED_">VBI_SLICED_</a> symbols.</td></tr>
  </table>
</dl>
Removes one or more data services to be decoded from the <a class="el" href="structvbi__raw__decoder.html" title="Raw vbi decoder context.">vbi_raw_decoder</a> structure. This function can be called at any time and does not touch sampling parameters.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Set of <a class="el" href="sliced_8h.html#VBI_SLICED_">VBI_SLICED_</a> symbols describing the remaining data services that will be decoded. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g8fd9e11965e789bd15bd4350ca310848"></a><!-- doxytag: member="decoder.h::vbi_raw_decoder_resize" ref="g8fd9e11965e789bd15bd4350ca310848" args="(vbi_raw_decoder *rd, int *start, unsigned int *count)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vbi_raw_decoder_resize           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="paramname"> <em>rd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int *&nbsp;</td>
          <td class="paramname"> <em>count</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>rd</em>&nbsp;</td><td>Initialized <a class="el" href="structvbi__raw__decoder.html" title="Raw vbi decoder context.">vbi_raw_decoder</a> structure. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>start</em>&nbsp;</td><td>Array of start line indices for both fields </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>Array of line counts for both fields</td></tr>
  </table>
</dl>
Grows or shrinks the internal state arrays for VBI geometry changes 
</div>
</div><p>
<a class="anchor" name="g7256bd42077c333b17910f2b4b7a69b3"></a><!-- doxytag: member="decoder.h::vbi_raw_decoder_parameters" ref="g7256bd42077c333b17910f2b4b7a69b3" args="(vbi_raw_decoder *rd, unsigned int services, int scanning, int *max_rate)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int vbi_raw_decoder_parameters           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="paramname"> <em>rd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>services</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>scanning</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>max_rate</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>rd</em>&nbsp;</td><td>Initialized <a class="el" href="structvbi__raw__decoder.html" title="Raw vbi decoder context.">vbi_raw_decoder</a> structure. </td></tr>
    <tr><td valign="top"></td><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"></td><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, determine 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"></td><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 class="return" compact><dt><b>Returns:</b></dt><dd>Set of <a class="el" href="sliced_8h.html#VBI_SLICED_">VBI_SLICED_</a> symbols describing the data services covered by the calculated sampling parameters. This excludes services the libzvbi raw decoder cannot decode. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g590834a98acc13c74c08b72de4fbfe80"></a><!-- doxytag: member="decoder.h::vbi_raw_decode" ref="g590834a98acc13c74c08b72de4fbfe80" args="(vbi_raw_decoder *rd, uint8_t *raw, vbi_sliced *out)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int vbi_raw_decode           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structvbi__raw__decoder.html">vbi_raw_decoder</a> *&nbsp;</td>
          <td class="paramname"> <em>rd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&nbsp;</td>
          <td class="paramname"> <em>raw</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>out</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>rd</em>&nbsp;</td><td>Initialized <a class="el" href="structvbi__raw__decoder.html" title="Raw vbi decoder context.">vbi_raw_decoder</a> structure. </td></tr>
    <tr><td valign="top"></td><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" title="Raw vbi decoder context.">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"></td><td valign="top"><em>out</em>&nbsp;</td><td>Buffer to store the decoded <a class="el" href="structvbi__sliced.html" title="This structure holds one scan line of sliced vbi data.">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" title="This structure holds one scan line of sliced vbi data.">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" title="Raw vbi decoder context.">vbi_raw_decoder</a> structure for different sources.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The number of lines decoded, i. e. the number of <a class="el" href="structvbi__sliced.html" title="This structure holds one scan line of sliced vbi data.">vbi_sliced</a> records written. </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>