RGBToYCbCr[c_,opts___]:= Module[{k,cols,t,d, a={{.299,.587,.114},{-.299,-.587,.886}/1.772,{.701,-.587,-.114}/1.402}/255., r,g,b,v={219,224,224},w={16,128,128},m,dflag=0}, m=DisplayMode/.{opts}/.Options[RGBToYCbCr]; If[m===True,dflag=1]; d=Depth[c]; If[d==2,t=a.c;If[dflag==0,Return[t],Return[v*t+w]]]; If[d==3,t=Transpose[a.Transpose[c]];If[dflag==0,Return[t],Return[\ Transpose[v*Transpose[t]+w]]]]; If[d==4,{r,g,b}=c;cols=Dimensions[r][[2]]; t= Partition[Flatten[Transpose[{Flatten[r],Flatten[g],Flatten[b]}]], 3]; t=Transpose[a.Transpose[t]]; If[dflag==1,t=Transpose[v*Transpose[t]+w]]; Return[ Table[Partition[Take[Flatten[t],{k,3*Length[t],3}],cols],{k,1, 3}]];]; ];