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

283 lines
30 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>Shaka Packager 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">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="../../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html">ChunkingHandler</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<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:a8557544d71622f047977c79ae90b0e8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8557544d71622f047977c79ae90b0e8e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>ChunkingHandler</b> (const <a class="el" href="../../d2/d1f/structshaka_1_1ChunkingParams.html">ChunkingParams</a> &amp;chunking_params)</td></tr>
<tr class="separator:a8557544d71622f047977c79ae90b0e8e"><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:a0fac1fe2d593e78d47244acdfa21759d inherit pub_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0fac1fe2d593e78d47244acdfa21759d"></a>
<a class="el" href="../../d2/d20/classshaka_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a0fac1fe2d593e78d47244acdfa21759d">SetHandler</a> (size_t 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:a0fac1fe2d593e78d47244acdfa21759d 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:a0fac1fe2d593e78d47244acdfa21759d 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="../../d2/d20/classshaka_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="../../d2/d20/classshaka_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>
<tr class="memitem:a0e169e81344ce4ccfed3194ec5f4a3a1 inherit pub_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e169e81344ce4ccfed3194ec5f4a3a1"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a0e169e81344ce4ccfed3194ec5f4a3a1">IsConnected</a> ()</td></tr>
<tr class="memdesc:a0e169e81344ce4ccfed3194ec5f4a3a1 inherit pub_methods_classshaka_1_1media_1_1MediaHandler"><td class="mdescLeft">&#160;</td><td class="mdescRight">Validate if the handler is connected to its upstream handler. <br/></td></tr>
<tr class="separator:a0e169e81344ce4ccfed3194ec5f4a3a1 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="../../d2/d20/classshaka_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="../../d2/d20/classshaka_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:ab526bd53e4d49d7209f01d9b10b9ab52"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab526bd53e4d49d7209f01d9b10b9ab52"></a>
<a class="el" href="../../d2/d20/classshaka_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#ab526bd53e4d49d7209f01d9b10b9ab52">OnFlushRequest</a> (size_t input_stream_index) override</td></tr>
<tr class="memdesc:ab526bd53e4d49d7209f01d9b10b9ab52"><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:ab526bd53e4d49d7209f01d9b10b9ab52"><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:a71df357be46c02dc0e71b2eabb034c10 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a71df357be46c02dc0e71b2eabb034c10"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a71df357be46c02dc0e71b2eabb034c10">ValidateOutputStreamIndex</a> (size_t stream_index) const </td></tr>
<tr class="memdesc:a71df357be46c02dc0e71b2eabb034c10 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:a71df357be46c02dc0e71b2eabb034c10 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="../../d2/d20/classshaka_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:af0c7b537e9745a0eb49b4561dbc89f55 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af0c7b537e9745a0eb49b4561dbc89f55"></a>
<a class="el" href="../../d2/d20/classshaka_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#af0c7b537e9745a0eb49b4561dbc89f55">DispatchStreamInfo</a> (size_t stream_index, std::shared_ptr&lt; const <a class="el" href="../../d5/db1/classshaka_1_1media_1_1StreamInfo.html">StreamInfo</a> &gt; stream_info)</td></tr>
<tr class="memdesc:af0c7b537e9745a0eb49b4561dbc89f55 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:af0c7b537e9745a0eb49b4561dbc89f55 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96d8a53afdeeb838218b981e7b2d71eb inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96d8a53afdeeb838218b981e7b2d71eb"></a>
<a class="el" href="../../d2/d20/classshaka_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a96d8a53afdeeb838218b981e7b2d71eb">DispatchMediaSample</a> (size_t stream_index, std::shared_ptr&lt; const <a class="el" href="../../d7/d6d/classshaka_1_1media_1_1MediaSample.html">MediaSample</a> &gt; media_sample)</td></tr>
<tr class="memdesc:a96d8a53afdeeb838218b981e7b2d71eb 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:a96d8a53afdeeb838218b981e7b2d71eb inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65d965532a6488eab28551aca51a1a2a inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65d965532a6488eab28551aca51a1a2a"></a>
<a class="el" href="../../d2/d20/classshaka_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a65d965532a6488eab28551aca51a1a2a">DispatchTextSample</a> (size_t stream_index, std::shared_ptr&lt; const <a class="el" href="../../db/d1f/classshaka_1_1media_1_1TextSample.html">TextSample</a> &gt; text_sample)</td></tr>
<tr class="memdesc:a65d965532a6488eab28551aca51a1a2a inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the text sample to downsream handlers. <br/></td></tr>
<tr class="separator:a65d965532a6488eab28551aca51a1a2a inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0ed6c81bd68250d84f6b04453472c00 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab0ed6c81bd68250d84f6b04453472c00"></a>
<a class="el" href="../../d2/d20/classshaka_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#ab0ed6c81bd68250d84f6b04453472c00">DispatchSegmentInfo</a> (size_t stream_index, std::shared_ptr&lt; const <a class="el" href="../../d0/dc0/structshaka_1_1media_1_1SegmentInfo.html">SegmentInfo</a> &gt; segment_info)</td></tr>
<tr class="memdesc:ab0ed6c81bd68250d84f6b04453472c00 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:ab0ed6c81bd68250d84f6b04453472c00 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac0bb4f2b49054ae6cc706517efc71b9 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aac0bb4f2b49054ae6cc706517efc71b9"></a>
<a class="el" href="../../d2/d20/classshaka_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#aac0bb4f2b49054ae6cc706517efc71b9">DispatchScte35Event</a> (size_t stream_index, std::shared_ptr&lt; const <a class="el" href="../../d1/d41/structshaka_1_1media_1_1Scte35Event.html">Scte35Event</a> &gt; scte35_event)</td></tr>
<tr class="memdesc:aac0bb4f2b49054ae6cc706517efc71b9 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the scte35 event to downstream handlers. <br/></td></tr>
<tr class="separator:aac0bb4f2b49054ae6cc706517efc71b9 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6aa5cdf6732f0a0fc19559ec408a9318 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6aa5cdf6732f0a0fc19559ec408a9318"></a>
<a class="el" href="../../d2/d20/classshaka_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#a6aa5cdf6732f0a0fc19559ec408a9318">DispatchCueEvent</a> (size_t stream_index, std::shared_ptr&lt; const <a class="el" href="../../da/d93/structshaka_1_1media_1_1CueEvent.html">CueEvent</a> &gt; cue_event)</td></tr>
<tr class="memdesc:a6aa5cdf6732f0a0fc19559ec408a9318 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the cue event to downstream handlers. <br/></td></tr>
<tr class="separator:a6aa5cdf6732f0a0fc19559ec408a9318 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5001bf12073101a949b062943769f5b inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5001bf12073101a949b062943769f5b"></a>
<a class="el" href="../../d2/d20/classshaka_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#ad5001bf12073101a949b062943769f5b">FlushDownstream</a> (size_t output_stream_index)</td></tr>
<tr class="memdesc:ad5001bf12073101a949b062943769f5b 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:ad5001bf12073101a949b062943769f5b inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab644ca7b0a0dbcbc42936f2dfb979ca5 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab644ca7b0a0dbcbc42936f2dfb979ca5"></a>
<a class="el" href="../../d2/d20/classshaka_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html#ab644ca7b0a0dbcbc42936f2dfb979ca5">FlushAllDownstreams</a> ()</td></tr>
<tr class="memdesc:ab644ca7b0a0dbcbc42936f2dfb979ca5 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flush all connected downstreams. <br/></td></tr>
<tr class="separator:ab644ca7b0a0dbcbc42936f2dfb979ca5 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:adcaba8387322b6ed0d490315876896b3 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adcaba8387322b6ed0d490315876896b3"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>num_input_streams</b> () const </td></tr>
<tr class="separator:adcaba8387322b6ed0d490315876896b3 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67286928ab5b7a3b3ff39db3735fefac inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67286928ab5b7a3b3ff39db3735fefac"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>next_output_stream_index</b> () const </td></tr>
<tr class="separator:a67286928ab5b7a3b3ff39db3735fefac inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a665eb29cf9704481a490c5a912083104 inherit pro_methods_classshaka_1_1media_1_1MediaHandler"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a665eb29cf9704481a490c5a912083104"></a>
const std::map&lt; size_t, <br class="typebreak"/>
std::pair&lt; std::shared_ptr<br class="typebreak"/>
&lt; <a class="el" href="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html">MediaHandler</a> &gt;, size_t &gt; &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>output_handlers</b> ()</td></tr>
<tr class="separator:a665eb29cf9704481a490c5a912083104 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 params. 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#l00046">46</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="../../d2/d20/classshaka_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="../../d2/d20/classshaka_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>packager/media/chunking/<a class="el" href="../../d7/d79/chunking__handler_8h_source.html">chunking_handler.h</a></li>
<li>packager/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 Mon Dec 11 2017 18:13:56 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>