98 lines
4.3 KiB
Plaintext
98 lines
4.3 KiB
Plaintext
|
|
\usetikzlibrary{arrows,matrix}
|
|
\usetikzlibrary{fit}
|
|
\usetikzlibrary{intersections}
|
|
|
|
\pgfdeclarelayer{background}
|
|
\pgfdeclarelayer{foreground}
|
|
\pgfsetlayers{background,main,foreground}
|
|
|
|
|
|
\def\scale{1}
|
|
|
|
|
|
\begin{tikzpicture}[
|
|
font=\scriptsize,
|
|
auto,
|
|
node distance=1cm,
|
|
scale=\scale,
|
|
every node/.style={scale=\scale},
|
|
template/.style={thick, text centered},
|
|
block/.style={template, rectangle, text width=1.3cm, ,inner sep=3, minimum height=.6cm},
|
|
arrow/.style={template, draw, -latex},
|
|
point/.style={template, draw, fill=black, circle,inner sep=0, minimum size=3}
|
|
]
|
|
|
|
% Define extra block styles
|
|
\tikzstyle{sumBlock} = [template, draw, circle, inner sep=0cm, minimum size=0.3cm]
|
|
\tikzstyle{refBlockNoDraw} = [block, fill=TikZColorFill]
|
|
\tikzstyle{refBlock} = [refBlockNoDraw, draw]
|
|
\tikzstyle{propBlockNoDraw} = [block, fill=TikZColorFillProp]
|
|
\tikzstyle{propBlock} = [propBlockNoDraw,draw]
|
|
|
|
|
|
\tikzstyle{MainArrow} = [arrow]
|
|
\tikzstyle{SignallArrow} = [arrow, dashed]
|
|
|
|
|
|
%% Encoder/Decoder
|
|
\node [refBlock, text width=1.6cm, minimum height=1cm] (Encoder) at (0,0) {Reference \\ Encoder};
|
|
|
|
%% RPS
|
|
\node [propBlockNoDraw, text width=2.6cm, minimum height=1cm, right=.3 of Encoder, yshift=1.3cm] (EXP) {Reference Selection \\ Transcoding};
|
|
\node [refBlockNoDraw, text width=2.6cm, above=-0.03 of EXP.north west, anchor=south west] (RPSDec) {Decoder};
|
|
\path[MainArrow,-] (EXP.south west) |- (RPSDec.north east) |- (EXP.south west);
|
|
\path[MainArrow,-,densely dotted] (EXP.north west) -- (EXP.north east); % Draw inside lines
|
|
\path[MainArrow] (Encoder -| EXP) node[point] {} -- (EXP);
|
|
|
|
|
|
|
|
%% NALU Loss and EC optimisation
|
|
\node [propBlock, above=.8 of RPSDec, text width=2.6cm, minimum height=2cm] (ConcOpt) {Loss simulation \\ \& \\ Saliency-weighted EC Optimisation};
|
|
\path[MainArrow] (RPSDec) -- (ConcOpt);
|
|
|
|
\node [propBlock, right=of ConcOpt.north east, anchor=north west, text width=1.6cm] (Scalable0) {EL Encoder \\(20\%)};
|
|
\node [propBlock, right=of ConcOpt.south east, anchor=south west, text width=1.6cm] (Scalable1) {EL Encoder \\(10\%)};
|
|
|
|
\path[MainArrow] (ConcOpt.east |- Scalable0) -- (Scalable0);
|
|
\path[MainArrow] (ConcOpt.east |- Scalable1) -- (Scalable1);
|
|
|
|
|
|
\node [propBlock, minimum height=.8cm, text width=2cm, right=2 of Encoder, yshift=-1cm] (StreamParser) {Stream Parser};
|
|
\path[MainArrow] (Encoder -| StreamParser) node[point] {} -- (StreamParser);
|
|
|
|
\node [propBlock, minimum height=.8cm, text width=2cm, below=.3 of StreamParser] (VideoParser) {Video analyser};
|
|
|
|
\node[text width=.7cm, text centered] (Input) at (-2,5) {Input video};
|
|
|
|
|
|
\path[MainArrow] (Input |- Encoder) node[point] {} |- (VideoParser);
|
|
\path[MainArrow] (Input) |- (Encoder);
|
|
\path[MainArrow] (Input |- EXP) node[point] {} |- (EXP);
|
|
\path[MainArrow] (Input |- ConcOpt) node[point] {} -- (ConcOpt);
|
|
|
|
|
|
% Mux and output
|
|
\path (Encoder.south) -- (Encoder |- ConcOpt.north) node[midway] (middleRef) {}; % Find middle ref
|
|
\node [propBlock, right=9 of middleRef, text width=5.5cm, rotate=-90, anchor=center, minimum height=1.1cm] (Mux) {Optimal stream selection};
|
|
\node [right of=Mux, node distance=2.8cm, coordinate] (Out) {};
|
|
|
|
\tikzstyle{OutputLabels} = [pos=1, anchor=south east, text width=2cm, align=right]
|
|
|
|
\path[MainArrow] (Encoder) -- (Mux.south |- Encoder) node[OutputLabels] {\SMEC};
|
|
\path[MainArrow] (EXP) -- (Mux.south |- EXP) node[OutputLabels] {\SMEXP};
|
|
\path[MainArrow] (Scalable1) -- (Mux.south |- Scalable1) node[OutputLabels] {\SMEXPELTEN};
|
|
\path[MainArrow] (Scalable0) -- (Mux.south |- Scalable0) node[OutputLabels] {\SMEXPELTWEN};
|
|
\path[MainArrow] (Mux) -- (Out) node[above, midway, text width=2cm, text centered] {Optimal \\ Robust Steam};
|
|
|
|
\node [text centered, text width=1.5cm, minimum height=1cm, below=.3 of Mux.east, xshift=1.9cm] (Channel) {Network Conditions};
|
|
|
|
|
|
\path[SignallArrow] (StreamParser) -| (Mux.-6) node (b1) [pos=.3, anchor=center] {\footnotesize /} node[right=-.2 of b1, yshift=-6, inner sep=0] {\footnotesize 3};
|
|
\path[SignallArrow] (VideoParser) -| (Mux.0) node (b2) at( b1 |- VideoParser) [anchor=center] {\footnotesize /} node[right=-.2 of b2, yshift=-6, inner sep=0] {\footnotesize 2};
|
|
\path[SignallArrow] (Channel) -| (Mux.6);
|
|
|
|
\end{tikzpicture}
|
|
|
|
|