shaka-packager/docs/d6/da9/classshaka_1_1media_1_1BitR...

374 lines
19 KiB
HTML
Raw Normal View History

<!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.6"/>
<title>Shaka Packager SDK: shaka::media::BitReader Class Reference</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="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</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">Shaka Packager SDK
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
<li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="../../annotated.html"><span>Classes</span></a></li>
<li><a href="../../files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="../../classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="../../hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="../../functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Friends</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="../../d8/daf/namespaceshaka.html">shaka</a></li><li class="navelem"><b>media</b></li><li class="navelem"><a class="el" href="../../d6/da9/classshaka_1_1media_1_1BitReader.html">BitReader</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="../../d8/d13/classshaka_1_1media_1_1BitReader-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">shaka::media::BitReader Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>A class to read bit streams.
<a href="../../d6/da9/classshaka_1_1media_1_1BitReader.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="../../d4/dd3/bit__reader_8h_source.html">bit_reader.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a264dbe3e94ba76214c1af75ab3877945"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/da9/classshaka_1_1media_1_1BitReader.html#a264dbe3e94ba76214c1af75ab3877945">BitReader</a> (const uint8_t *data, size_t size)</td></tr>
<tr class="separator:a264dbe3e94ba76214c1af75ab3877945"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae40382c4ca4a57b3bb3531a337aebbe4"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ae40382c4ca4a57b3bb3531a337aebbe4"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../d6/da9/classshaka_1_1media_1_1BitReader.html#ae40382c4ca4a57b3bb3531a337aebbe4">ReadBits</a> (size_t num_bits, T *out)</td></tr>
<tr class="separator:ae40382c4ca4a57b3bb3531a337aebbe4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa77a1e15410a9a919c2d0e2df3beb62a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa77a1e15410a9a919c2d0e2df3beb62a"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>ReadBits</b> (size_t num_bits, bool *out)</td></tr>
<tr class="separator:aa77a1e15410a9a919c2d0e2df3beb62a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ab20ef220c76072eaecb982aba0541d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/da9/classshaka_1_1media_1_1BitReader.html#a4ab20ef220c76072eaecb982aba0541d">SkipBits</a> (size_t num_bits)</td></tr>
<tr class="separator:a4ab20ef220c76072eaecb982aba0541d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98bbbbc849a3fadc1a136662174d470e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/da9/classshaka_1_1media_1_1BitReader.html#a98bbbbc849a3fadc1a136662174d470e">SkipBitsConditional</a> (bool condition, size_t num_bits)</td></tr>
<tr class="separator:a98bbbbc849a3fadc1a136662174d470e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d349253d5cc8f9aa33f1ca2ea94677c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/da9/classshaka_1_1media_1_1BitReader.html#a7d349253d5cc8f9aa33f1ca2ea94677c">SkipBytes</a> (size_t num_bytes)</td></tr>
<tr class="separator:a7d349253d5cc8f9aa33f1ca2ea94677c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c1e1225c2780383e72996137bb7f86a"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/da9/classshaka_1_1media_1_1BitReader.html#a1c1e1225c2780383e72996137bb7f86a">bits_available</a> () const </td></tr>
<tr class="separator:a1c1e1225c2780383e72996137bb7f86a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b7456b84d6b463767127b57cd0dc898"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/da9/classshaka_1_1media_1_1BitReader.html#a6b7456b84d6b463767127b57cd0dc898">bit_position</a> () const </td></tr>
<tr class="separator:a6b7456b84d6b463767127b57cd0dc898"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A class to read bit streams. </p>
<p>Definition at line <a class="el" href="../../d4/dd3/bit__reader_8h_source.html#l00017">17</a> of file <a class="el" href="../../d4/dd3/bit__reader_8h_source.html">bit_reader.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a264dbe3e94ba76214c1af75ab3877945"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">shaka::media::BitReader::BitReader </td>
<td>(</td>
<td class="paramtype">const uint8_t *&#160;</td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize the <a class="el" href="../../d6/da9/classshaka_1_1media_1_1BitReader.html" title="A class to read bit streams. ">BitReader</a> object to read a data buffer. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>points to the beginning of the buffer. </td></tr>
<tr><td class="paramname">size</td><td>is the buffer size in bytes. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="../../d5/de0/bit__reader_8cc_source.html#l00012">12</a> of file <a class="el" href="../../d5/de0/bit__reader_8cc_source.html">bit_reader.cc</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a6b7456b84d6b463767127b57cd0dc898"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t shaka::media::BitReader::bit_position </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The current bit position. </dd></dl>
<p>Definition at line <a class="el" href="../../d4/dd3/bit__reader_8h_source.html#l00090">90</a> of file <a class="el" href="../../d4/dd3/bit__reader_8h_source.html">bit_reader.h</a>.</p>
</div>
</div>
<a class="anchor" id="a1c1e1225c2780383e72996137bb7f86a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t shaka::media::BitReader::bits_available </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of bits available for reading. </dd></dl>
<p>Definition at line <a class="el" href="../../d4/dd3/bit__reader_8h_source.html#l00085">85</a> of file <a class="el" href="../../d4/dd3/bit__reader_8h_source.html">bit_reader.h</a>.</p>
</div>
</div>
<a class="anchor" id="ae40382c4ca4a57b3bb3531a337aebbe4"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool shaka::media::BitReader::ReadBits </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>num_bits</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T *&#160;</td>
<td class="paramname"><em>out</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Read a number of bits from stream. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">num_bits</td><td>specifies the number of bits to read. It cannot be larger than the number of bits the type can hold. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">out</td><td>stores the output. The type <b>T</b> has to be a primitive integer type. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>false if the given number of bits cannot be read (not enough bits in the stream), true otherwise. When false is returned, the stream will enter a state where further ReadBits/SkipBits operations will always return false unless <em>num_bits</em> is 0. </dd></dl>
<p>Definition at line <a class="el" href="../../d4/dd3/bit__reader_8h_source.html#l00035">35</a> of file <a class="el" href="../../d4/dd3/bit__reader_8h_source.html">bit_reader.h</a>.</p>
</div>
</div>
<a class="anchor" id="a4ab20ef220c76072eaecb982aba0541d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool shaka::media::BitReader::SkipBits </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>num_bits</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Skip a number of bits from stream. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">num_bits</td><td>specifies the number of bits to be skipped. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>false if the given number of bits cannot be skipped (not enough bits in the stream), true otherwise. When false is returned, the stream will enter a state where further ReadXXX/SkipXXX operations will always return false unless |num_bits/bytes| is 0. </dd></dl>
<p>Definition at line <a class="el" href="../../d5/de0/bit__reader_8cc_source.html#l00024">24</a> of file <a class="el" href="../../d5/de0/bit__reader_8cc_source.html">bit_reader.cc</a>.</p>
</div>
</div>
<a class="anchor" id="a98bbbbc849a3fadc1a136662174d470e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool shaka::media::BitReader::SkipBitsConditional </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>condition</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>num_bits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Read one bit then skip the number of bits specified if that bit matches <em>condition</em>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">condition</td><td>indicates when the number of bits should be skipped. </td></tr>
<tr><td class="paramname">num_bits</td><td>specifies the number of bits to be skipped. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>false if the one bit cannot be read (not enough bits in the stream) or if the bit is set but the given number of bits cannot be skipped (not enough bits in the stream), true otherwise. When false is returned, the stream will enter a state where further ReadXXX/SkipXXX operations will always return false. </dd></dl>
<p>Definition at line <a class="el" href="../../d4/dd3/bit__reader_8h_source.html#l00069">69</a> of file <a class="el" href="../../d4/dd3/bit__reader_8h_source.html">bit_reader.h</a>.</p>
</div>
</div>
<a class="anchor" id="a7d349253d5cc8f9aa33f1ca2ea94677c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool shaka::media::BitReader::SkipBytes </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>num_bytes</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Skip a number of bytes from stream. The current posision should be byte aligned, otherwise a false is returned and bytes are not skipped. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">num_bytes</td><td>specifies the number of bytes to be skipped. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>false if the current position is not byte aligned or if the given number of bytes cannot be skipped (not enough bytes in the stream), true otherwise. </dd></dl>
<p>Definition at line <a class="el" href="../../d5/de0/bit__reader_8cc_source.html#l00054">54</a> of file <a class="el" href="../../d5/de0/bit__reader_8cc_source.html">bit_reader.cc</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>packager/media/base/<a class="el" href="../../d4/dd3/bit__reader_8h_source.html">bit_reader.h</a></li>
<li>packager/media/base/<a class="el" href="../../d5/de0/bit__reader_8cc_source.html">bit_reader.cc</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Tue Sep 19 2017 20:22:08 for Shaka Packager SDK by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>