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

414 lines
21 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<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/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.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 id="projectalign" 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.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</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 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:ab0b44ad45f2afcfecd23c64ae5644694"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/da9/classshaka_1_1media_1_1BitReader.html#ab0b44ad45f2afcfecd23c64ae5644694">SkipToNextByte</a> ()</td></tr>
<tr class="separator:ab0b44ad45f2afcfecd23c64ae5644694"><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:a94b03de069b0054ee4a534b12644a986"><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#a94b03de069b0054ee4a534b12644a986">bits_available</a> () const</td></tr>
<tr class="separator:a94b03de069b0054ee4a534b12644a986"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a100abf1165633b67359bb3d813594f7e"><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#a100abf1165633b67359bb3d813594f7e">bit_position</a> () const</td></tr>
<tr class="separator:a100abf1165633b67359bb3d813594f7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc5a89a9c0664a097c55d72d7540ac82"><td class="memItemLeft" align="right" valign="top">const uint8_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/da9/classshaka_1_1media_1_1BitReader.html#abc5a89a9c0664a097c55d72d7540ac82">current_byte_ptr</a> () const</td></tr>
<tr class="separator:abc5a89a9c0664a097c55d72d7540ac82"><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 class="definition">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 id="a264dbe3e94ba76214c1af75ab3877945"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a264dbe3e94ba76214c1af75ab3877945">&#9670;&nbsp;</a></span>BitReader()</h2>
<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 class="definition">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 id="a100abf1165633b67359bb3d813594f7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a100abf1165633b67359bb3d813594f7e">&#9670;&nbsp;</a></span>bit_position()</h2>
<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 class="definition">Definition at line <a class="el" href="../../d4/dd3/bit__reader_8h_source.html#l00094">94</a> of file <a class="el" href="../../d4/dd3/bit__reader_8h_source.html">bit_reader.h</a>.</p>
</div>
</div>
<a id="a94b03de069b0054ee4a534b12644a986"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94b03de069b0054ee4a534b12644a986">&#9670;&nbsp;</a></span>bits_available()</h2>
<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 class="definition">Definition at line <a class="el" href="../../d4/dd3/bit__reader_8h_source.html#l00089">89</a> of file <a class="el" href="../../d4/dd3/bit__reader_8h_source.html">bit_reader.h</a>.</p>
</div>
</div>
<a id="abc5a89a9c0664a097c55d72d7540ac82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc5a89a9c0664a097c55d72d7540ac82">&#9670;&nbsp;</a></span>current_byte_ptr()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const uint8_t* shaka::media::BitReader::current_byte_ptr </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>A pointer to the current byte. </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../d4/dd3/bit__reader_8h_source.html#l00097">97</a> of file <a class="el" href="../../d4/dd3/bit__reader_8h_source.html">bit_reader.h</a>.</p>
</div>
</div>
<a id="ae40382c4ca4a57b3bb3531a337aebbe4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae40382c4ca4a57b3bb3531a337aebbe4">&#9670;&nbsp;</a></span>ReadBits()</h2>
<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 class="definition">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 id="a4ab20ef220c76072eaecb982aba0541d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ab20ef220c76072eaecb982aba0541d">&#9670;&nbsp;</a></span>SkipBits()</h2>
<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 class="definition">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 id="a98bbbbc849a3fadc1a136662174d470e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a98bbbbc849a3fadc1a136662174d470e">&#9670;&nbsp;</a></span>SkipBitsConditional()</h2>
<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 class="definition">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 id="a7d349253d5cc8f9aa33f1ca2ea94677c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d349253d5cc8f9aa33f1ca2ea94677c">&#9670;&nbsp;</a></span>SkipBytes()</h2>
<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 class="definition">Definition at line <a class="el" href="../../d5/de0/bit__reader_8cc_source.html#l00063">63</a> of file <a class="el" href="../../d5/de0/bit__reader_8cc_source.html">bit_reader.cc</a>.</p>
</div>
</div>
<a id="ab0b44ad45f2afcfecd23c64ae5644694"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0b44ad45f2afcfecd23c64ae5644694">&#9670;&nbsp;</a></span>SkipToNextByte()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void shaka::media::BitReader::SkipToNextByte </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Skip a number of bits so the stream is byte aligned to the initial data. There could be 0 to 7 bits skipped. </p>
<p class="definition">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 Jun 22 2021 00:16:05 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.17
</small></address>
</body>
</html>