\usetikzlibrary{matrix} \usetikzlibrary{decorations.text} \usetikzlibrary{arrows.meta} \usetikzlibrary{shapes.arrows} \makeatletter \pgfdeclareradialshading[tikz@ball]{cloud}{\pgfpoint{-0.275cm}{0.4cm}}{% color(0cm)=(tikz@ball!75!white); color(0.1cm)=(tikz@ball!85!white); color(0.2cm)=(tikz@ball!95!white); color(0.7cm)=(tikz@ball!89!black); color(1cm)=(tikz@ball!75!black) } \tikzoption{cloud color}{\pgfutil@colorlet{tikz@ball}{#1}% \def\tikz@shading{cloud}\tikz@addmode{\tikz@mode@shadetrue}} \makeatother \tikzset{my cloud/.style={ cloud, draw, aspect=2, cloud color={TikZColorFill} } } % for double arrows a la chef % adapt line thickness and line width, if needed \tikzstyle{vecArrow} = [thick, decoration={markings,mark=at position 1 with {\arrow[semithick]{open triangle 60}}}, double distance=1cm, shorten >= 5.5pt, preaction = {decorate}, postaction = {draw,line width=2cm, white,shorten >= 4.5pt}] \tikzstyle{innerWhite} = [semithick, white,line width=1.4pt, shorten >= 4.5pt] \begin{tikzpicture}[ template/.style={centered, text centered, inner sep=1pt, text width=2.3cm}, label/.style={centered, text centered, inner sep=1pt}, block/.style={template, draw, minimum size=1cm, thick}, arrow/.style={template, draw,-latex,thick}, point/.style={template, draw, fill=black, circle,inner sep=1pt}, node distance=1.2cm, font=\footnotesize, node distance=1.2cm] \tikzstyle{coders}=[block, ellipse, font=\small, inner sep=0] \definecolor{colorAuxiliary}{RGB}{245,238,197} \definecolor{colorVideo}{RGB}{241,231,163} \tikzset{ arrowMatrix/.style={ matrix of nodes, row sep=-\pgflinewidth, column sep=-\pgflinewidth, nodes={rectangle,text width=1.5cm,align=center}, text depth=1.25ex, text height=.7ex, nodes in empty cells } } \matrix (arrow) [arrowMatrix] { |[fill=TikZColorFillProp]| & |[fill=TikZColorFillProp]| & |[fill=TikZColorFillProp]| & |[fill=TikZColorFillProp] (last1)| \\ |[fill=TikZColorFill]| & |[fill=TikZColorFill]| & |[fill=TikZColorFill]| & |[fill=TikZColorFill] (last2)| \\ |[fill=TikZColorFill]| & |[fill=TikZColorFill]| & |[fill=TikZColorFill]| & |[fill=TikZColorFill] (last3)| \\ }; % The labels \node[text centered, xshift=.7cm] at (arrow-1-1) {\footnotesize SEI}; \node[text centered, xshift=.7cm, text width=2.2cm] at (arrow-2-1.south) {\footnotesize VCL}; \fill[white] (last1.north) -- (last2.east) -- (last1.north east) -- cycle; \fill[white] (last3.south) -- (last3.south east) -- (last2.east) -- cycle; \coordinate (div0) at (-.8,-1.3); \coordinate (div1) at ($(div0)+(-20:.2cm)+(-20:.2cm)+(60:3.1cm)$); \fill[fill=white] ($(div0)+(-20:-.2cm)$) -- ++(60:1.8cm) -- ++(-30:.4cm) -- ($(div1)+(-20:-.2cm)$) -- ++(-30:.4cm) -- ++(60:-1.85cm) -- ++(-30:-.4cm) -- ($(div0)+(-20:.2cm)$); %\draw ( $(div0)$ ) -- ( $(div0)+(60:1.7cm)$ ); \path[decoration={markings, mark=at position .5 with \node[transform shape] {\scriptsize Error-prone};}, postaction={decorate}] ( $(div0)$ ) -- ( $(div0)+(60:1.7cm)$ ); %\draw ($(div1)+(60:-1.8cm)$) -- ($(div1)$); \path[decoration={markings, mark=at position .5 with \node[transform shape] {\scriptsize Transmission};}, postaction={decorate}] ($(div1)+(60:-1.8cm)$) -- ($(div1)$); % Draw the arrow tip \shade[top color=TikZColorFillProp, bottom color=TikZColorFill, middle color=TikZColorFill, draw=white, ultra thick] (last1.north west) -- (last2.center) -- (last3.south west) -- (last3.south) -- (last2.east) -- (last1.north) -- cycle; \path[decoration={markings, mark=at position .5 with \node[transform shape] {\scriptsize Video};}, postaction={decorate}] ( $ (last1.north west)!0.5!(last1.north) $ ) -- ( $ (last2.center)!0.5!(last2.east) $ ); \path[decoration={markings, mark=at position .5 with \node[transform shape] {\scriptsize Stream};}, postaction={decorate}] ( $ (last2.center)!0.5!(last2.east) $ ) -- ( $ (last3.south west)!0.6!(last3.south) $ ); %% Encoding \node[fill=TikZColorFillProp, coders, minimum height=3.1cm, text width=2.6cm, left=-.5 of arrow] (SideInformation) {}; \node[fill=TikZColorFillProp, coders, minimum height=2.1cm, text width=2.2cm, yshift=-7] (RobustEncoding) at (SideInformation) {}; \node[fill=TikZColorFill, coders, minimum height=1.1cm, text width=1.5cm, yshift=-13] (Encoding) at (SideInformation) {Encoding}; \path [postaction={decorate,decoration={text along path, text align=center,text={|\small|Robust encoding}}}] ($(RobustEncoding.west)+(.3,0)$) to [bend left=50] ($(RobustEncoding.east)+(-.3,0)$); \path [postaction={decorate,decoration={text along path, text align=center,text={|\small|Side-information}}}] ($(SideInformation.west)+(.3,.3)$) to [bend left=50] ($(SideInformation.east)+(-.3,.3)$); %% Decoding \node[fill=TikZColorFillProp, coders, minimum height=2.1cm, text width=2.2cm, right=-.2 of arrow] (RobustDecoding) {}; \node[fill=TikZColorFill, coders, minimum height=1.1cm, text width=1.5cm, yshift=-7] (Decoding) at (RobustDecoding) {Decoding}; \path[postaction={decorate,decoration={text along path,text align=center,text={|\small|Robust Decoding}}}] ($(RobustDecoding.west)+(.3,0)$) to [bend left=50] ($(RobustDecoding.east)+(-.3,0)$); \end{tikzpicture}