shaka-packager/docs/da/dfd/classshaka_1_1media_1_1Medi...

313 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::MediaHandler 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="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html">MediaHandler</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="../../dd/de9/classshaka_1_1media_1_1MediaHandler-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">shaka::media::MediaHandler Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="../../d3/d93/media__handler_8h_source.html">media_handler.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for shaka::media::MediaHandler:</div>
<div class="dyncontent">
<div class="center">
<img src="../../da/dfd/classshaka_1_1media_1_1MediaHandler.png" usemap="#shaka::media::MediaHandler_map" alt=""/>
<map id="shaka::media::MediaHandler_map" name="shaka::media::MediaHandler_map">
<area href="../../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html" alt="shaka::media::ChunkingHandler" shape="rect" coords="0,56,200,80"/>
<area href="../../dd/d17/classshaka_1_1media_1_1Demuxer.html" alt="shaka::media::Demuxer" shape="rect" coords="210,56,410,80"/>
<area href="../../d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html" alt="shaka::media::EncryptionHandler" shape="rect" coords="420,56,620,80"/>
<area href="../../d1/d36/classshaka_1_1media_1_1FakeMediaHandler.html" alt="shaka::media::FakeMediaHandler" shape="rect" coords="630,56,830,80"/>
<area href="../../df/d46/classshaka_1_1media_1_1Muxer.html" alt="shaka::media::Muxer" shape="rect" coords="840,56,1040,80"/>
<area href="../../db/dea/classshaka_1_1media_1_1TrickPlayHandler.html" alt="shaka::media::TrickPlayHandler" shape="rect" coords="1050,56,1250,80"/>
<area href="../../d3/d71/classshaka_1_1media_1_1mp2t_1_1TsMuxer.html" alt="shaka::media::mp2t::TsMuxer" shape="rect" coords="630,112,830,136"/>
<area href="../../db/d30/classshaka_1_1media_1_1mp4_1_1MP4Muxer.html" alt="shaka::media::mp4::MP4Muxer" shape="rect" coords="840,112,1040,136"/>
<area href="../../d3/d73/classshaka_1_1media_1_1webm_1_1WebMMuxer.html" title="Implements WebM Muxer. " alt="shaka::media::webm::WebMMuxer" shape="rect" coords="1050,112,1250,136"/>
</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:a0fac1fe2d593e78d47244acdfa21759d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0fac1fe2d593e78d47244acdfa21759d"></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#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"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connect downstream handler at the specified output stream index. <br/></td></tr>
<tr class="separator:a0fac1fe2d593e78d47244acdfa21759d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc48a2450ce50162de18071aef516b6c"><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"><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"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed0da512bbd998ec9d0a5c019ad17acb"><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"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e169e81344ce4ccfed3194ec5f4a3a1"><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"><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"><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 class="memitem:a0e05325d62bfb66318301c1ed790a46e"><td class="memItemLeft" align="right" valign="top">virtual <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#a0e05325d62bfb66318301c1ed790a46e">InitializeInternal</a> ()=0</td></tr>
<tr class="separator:a0e05325d62bfb66318301c1ed790a46e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb614e9f43e1eb6f837801b15b78c0b4"><td class="memItemLeft" align="right" valign="top">virtual <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#acb614e9f43e1eb6f837801b15b78c0b4">Process</a> (std::unique_ptr&lt; <a class="el" href="../../d0/d4c/structshaka_1_1media_1_1StreamData.html">StreamData</a> &gt; stream_data)=0</td></tr>
<tr class="separator:acb614e9f43e1eb6f837801b15b78c0b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69a31b8ec1b85fd4790c7c2013c69a73"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69a31b8ec1b85fd4790c7c2013c69a73"></a>
virtual <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#a69a31b8ec1b85fd4790c7c2013c69a73">OnFlushRequest</a> (size_t input_stream_index)</td></tr>
<tr class="memdesc:a69a31b8ec1b85fd4790c7c2013c69a73"><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:a69a31b8ec1b85fd4790c7c2013c69a73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71df357be46c02dc0e71b2eabb034c10"><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"><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"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:accd62dd4def920571f95f4e1a98ab7ca"><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"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5c28b9b8e5aa8471186b35f005986a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5c28b9b8e5aa8471186b35f005986a1"></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#ac5c28b9b8e5aa8471186b35f005986a1">DispatchPeriodInfo</a> (size_t 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:ac5c28b9b8e5aa8471186b35f005986a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the period info to downstream handlers. <br/></td></tr>
<tr class="separator:ac5c28b9b8e5aa8471186b35f005986a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a855263bdfc4c0e24d94277dc4a1b415f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a855263bdfc4c0e24d94277dc4a1b415f"></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#a855263bdfc4c0e24d94277dc4a1b415f">DispatchStreamInfo</a> (size_t 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:a855263bdfc4c0e24d94277dc4a1b415f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the stream info to downstream handlers. <br/></td></tr>
<tr class="separator:a855263bdfc4c0e24d94277dc4a1b415f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73dfbc5de4901830cfd25775e2e4fcff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73dfbc5de4901830cfd25775e2e4fcff"></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#a73dfbc5de4901830cfd25775e2e4fcff">DispatchMediaSample</a> (size_t 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:a73dfbc5de4901830cfd25775e2e4fcff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the media sample to downstream handlers. <br/></td></tr>
<tr class="separator:a73dfbc5de4901830cfd25775e2e4fcff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa32bfd69f26d5f81a874d6442584691b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa32bfd69f26d5f81a874d6442584691b"></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#aa32bfd69f26d5f81a874d6442584691b">DispatchTextSample</a> (size_t stream_index, std::shared_ptr&lt; <a class="el" href="../../db/d1f/classshaka_1_1media_1_1TextSample.html">TextSample</a> &gt; text_sample)</td></tr>
<tr class="memdesc:aa32bfd69f26d5f81a874d6442584691b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the text sample to downsream handlers. <br/></td></tr>
<tr class="separator:aa32bfd69f26d5f81a874d6442584691b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a860716d6beae66729df7bb86b19aa81d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a860716d6beae66729df7bb86b19aa81d"></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#a860716d6beae66729df7bb86b19aa81d">DispatchMediaEvent</a> (size_t 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:a860716d6beae66729df7bb86b19aa81d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the media event to downstream handlers. <br/></td></tr>
<tr class="separator:a860716d6beae66729df7bb86b19aa81d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a505c70d5e911e45ebcabcce09e2658f9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a505c70d5e911e45ebcabcce09e2658f9"></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#a505c70d5e911e45ebcabcce09e2658f9">DispatchSegmentInfo</a> (size_t 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:a505c70d5e911e45ebcabcce09e2658f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dispatch the segment info to downstream handlers. <br/></td></tr>
<tr class="separator:a505c70d5e911e45ebcabcce09e2658f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5001bf12073101a949b062943769f5b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5001bf12073101a949b062943769f5b"></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#ad5001bf12073101a949b062943769f5b">FlushDownstream</a> (size_t output_stream_index)</td></tr>
<tr class="memdesc:ad5001bf12073101a949b062943769f5b"><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"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab644ca7b0a0dbcbc42936f2dfb979ca5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab644ca7b0a0dbcbc42936f2dfb979ca5"></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#ab644ca7b0a0dbcbc42936f2dfb979ca5">FlushAllDownstreams</a> ()</td></tr>
<tr class="memdesc:ab644ca7b0a0dbcbc42936f2dfb979ca5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flush all connected downstreams. <br/></td></tr>
<tr class="separator:ab644ca7b0a0dbcbc42936f2dfb979ca5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb64985e305009df53bd60a5b4ff3122"><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"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adcaba8387322b6ed0d490315876896b3"><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"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67286928ab5b7a3b3ff39db3735fefac"><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"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a665eb29cf9704481a490c5a912083104"><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"><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="../../da/dfd/classshaka_1_1media_1_1MediaHandler.html">MediaHandler</a> is the base media processing unit. Media handlers transform the input streams and propagate the outputs to downstream media handlers. There are three different types of media handlers: 1) Single input single output This is the most basic handler. It only supports one input and one output with both index as 0. 2) Multiple inputs multiple outputs The number of outputs must be equal to the number of inputs. The output stream at a specific index comes from the input stream at the same index. Different streams usually share a common resource, although they may be independent. One example of this is encryptor handler. 3) Single input multiple outputs The input stream is splitted into multiple output streams. One example of this is trick play handler. Other types of media handlers are disallowed and not supported. </p>
<p>Definition at line <a class="el" href="../../d3/d93/media__handler_8h_source.html#l00074">74</a> of file <a class="el" href="../../d3/d93/media__handler_8h_source.html">media_handler.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="accd62dd4def920571f95f4e1a98ab7ca"></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::MediaHandler::Dispatch </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">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Dispatch the stream data to downstream handlers. Note that stream_data.stream_index should be the output stream index. </p>
<p>Definition at line <a class="el" href="../../d2/de9/media__handler_8cc_source.html#l00052">52</a> of file <a class="el" href="../../d2/de9/media__handler_8cc_source.html">media_handler.cc</a>.</p>
</div>
</div>
<a class="anchor" id="aed0da512bbd998ec9d0a5c019ad17acb"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a> shaka::media::MediaHandler::Initialize </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize the handler and downstream handlers. Note that it should be called after setting up the graph before running the graph. </p>
<p>Definition at line <a class="el" href="../../d2/de9/media__handler_8cc_source.html#l00024">24</a> of file <a class="el" href="../../d2/de9/media__handler_8cc_source.html">media_handler.cc</a>.</p>
</div>
</div>
<a class="anchor" id="a0e05325d62bfb66318301c1ed790a46e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a> shaka::media::MediaHandler::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">protected</span><span class="mlabel">pure 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>Implemented in <a class="el" href="../../d1/d36/classshaka_1_1media_1_1FakeMediaHandler.html#af43db7170cd6b53aa937e0b68e210e25">shaka::media::FakeMediaHandler</a>, <a class="el" href="../../dd/d17/classshaka_1_1media_1_1Demuxer.html#a7488d8ea312be5822c67f5b69a8dbd9f">shaka::media::Demuxer</a>, <a class="el" href="../../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a76a5f4b74da3876cc72f44301c389ebd">shaka::media::ChunkingHandler</a>, <a class="el" href="../../df/d46/classshaka_1_1media_1_1Muxer.html#a36882e12df5c5bfd48a7b94d1dfad857">shaka::media::Muxer</a>, <a class="el" href="../../d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html#a3f1808a4386081e5e1c9a798a1a69dd0">shaka::media::EncryptionHandler</a>, and <a class="el" href="../../db/dea/classshaka_1_1media_1_1TrickPlayHandler.html#a3fd2fae199e0a9607e83e02724896c10">shaka::media::TrickPlayHandler</a>.</p>
</div>
</div>
<a class="anchor" id="acb614e9f43e1eb6f837801b15b78c0b4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="../../d0/d93/classshaka_1_1media_1_1Status.html">Status</a> shaka::media::MediaHandler::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">protected</span><span class="mlabel">pure 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>Implemented in <a class="el" href="../../d1/d36/classshaka_1_1media_1_1FakeMediaHandler.html#af9fa42669591a52b8fa1a62d27ed93d6">shaka::media::FakeMediaHandler</a>, <a class="el" href="../../dd/d17/classshaka_1_1media_1_1Demuxer.html#a869b21d13f02d4d5c0519f9eb35117cd">shaka::media::Demuxer</a>, <a class="el" href="../../d4/d43/classshaka_1_1media_1_1ChunkingHandler.html#a44c30ffd7c283be2ba4347bda7848633">shaka::media::ChunkingHandler</a>, <a class="el" href="../../df/d46/classshaka_1_1media_1_1Muxer.html#aec730b070245231a0887787005c06eee">shaka::media::Muxer</a>, <a class="el" href="../../d6/d4c/classshaka_1_1media_1_1EncryptionHandler.html#a7887e6060eb572036674ecb9a7e045c4">shaka::media::EncryptionHandler</a>, and <a class="el" href="../../db/dea/classshaka_1_1media_1_1TrickPlayHandler.html#afdd13bb4e762c4b904ed75b268359757">shaka::media::TrickPlayHandler</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>media/base/<a class="el" href="../../d3/d93/media__handler_8h_source.html">media_handler.h</a></li>
<li>media/base/<a class="el" href="../../d2/de9/media__handler_8cc_source.html">media_handler.cc</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Tue Jun 13 2017 20:29:21 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>