From ea8be1533a20a1634c9a1cb3a5534cba65329138 Mon Sep 17 00:00:00 2001 From: Cao Sen Miao Date: Wed, 17 Apr 2024 14:37:50 +0800 Subject: [PATCH] docs(jpeg): Add docs for explain pixel order supported in jpeg driver --- docs/_static/diagrams/jpeg/rgb565.png | Bin 0 -> 15102 bytes .../diagrams/jpeg/rgb565_bigendian.png | Bin 0 -> 14851 bytes docs/_static/diagrams/jpeg/rgb888.png | Bin 0 -> 18938 bytes .../diagrams/jpeg/rgb888_bigendian.png | Bin 0 -> 19105 bytes docs/_static/diagrams/jpeg/yuv420.png | Bin 0 -> 21824 bytes docs/_static/diagrams/jpeg/yuv422.png | Bin 0 -> 12857 bytes docs/_static/diagrams/jpeg/yuv444.png | Bin 0 -> 12653 bytes docs/en/api-reference/peripherals/jpeg.rst | 109 +++++++++++++++++- 8 files changed, 103 insertions(+), 6 deletions(-) create mode 100644 docs/_static/diagrams/jpeg/rgb565.png create mode 100644 docs/_static/diagrams/jpeg/rgb565_bigendian.png create mode 100644 docs/_static/diagrams/jpeg/rgb888.png create mode 100644 docs/_static/diagrams/jpeg/rgb888_bigendian.png create mode 100644 docs/_static/diagrams/jpeg/yuv420.png create mode 100644 docs/_static/diagrams/jpeg/yuv422.png create mode 100644 docs/_static/diagrams/jpeg/yuv444.png diff --git a/docs/_static/diagrams/jpeg/rgb565.png b/docs/_static/diagrams/jpeg/rgb565.png new file mode 100644 index 0000000000000000000000000000000000000000..a76fdcdaa9409241e4dcf8b61dbf98ede7c29da9 GIT binary patch literal 15102 zcmeHO2Ut^C)5dI8LI7!!&hc289KX z$aoP5!g%@$0*4Z*3?>9&0)fM^G@80U2}_`3gBa=*JQE-R?Lkz3QUD3>Kg|P&!Zp>P znrbkl6BGeK7(#V`KQNd&9EtLn=EoB76rn&HY6OW)#zNp`TIx_hl#&|^20<7BSJos- zNEq-Lrj7JLYAOR)hBO)(?~3=cA_3!?X(3SR2&ABkmAR9RH3V)9T$4$Gc;Ewr#|2Ua zU5trzY7js%gTWB$P{B7qbi@W=>7>~r?Cc$YTOFMl7J*WDCYCU*kY#8%(apgThj5Cp z(Q(y88lge}F#;YIp3WdqDMGz9)#2&@RnWi;r{Slm{&*G%2h0EtL6}0IhCrL(2VpF< zB5*^&0yCVlu03EFHQ2NSlF*uNX7q4#BNBtfAbNPvuxdsw(7?Y+n~@n5hM{9=L>sC< zo(u@~4--xdu7#Ku>K{H$L22ns6A1K~afHJP2#%x(;e=p9JqaNse>`KluaJ>RrIMK> z+LuHel|sSegsv4bV(D~h=$C8(RI*SzArB2u{0r#fiXKT=pKbT21u=MFjWX%sfE9%!sc8yj z3h}Bfybb-+`N$a-;w;C{(6BGUNCEclK&Ecvyt|7 zt51RapFQ|b_=5==1(2BqxEXBCZM+EsJ!|&rUcj3GO>-J=$oYyl&4u{(XSka;@eMwc zAI-b?rnP{#`G~if&2!%2?Q7Zc!hSl}_fz;+3Wga7&h7kdrsDpm1P%jiy8q#d0SU$G zz)(Qe^vx9m+ysRLc9s9SiecVGG~j&g?*{;X327K$n_WQI+^R`u;@A8G98gIA?ZoM? zfCKi~1;EWMz|G%1^cxOAFhCSs0NmUHoYuTOb%TAwF$e~TfeVP6V~Cr#=WeiXI0(T2 zac}`~a|>~T8fkt$S%7~--Qe&a2b{k)6pBLpJB6vC78DBP&i{3Vsqj%MV%~15f@Si* z)eQ@P6F%{sJI_uL^L9^#e?#4{0Ju2^IL-OHrG7)%umHHZ2e^5A6bJu?s$l_ea}RKH z=qL^Wyk=|mFJ6tDYWw0P)Y-3KO|{Ov_B!1l>>zmIc=~P0Mvz{$h=_!Sg^8h4n0MF7 zaHcI`L)mSMyv@hzEWxWiVWe)462lw^InQ&(h0e@~Gtcmkh*nbBUCOT<;{0-JpT1{4 zfgkoF{h)wlT4tI5yd&B~A;DZB!6s2>@I|1-!(eWE=<1I>wwJ$z#D4J+N#Y6v%M5)C@T+H; z5hn*ZGS&k2$7Fz)4g(TJlsN;RGQk~;|8L#7*_IhxDt( z7u%Z1=|#*j#of0&w#N`|s+D#xi~PhNz*d@sL?QE&*}buR zP_=DQX;;=mtGHK7AKDaaTqH_uM-g7TX=l`E&>Va;Q}tSOC!ad(vUp@R(6R3Ht(#(5 z-@9HZx?~JW(>Ol9^a5H=>mKB`Ivq1re0alN&le0|>+H}c zr&*rO?=x)a1vjVGK-&nNdV<)S7&9N1W9#sdBjU z$Q^v_-+Lq+gl-=>TK8jj-Xq~TrbJgLNaP;{Fy~j z`ky}XWV9AvF&wF;?F#FSyybV{Fq~4tGFRz+U)z*Kq_#;H_gs|Rt~z*)G)P5v?H1oz zW3WWj@i!GG5H;l^edpRX@dIYT6;foqZsiE%#sftlkGHkdBIk02CtW>K$!q-hP22=8 z+9Ex>J%>h(P8ntFU8xvE-=u2boTGZrCkX<*ZYx^7?z(uaV<^`9xl&Tn+7nxY{>TtD z0_nZEEp{#;jq5kj`0g+@4dH$tVp@JX(Q`9kA|Dq+8GX65=ubGShxJuYpE|5r+pc_< z!Ov6SxB#QJ;GTTaW=Dptda>d7FS$_@O6qDxJA*lNvn^aXN$mhn8Tq48QY}x;@Ambs zL63zHbYGmjnV0_l!6Mc}Fr4cxZY$R362-FceQR8GWVB(`Ww6g=CGn)*vKzdOrf)N{ zBJS61o3UmZ_aNBg#_jb{Ps(ojOCd6f;Y z`pyLOl^^waTjg^`X^|$&MXlblxJkDQR>+I!)E%cXC1k(`Je8q0b!Bad7drw{z%nJ* zKCn4DtA}DTB^HBSjd}g;53{fpKnq}zWkQQI4R@>3bW|GC#qxAc?~qYnclejy%pTY%R;9xVV#>sm}9IF4EQ0Ldm zVonw9&CS1bAHMN!b&tY}4e9&EgL{)Td@Jl~wy5J{UG!Vi z?nJ4T;qq|EV_m~1bR6;IUqky5d-vQJq?_E|`%_)-sv)bo*whXBE7QVrQdyG`j-Yna z9Wi67I+ljcn>{K*n@x$)B#)w#I)OKa%l+~WriGXFcG--rJ<9ha1;F6zt2(LMFMjXy zF;ebLS&DM|Wt>jfqvCC){%cBV%0y3gxZbrId|o1YDFqtobIjpXf!-fq#tQu{vcsc^ z_8$(|E?F0@@u<%|?)Q_~eU>+{NnVoW>dQW&DIEIC<-gX)8)J`at zzPx1vj5~<9+L0WH?Y@Vx7Tczx41JkXMaj|0?taw=BJYDwHPgow~|*@~onH zjfUZ*_)7vO`A4sYdUY{>eYuf4=TC|Cor&s7M7JYw$v^Ji(o*WQrZnBysLo*DQwKp< zEU*Hl+2zLopoqZTR*@vOPDE}MsEat}wvjj_mH`>q_p#FLd){tq|4Wfs>;WjERdstPi)S3yF}rsVPT( zw76JGUxa{Y=7$ykd~_0?m2cW$Pmc2x!92T5bjkki4COsuzwB&5eW7e8JM#I*h;DN{ z*X*JZ6XrQ>gTU9ko0{YOfyt-3itE;_Z-%UDZahYVx#Vnet|&z^PXnZ) z+KP3he@$j{CTu=sU-+15GY;KVtw$(cQ_$YI_&l3c4c4_IR|oDY*Dy12&_6Soeju+z zvegAc zI{%tSVaMNbkLle5s%lMoHvV#@Q?u%;O3F<{Q0`GTm!S~q05qnM`}1P0<7qz2aN89F ze&3#ZlVp|AaX?}8gZZ%*b}p`AGuH&<9DbIsk&LeG&EeOub4w|WyxL(4h`m|+KxUR? z*eIfWz*oPfJzIqXm*1V)@Mhwi3THRiKhhC|AFF=Cr>$}T_5Z>OIe^t4ryNR1Lazt1 z(Dq&+)eP;Fh{_maUDTJjmB1HyQftGNJR91zK2r(ElwWgzob`nU8n0?0oZ-Hr5YdWk zaOFrAI6@y7GpdZ=qye;kOhIsrSo}?5Noedvu=zA^ zHPJC{GIE`33b^g4*P^d*?gRz-0+TRi3Y2p%o2}Y(Du0C|2eFq(NQB_tbpS;{L6kD* zR873(Ssn~x&y|A!<0PSVOk7jewH*zy7E9{RoSA77dJoX_1CYbFu2go1$IPR_JCTxS zCs*k_m0MEUmLC$ET5S%Jvh^MQ?I)=y+fzrtuMgbmtVrOmNpY7F8(Xnrqsa33<4d`~ RKeUQinA)0LF!KHJe*h%?56u7o literal 0 HcmV?d00001 diff --git a/docs/_static/diagrams/jpeg/rgb565_bigendian.png b/docs/_static/diagrams/jpeg/rgb565_bigendian.png new file mode 100644 index 0000000000000000000000000000000000000000..0d55a55a4ffe4418c855956052070801cad78004 GIT binary patch literal 14851 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 R{;QME)X38Cn!fXae*v?_-f{o{ literal 0 HcmV?d00001 diff --git a/docs/_static/diagrams/jpeg/rgb888.png b/docs/_static/diagrams/jpeg/rgb888.png new file mode 100644 index 0000000000000000000000000000000000000000..62f372df5b06824761ebb27bf526e3715033a570 GIT binary patch literal 18938 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 D`sdKJ literal 0 HcmV?d00001 diff --git a/docs/_static/diagrams/jpeg/rgb888_bigendian.png b/docs/_static/diagrams/jpeg/rgb888_bigendian.png new file mode 100644 index 0000000000000000000000000000000000000000..490c95ba887d20f8fade2c6855401f4bd82ca794 GIT binary patch literal 19105 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 literal 0 HcmV?d00001 diff --git a/docs/_static/diagrams/jpeg/yuv422.png b/docs/_static/diagrams/jpeg/yuv422.png new file mode 100644 index 0000000000000000000000000000000000000000..a30190ca908119564c260c8117404aff7f190596 GIT binary patch literal 12857 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 Q1>xGSe?Tuw=fvs%0Iq&xTL1t6 literal 0 HcmV?d00001 diff --git a/docs/_static/diagrams/jpeg/yuv444.png b/docs/_static/diagrams/jpeg/yuv444.png new file mode 100644 index 0000000000000000000000000000000000000000..e45d274cbaab661b945a1351fcfdecce14ff8973 GIT binary patch literal 12653 zcmeHO2|SeB``2cvEG3jB$+bkbnZY1j#?pi+`w|T^n9P_lMwTqy6e8r3EJ=$c$=DL1 zQG|-@A#SE@O?Dwt@_)ySuI{bw@BjIK`uwlYuNi0NJ0C~E6$TB2G$V+fe?7SEE0`yAt11xvhFA%KmyvaI3(H`jY86SK=L4nj66g} zLCH)WEC$w6fB+wgDzXq2Wg9v_!Ug5d5NL$+Lt`)qF_503tUMq}(n>)=46F@Y8KT|2 ze1LBssFH&cWDjtqg~wx1mMBL9G%&87B3M}#tVHW#u;0wcPz(eEt}$pg6!4{wa&p7b zy1-lsI4nTXQ&0fQ%G2He(G=l~AfQ)@Fg7_1R8>@#S!k0&5fLu*33-8By^euhoqUvZ zEDo9AKwf6%9`uPEM-e>HICsXpA+jJ@peL;}(HD=RQ<13SXeU4ekQi83OkN9Uqy2$l z3@ZW^cLbo}l66f0!^kMmC7>DBw9+H^?$<_p9`|&$vB4u`v@PV_{wi%*Ce}xvfWW&N z;gBc{AQLL*V03~6){ z5r@MN(fBWkPB?dWloP|X42cK=0q6ZCn==l>m>q)$4@~?E=`@0=69V&hswEmpbfxn` z6&dQ$xc8&bF0RWXE66iiu!v=52Eo%6fy8;!`!A7JdWCMsWor^}I6&SCr>$&WX2SZw zP#BuAm+i=Pj5q@jB#97cpAc>As7I2`7DYy$N$6$01v~5-&dCw4*%lnuiAHc$$Vj7 zB@BQhZAUSXk_+v^8ZZx?1dRTf`ZqTKUT{Y)MO7eRXnVV&i6~P%0thBx9dBTr12k76 z76a615fcd77#I$NBP?MX?5s$8)95&N;tD!==>^a|i3FS*YDJ6E(hF$8;*K+XOOs1L zd7}MR)^S7xaYY>nH9(}KV}ZtxLZVkzF*ql;&r|pkIW%s7LPVh5Q8cY-ll&&=R)XuR zcBkX|`#$_C_CXa3^>hf+W)qLcv_{tZ|vO3Gk_643JB39RK1 zwfcYsgwVh36n}|i7C#~!TZi-9C2rF*zms1HP28>o;EMsKO-@Dzi`0>d4xhsAPS+tvc z+HK3KLl&5!`1g=y4IJeB+$H~AyCit^BJMv)9e+IHe(sXrh-IKvdnf@0A}}ooe=n9< z{CH&j+$Fz-tW|p|0cJeP_#U#XAwPFX`l;~0=X@2idJzYp>7Qbm`Hx53&t38xu?+IH zhefO6lme{y&&aa)@yPnQOMU}c;D6C61sM2wgWfkDNiVg1@$i4;bFih><)0hS8yFpE zKlGqKrC#IB*~P@fDGt}sGV`$?P4P9ec*b8NYI%1J2a zNzof8H}1~3c0rtDJO4q}@U`IweDl};VkVe-&HfUsT7*SjXS8SQ266l;+9k3Vq31SKah$G{S5qG@G;p@ax#eIUk>Uxz0A|9yZY?YYN6pMq7@Pdq4iRR-nC z&$@9cuCKPa)@kk9eSZv4&Ytt!uBgUjSx|s?^<3Wt!I83T%wvM)-$+2*j|i)mb{%zc zMK)j3G8jZ)=lFja*{?H|5&x*+E+;NXE=}-{=;s>0;f2+;Oap8T_j&Z{Af26ei;FW~ zkhYAUBH0#mY}vBKssPERN~E6L#3y_7)5rHEzEk3rm6c7m(WXW-SxRWw^o*xKXySvq zJQ;-C+o`GM>#!5Il14eFq|D>o+6*WODcyO5ry!&YMZYj3o^|8g_V}kZk{y|$KliyYIkw&<{m25wX?gsPA^B* zEcv#`e2thm;z5#}e9vRH_Z!|@6^nAjhLjx5%8fqeTT1;vofL&e3Wm9-lwF@;!J@WT zm=>>jH)eR4WXu^*RaKRbsAAqM2sH`8`}^->X6IjTY-~I*KiyPp9n4%1m7cttYkR@Q z4ULx*k*ukzo?C-MIDZZN)Vh`ZRqsbzNk=oYxRIxgm(``;bM;)fw3#n;ht-E>yXRrm zKDaCEo?MWLh|O1+0}a@kWtp)ps(Nz-)>$Ulu~vMVAD(;nGVr#4F3-rN5Ai;%o9sPb zH|W~f@ZZ69hsfC8*(EE>;nqRYy{;FDpLnSi#xG}I9@f;QQs=n0rBg#vD3lA1g_LPf!G)7hl-D@`^+EI@voG%gI7cqpz8KK zyO9p(%N%b=QS+D?GJll$5`;n)lFYN??bNe4WQ+-4X>tvE4 z4|?R<7At!EsL2bv1hPU8%Rhgy$=SUA<(LXTe9zeuf~vt=vmJiaGPe%d{(%9+!>}y{ zae)i-a0fXDvKp6b~7ShNTw$7Tq||FEz?YUu06-LC9S=^9qKH#biL;2sY32kE^|`KJJgeiSIO5BLVY=#>&OB(lgz6-)M76Tw|1qmH(PEKyQh zUQvY(S=}bC>AlX~lpgJMHWcqM&%9xS7FEq>;^t2z)WO!x539?aj&H|iET9ndw z%0ty%EvYTHQ3P}4nYOkzmw-UTMjokOF<7%)`xn1xcbWtkU)JO-dwiL|((l^FTW&tu zVaY888y8n^sp8qe2jbendnQUqH9Jl`_Zfd>Z%^+ukD3sfOqR60v$s9hAsPs0QXQG; zaDkgR&$2a-%6++`?qTxK&DwDRql&;`jbSp~dDZe6MIa7)VEaXw% zSkFDRwd>YRCNT&4QBOb@Abw>hUQ*j7eVuFDv`Y@=s8Wx0Zz0C=4^tHVqL>zluga4z>_hetQZIH{U7Av-hSr&H98=;&z zWxL+qmFT;FrZ9icv30+b4Rx!SBatcTcel#=C-LeP<>$wUFZ4;~T*%v;>Nss=U>v%z z&DbpWSk#=kbaS5jkpX5&cN1(&$j}MR4?FGjI4eiTaU%VN&+^{1+nNT%iOcX$)J^k9 zr|kecKYGa%I(e*vl#`{ALt8Am3UK|X-uiTd1in)Kb$;)DovYk6z(3Psxs5QU&D`L8 zspe+h1%iMdWo+B~U$a5eEtYNg-iK^r(y7OKc)@a(#lHdvxM&yEU)f zlwqh>`CBkSi$|b*TY#$f@0@K?FwTJDhdR9z&9JbZZK1W%!dIPgkH39+Yqo#K4XgZX z2Yk~)shU%{FJBK1h73MU2I3lQ%rQJAN;iV{!ILKkG)%HLKV>O=_)9PH$dTlp?T8NH zUZIw~#U8rj=Ql=3Mso3b+RnJja0;Z2sznh7o@kXjaItvF+Nnlwk^mhd`}@YSzWOjb zUe(;ZC18Hq7a?u4%_>Rcqf|g{Pw9qi5!j)Q%C&56+LIX}Ja(_Vb)G#8p-S@?R5g7n zN%G=}LD)7AEwoFK=Ux=Wi7$Wxa1?T6zEkZry-0qmJD45y_4SaB%p!Qj0m?v3GU|pe zyMWa2(7<36m{0DN`>}9B3J_T|71?Tyg{tbaKDAKlG!{44!7lPHywytIuRhJgGWw7! zRHmAXr9jq!eD3t=^%q+Di)z}HXPZUas9g)j!=2k9!Y~Z>!m&1(gBqXhrHX_}ZJ~xJ zlGVPTtiu5{?X#18wRr(-*H4~gnjXt}muI{Yp;bA0-M2F(?p(Qq@x=HM58dpmQ;CVt zR9|ya#vT76mQDBeO&-j#p>_Nn|tg8^&jC1 zQHj1^dEYo@Y8Q*Xv7lai8*$1x;cKO=A?*rjp)T_9;_?d(< zNhXWYTLW*Xm9IwR*FUSLm`NSt3^-$LYHFIEINX*cI=qE5q<7)>p(YsRD%eHq(s|zT z_lp+!yLBXOi!f&&dLeEO>=`G9v4v0J9=7A_+1|n$N%zuRM2pYV@wDbIWSV6C-qm#Au&kv1_w7`Lc-+VD5@5Oz6y(h$qmv%d+088i`6gq&s(>DI9V%EP$QwK@gU)>sC-_9=sxv~s}I!1r9>ci$i27AI;*7w9o=k3h=xfJICI{R zv>1UkC^lZ4!gdGKVnue46x4D!t@Uxi!;Uhm*h8`~V!Os0Qyo7r}Gss1esGmZ(a4ZHaVGt94v|cu;DpVwyhy R|3AS5*FC61(ms0Xe*i?I_Co*w literal 0 HcmV?d00001 diff --git a/docs/en/api-reference/peripherals/jpeg.rst b/docs/en/api-reference/peripherals/jpeg.rst index ad24411a53..23426412b5 100644 --- a/docs/en/api-reference/peripherals/jpeg.rst +++ b/docs/en/api-reference/peripherals/jpeg.rst @@ -18,6 +18,7 @@ This document covers the following sections: - `JPEG Decoder Engine <#jpeg-decoder-engine>`__ - covers behavior of JPEG decoder engine. Introduce how to use decoder engine functions to decode an image (from jpg format to raw format). - `JPEG Encoder Engine <#jpeg-encoder-engine>`__ - covers behavior of JPEG encoder engine. Introduce how to use encoder engine functions to encode an image (from raw format to jpg format). - `Performance Overview <#performance-overview>`__ - covers encoder and decoder performance. +- `Pixel Storage Layout for Different Color Formats <#pixel-storage-layout-for-different-color-formats>`__ - covers color space order overview required in this JPEG decoder and encoder. - `Thread Safety <#thread-safety>`__ - lists which APIs are guaranteed to be thread safe by the driver. - `Power Management <#power-management>`__ - describes how jpeg driver would be affected by power consumption. - `Kconfig Options <#kconfig-options>`__ - lists the supported Kconfig options that can bring different effects to the driver. @@ -104,18 +105,28 @@ The format conversions supported by this driver are listed in the table below: | Format of the already compressed image | Format after decompressing | +========================================+===================================+ | | RGB565 | -| YUV444 +-----------------------------------+ +| YUV444 +-----------------------------------+ | | RGB888 | +| +-----------------------------------+ +| | YUV444 | +----------------------------------------+-----------------------------------+ | | RGB565 | -| YUV422 +-----------------------------------+ +| +-----------------------------------+ | | RGB888 | +| YUV422 +-----------------------------------+ +| | YUV444 | +| +-----------------------------------+ +| | YUV422 | +----------------------------------------+-----------------------------------+ | | RGB565 | -| YUV420 +-----------------------------------+ +| +-----------------------------------+ | | RGB888 | +| YUV420 +-----------------------------------+ +| | YUV444 | +| +-----------------------------------+ +| | YUV420 | +----------------------------------------+-----------------------------------+ -| GRAY | GRAY | +| GRAY | GRAY | +----------------------------------------+-----------------------------------+ Overall, You can take following code as reference, the code is going to decode a 1080*1920 picture. @@ -167,11 +178,13 @@ The format conversions supported by this driver are listed in the table below: +==========================+======================================+ | | YUV444 | | +--------------------------------------+ -| RGB565/RGB888 | YUV422 | +| RGB565/RGB888 | YUV422 | | +--------------------------------------+ | | YUV420 | +--------------------------+--------------------------------------+ -| GRAY | GRAY | +| GRAY | GRAY | ++--------------------------+--------------------------------------+ +| YUV422 | YUV422 | +--------------------------+--------------------------------------+ @@ -236,6 +249,12 @@ JPEG decoder performance +--------+-------+--------------------------------------------+----------------------------------------+------------------+ | 720 | 1280 | GRAY | GRAY | 161 | +--------+-------+--------------------------------------------+----------------------------------------+------------------+ +| 480 | 800 | YUV444 | YUV444 | 129 | ++--------+-------+--------------------------------------------+----------------------------------------+------------------+ +| 480 | 800 | YUV422 | YUV444/YUV422 | 190 | ++--------+-------+--------------------------------------------+----------------------------------------+------------------+ +| 480 | 800 | YUV420 | YUV444/YUV420 | 253 | ++--------+-------+--------------------------------------------+----------------------------------------+------------------+ JPEG encoder performance ~~~~~~~~~~~~~~~~~~~~~~~~ @@ -269,8 +288,86 @@ JPEG encoder performance +--------+-------+-----------------------------------------+-------------------------------------------+------------------+ | 720 | 1280 | GRAY | GRAY | 163 | +--------+-------+-----------------------------------------+-------------------------------------------+------------------+ +| 480 | 800 | YUV422 | YUV422 | 146 | ++--------+-------+-----------------------------------------+-------------------------------------------+------------------+ +Pixel Storage Layout for Different Color Formats +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The encoder and decoder described in this guide use the same uncompressed raw image formats (RGB, YUV). Therefore, the encoder and decoder are not discussed separately in this section. The pixel layout of the following formats applies to the input direction of the encoder and the output direction of the decoder (if supported). The specific pixel layout is shown in the following figure: + +RGB888 +~~~~~~ + +In the following picture, each small block means one bit. + +.. figure:: ../../../_static/diagrams/jpeg/rgb888.png + :align: center + :alt: RGB888 pixel order + + RGB888 pixel order + +For RGB888, the order can be changed via :cpp:member:`jpeg_decode_cfg_t::rgb_order` sets the pixel to `RGB` order. + +.. figure:: ../../../_static/diagrams/jpeg/rgb888_bigendian.png + :align: center + :alt: RGB888 pixel big endian order + + RGB888 pixel big endian order + +RGB565 +~~~~~~ + +In the following picture, each small block means one bit. + +.. figure:: ../../../_static/diagrams/jpeg/rgb565.png + :align: center + :alt: RGB565 pixel order + + RGB565 pixel order + +For RGB565, the order can be changed via :cpp:member:`jpeg_decode_cfg_t::rgb_order` sets the pixel to `RGB` order. + +.. figure:: ../../../_static/diagrams/jpeg/rgb565_bigendian.png + :align: center + :alt: RGB565 pixel big endian order + + RGB565 pixel big endian order + +YUV444 +~~~~~~ + +In the following picture, each small block means one byte. + +.. figure:: ../../../_static/diagrams/jpeg/yuv444.png + :align: center + :alt: YUV444 pixel order + + YUV444 pixel order + +YUV422 +~~~~~~ + +In the following picture, each small block means one byte. + +.. figure:: ../../../_static/diagrams/jpeg/yuv422.png + :align: center + :alt: YUV422 pixel order + + YUV422 pixel order + +YUV420 +~~~~~~ + +In the following picture, each small block means one byte. + +.. figure:: ../../../_static/diagrams/jpeg/yuv420.png + :align: center + :alt: YUV420 pixel order + + YUV420 pixel order + Thread Safety ^^^^^^^^^^^^^