shaka-packager/docs/d4/d43/classshaka_1_1media_1_1Chun...

277 lines
29 KiB
HTML

<!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>DASH Media Packaging SDK: shaka::media::ChunkingHandler 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">DASH Media Packaging 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></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="../../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html">ChunkingHandler</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="../../d2/dd8/classshaka_1_1media_1_1ChunkingHandler-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">shaka::media::ChunkingHandler Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="../../d7/d79/chunking__handler_8h_source.html">chunking_handler.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for shaka::media::ChunkingHandler:</div>
<div class="dyncontent">
<div class="center">
<img src="../../d4/d43/classshaka_1_1media_1_1ChunkingHandler.png" usemap="#shaka::media::ChunkingHandler_map" alt=""/>
<map id="shaka::media::ChunkingHandler_map" name="shaka::media::ChunkingHandler_map">
<area href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html" alt="shaka::media::MediaHandler" shape="rect" coords="0,0,188,24"/>
</map>
</div></div>
<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:a29ee238e2b9f8051ead89143c943e989"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a29ee238e2b9f8051ead89143c943e989"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>ChunkingHandler</b> (const <a class="el" href="../../db/d02/structshaka_1_1media_1_1ChunkingOptions.html">ChunkingOptions</a> &amp;chunking_options)</td></tr>
<tr class="separator:a29ee238e2b9f8051ead89143c943e989"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classshaka_1_1media_1_1MediaHandler"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classshaka_1_1media_1_1MediaHandler')"><img src="../../closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html">shaka::media::MediaHandler</a></td></tr>
<tr class="memitem:aced66ff3e906e7dd45f1f3771d61edd7 inherit pub_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aced66ff3e906e7dd45f1f3771d61edd7"></a>
<a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#aced66ff3e906e7dd45f1f3771d61edd7">SetHandler</a> (int output_stream_index, std::shared_ptr&lt; <a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html">MediaHandler</a> &gt; handler)</td></tr>
<tr class="memdesc:aced66ff3e906e7dd45f1f3771d61edd7 inherit pub_methods_classshaka_1_1media_1_1MediaHandler"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect downstream handler at the specified output stream index. <br/></td></tr>
<tr class="separator:aced66ff3e906e7dd45f1f3771d61edd7 inherit pub_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc48a2450ce50162de18071aef516b6c inherit pub_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afc48a2450ce50162de18071aef516b6c"></a>
<a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#afc48a2450ce50162de18071aef516b6c">AddHandler</a> (std::shared_ptr&lt; <a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html">MediaHandler</a> &gt; handler)</td></tr>
<tr class="memdesc:afc48a2450ce50162de18071aef516b6c inherit pub_methods_classshaka_1_1media_1_1MediaHandler"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect downstream handler to the next availble output stream index. <br/></td></tr>
<tr class="separator:afc48a2450ce50162de18071aef516b6c inherit pub_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed0da512bbd998ec9d0a5c019ad17acb inherit pub_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#aed0da512bbd998ec9d0a5c019ad17acb">Initialize</a> ()</td></tr>
<tr class="separator:aed0da512bbd998ec9d0a5c019ad17acb inherit pub_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">MediaHandler implementation overrides.</div></td></tr>
<tr class="memitem:a76a5f4b74da3876cc72f44301c389ebd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a76a5f4b74da3876cc72f44301c389ebd">InitializeInternal</a> () override</td></tr>
<tr class="separator:a76a5f4b74da3876cc72f44301c389ebd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44c30ffd7c283be2ba4347bda7848633"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a44c30ffd7c283be2ba4347bda7848633">Process</a> (std::unique_ptr&lt; <a class="el" href="../../d0/d4c/structshaka_1_1media_1_1StreamData.html">StreamData</a> &gt; stream_data) override</td></tr>
<tr class="separator:a44c30ffd7c283be2ba4347bda7848633"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87d573b0142a7574a6d93cddcbdd92c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a87d573b0142a7574a6d93cddcbdd92c4"></a>
<a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a87d573b0142a7574a6d93cddcbdd92c4">OnFlushRequest</a> (int input_stream_index) override</td></tr>
<tr class="memdesc:a87d573b0142a7574a6d93cddcbdd92c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Event handler for flush request at the specific input stream index. <br/></td></tr>
<tr class="separator:a87d573b0142a7574a6d93cddcbdd92c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classshaka_1_1media_1_1MediaHandler"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classshaka_1_1media_1_1MediaHandler')"><img src="../../closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html">shaka::media::MediaHandler</a></td></tr>
<tr class="memitem:a7b61972eedda125b436dc4d26f88c1e6 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b61972eedda125b436dc4d26f88c1e6"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a7b61972eedda125b436dc4d26f88c1e6">ValidateOutputStreamIndex</a> (int stream_index) const </td></tr>
<tr class="memdesc:a7b61972eedda125b436dc4d26f88c1e6 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="mdescLeft">&#160;</td><td class="mdescRight">Validate if the stream at the specified index actually exists. <br/></td></tr>
<tr class="separator:a7b61972eedda125b436dc4d26f88c1e6 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb64985e305009df53bd60a5b4ff3122 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeb64985e305009df53bd60a5b4ff3122"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>initialized</b> ()</td></tr>
<tr class="separator:aeb64985e305009df53bd60a5b4ff3122 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a819e0fd1a2419c65cd203e52806051f4 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a819e0fd1a2419c65cd203e52806051f4"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>num_input_streams</b> ()</td></tr>
<tr class="separator:a819e0fd1a2419c65cd203e52806051f4 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:accd62dd4def920571f95f4e1a98ab7ca inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#accd62dd4def920571f95f4e1a98ab7ca">Dispatch</a> (std::unique_ptr&lt; <a class="el" href="../../d0/d4c/structshaka_1_1media_1_1StreamData.html">StreamData</a> &gt; stream_data)</td></tr>
<tr class="separator:accd62dd4def920571f95f4e1a98ab7ca inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e8056d1955150ac946b84b7942453ee inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e8056d1955150ac946b84b7942453ee"></a>
<a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a6e8056d1955150ac946b84b7942453ee">DispatchPeriodInfo</a> (int stream_index, std::shared_ptr&lt; <a class="el" href="../../d7/d58/structshaka_1_1media_1_1PeriodInfo.html">PeriodInfo</a> &gt; period_info)</td></tr>
<tr class="memdesc:a6e8056d1955150ac946b84b7942453ee inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the period info to downstream handlers. <br/></td></tr>
<tr class="separator:a6e8056d1955150ac946b84b7942453ee inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68c2b3f1e00ffad13ec6a9e2fb82c8d6 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68c2b3f1e00ffad13ec6a9e2fb82c8d6"></a>
<a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a68c2b3f1e00ffad13ec6a9e2fb82c8d6">DispatchStreamInfo</a> (int stream_index, std::shared_ptr&lt; <a class="el" href="../../d5/db1/classshaka_1_1media_1_1StreamInfo.html">StreamInfo</a> &gt; stream_info)</td></tr>
<tr class="memdesc:a68c2b3f1e00ffad13ec6a9e2fb82c8d6 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the stream info to downstream handlers. <br/></td></tr>
<tr class="separator:a68c2b3f1e00ffad13ec6a9e2fb82c8d6 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfa15d4635dda12cd3d1439d3a9368f9 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acfa15d4635dda12cd3d1439d3a9368f9"></a>
<a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#acfa15d4635dda12cd3d1439d3a9368f9">DispatchEncryptionConfig</a> (int stream_index, std::unique_ptr&lt; <a class="el" href="../../d7/d34/structshaka_1_1media_1_1EncryptionConfig.html">EncryptionConfig</a> &gt; encryption_config)</td></tr>
<tr class="memdesc:acfa15d4635dda12cd3d1439d3a9368f9 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the encryption config to downstream handlers. <br/></td></tr>
<tr class="separator:acfa15d4635dda12cd3d1439d3a9368f9 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5613bfa98942bcb6d0871e5e3788960 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae5613bfa98942bcb6d0871e5e3788960"></a>
<a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#ae5613bfa98942bcb6d0871e5e3788960">DispatchMediaSample</a> (int stream_index, std::shared_ptr&lt; <a class="el" href="../../d7/d6d/classshaka_1_1media_1_1MediaSample.html">MediaSample</a> &gt; media_sample)</td></tr>
<tr class="memdesc:ae5613bfa98942bcb6d0871e5e3788960 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the media sample to downstream handlers. <br/></td></tr>
<tr class="separator:ae5613bfa98942bcb6d0871e5e3788960 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcd63083b77966607b9c2aed8724e8f5 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abcd63083b77966607b9c2aed8724e8f5"></a>
<a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#abcd63083b77966607b9c2aed8724e8f5">DispatchMediaEvent</a> (int stream_index, std::shared_ptr&lt; <a class="el" href="../../df/dd3/structshaka_1_1media_1_1MediaEvent.html">MediaEvent</a> &gt; media_event)</td></tr>
<tr class="memdesc:abcd63083b77966607b9c2aed8724e8f5 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the media event to downstream handlers. <br/></td></tr>
<tr class="separator:abcd63083b77966607b9c2aed8724e8f5 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c2da8615f6880abf4e198dd4c17ad45 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c2da8615f6880abf4e198dd4c17ad45"></a>
<a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a7c2da8615f6880abf4e198dd4c17ad45">DispatchSegmentInfo</a> (int stream_index, std::shared_ptr&lt; <a class="el" href="../../d0/dc0/structshaka_1_1media_1_1SegmentInfo.html">SegmentInfo</a> &gt; segment_info)</td></tr>
<tr class="memdesc:a7c2da8615f6880abf4e198dd4c17ad45 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the segment info to downstream handlers. <br/></td></tr>
<tr class="separator:a7c2da8615f6880abf4e198dd4c17ad45 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a12bf0d7f548d971c709c8644461dc9d3 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a12bf0d7f548d971c709c8644461dc9d3"></a>
<a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a12bf0d7f548d971c709c8644461dc9d3">FlushDownstream</a> (int output_stream_index)</td></tr>
<tr class="memdesc:a12bf0d7f548d971c709c8644461dc9d3 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flush the downstream connected at the specified output stream index. <br/></td></tr>
<tr class="separator:a12bf0d7f548d971c709c8644461dc9d3 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95d62b8863212d4cf3d1daacdaf4d0e6 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95d62b8863212d4cf3d1daacdaf4d0e6"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>num_input_streams</b> () const </td></tr>
<tr class="separator:a95d62b8863212d4cf3d1daacdaf4d0e6 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4be1e5619dd577b76f7d10919d8d10b3 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4be1e5619dd577b76f7d10919d8d10b3"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>next_output_stream_index</b> () const </td></tr>
<tr class="separator:a4be1e5619dd577b76f7d10919d8d10b3 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7ab09ed6799a15cdac7788ed5a1bc52c inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ab09ed6799a15cdac7788ed5a1bc52c"></a>
const std::map&lt; int, std::pair<br class="typebreak"/>
&lt; std::shared_ptr<br class="typebreak"/>
&lt; <a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html">MediaHandler</a> &gt;, int &gt; &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>output_handlers</b> ()</td></tr>
<tr class="separator:a7ab09ed6799a15cdac7788ed5a1bc52c inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a2c0bf3b08ac78ebaa87687991c9ca542"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c0bf3b08ac78ebaa87687991c9ca542"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>ChunkingHandlerTest</b></td></tr>
<tr class="separator:a2c0bf3b08ac78ebaa87687991c9ca542"><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="el" href="../../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html">ChunkingHandler</a> splits the samples into segments / subsegments based on the specified chunking options. This handler is a multi-in multi-out handler. If more than one input is provided, there should be one and only one video stream; also, all inputs should come from the same thread and are synchronized. There can be multiple chunking handler running in different threads or even different processes, we use the "consistent chunking algorithm" to make sure the chunks in different streams are aligned without explicit communcating with each other - which is not efficient and often difficult.</p>
<p>Consistent Chunking Algorithm:</p>
<ol type="1">
<li>Find the consistent chunkable boundary Let the timestamps for video frames be (t1, t2, t3, ...). Then a consistent chunkable boundary is simply the first chunkable boundary after (tk / N) != (tk-1 / N), where '/' denotes integer division, and N is the intended chunk duration.</li>
<li>Chunk only at the consistent chunkable boundary</li>
</ol>
<p>This algorithm will make sure the chunks from different video streams are aligned if they have aligned GoPs. However, this algorithm will only work for video streams. To be able to chunk non video streams at similar positions as video streams, <a class="el" href="../../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html">ChunkingHandler</a> is designed to accept one video input and multiple non video inputs, the non video inputs are chunked when the video input is chunked. If the inputs are synchronized - which is true if the inputs come from the same demuxer, the video and non video chunks are aligned. </p>
<p>Definition at line <a class="el" href="../../d7/d79/chunking__handler_8h_source.html#l00061">61</a> of file <a class="el" href="../../d7/d79/chunking__handler_8h_source.html">chunking_handler.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a76a5f4b74da3876cc72f44301c389ebd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a> shaka::media::ChunkingHandler::InitializeInternal </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Internal implementation of initialize. Note that it should only initialize the <a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html">MediaHandler</a> itself. Downstream handlers are handled in <a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#aed0da512bbd998ec9d0a5c019ad17acb">Initialize()</a>. </p>
<p>Implements <a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a0e05325d62bfb66318301c1ed790a46e">shaka::media::MediaHandler</a>.</p>
<p>Definition at line <a class="el" href="../../d9/d12/chunking__handler_8cc_source.html#l00028">28</a> of file <a class="el" href="../../d9/d12/chunking__handler_8cc_source.html">chunking_handler.cc</a>.</p>
</div>
</div>
<a class="anchor" id="a44c30ffd7c283be2ba4347bda7848633"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a> shaka::media::ChunkingHandler::Process </td>
<td>(</td>
<td class="paramtype">std::unique_ptr&lt; <a class="el" href="../../d0/d4c/structshaka_1_1media_1_1StreamData.html">StreamData</a> &gt;&#160;</td>
<td class="paramname"><em>stream_data</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Process the incoming stream data. Note that (1) stream_data.stream_index should be the input stream index; (2) The implementation needs to call DispatchXxx to dispatch the processed stream data to the downstream handlers after finishing processing if needed. </p>
<p>Implements <a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#acb614e9f43e1eb6f837801b15b78c0b4">shaka::media::MediaHandler</a>.</p>
<p>Definition at line <a class="el" href="../../d9/d12/chunking__handler_8cc_source.html#l00036">36</a> of file <a class="el" href="../../d9/d12/chunking__handler_8cc_source.html">chunking_handler.cc</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>media/chunking/<a class="el" href="../../d7/d79/chunking__handler_8h_source.html">chunking_handler.h</a></li>
<li>media/chunking/<a class="el" href="../../d9/d12/chunking__handler_8cc_source.html">chunking_handler.cc</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 16 2017 20:58:52 for DASH Media Packaging 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>