\doxysection{com.\+tritondigital.\+net.\+streaming.\+proxy.\+dataprovider.\+raw.\+Raw\+Packet\+Provider Class Reference}
\hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider}{}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider}\index{com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider@{com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider}}
Inheritance diagram for com.\+tritondigital.\+net.\+streaming.\+proxy.\+dataprovider.\+raw.\+Raw\+Packet\+Provider\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.000000cm]{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider}
\end{center}
\end{figure}
\doxysubsubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
interface \mbox{\hyperlink{interfacecom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_1_1StateChangedListener}{State\+Changed\+Listener}}
\begin{DoxyCompactList}\small\item\em Interface to be implemented in order to be notified about the important changes of state of the server. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_aa4ce61344f8e07c5fc3bc544a5d68737}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_aa4ce61344f8e07c5fc3bc544a5d68737} 
void {\bfseries on\+Audio\+Config\+Decoded} (Audio\+Config audio\+Config)
\item 
\Hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_a0f13429d81f3f871db8d70c51cbd9f2e}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_a0f13429d81f3f871db8d70c51cbd9f2e} 
void {\bfseries on\+Audio\+Data\+Decoded} (byte\mbox{[}$\,$\mbox{]} audio\+Data, int audio\+Data\+Length, int timestamp)
\item 
\Hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_aa11bac374e850d597230c75d21b1801d}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_aa11bac374e850d597230c75d21b1801d} 
String {\bfseries get\+Mime\+Type} ()
\begin{DoxyCompactList}\small\item\em Returns the mime-\/type string (audio/aac, audio/mpeg) to be sent by the HTTP server in response to a GET request. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_aae82d5e26558d41e0aca9b1c0243e9c8}{stop}} ()
\begin{DoxyCompactList}\small\item\em In addition to the default stop, Resets the Audio Config state to make sure to block the next time that this provider is used, until the Audio Config is ready again. \end{DoxyCompactList}\item 
\Hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_a959d6c6dacd6e2ce245a348cbdd49887}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_a959d6c6dacd6e2ce245a348cbdd49887} 
void {\bfseries stop\+Blocking\+Until\+Audio\+Config\+Ready} ()
\begin{DoxyCompactList}\small\item\em Unblock the thread waiting on a call to block\+Until\+Ready. \end{DoxyCompactList}\item 
boolean \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_ac2e919c0773498fdbecfd91fbb9b04bc}{is\+Audio\+Config\+Ready}} ()
\begin{DoxyCompactList}\small\item\em Tells if the Audio Config strings can be used without blocking. \end{DoxyCompactList}\item 
\Hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_a630431bb0d1210e8ed62b8e3d1c0b4fd}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_a630431bb0d1210e8ed62b8e3d1c0b4fd} 
void {\bfseries set\+State\+Changed\+Listener} (\mbox{\hyperlink{interfacecom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_1_1StateChangedListener}{State\+Changed\+Listener}} state\+Changed\+Listener)
\begin{DoxyCompactList}\small\item\em Sets the listener to be notified by any state change on this provider. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions inherited from \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1DataProvider}{com.\+tritondigital.\+net.\+streaming.\+proxy.\+dataprovider.\+Data\+Provider}}}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{interfacecom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1Packet}{Packet}} \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1DataProvider_a5502fc0145f47788790d36ee91bc771a}{get\+Packet}} ()
\begin{DoxyCompactList}\small\item\em Returns the next Packet in the stream. \end{DoxyCompactList}\item 
void {\bfseries add\+Free\+Packet\+To\+Pool} (\mbox{\hyperlink{interfacecom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1Packet}{Packet}} packet)
\begin{DoxyCompactList}\small\item\em Puts the given packet back in the free pool packets. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1DataProvider_aa22416b278bb1f2409a06cba131847fd}{clear\+Internal\+Buffer}} ()
\begin{DoxyCompactList}\small\item\em If the provider keeps a buffer of already available packets, clear it immediately. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Public Attributes}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_a83a52ffd6598ed399a121a21eb487a95}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_a83a52ffd6598ed399a121a21eb487a95} 
final String {\bfseries TAG} = "{}Raw\+Packet\+Provider"{}
\end{DoxyCompactItemize}
\doxysubsubsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{interfacecom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1Packet}{Packet}} \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_a7f553fcc09bdd5c3ec4b2e5a4bb2c51f}{create\+Empty\+Packet}} ()
\item 
void \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_ae4a7cbfe3ccff8fef483fae10528c9b6}{notify\+Listener\+Audio\+Config\+Ready}} ()
\begin{DoxyCompactList}\small\item\em Notifies listener that the Audio Config can now be used without blocking. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Protected Member Functions inherited from \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1DataProvider}{com.\+tritondigital.\+net.\+streaming.\+proxy.\+dataprovider.\+Data\+Provider}}}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{interfacecom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1Packet}{Packet}} \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1DataProvider_ac82fea6799dac8348e21b68c5e675661}{get\+Free\+Packet}} ()
\begin{DoxyCompactList}\small\item\em Returns a free packet to use for the creation of a new packet. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1DataProvider_aa29588d8cea9453d3051c3316c55dbe2}{enqueue\+Packet}} (\mbox{\hyperlink{interfacecom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1Packet}{Packet}} packet)
\begin{DoxyCompactList}\small\item\em Enqueue a Packet to be sent to the server. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\Hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_a47aa48073f64c724f7e5e093867a2c0e}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_a47aa48073f64c724f7e5e093867a2c0e} 
Audio\+Config {\bfseries m\+Audio\+Config}
\end{DoxyCompactItemize}
\doxysubsection*{Protected Attributes inherited from \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1DataProvider}{com.\+tritondigital.\+net.\+streaming.\+proxy.\+dataprovider.\+Data\+Provider}}}
\begin{DoxyCompactItemize}
\item 
final Array\+Blocking\+Queue$<$ \mbox{\hyperlink{interfacecom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1Packet}{Packet}} $>$ \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1DataProvider_a4620a04632fe2b469f99d19f51f065f9}{m\+Packets\+Queue}} = new Array\+Blocking\+Queue$<$$>$(QUEUE\+\_\+\+SIZE)
\begin{DoxyCompactList}\small\item\em List of all packets that were received from the client and not sent to the server yet. \end{DoxyCompactList}\item 
final Array\+Blocking\+Queue$<$ \mbox{\hyperlink{interfacecom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1Packet}{Packet}} $>$ {\bfseries m\+Free\+Packets\+Pool} = new Array\+Blocking\+Queue$<$$>$(QUEUE\+\_\+\+SIZE)
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
This class is used to provide the data exactly as it is received. It does not alter the packet structure at all, it simply stores the decoded packets to retransmit them to the server when needed,

This class is typically used when the Proxy connects to a Stream, takes the Meta\+Data but do not modify the audio data at all, because it is already in a format that the client / player supports. 

\doxysubsection{Member Function Documentation}
\Hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_a7f553fcc09bdd5c3ec4b2e5a4bb2c51f}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_a7f553fcc09bdd5c3ec4b2e5a4bb2c51f} 
\index{com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider@{com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider}!createEmptyPacket@{createEmptyPacket}}
\index{createEmptyPacket@{createEmptyPacket}!com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider@{com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider}}
\doxysubsubsection{\texorpdfstring{createEmptyPacket()}{createEmptyPacket()}}
{\footnotesize\ttfamily \mbox{\hyperlink{interfacecom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1Packet}{Packet}} com.\+tritondigital.\+net.\+streaming.\+proxy.\+dataprovider.\+raw.\+Raw\+Packet\+Provider.\+create\+Empty\+Packet (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}



Reimplemented from \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1DataProvider_a16935bef95edb1c63f05199845cc6712}{com.\+tritondigital.\+net.\+streaming.\+proxy.\+dataprovider.\+Data\+Provider}}.

\Hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_ac2e919c0773498fdbecfd91fbb9b04bc}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_ac2e919c0773498fdbecfd91fbb9b04bc} 
\index{com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider@{com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider}!isAudioConfigReady@{isAudioConfigReady}}
\index{isAudioConfigReady@{isAudioConfigReady}!com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider@{com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider}}
\doxysubsubsection{\texorpdfstring{isAudioConfigReady()}{isAudioConfigReady()}}
{\footnotesize\ttfamily boolean com.\+tritondigital.\+net.\+streaming.\+proxy.\+dataprovider.\+raw.\+Raw\+Packet\+Provider.\+is\+Audio\+Config\+Ready (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Tells if the Audio Config strings can be used without blocking. 

It is assumed that once the Audio\+Config has been received, all mandatory information are available. Thus, this method returns false until the Audio\+Config has been received from the protocol container decoder. \Hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_ae4a7cbfe3ccff8fef483fae10528c9b6}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_ae4a7cbfe3ccff8fef483fae10528c9b6} 
\index{com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider@{com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider}!notifyListenerAudioConfigReady@{notifyListenerAudioConfigReady}}
\index{notifyListenerAudioConfigReady@{notifyListenerAudioConfigReady}!com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider@{com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider}}
\doxysubsubsection{\texorpdfstring{notifyListenerAudioConfigReady()}{notifyListenerAudioConfigReady()}}
{\footnotesize\ttfamily void com.\+tritondigital.\+net.\+streaming.\+proxy.\+dataprovider.\+raw.\+Raw\+Packet\+Provider.\+notify\+Listener\+Audio\+Config\+Ready (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}}



Notifies listener that the Audio Config can now be used without blocking. 

Called by the subclasses to indicate that the provider has received enough data and is ready to be used as the source for streaming. \Hypertarget{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_aae82d5e26558d41e0aca9b1c0243e9c8}\label{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1raw_1_1RawPacketProvider_aae82d5e26558d41e0aca9b1c0243e9c8} 
\index{com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider@{com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider}!stop@{stop}}
\index{stop@{stop}!com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider@{com.tritondigital.net.streaming.proxy.dataprovider.raw.RawPacketProvider}}
\doxysubsubsection{\texorpdfstring{stop()}{stop()}}
{\footnotesize\ttfamily void com.\+tritondigital.\+net.\+streaming.\+proxy.\+dataprovider.\+raw.\+Raw\+Packet\+Provider.\+stop (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



In addition to the default stop, Resets the Audio Config state to make sure to block the next time that this provider is used, until the Audio Config is ready again. 



Reimplemented from \mbox{\hyperlink{classcom_1_1tritondigital_1_1net_1_1streaming_1_1proxy_1_1dataprovider_1_1DataProvider_a38bde7abcfd2ce40055bb65f9d3f96c7}{com.\+tritondigital.\+net.\+streaming.\+proxy.\+dataprovider.\+Data\+Provider}}.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
streamingproxy/src/main/java/com/tritondigital/net/streaming/proxy/dataprovider/raw/Raw\+Packet\+Provider.\+java\end{DoxyCompactItemize}
