92 lines
3.5 KiB
Plaintext
92 lines
3.5 KiB
Plaintext
\usetikzlibrary{arrows,matrix}
|
|
% \usepackage{amssymb, amsmath, mathptmx}
|
|
|
|
\begin{tikzpicture}[font=\scriptsize,node distance=1cm,scale=1.2]
|
|
|
|
\tikzstyle{sumBlock}=[draw,circle, inner sep=0cm, minimum size=0.1cm]
|
|
\tikzstyle{processBlock}=[draw, fill=\TikZColorFill, inner sep=0.1cm, minimum size=0.7cm,text centered]
|
|
\tikzstyle{proposedBlock}=[processBlock, fill=gray!30]
|
|
\tikzstyle{blockArrow}=[draw,-latex]
|
|
\tikzstyle{point} = [draw, fill=black, circle,inner sep=1pt]
|
|
|
|
\coordinate (sumPoint) at (0,0);
|
|
\node[sumBlock] (ResidueDiff) at (sumPoint) {$+$};
|
|
|
|
|
|
% \begin{scope}[xshift=-2cm, yshift=3.2cm, scale=1.5]
|
|
% \def\spacing{.2}
|
|
% \node at ((.5+3*\spacing*.5,-.5) (Input) {};
|
|
% \foreach \i in {0,...,3}
|
|
% \draw[thick,fill=white] (\spacing*\i,-.15*\i) rectangle ++(1,1);
|
|
% % \node[text width=.7cm, text centered] at (1.6,1.1) {Video Stream};
|
|
% % \node[text width=.7cm, text centered] at (1.1,.1) {Input video};
|
|
% \end{scope}
|
|
|
|
|
|
\node[left of=ResidueDiff,text width=1cm,node distance=2.5cm] (Input) {\textbf{Input video}};
|
|
\path[blockArrow] (Input) -- (ResidueDiff) node [point, midway] (p0) {};
|
|
|
|
\node[processBlock,right=of ResidueDiff] (Transf) {$T$};
|
|
\node[processBlock,right=of Transf] (Quant) {$Q$};
|
|
\node[processBlock,right=of Quant] (VLC) {CABAC};
|
|
|
|
\node[right=of VLC, text centered,text width=1.5cm] (Output) {\textbf{HEVC bitstream}};
|
|
\path[blockArrow] (VLC) -- (Output);
|
|
|
|
|
|
\path[blockArrow] (ResidueDiff) -- (Transf);
|
|
\path[blockArrow] (Transf) -- (Quant);
|
|
\path[blockArrow] (Quant) -- (VLC) node [point,midway] (QuantFrame) {};
|
|
|
|
\node[processBlock,below=.8 of QuantFrame] (InvQuant) {$Q^{-1}$};
|
|
\node[processBlock,right=0.7 of InvQuant] (InvTransf) {$T^{-1}$};
|
|
\node[sumBlock,below=.5 of InvTransf] (ReconResidue) {$+$};
|
|
\node[processBlock,text width=1.9cm, below=.8 of ReconResidue] (Filters) {Deblocking \& SAO filters};
|
|
|
|
\path[blockArrow] (QuantFrame) -- (InvQuant);
|
|
\path[blockArrow] (InvQuant) -- (InvTransf);
|
|
\path[blockArrow] (InvTransf) -- (ReconResidue);
|
|
\path[blockArrow] (ReconResidue) -- (Filters) node[point,midway] (p1) {};
|
|
|
|
\node[left=.4 of InvQuant, coordinate,yshift=0.5cm] (x1) {};
|
|
\path[blockArrow,-] (x1 -| ResidueDiff) node[point] () {} -- (x1);
|
|
\path[blockArrow] (x1) |- (ReconResidue);
|
|
|
|
\node [processBlock,text width=1.5cm] (Intra) at (2.2,-1.8) {Intra prediction};
|
|
\node [processBlock,text width=1.5cm,below=1.2 of Intra] (Inter) {Inter prediction};
|
|
|
|
\path[blockArrow] (p1) -| (Intra);
|
|
|
|
\node [point,left=.8 of Intra] (z1) {};
|
|
\node [point,left=.8 of Inter] (z2) {};
|
|
|
|
\path[blockArrow,-] (Intra) -- (z1);
|
|
\path[blockArrow,-] (Inter) -- (z2);
|
|
|
|
\node [coordinate,left of=z1,below of=z1,node distance=0.15cm] (w1) {};
|
|
\node [coordinate,left of=z2, above of=z2, node distance=0.15cm] (w2) {};
|
|
|
|
\path (z1) -- (z2) node [coordinate, midway] (w) {};
|
|
\path (w) -- (w -| sumPoint) node [point] (z) {};
|
|
|
|
\draw[-latex,densely dashed] (w1) to [bend left=60] (w2);
|
|
\draw [thick,blockArrow] (z1)+(0.1,-0.1) -- (z);
|
|
|
|
\path[blockArrow] (z) -- node[pos=0.96,right] {-} (ResidueDiff);
|
|
|
|
\node[processBlock,below=of Filters,text width=2cm] (RefBuffer) {Decoded Picture Buffer};
|
|
|
|
\node[processBlock,text width=1.5cm] at(Inter |- RefBuffer) (MotionSearch) {Motion Estimation};
|
|
|
|
\path[blockArrow] (Filters) -- (RefBuffer) node[point,pos=0.4] (p2) {};
|
|
\path[blockArrow] (RefBuffer) -- (MotionSearch);
|
|
\path[blockArrow] (MotionSearch) -- (Inter);
|
|
\path[blockArrow] (p0) |- (MotionSearch);
|
|
|
|
|
|
\node[right of=p2, text centered,text width=1.5cm, node distance=2.3cm] (Output) {\textbf{Video output}};
|
|
\path[blockArrow] (p2) -- (Output);
|
|
|
|
|
|
\end{tikzpicture}
|