\doxysection{com.\+tritondigital.\+net.\+streaming.\+proxy.\+decoder.\+flv.\+Flv\+Decoder Class Reference}
\hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1flv_1_1FlvDecoder}{}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1flv_1_1FlvDecoder}\index{com.tritondigital.net.streaming.proxy.decoder.flv.FlvDecoder@{com.tritondigital.net.streaming.proxy.decoder.flv.FlvDecoder}}


Decodes an Flv Stream to extract the Audio\+Data and the Meta\+Data.  


Inheritance diagram for com.\+tritondigital.\+net.\+streaming.\+proxy.\+decoder.\+flv.\+Flv\+Decoder\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1flv_1_1FlvDecoder}
\end{center}
\end{figure}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
void \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1flv_1_1FlvDecoder_a6f1f5f247e4e87cb0fa9490a8f6b88c0}{stop\+Decoding\+Thread}} ()
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1StreamContainerDecoder}{com.\+tritondigital.\+net.\+streaming.\+proxy.\+decoder.\+Stream\+Container\+Decoder}}}
\begin{DoxyCompactItemize}
\item 
boolean {\bfseries on\+Data\+Received} (byte\mbox{[}$\,$\mbox{]} data, int data\+Length)
\item 
void {\bfseries set\+Meta\+Data\+Decoded\+Listener} (\mbox{\hyperlink{interfacecom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1StreamContainerDecoder_1_1MetaDataDecodedListener}{Meta\+Data\+Decoded\+Listener}} meta\+Data\+Decoded\+Listener)
\begin{DoxyCompactList}\small\item\em Sets the listener to be notified when new meta data is decoded. \end{DoxyCompactList}\item 
void {\bfseries set\+Audio\+Data\+Decoded\+Listener} (\mbox{\hyperlink{interfacecom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1StreamContainerDecoder_1_1AudioDataDecodedListener}{Audio\+Data\+Decoded\+Listener}} audio\+Data\+Decoded\+Listener)
\begin{DoxyCompactList}\small\item\em Sets the listener to be notified when new audio data is decoded. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1StreamContainerDecoder_a8778c756198501ce60d7ecb911c07e97}{start\+Decoding\+In\+Background}} ()
\begin{DoxyCompactList}\small\item\em Creates and Input\+Stream and starts a thread that decodes it and does the actual job of extracting the audio data and parameters and the meta data. \end{DoxyCompactList}\item 
void {\bfseries stop} ()
\begin{DoxyCompactList}\small\item\em Stops the decoding thread and close the streams. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1StreamContainerDecoder_a8d642a4d19be02bc950aede47990e81a}{set\+Reference\+Timestamp\+To\+Now}} ()
\end{DoxyCompactItemize}
\doxysubsubsection*{Static Public Attributes}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1flv_1_1FlvDecoder_a34541dacd412e72e70f04a53e21887a4}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1flv_1_1FlvDecoder_a34541dacd412e72e70f04a53e21887a4} 
static final int {\bfseries TAG\+\_\+\+TYPE\+\_\+\+AUDIO} = 0x08
\item 
\Hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1flv_1_1FlvDecoder_ada1557c745293a3eddaca6007d892d01}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1flv_1_1FlvDecoder_ada1557c745293a3eddaca6007d892d01} 
static final int {\bfseries TAG\+\_\+\+TYPE\+\_\+\+META} = 0x12
\end{DoxyCompactItemize}
\doxysubsubsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
void \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1flv_1_1FlvDecoder_a5ae0867d1176ff5c2bc52994845ff2f0}{start\+Decoding\+Thread}} ()
\end{DoxyCompactItemize}
\doxysubsection*{Protected Member Functions inherited from \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1StreamContainerDecoder}{com.\+tritondigital.\+net.\+streaming.\+proxy.\+decoder.\+Stream\+Container\+Decoder}}}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1StreamContainerDecoder_a7d0a35bbc359b4c98773b549e24c0353}{Stream\+Container\+Decoder}} ()
\begin{DoxyCompactList}\small\item\em Creates the internal streams used to transfer the new data received from the socket to a stream that can be used in blocking reading. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1StreamContainerDecoder_a0436ed49cd43082703dd56adc5eea3d0}{notify\+Meta\+Data\+Decoded}} (final Map$<$ String, Object $>$ meta\+Data, int timestamp)
\begin{DoxyCompactList}\small\item\em Notifies the Meta\+Data\+Listener that a Meta\+Data was decoded. \end{DoxyCompactList}\item 
void {\bfseries notify\+Audio\+Config\+Decoded} (\mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1AudioConfig}{Audio\+Config}} audio\+Config)
\begin{DoxyCompactList}\small\item\em Notifies the Audio\+Data\+Listener that the Audio\+Config was decoded. \end{DoxyCompactList}\item 
void {\bfseries notify\+Audio\+Data\+Decoded} (byte\mbox{[}$\,$\mbox{]} audio\+Data, int audio\+Data\+Length, int timestamp)
\begin{DoxyCompactList}\small\item\em Notifies the Audio\+Data\+Listener that an Audio\+Data was decoded. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Additional Inherited Members}
\doxysubsection*{Public Attributes inherited from \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1StreamContainerDecoder}{com.\+tritondigital.\+net.\+streaming.\+proxy.\+decoder.\+Stream\+Container\+Decoder}}}
\begin{DoxyCompactItemize}
\item 
final String {\bfseries TAG} = "{}Stream\+Container\+Decoder"{}
\end{DoxyCompactItemize}
\doxysubsection*{Protected Attributes inherited from \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1StreamContainerDecoder}{com.\+tritondigital.\+net.\+streaming.\+proxy.\+decoder.\+Stream\+Container\+Decoder}}}
\begin{DoxyCompactItemize}
\item 
volatile Queue\+Input\+Stream \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1StreamContainerDecoder_acc34f49f2a8bc98ac62b8ca9dd56606e}{m\+Input\+Stream\+For\+Decoding\+Thread}}
\begin{DoxyCompactList}\small\item\em Stream where new received bytes are enqueued, read by the decoder. \end{DoxyCompactList}\item 
long \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1StreamContainerDecoder_a3da04a865fadc6e002e7b134dc87b1b8}{m\+Reference\+Timestamp}}
\begin{DoxyCompactList}\small\item\em The timestamp of the machine at the moment when the decoding starts. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Decodes an Flv Stream to extract the Audio\+Data and the Meta\+Data. 

This class uses Core\+Media to parse the Flv. The Flv Decoding respects the format described at \href{http://osflash.org/flv}{\texttt{ http\+://osflash.\+org/flv}}. 

\doxysubsection{Member Function Documentation}
\Hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1flv_1_1FlvDecoder_a5ae0867d1176ff5c2bc52994845ff2f0}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1flv_1_1FlvDecoder_a5ae0867d1176ff5c2bc52994845ff2f0} 
\index{com.tritondigital.net.streaming.proxy.decoder.flv.FlvDecoder@{com.tritondigital.net.streaming.proxy.decoder.flv.FlvDecoder}!startDecodingThread@{startDecodingThread}}
\index{startDecodingThread@{startDecodingThread}!com.tritondigital.net.streaming.proxy.decoder.flv.FlvDecoder@{com.tritondigital.net.streaming.proxy.decoder.flv.FlvDecoder}}
\doxysubsubsection{\texorpdfstring{startDecodingThread()}{startDecodingThread()}}
{\footnotesize\ttfamily void com.\+tritondigital.\+net.\+streaming.\+proxy.\+decoder.\+flv.\+Flv\+Decoder.\+start\+Decoding\+Thread (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}



Reimplemented from \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1StreamContainerDecoder_a39ea34fcbed56f417138b95ec65e3ea0}{com.\+tritondigital.\+net.\+streaming.\+proxy.\+decoder.\+Stream\+Container\+Decoder}}.

\Hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1flv_1_1FlvDecoder_a6f1f5f247e4e87cb0fa9490a8f6b88c0}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1flv_1_1FlvDecoder_a6f1f5f247e4e87cb0fa9490a8f6b88c0} 
\index{com.tritondigital.net.streaming.proxy.decoder.flv.FlvDecoder@{com.tritondigital.net.streaming.proxy.decoder.flv.FlvDecoder}!stopDecodingThread@{stopDecodingThread}}
\index{stopDecodingThread@{stopDecodingThread}!com.tritondigital.net.streaming.proxy.decoder.flv.FlvDecoder@{com.tritondigital.net.streaming.proxy.decoder.flv.FlvDecoder}}
\doxysubsubsection{\texorpdfstring{stopDecodingThread()}{stopDecodingThread()}}
{\footnotesize\ttfamily void com.\+tritondigital.\+net.\+streaming.\+proxy.\+decoder.\+flv.\+Flv\+Decoder.\+stop\+Decoding\+Thread (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Reimplemented from \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1decoder_1_1StreamContainerDecoder_a30d5c6be38005fbaab1911e6b9c547cf}{com.\+tritondigital.\+net.\+streaming.\+proxy.\+decoder.\+Stream\+Container\+Decoder}}.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
streamingproxy/src/main/java/com/tritondigital/net/streaming/proxy/decoder/flv/Flv\+Decoder.\+java\end{DoxyCompactItemize}
