<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.8"/> <title>ZVBI Library: Video Program System (VPS) Decoder</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">ZVBI Library  <span id="projectnumber">0.2.35</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.8 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">Video Program System (VPS) Decoder<div class="ingroups"><a class="el" href="group__LowDec.html">Low Level Decoding</a></div></div> </div> </div><!--header--> <div class="contents"> <p>Functions to decode and encode VPS packets (EN 300 231, EN 300 468). <a href="#details">More...</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:gae7fc7752981892961b360789f3a22496"><td class="memItemLeft" align="right" valign="top">vbi_bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VPS.html#gae7fc7752981892961b360789f3a22496">vbi_decode_vps_cni</a> (unsigned int *cni, const uint8_t buffer[13])</td></tr> <tr class="separator:gae7fc7752981892961b360789f3a22496"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga8cd549b25532ae4c6aa4f32a9b1eaa96"><td class="memItemLeft" align="right" valign="top">vbi_bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VPS.html#ga8cd549b25532ae4c6aa4f32a9b1eaa96">vbi_encode_vps_cni</a> (uint8_t buffer[13], unsigned int cni) _vbi_nonnull((1))</td></tr> <tr class="separator:ga8cd549b25532ae4c6aa4f32a9b1eaa96"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gafeaf0db61475e7c6b2b7b52fbc8470f3"><td class="memItemLeft" align="right" valign="top">vbi_bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VPS.html#gafeaf0db61475e7c6b2b7b52fbc8470f3">vbi_decode_vps_pdc</a> (<a class="el" href="structvbi__program__id.html">vbi_program_id</a> *pid, const uint8_t buffer[13])</td></tr> <tr class="separator:gafeaf0db61475e7c6b2b7b52fbc8470f3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaa65f6afb407705276c92a83e41d28997"><td class="memItemLeft" align="right" valign="top">vbi_bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VPS.html#gaa65f6afb407705276c92a83e41d28997">vbi_encode_vps_pdc</a> (uint8_t buffer[13], const <a class="el" href="structvbi__program__id.html">vbi_program_id</a> *pid)</td></tr> <tr class="separator:gaa65f6afb407705276c92a83e41d28997"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga46c57ac82a3fabe71d7c1059dabfec96"><td class="memItemLeft" align="right" valign="top">vbi_bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VPS.html#ga46c57ac82a3fabe71d7c1059dabfec96">vbi_decode_dvb_pdc_descriptor</a> (<a class="el" href="structvbi__program__id.html">vbi_program_id</a> *pid, const uint8_t buffer[5])</td></tr> <tr class="separator:ga46c57ac82a3fabe71d7c1059dabfec96"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gab0bf2a77c91d96d744dd3a4755cf66dc"><td class="memItemLeft" align="right" valign="top">vbi_bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group__VPS.html#gab0bf2a77c91d96d744dd3a4755cf66dc">vbi_encode_dvb_pdc_descriptor</a> (uint8_t buffer[5], const <a class="el" href="structvbi__program__id.html">vbi_program_id</a> *pid)</td></tr> <tr class="separator:gab0bf2a77c91d96d744dd3a4755cf66dc"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <p>Functions to decode and encode VPS packets (EN 300 231, EN 300 468). </p> <h2 class="groupheader">Function Documentation</h2> <a class="anchor" id="gae7fc7752981892961b360789f3a22496"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">vbi_bool vbi_decode_vps_cni </td> <td>(</td> <td class="paramtype">unsigned int * </td> <td class="paramname"><em>cni</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const uint8_t </td> <td class="paramname"><em>buffer</em>[13] </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">cni</td><td>CNI of type VBI_CNI_TYPE_VPS will be stored here. </td></tr> <tr><td class="paramname">buffer</td><td>VPS packet as defined for <code>VBI_SLICED_VPS</code>, i.e. 13 bytes without clock run-in and start code.</td></tr> </table> </dd> </dl> <p>Decodes a VPS packet according to EN 300 231, returning the contained 12 bit Country and Network Identifier in <em>*cni</em>.</p> <p>The code 0xDC3 is translated according to TR 101 231: "As this code is used for a time in two networks a distinction for automatic tuning systems is given in data line 16 [VPS]: bit 3 of byte 5 = 1 for the ARD network / = 0 for the ZDF network."</p> <dl class="section return"><dt>Returns</dt><dd>Always <code>TRUE</code>, no error checking possible. It may be prudent to wait for a second transmission of the received CNI to ensure correct reception.</dd></dl> <dl class="section since"><dt>Since</dt><dd>0.2.20 </dd></dl> <p>Referenced by <a class="el" href="group__VPS.html#gafeaf0db61475e7c6b2b7b52fbc8470f3">vbi_decode_vps_pdc()</a>.</p> </div> </div> <a class="anchor" id="ga8cd549b25532ae4c6aa4f32a9b1eaa96"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">vbi_bool vbi_encode_vps_cni </td> <td>(</td> <td class="paramtype">uint8_t </td> <td class="paramname"><em>buffer</em>[13], </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned int </td> <td class="paramname"><em>cni</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">buffer</td><td>VPS packet as defined for <code>VBI_SLICED_VPS</code>, i.e. 13 bytes without clock run-in and start code. </td></tr> <tr><td class="paramname">cni</td><td>CNI of type VBI_CNI_TYPE_VPS.</td></tr> </table> </dd> </dl> <p>Stores the 12 bit Country and Network Identifier <em>cni</em> in a VPS packet according to EN 300 231.</p> <dl class="section return"><dt>Returns</dt><dd><code>FALSE</code> if <em>cni</em> is invalid. In this case <em>buffer</em> remains unmodified.</dd></dl> <dl class="section since"><dt>Since</dt><dd>0.2.20 </dd></dl> <p>Referenced by <a class="el" href="group__VPS.html#gaa65f6afb407705276c92a83e41d28997">vbi_encode_vps_pdc()</a>.</p> </div> </div> <a class="anchor" id="gafeaf0db61475e7c6b2b7b52fbc8470f3"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">vbi_bool vbi_decode_vps_pdc </td> <td>(</td> <td class="paramtype"><a class="el" href="structvbi__program__id.html">vbi_program_id</a> * </td> <td class="paramname"><em>pid</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const uint8_t </td> <td class="paramname"><em>buffer</em>[13] </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">pid</td><td>PDC program ID will be stored here. </td></tr> <tr><td class="paramname">buffer</td><td>VPS packet as defined for <code>VBI_SLICED_VPS</code>, i.e. 13 bytes without clock run-in and start code.</td></tr> </table> </dd> </dl> <p>Decodes a VPS datagram according to EN 300 231, storing PDC recording-control data in <em>pid</em>.</p> <dl class="section return"><dt>Returns</dt><dd><code>FALSE</code> if the buffer contains incorrect data. In this case <em>pid</em> remains unmodified.</dd></dl> <dl class="section since"><dt>Since</dt><dd>0.2.34 </dd></dl> <p>References <a class="el" href="structvbi__program__id.html#a90794327986da193ddb76d518331589d">vbi_program_id::channel</a>, <a class="el" href="structvbi__program__id.html#ab02c877d547812c4cc22df34e6b8794c">vbi_program_id::cni</a>, <a class="el" href="structvbi__program__id.html#a5ac7312ef52b908f7b55996d6d12b3bb">vbi_program_id::cni_type</a>, <a class="el" href="structvbi__program__id.html#a9cccb9d3856e8b459d09e67cd12908d4">vbi_program_id::mi</a>, <a class="el" href="structvbi__program__id.html#a0c3e81ecb789d309061ce5cf8bb16bce">vbi_program_id::pcs_audio</a>, <a class="el" href="structvbi__program__id.html#a30c0862c008de112f4222e1208038d58">vbi_program_id::pil</a>, <a class="el" href="structvbi__program__id.html#a069f84e950d47f19a589cbe4a3603068">vbi_program_id::pty</a>, <a class="el" href="group__VPS.html#gae7fc7752981892961b360789f3a22496">vbi_decode_vps_cni()</a>, and <a class="el" href="group__ProgramID.html#gga289ec10e87cef7655799144bc898f262a232efb61f9f576d83a778ad18b90e296">VBI_PID_CHANNEL_VPS</a>.</p> </div> </div> <a class="anchor" id="gaa65f6afb407705276c92a83e41d28997"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">vbi_bool vbi_encode_vps_pdc </td> <td>(</td> <td class="paramtype">uint8_t </td> <td class="paramname"><em>buffer</em>[13], </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structvbi__program__id.html">vbi_program_id</a> * </td> <td class="paramname"><em>pid</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">buffer</td><td>VPS packet as defined for <code>VBI_SLICED_VPS</code>, i.e. 13 bytes without clock run-in and start code. </td></tr> <tr><td class="paramname">pid</td><td>PDC data to encode.</td></tr> </table> </dd> </dl> <p>Stores PDC recording-control data (CNI, PIL, PCS audio, PTY) in a VPS datagram according to EN 300 231.</p> <dl class="section return"><dt>Returns</dt><dd><code>FALSE</code> if any of the parameters to encode are invalid. In this case <em>buffer</em> remains unmodified.</dd></dl> <dl class="section since"><dt>Since</dt><dd>0.2.34 </dd></dl> <p>References <a class="el" href="structvbi__program__id.html#ab02c877d547812c4cc22df34e6b8794c">vbi_program_id::cni</a>, <a class="el" href="structvbi__program__id.html#a0c3e81ecb789d309061ce5cf8bb16bce">vbi_program_id::pcs_audio</a>, <a class="el" href="structvbi__program__id.html#a30c0862c008de112f4222e1208038d58">vbi_program_id::pil</a>, <a class="el" href="structvbi__program__id.html#a069f84e950d47f19a589cbe4a3603068">vbi_program_id::pty</a>, and <a class="el" href="group__VPS.html#ga8cd549b25532ae4c6aa4f32a9b1eaa96">vbi_encode_vps_cni()</a>.</p> </div> </div> <a class="anchor" id="ga46c57ac82a3fabe71d7c1059dabfec96"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">vbi_bool vbi_decode_dvb_pdc_descriptor </td> <td>(</td> <td class="paramtype"><a class="el" href="structvbi__program__id.html">vbi_program_id</a> * </td> <td class="paramname"><em>pid</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const uint8_t </td> <td class="paramname"><em>buffer</em>[5] </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">pid</td><td>PDC program ID will be stored here. </td></tr> <tr><td class="paramname">buffer</td><td>A DVB PDC descriptor as defined in EN 300 468, including the descriptor_tag and descriptor_length bytes.</td></tr> </table> </dd> </dl> <p>Decodes a DVB PDC descriptor as defined in EN 300 468 and EN 300 231, storing PDC recording-control data in <em>pid</em>.</p> <dl class="section return"><dt>Returns</dt><dd><code>FALSE</code> if the buffer contains an incorrect descriptor_tag, descriptor_length or PIL. In this case <em>pid</em> remains unmodified.</dd></dl> <dl class="section since"><dt>Since</dt><dd>0.2.34 </dd></dl> <p>References <a class="el" href="structvbi__program__id.html#a90794327986da193ddb76d518331589d">vbi_program_id::channel</a>, <a class="el" href="structvbi__program__id.html#a9cccb9d3856e8b459d09e67cd12908d4">vbi_program_id::mi</a>, <a class="el" href="structvbi__program__id.html#a30c0862c008de112f4222e1208038d58">vbi_program_id::pil</a>, and <a class="el" href="group__ProgramID.html#gga289ec10e87cef7655799144bc898f262a9ac263afbaf6fee07902a8ad757c928e">VBI_PID_CHANNEL_PDC_DESCRIPTOR</a>.</p> </div> </div> <a class="anchor" id="gab0bf2a77c91d96d744dd3a4755cf66dc"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">vbi_bool vbi_encode_dvb_pdc_descriptor </td> <td>(</td> <td class="paramtype">uint8_t </td> <td class="paramname"><em>buffer</em>[5], </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="structvbi__program__id.html">vbi_program_id</a> * </td> <td class="paramname"><em>pid</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">buffer</td><td>A DVB PDC descriptor as defined in EN 300 468, including the descriptor_tag and descriptor_length bytes. </td></tr> <tr><td class="paramname">pid</td><td>PDC data to encode.</td></tr> </table> </dd> </dl> <p>Stores PDC recording-control data (PIL only) in a DVB PDC descriptor as defined in EN 300 468 and EN 300 231.</p> <dl class="section return"><dt>Returns</dt><dd><code>FALSE</code> if any of the parameters to encode are invalid. In this case <em>buffer</em> remains unmodified.</dd></dl> <dl class="section since"><dt>Since</dt><dd>0.2.34 </dd></dl> <p>References <a class="el" href="structvbi__program__id.html#a30c0862c008de112f4222e1208038d58">vbi_program_id::pil</a>.</p> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Thu Oct 16 2014 08:52:24 for ZVBI Library by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.8 </small></address> </body> </html>