Files
doc_phd_thesis/021_VideoCoding/Figures/HEVC/BitstreamSyntax/CodingUnits.tikz
T
2018-07-06 17:56:46 +01:00

130 lines
4.0 KiB
Plaintext

\usetikzlibrary{calc,trees,positioning,arrows,chains,shapes.geometric,%
decorations.pathreplacing,decorations.pathmorphing,shapes,%
matrix,shapes.symbols,plotmarks,decorations.markings,shadows,backgrounds}
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfdeclarelayer{L0}
\pgfdeclarelayer{L1}
\pgfdeclarelayer{L2}
\pgfdeclarelayer{L3}
\pgfsetlayers{background,L0,L1,L2,L3,main,foreground}
\newcommand{\scale}{1}
\begin{tikzpicture}[yscale=0.5, scale=\scale,every node/.style={scale=\scale},on grid ]
\definecolor{LCUFill}{rgb}{0,0.5,1}
\definecolor{DrawColor}{rgb}{0,0,0.5}
\definecolor{LCUFill}{rgb}{1,1,1}
\definecolor{DrawColor}{rgb}{0,0,0}
\tikzstyle{TextStyle}=[scale=.5, text centered]
\tikzstyle{Square}=[draw=DrawColor,thick]
\tikzstyle{Connection}=[Square,dashed]
\tikzstyle{Byte}=[draw=DrawColor,thick, dashed]
\begin{scope}[xshift=0, yshift=-5cm]
\begin{scope}[xshift=0, yshift=0cm]
\node[TextStyle] at (1,.5) {Slice header};
\draw[Square] (0,0) rectangle ++(2,1cm);
\draw[Square] (2,0) rectangle ++(7,1cm);
\node[TextStyle] at (2+.25,0.5) {...};
\foreach \x in {0,...,2}
{
\draw[Square,thin] (2.5+2*\x,0) rectangle ++(2,1cm);
\node[TextStyle] at (2.5+2*\x+1,.5) {CTU$_{n+\x}$};
}
\node[TextStyle] at (2.5+2*3+.25,.1+0.8/2) {...};
\coordinate (EdgeL) at (2+.5,0);
\coordinate (EdgeR) at (2+.5+2,0);
\end{scope}
\begin{scope}[xshift=.25*1cm, yshift=-2.5*1cm, scale=1]
\draw[Connection] (EdgeL) -- (0,1);
\draw[Connection] (EdgeR) -- (8,1);
\draw[Square] (0,0) rectangle ++(8,1cm);
\draw[Square] (0,0) rectangle ++(2,1cm);
% \draw[Square] (1.5,0) rectangle ++(2.5,1cm);
% \node[TextStyle] at (.75,.5) {CTU Position};
\node[TextStyle] at (2/2,.5) {SAO (optional)};
\node[TextStyle] at (6/2+2,.5) {Coding quatree (CT)};
\coordinate (EdgeL) at (2,0);
\coordinate (EdgeR) at (8,0);
\end{scope}
\begin{scope}[xshift=.25*2cm, yshift=-2.5*2cm, scale=1]
\coordinate (BraceT) at (.35,1.2);
\draw[Connection] (EdgeL) -- (0,1);
\draw[Connection] (EdgeR) -- (8,1);
\draw[Square] (0,0) rectangle ++(8,1cm);
\draw[Square] (0,0) rectangle ++(1.5,1cm);
\node[TextStyle,scale=.95] at (1.5/2,.5) {split\_cu\_flag==1};
\draw[Square] (1.5,0) rectangle ++(8/4-1.5/4,1cm);
\draw[Square] (1.5+8/4-1.5/4,0) rectangle ++(8/4-1.5/4,1cm);
\draw[Square] (1.5+2*8/4-2*1.5/4,0) rectangle ++(8/4-1.5/4,1cm);
\node[TextStyle] at (1.5+8/8-1.5/8,.5) {Coding quatree};
\node[TextStyle] at (1.5+8/4-1.5/4+8/8-1.5/8,.5) {Coding quatree};
\node[TextStyle] at (1.5+2*8/4-2*1.5/4+8/8-1.5/8,.5) {Coding quatree};
\node[TextStyle] at (1.5+3*8/4-3*1.5/4+8/8-1.5/8,.5) {Coding quatree};
\end{scope}
\begin{scope}[xshift=.25*2cm, yshift=-2.5*2.7cm, scale=1]
\coordinate (BraceB) at (.35,-.2);
\draw[Square] (0,0) rectangle ++(8,1cm);
\draw[Square] (0,0) rectangle ++(1.5,1cm);
\node[TextStyle,scale=.95] at (1.5/2,.5) {split\_cu\_flag==0};
\node[TextStyle] at (1.5+8/2-1.5/2,.5) {Coding unit};
\coordinate (EdgeL) at (1.5,0);
\coordinate (EdgeR) at (8,0);
\end{scope}
\draw [thick, decoration={brace, mirror, raise=0.5cm }, decorate] (BraceT) -- (BraceB) ;
\end{scope}
\begin{scope}[xshift=.8cm, yshift=-14cm]
\begin{scope}[xshift=.5*0cm, yshift=-2.5*0, scale=1]
\draw[Connection] (EdgeL) -- (0,1);
\draw[Connection] (EdgeR) -- (8,1);
\coordinate (BraceB) at (.35,-.2);
\draw[Square] (0,0) rectangle ++(8,1cm);
\node[TextStyle] at (.25,.5) {...};
\draw[Square] (0.5,0) rectangle ++(1.8,1cm);
\node[TextStyle] at (1.8/2+0.5,.5) {Prediction unit$_{1}$};
\node[TextStyle] at (.5+1.8+.3,.5) {...};
\draw[Square] (0.5+1.8+0.6,0) rectangle ++(1.8,1cm);
\node[TextStyle] at (1.8/2+0.5+1.8+0.6,.5) {Prediction unit$_{n}$};
\node[TextStyle] at (.5+1.8*2+.3*3,.5) {...};
\draw[Square] (0.5+1.8*2+0.6*2,0) rectangle ++(8-0.5-1.8*2-0.6*2,1cm);
\node[TextStyle] at (1.8/2+0.5+1.8+0.6+2.8,.5) {Transform tree};
\end{scope}
\end{scope}
\end{tikzpicture}