Version 0.1

This commit is contained in:
2018-07-06 17:56:46 +01:00
commit deffaca3fc
243 changed files with 18198 additions and 0 deletions
@@ -0,0 +1,95 @@
\usetikzlibrary{arrows,matrix}
\usetikzlibrary{fit}
\usetikzlibrary{intersections}
\usetikzlibrary{intersections}
% \usetkzobj{all}
\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{propBlock} = [block, draw, fill=blue!15]
\tikzstyle{refBlock} = [block, draw, fill=gray!10]
\tikzstyle{propBlockNoDraw} = [block, fill=\TikZColorFillProp]
\tikzstyle{refBlockNoDraw} = [block, fill=\TikZColorFill]
\newcommand{\DrawEdgesTwoNodes}[2]{\path[arrow,-] (#1.south west) |- (#2.north east) |- (#1.south west);}
%% Encoder/Decoder
\node [refBlockNoDraw, text width=1.1cm, minimum height=.6cm] (Encoder) at (0,0) {Encoder};
\node [refBlockNoDraw, text width=0.6cm, minimum height=.6cm, right=-0.03 of Encoder.south east, anchor=south west, text centered] (EncoderNAL) {NAL};
\node [refBlockNoDraw, text width=1.1cm, minimum height=.6cm, above=-0.03 of Encoder.north west, anchor=south west] (Decoder) {Decoder};
\path[arrow,-] (Encoder.south west) |- (Decoder.north east) |- (EncoderNAL.north east) |- (Encoder.south west);
\path[arrow,-,densely dotted] (EncoderNAL.south west -| Decoder.south east) -- (Decoder.south east); % Draw inside lines
\path[arrow,-,densely dotted] (Decoder.south west |- EncoderNAL.north west) -- (EncoderNAL.north west); % Draw inside lines
%% NALU Loss and EC optimisation
\node [propBlock, above=2.2 of Encoder.west, anchor=south west, text width=3.8cm, minimum height=2.4cm] (ConcOpt) {Saliency-weighted EC Mode Decision};
\node [propBlock, below=.8 of ConcOpt.south east, anchor=north east, text width=1.7cm, minimum height=.9cm] (LossSim) {NALU Loss Simulation};
\path[arrow] (EncoderNAL -| LossSim.south) -- (LossSim) node[point] at (EncoderNAL -| LossSim) {};;
\path[arrow] (Decoder) -- (ConcOpt.south -| Decoder) node[pos=.6,coordinate] (p2) {} node[point] at (p2) {};
\path[arrow] (LossSim) -- (ConcOpt.south -| LossSim);
%% EL encoder
\node [propBlockNoDraw, right=4cm of ConcOpt.south, anchor=south west, text width=1.4cm, minimum height=1cm] (Scalable) {EL\\Encoder};
\node [refBlockNoDraw, text width=.2cm, right=-.025 of Scalable.south east, anchor=south west, text centered, minimum height=1cm] (ScalableNAL) {N\\[-2pt]A\\[-2pt]L};
\DrawEdgesTwoNodes{Scalable}{ScalableNAL}; % Draw border
\path[arrow,-,densely dotted] (ScalableNAL.south west) -- (ScalableNAL.north west); % Draw inside lines
%% Diff
\node [sumBlock, left=.75 of Scalable] (ConcDiff) {$-$};
\path[arrow] (ConcDiff) -- (Scalable) node[above, pos=0, xshift=.2cm] {$e^c$};
\path[arrow] (ConcOpt.east |- ConcDiff) -- (ConcDiff) node[above, pos=1, xshift=-.3cm] {$\tilde f$};
\path[arrow,-, shorten >=3] (p2) -- (p2 -| LossSim.north);
\path[arrow, shorten <=3] (p2 -| LossSim.north) -| (ConcDiff) node[right, pos=1, yshift=-.3cm] {$\hat f$};
%% EC mode coding
\node [propBlockNoDraw, anchor=north west, text width=1.4cm, minimum height=1cm] at (ConcOpt.north -| Scalable.west) (Signalling) {EC Mode Coding};
\node [refBlockNoDraw, text width=.2cm, right=-.025 of Signalling.south east, anchor=south west, text centered, minimum height=1cm] (SignallingNAL) {N\\[-2pt]A\\[-2pt]L};
\DrawEdgesTwoNodes{Signalling}{SignallingNAL}; % Draw border
\path[arrow,-,densely dotted] (SignallingNAL.south west) -- (SignallingNAL.north west); % Draw inside lines
\path[arrow] (ConcOpt.east |- Signalling) -- (Signalling) node[above, pos=.45, yshift=-1] {\scriptsize M1...M4};
%% Input
\node[text width=.5cm, text centered] at (-1.7,4.5) (Input) {Input video};
\path[arrow] (Input) |- (Encoder);
\path[arrow] (Input |- ConcOpt) -- (ConcOpt) node[point] at (Input |- ConcOpt) {};
%% TS Mux and output
\path (Encoder.south) -- (Encoder |- Signalling.north) node[midway] (middleRef) {}; % Find middle ref
\node [refBlock, right=8.5 of middleRef, text width=.7cm, minimum height=5.5cm] (NAL) {TS Mux};
\node [right of=NAL, node distance=1.5cm, coordinate] (Out) {};
\path[arrow] (EncoderNAL) -- (NAL.west |- EncoderNAL) node[above,pos=1, xshift=-.4cm] {VCL$_0$};
\path[arrow] (ScalableNAL) -- (NAL.west |- Scalable) node[above,pos=1, xshift=-.4cm] {VCL$_1$};
\path[arrow] (SignallingNAL) -- (NAL.west |- Signalling) node[above,pos=1, xshift=-.4cm] {SEI};
\path[arrow] (NAL) -- (Out) node[above,pos=1, xshift=-.2cm, text width=1.3cm] {Transport Stream};
\end{tikzpicture}
@@ -0,0 +1,97 @@
\usetikzlibrary{calc,trees,positioning,arrows,chains,shapes.geometric,%
decorations.pathreplacing,decorations.pathmorphing,shapes,%
matrix,shapes.symbols,plotmarks,decorations.markings,shadows,backgrounds}
\def\MVE{\mbox{MVE}}
\def\MVBASE{\mbox{BASE\_MC}}
\def\INTERVIEW{\mbox{INTERVIEW\_COPY}}
\def\COMBMC{\mbox{COMB\_MC}}
\def\COMBMCDISP{\mbox{COMB\_MC\_Disp}}
\newcommand{\scale}{0.4}
% Define block styles
% \tikzstyle{simple_block} = [rectangle, text width=1.4cm, text centered, minimum height=1cm,node distance = 1.7cm]
% \tikzstyle{block} = [simple_block,draw,fill=gray!10]
% \tikzstyle{node_circle} = [circle, draw, text centered]
%
% \tikzstyle{decision} = [diamond, draw, text centered, node distance=3cm]
% \tikzstyle{line} = [draw, -latex', thick]
\def\scale{1}
\begin{tikzpicture}[
font=\footnotesize,
auto,
every node/.style={scale=\scale},
template/.style={thick, text centered},
block/.style={template, draw,fill=\TikZColorFill, rectangle, text width=2.2cm, text centered, minimum height=.9cm, node distance=1cm},
labels/.style={template, scale=1.2},
line/.style={template, draw, -latex', thick},
point/.style={template, draw, fill=black, circle,inner sep=0, minimum size=3}
]
\tikzset{
between/.style args={#1 and #2}{
at = ($(#1)!0.5!(#2)$)
}
}
\node [block] (BMVE) {Block-based \\ MVE};
\node [block, right=of BMVE] (PMVE) {Pixel-based \\ MVE};
\node [block, right=of PMVE] (MVE) {MVE};
\node [block, right=of MVE] (MC) {MC};
\node[coordinate, yshift=1cm, between=BMVE and PMVE] (p1) {};
\node[coordinate, yshift=1cm, between=MVE and MC] (p2) {};
\node [block, above=.6cm of p1, text width=3.7cm] (MotionEst) {Optical flow estimation};
\path [line] (MotionEst) |- (BMVE |- p1) -- (BMVE);
\path [line] (MotionEst) |- (PMVE |- p1) -- (PMVE);
\node [block, text width=2cm] at (MotionEst -| p2) (MotionExtraction) {MV parser};
\path [line] (MotionExtraction) |- (MVE |- p2) -- (MVE);
\path [line] (MotionExtraction) |- (MC |- p2) -- (MC);
\node[above=0cm of p2, xshift=.3cm] {$v_{-1}$};
\node[coordinate, between=PMVE and MVE] (p3) {};
\node[labels,above=3.4 of p3] (FTM1) {$f_{-1}$};
\node[labels] at (FTM1 -| MotionEst.140) (FTM2) {$f_{-2}$};
\path [line] (FTM2) -- (MotionEst.140);
\path [line] (FTM1) -- ($(FTM1 |- MotionExtraction)+(0,1)$) -| (MotionEst.40);
\path [line] (FTM1) -- ($(FTM1 |- MotionExtraction)+(0,1)$) -| (MotionExtraction.north);
\newcommand{\MDistance}{.6cm}
\node [below=\MDistance of BMVE] (M1) {M1};
\path [line] (BMVE) -- (M1);
\node [below=\MDistance of PMVE] (M2) {M2};
\path [line] (PMVE) -- (M2);
\node [below=\MDistance of MVE] (M3) {M3};
\path [line] (MVE) -- (M3);
\node [below=\MDistance of MC] (M4) {M4};
\path [line] (MC) -- (M4);
% \path (BMVE.west) -- (MC.east) node[pos=0.5] (p2) {};
% \node [block, below of=p2, text width=7.5cm,node distance=1.8cm] (Select) {Concealment method selection and signalling};
% \path[line] (BMVE.south) -- (Select.north -| BMVE);
% \path[line] (PMVE.south) -- (Select.north -| PMVE);
% \path[line] (MVE.south) -- (Select.north -| MVE);
% \path[line] (MC.south) -- (Select.north -| MC);
\end{tikzpicture}
@@ -0,0 +1,44 @@
\newcommand{\scale}{1}
\begin{tikzpicture}[scale=\scale, auto]
% Place nodes
% Define block styles
\tikzstyle{block} = [rectangle, fill=white, text centered, minimum height=0.6cm, inner sep=1,font=\scriptsize]
\tikzstyle{blockDepth} = [draw,block,minimum width=0.75cm]
\tikzstyle{blockEC} = [draw,block,minimum width=0.5cm]
\tikzstyle{blockPoints} = [block, minimum width=0.3cm]
\tikzstyle{text_labels} = [anchor=center,font=\footnotesize,minimum height=0.1cm]
\tikzstyle{neighbour} = [right=-.01 of Node,]
\node [blockPoints] (Node) at (0,0) {...};
\node [neighbour, blockDepth] (Node) {\textit{split}=1};
\node [neighbour, blockDepth] (Node) {\textit{split}=0};
\node [neighbour, blockEC] (Node) {\textit{ecm}};
\node [neighbour, blockDepth] (Node) {\textit{split}=0};
\node [neighbour, blockEC] (Node) {\textit{ecm}};
\node [neighbour, blockPoints] (Node) {...};
\node [neighbour, blockDepth] (Node) {\textit{split}=1};
\node [neighbour, blockPoints] (Node) {...};
\node [neighbour, blockDepth] (Node) {\textit{split}=1};
\node [neighbour, blockEC] (Node) {\textit{ecm}};
\node [neighbour, blockEC] (Node) {\textit{ecm}};
\node [neighbour, blockEC] (Node) {\textit{ecm}};
\node [neighbour, blockEC] (Node) {\textit{ecm}};
\node [neighbour, blockPoints] (Node) {...};
\draw[text_labels, anchor=center,latex-latex] (.15,-.4) -- ++(5*.75cm+6*.5cm+2*.3cm+.1cm,0) node [pos=0.5,below,yshift=0cm] (VLC) {CTU};
\node[draw,dashed, minimum height=1.3cm, minimum width=5*.75cm+6*.5cm+4*.3cm+2*.1cm, anchor=south west] (DashedBox) at (-.2cm,-.9cm) {};
\node[text_labels, text centered, above=0cm of DashedBox] {Supplemental Enhancement Information (SEI)};
\begin{scope}[xshift=-.15cm,yshift=-1.2cm]
\node[text_labels, anchor=west, text width=7cm, node distance=0.6cm] at (0,0) (D) {\textit{split}: flag to mark quadtree splitting};
\node[text_labels, anchor=west, text width=7cm, below of=D,node distance=0.4cm] (EC) {\textit{ecm}: error concealment method selected for each ECU};
\end{scope}
\end{tikzpicture}
Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 KiB

@@ -0,0 +1,207 @@
\usetikzlibrary{calc}
\usetikzlibrary{snakes}
\usetikzlibrary{arrows}
\usetikzlibrary{positioning}
\usetikzlibrary{decorations}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{arrows.meta}
\newcommand{\scale}{0.65}
% \newcommand{\TikZyslant}{-0.2}
% \newcommand{\TikZyfshift}{0.05cm}
\newcommand{\yframeshift}{0.05cm}
\newcommand{\xframeshift}{7cm}
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfdeclarelayer{L0}
\pgfdeclarelayer{L1}
\pgfdeclarelayer{L2}
\pgfdeclarelayer{L3}
\pgfsetlayers{background,L0,L1,L2,L3,main,foreground}
\begin{tikzpicture}[scale=\scale,every node/.style={minimum size=1cm},on grid ]
\tikzstyle{pel}=[rectangle,draw=black, thick]
\tikzstyle{refblock}=[rectangle,draw=darkgray, thick]
\tikzstyle{projectedblock}=[rectangle,draw=black, thick,dashed]
\tikzstyle{refmv_linestyle}=[-, thick]
\tikzstyle{refmv}=[black!60!green, refmv_linestyle,decoration={markings,mark=at position 1 with {\arrow[ultra thick,scale=1]{latex}}},postaction={decorate}]
\tikzstyle{extrapolated_mv}=[refmv_linestyle,dashed, blue, decoration={markings,mark=at position 1 with {\arrow[ultra thick,scale=1]{latex}}},postaction={decorate}]
\tikzstyle{arrow}=[draw, ->,>=stealth',thick,,decoration={markings,mark=at position 1 with {\arrow[ultra thick,scale=0.5]{stealth}}},postaction={decorate}]
\tikzstyle{every node}=[font=\large]
\tikzstyle{frame_contour}=[ultra thick,fill=white,draw=black,fill opacity=.7]
\newcommand{\DrawFrame}[2]
{
\fill[fill=#1,fill opacity=.6] (0,0) rectangle (#2+1,#2+1); % Opacity
\draw[thick] (0,0) rectangle (#2+1,#2+1);
\foreach \x in {1,...,#2}
\draw[dotted] (\x,0) -- ++(0,#2+1);
\foreach \y in {1,...,#2}
\draw[dotted] (0,\y) -- ++(#2+1,0);
}
% Frame t
\begin{pgfonlayer}{L1}
\begin{scope}[ yshift=3*\yframeshift, xshift=3*\xframeshift,
style={yslant=\TikZyslant,xscale=\TikZxscale}]
%Draw a frame
\draw[very thick,fill=white,draw=black,fill opacity=.7,dashed](0,0) rectangle (5,5);
\foreach \x in {0,2,4}
\foreach \y in {0,2,4}
\draw[black, dotted] (\x,\y) +(0,0) rectangle ++(1,1);
\foreach \x in {1,3}
\foreach \y in {1,3}
\draw[black, dotted] (\x,\y) +(0,0) rectangle ++(1,1);
\coordinate (TB1) at (1+0.7,4+0.8);
\draw[projectedblock] (TB1) rectangle ++(1,-1);
\coordinate (TB2) at (3,4);
\draw[projectedblock] (TB2) rectangle ++(1,-1);
\coordinate (TB3) at (3+0.2/2,2-0.8/2);
\draw[projectedblock] (TB3) rectangle ++(1,-1);
\coordinate (TB4) at (3,2);
\draw[projectedblock] (TB4) rectangle ++(1,-1);
\end{scope}
\end{pgfonlayer}
% % Frame t+1
% \begin{pgfonlayer}{L0}
% \begin{scope}[ yshift=4*\yframeshift, xshift=4*\xframeshift,
% style={yslant=\TikZyslant,xscale=\TikZxscale}]
%
%
% \coordinate (TP1B1) at (1,4);
% \coordinate (TP1B2) at (3,4);
% \coordinate (TP1B3) at (1,2);
% \coordinate (TP1B4) at (3,2);
%
% %Draw a frame
% \DrawFrame{white}{4}
%
% % \draw[black,very thick] (TP1B2) +(0,0) rectangle ++(1,-1);
% \draw[black,very thick] (TP1B4) +(0,0) rectangle ++(1,-1);
%
% \end{scope}
% \end{pgfonlayer}
% Frame t-1
\begin{pgfonlayer}{L1}
\begin{scope}[ yshift=2*\TikZyfshift, xshift=2*\xframeshift,
style={yslant=\TikZyslant,xscale=\TikZxscale}]
\coordinate (T0B1) at (1,4);
\coordinate (T0B2) at (3,4);
\coordinate (T0B3) at (1,2);
\coordinate (T0B4) at (3,2);
\coordinate (TM1AuxB3) at (1,2);
\coordinate (Bottom_V1) at (2.5,0);
\draw[extrapolated_mv] (TB1) to (T0B1);
% Draw Motion vectors
\coordinate (TM1B0) at (3+0.2,2-0.8);
\coordinate (TM1B0C) at (3+0.2/2,2-0.8/2);
% \draw[refmv] (TP1B4) to (TM1B0);
\draw[refblock] (TM1B0) rectangle ++(1,-1);
\draw[extrapolated_mv] (TB3) to (TM1B0);
\draw[refblock] (TM1B0C) rectangle ++(1,-1);
\draw[extrapolated_mv] (TB4) to (TM1B0C);
\coordinate (TM1B1) at (3-0.6,4-0.5);
\draw[extrapolated_mv] (TB2) to (TM1B1);
\DrawFrame{white}{4}
\draw[black,very thick] (T0B1) +(0,0) rectangle ++(1,-1);
\draw[black,very thick] (T0B2) +(0,0) rectangle ++(1,-1);
\end{scope}
\end{pgfonlayer}
% Frame t-2
\begin{pgfonlayer}{L2}
\begin{scope}[ yshift=1*\TikZyfshift, xshift=1*\xframeshift,
style={yslant=\TikZyslant,xscale=\TikZxscale}]
%Define Points
\coordinate (TM2B1) at (1-0.7,4-0.8);
\coordinate (TM2B2) at (3-0.6,4-0.5);
% Draw Motion vectors
\draw[refmv] (T0B1) to (TM2B1);
\draw[refmv] (T0B2) to (TM2B2);
\DrawFrame{white}{4}
\coordinate (TM2B4_aux) at (3+0.3/2,2-0.4/2);
% Draw block
\draw[refblock] (TM2B1) rectangle ++(1,-1);
\draw[refblock] (TM2B2) rectangle ++(1,-1);
\end{scope}
\end{pgfonlayer}
%MVs name
\node[scale=0.5] at (3*\xframeshift-1.0cm,4.9) {(2)};
\node[scale=0.5] at (3*\xframeshift-1.0cm,3) {(1)};
% \node[scale=0.5] at (3*\xframeshift-2.0cm,2) {(2)};
% \node[scale=0.5] at (3*\xframeshift-1.0cm,0.3) {(4)};
\tikzstyle{frame_label}=[anchor=center,scale=0.8]
% \node[frame_label,scale=0.95] (LostFrameLabel) at (4*\xframeshift-0.9cm,-1.8) {Lost frame };
% \path[draw,-latex,thick] (LostFrameLabel) edge[out=90, in=0] (3*\xframeshift+5cm*\TikZxscale,0cm);
% Frame number
\begin{scope}[xshift=2.5cm*\TikZxscale,yshift=5.5cm]
% \node[frame_label] at (0*\xframeshift,\yframeshift*3) { $f_{-3}, v_{-3}$ };
\node[frame_label] at (1*\xframeshift,\yframeshift*3) { $f_{-2}, v_{-2}$ };
\node[frame_label] at (2*\xframeshift,\yframeshift*3) { $f_{-1,} v_{-1}$ };
\node[frame_label] at (3*\xframeshift,\yframeshift*3) { $f_{0}, v_{0}$ };
% \node[frame_label] at (4*\xframeshift,\yframeshift*4) { $f_{1}, v_{1}$ };
\end{scope}
% Frame number
\begin{scope}[xshift=2.5cm*\TikZxscale,yshift=-1.2cm]
% \node[frame_label] at (0*\xframeshift,\yframeshift*3) { $t_{-3}$ };
\node[frame_label] at (1*\xframeshift,\yframeshift*3) { $t_{-2}$ };
\node[frame_label] at (2*\xframeshift,\yframeshift*3) { $t_{-1}$ };
\node[frame_label] at (3*\xframeshift,\yframeshift*3) { $t_{0}$ };
% \node[frame_label] at (4*\xframeshift,\yframeshift*4) { $t_{1}$ };
\end{scope}
% \begin{scope}[yshift=-3.2cm,xshift=-0.5cm]
% \begin{scope}
% \draw[refmv] (0,0) to (1.5,0);
% \fill (2cm,0) node[frame_label,scale=0.95,right]{Original Motion Vector};
% \end{scope}
% \begin{scope}[xshift=14cm]
% \draw[extrapolated_mv] (0,0) to (1.5,0);
% \fill (2cm,0) node[frame_label,scale=0.95,right]{Extrapolated Motion Vector};
% \end{scope}
% \end{scope}
\end{tikzpicture}