From b7b252fd5531a9be70cb4b3f9f58963df425c0e3 Mon Sep 17 00:00:00 2001 From: bebopagogo Date: Sun, 26 Jan 2025 20:26:49 -0500 Subject: [PATCH] fixes to npc (NormPrecoder) and updated its documentation. Include 'auto' block sizing' feature --- doc/npcUserGuide.pdf | Bin 44599 -> 43578 bytes doc/npcUserGuide.xml | 59 ++++++++++++++++--------------------- src/common/normPrecode.cpp | 3 +- 3 files changed, 28 insertions(+), 34 deletions(-) diff --git a/doc/npcUserGuide.pdf b/doc/npcUserGuide.pdf index 9a0d79c1fc4a7b7bc8dd028b60f2ba1d73f1cae6..ecbde59d8fc4dd247133e851fafaf8edb4d442aa 100644 GIT binary patch delta 21373 zcmb5UWmH_<(k+Z@aCdiicPF^JLm)we>xSSCje7|0?he7--7UDg-8|>K?-}2?=l=Qr z?OvaPC3q zJ0XyC3d4D}Yz(j?lBpIKxN{RWwq@WTWRH}N@QD4H%n%%Y%n=+$DwsI_?U7|Q zKvQ<6n0#FA^epmmG?~HpbUP*j=&kSVspCHslDlrxOt-%YfA0L|@IL$jggsJ+)$NhI zUhIxac&?vnZTdVv$nDh4(MM1YU--^beJm}W z$mctVTqapeJ8354+mGmEc+vMNxmN-2`@71+RfY{;7u#QsaNRefWVVIu^qQXn7;`ez zO71XYu5A3Qn3bKs{W{wR-VEZt{0f80ptm6bx!ZAQj88@Kejc_ayT6yHX-2RSoNNxf zu6D?#23WKKLASF`-B3fzCUf%$wImsV{OMs@Z(jjRlQxJ|q^0vJhehb6${sg&-?rf% zx9&+WKkUmo{~YL7#;rpz5!gq*?ny{L;>(-GCoEl} z9yf?pa1rQ7x^87~KZHw)?pQDph*!?7B5)C;N4$RkVJ^zP`Hp z(KB?rAvGEw7F`qC()>jf(X{xtXUP9=M4P{e!2b&p`9F|}`z8VbXNym&*#Tz=wmc>; zu6`PrCT%ePaufVRtQ$bRB!PN`{r~-Fy(PkVNrL|fpdh`5c5aEp+yx{|6$H=O9ux$q z+6<2;HOg{MMkEx=CKwA(W>}apyT=zE3omL~tnyY&^J5F;;E;HHA4b3^F?$%S8+8R& zW)T&YH3{(lf=j9*YZBKD2|md#>M#3Ma)uNH6VDlzFGa~jZi6NlDa$W8Lk2>QzYWWm zp%fy;qSHkA*9ow=#1U9jYf3Q6f=BR#U|1p6#8$X}f98aM3WD;_*O2iSB?}OPkW?cB zA;fEhQIdgzWYNh>(Bz{3zDJEB;Q|Vq(&b;UNtZNXTjV!+3TX%pd=(RD~kB|)fi;*{|5b7A??2^5gzxSu8~3~*>ES!KawL%wKN zB66aGfwr%bP7?GWg|I_t^#5mNJNX1c972>`aPzxiLMfymf`!NJeye{RSR7@-B@8tP z7W=Pzz(4L89_aL>(G?-YFdWEFhSqVGZSC1yI}2#Mc_M|%SZ>pSax{tkyGa9JA&8Si zf5vx%gU8B~l2TTSn*2kxp5zSqU#kCdB0(uceuO56A}hZS4u^@3`wz|6U{Lt*U~(mb z|L{a!f+`m*OaBkI|BxydmY={6hn(;Liw01Di2qRw_WwFTN|yxtZ)X2$kuOe(_4m-f zB>6`R5dJ@;h*2Vu+o1kmju8FhNUW@vs2V-W-<$#aFPHw~$j~n8HE&Qt3N%#$DHLKt zJ2Vmi8ssaZiAoBUQZ>~mRba{?+77lwS51$qB2|sl_LqGMd&vBTav{S97{b-LP%ltl zteiF4E({MI=N^|@-Sy7Wt&P_6W^vFU{>`ZSR?$pG)PL043h?*FgZoFU9gBd!GW>5q ze>wR_UdsOj1TL141A~MAFaITHApbEJrTCj;O4x94f2nk;O(=mB26%P4BU4*}I|DUv>(jyj>F^}1u~sjhg8OmTfQCuxQ-loZwr_4)_H!bfgg`LWwyau45uKPz@% zp4{4~Sc2LHo!scFNrNd1RM)*bhUu@yZ3ZkjnAv3>Y|h%NGoVi_tNa=KJ25^SnszpL zD9@bB!s95t!;!$^^a0C*p%7xrUJG$H2qZInpB>ugn3`prN`x@6U?4r+Bg}FlB|Z3q zEj?DET9;Q(>9nRVa}mpu8;l3^ z#G5E~O+*y5W2`Lws3@#w3NHD)A-`RVbx0XL1^TYKu}DUl$)q~dyIzHddKk4cGsRMws^ShnnH%1fRdya;dX+v-W-5OgG(|&N;az3e z!*2aFv~0?^{;jlAnU^>Sb+*%&Zgoq@*GJgt=ZFVTGwntUrK$7lg$D$EWz)$!9ywio zKa%S@VIzZv=z*HKt`9P|kcwiUG~I>3)~cj?m2feV{f~woqlEF?WX3qtX5x$N+kJ#Y4XbML26+kR^)nQNzr{8;4PK4^{z~IoCENU=PY>@L>D+|sxUDye~4*# zQ>Z6gU_Y`mGEVWuwr^I8J(%8CVUtp%@w0<9-*`^Wz|EOy{vR}?RPfT zzS>+JpF)gxQHs8pj;A4xDp_1)m(G*;2#WxI4-7QfX35+;U<=!~(0}^;wjN^-LA_T{ z_A($Z^w3j@d%;?f3PnXI^Tko3KuGha7OvTIbU{9qVvPmN zne+=~)gE$C_K;X^`mBQ+1@&)4ldI-s&v}^KZHzyPK%y^;*8{ned606qotV4kQ=M|W zv0;ckiRq7Uv4lG}+&L%X)cyu8cEy*E){9?+UtT=m{uEe=;Muxz8$=?`A{0eswoUSA z3kD0$$13M(?(h}hCx8lx_B1@9Prm`#m=~S8yhT4O>|!!@R1AcMNtbVTw+``~$Dh2Y zVyZ}xrZ6D~?NhRKp;4T}2FF-Vph1E}s~%f&DPOR%e?A#dQ4kh#o%vYrN9JO62_*_d zX>UIDe3a72Y)~qnT~9dMo8LJ%|72Zva)9FghBB4BeymftWv^OxOs zZ2Og%oG!`t+hc#v$Jsu%w%`mnsSfM04!vRy{MN>CFC+uueExdR$wC;qU~}H`5+d|W z8n`zpG#NE$Ds->9HtX}N4-u!|x4&$%J&QhQK9`*0K#;K9@Cr3&A&eb}y6MwB^x~`D z=LcS2W|Rn#7e9~1SC z!(Lh)qCnKcK~}__iJUTCO)KO0d{7^|r)Ek}YOmf;-Fr|%jYB5_j2;oG`SCS)1jK2s z-u&X(+}(l5{XOD^72XHI#-G2+#bR_yZ(c9FMw52Y%kg2xjg&(i&XqzvdnwO*h<%7k zJxf0qIDolJ_q?D;t%|e8M z{qpxmN6@!Ep}S7c@{H1BO2!l{4qeql8AD`Gq9(n2fU)!;Sh*sCvtkd{y{ZfNID#BJ z8Vrp7sP>uYKJGW#Hl6F^eS8!<=ez`p(DQVuty)ABOIFkXY;=MRG2+Uk*rQqpQ}$6< zO}olGA(2J1?osGrMc>V&wUf}5Gv|ioH6>#zj|zZlF-j(_J!L|g$?xUlVV7L!07B>x zf(+GCiFo(gx^#Y8V>D~dnt1fAyc@s$nBS-}t^5#Nc#%mud7pTQLaf2YeFpsKk@qqY zADVk|-j@Z?9o?LupJ|CezUKVY_6}@x`dYZXyws`viq25rWAS}?ad0w~#)i$S%4}yu z9_g2%=TWyj&`9-MtzYNvoEF)T$i8^&Qs>GQ5qfPm;Qr3x3?5nwUqz@Grj-p&CBFCZ zvVJzTQQ42xUx!ddGjn>%+MX(xYiB^yJ7sA;n(zeVUb9Z9>`oFcowzlK@Lx)_l&Oq9 zkr}7Hr8pC%J!eJy#!=4_+zpO1V;k&uYAhkiV2fRTNE+kIgnReiELUpDN?J+|y?9oOFV+KuU+rpjF85VtS$G6#AvSm~5K#u`an5c$ z=+T^gl2*UQ5k8<=;*gH!onabxTMk`guQFl-4Y~rFFUcLOEZtFo?Se5#av%cuQgda> zRrxhw-J$RI-TUm7j_!AYPGRXzQk~8*?pMLLKcMmGWaW(!_dnThBfWpz`@3RZhLyi6 z^PpT8^cK|=KLy#5lNhro8HZtH4Zlh|eD4Et{ z6hl~)l24R>ZB{vae0eP0XN+fxDb(6mPhC4+CaIk|F3$NlvkhJD$+mw_;#`~ffYeEZ z!%85=!Y5_t;YP5uw{S4~ioni8%1ZjrgP-h`Y0Y9LGho5QN~!uz=~ z8*8;S1n;L%!VM!_Xl}b%rm6J{A!3W@S)WAM^*S3Qz3D(9_Pa<|lUQ~ot7QX^4@n=*-8VecTh z5%Ilk)qU~NIyV25o8{bh^H89xxPGYVv+8_V?NHgV9OLK_Gay#l&S;k5!<>Te?Xpx@ zCN)ZlR|>ZGs!|rc;pS4kU%OT*$yT5}^HA$w^`W6*c~v?+`sSAAz~>18%{S@LY-=vh0J2&Wf}(-=P@%tgn&6?8{}VODI5l{!}9I zmJY5o8(gm1IIh9afY+C^ch~i>O}+9*-;I3+pq#(p`OG^mT6S)uYcCm-n(Pl}#toH-^>_|1pQVG++#=`c!W@eJ z-W$$p6B!I1gOR}3^f7mK<#9IWS(-7Gi4rd}J;!PjO}!IBPc;OdaxZfhu8!#g zD3Jo+(m{=I-%I{xcvdYt{ihw4WHTv^-#<2>g6Psm^v7(CaR?lIgww>J-`^@ue2n#@ zR|yj%1U15X<683%-W#6@uci>BxK*Z4Mnb0yS70~$HTVY@*L}W6_#M-i`}7VTsai(p z95eI5D^zk#MjvlSx6IP*pD=8+kdzDD0d)uuQl2@|OP>PV@rc3O?$78-Kb60MeF+C^ z_Dhd>e^P1tb6#YW$<`{P7Uk4(Z=-*q=M$tlhAW935L+{eFX_Jq*C3t5T)Ci)B1jYqWpN-M2B@*} z<_Wbvrm(5KIhg-?7V$l&vmZTMt)1D7K=HM}ZhEYGI@k@>%9vuZKMQ@Rj&l%Uk1X`v z8A7z^itYY*zuOM%fpLn=4?)FcSk4dW^!y_1_i~l@_%JO$bR77n8uS=V9 znU3#D=erIRU6bA7sp9Y8El!Z`+F7gi>s^6n$gs1bl8tlXvVj^nl|`?T1t7Y5a9Rd} z?U_@z87uJ|NA)rtf{&B>gzfb)Lk;7!wdG5>KLmE#e$Mo|^O8Px7;h@0aKx>TQ{%9B znJFj%y?^@NQvSfC(vtF6%R-}6CM;WkgVw9Cbcja%Sy1HQx6;NAq!ER*sFnMf>G;X$ z-q!C-C^_ns9vobW$i!sUdSJautF<9S8va=8aNRP#u)! zwa83o!wb>f*|kQ|-1f3VRB#w!fgp4wxLxWyg2n7QyfOY%#LM@$X z<-JB~BbO~!F!nD~Dxi|5b<~&%t)NQGDL0qXj^}y2Lj8kg1Tkxu_&Y2C59EHb8@;fo z@a6AD?SUWM_dcORB~HaW{qTfD(n1OfaM{fF5uGq(-`MT#qr2=!H09>ss6Kn_;M6X6 zayO&x_bp09^;LXB1xPE$rmTP~nkxqE7JVa<#nW#N4RtBP%B3NUgU=-IDr%Kq#-h~c2C72uI&!M56IuMow~`yOlT z_x2Kfq|*e4EY;DYI2MzL6h&J3yyYT(?ZP4Qj6W;(^9GKM#^6U_q*^wDnRL9i_d3t@ zieU#4^bF{8OT_`^)bAFQX~4@#^zmzPedMmqfn7D2$V7>+*X2?-@&R~DOItP_cy zI<6%5#VB!T8G?EYS;zBZ$AW}tJ`AS_6whyXRHJD7GIO{_%}V#BH`#l`?nif|_yngI z{&eMuZ^LPuOcF6YMN#-?)ySFYBl5X^qV%4(cJb^Z?a(9eugZMlmN4`(ND-W}xC~8# zcwSDu@Q%RGB<=yTboVI26ct+9!aZZR`w@)1A1)Ef?STXy>|5?rM3;qjQZ*s8HInL$ zhPw6UehOH#>3Z#FD*K}Oq!w7lL5RhqSzV@->a)`(0;`l{2#RSBBRn-9l_oPWC?;Pr zLlo@11~Z(wB&f&3%vy)iq7aU>2iyg58_cD_2{{3Hz8WGJ+kV%U_2Yw;h564y#u_ha zIAp;)Wm8MxaWISQJR8d~ZWlvxnNiLwC7Hh<$N0Y}QlLzG%RBPYu?KAD_i1JcQ{NtZ zK{M~FgGX{o$4LKdKQiA+ana^t#*LW>=Q2>wi4pvP>yVJxZ)WS zMP&(K1}3pQSZzR>hsMxf9fTS?1f55y?gXA&(LV)AQ`&BOdjD9fi<{0q5B>agOJ156 zKcJ!0OtevgvUhQQR(r^63_q5U#sZ!Xs?J3KN{##m4sRcf2T`~Vw)uOjkR~dnC+^xC z;#p6-37=?VGEAoxs^w`RbA)eSKL}4%c>y2zK27VSmN{h;JSIt`6MT&!?fcnou*C;l z(=+b-GZ~k=fx-YnNw7tJUcx>WQuTM_RPb{wXtcvEs5yc|C`WdrJr1$lc|)GWS;kj% zgQ+o;qVgD+MltHcCJp+Vd}qW*I9GgE`$BrFRL(><)q`R(6U8iDuAgHC;17w<3wxh{ zI`0(6pW8xKyi`QKqUQD#61g zXOi(3!&f~LkG??$eIc%)oI5`9{U zF9Y^J4GwdTn?U%5Ij?ANQrz;r{Ty#$vi8q*($z!swaob58R^uMKhB;OJJ#|EDvh1E zXbwI}?t2kt;aplh(%2{L@BCiXJJR~Sh;ufx4fRZ)JXBdZnBXwB(7SR2KM(0)0W_lG ztpo)o1YC_5DJ>F#CNqfSQlO(HcTEjG+Yu({+G&zZac;QhG1t}zfkx=HDX8!A*HoM5 z^y~WgnoUqTiye)>c9|iffA8i6sCy*uY<$Jp>I zZ-6DLqUY!puAx7QEzUw55)!8BYV{`bN6}TZg$$nK6FWZO83#Y)N3f-8qfRjJdU^Gg zWNrjIJol(WoH3*KjOAN!8Y6hIinZoyQL!i2)-XkIU9-~!ir#M(`0)Y=z}MYDG@7ZT zw2q9^m$-~(QN^B!oYSgXsBfbhoL7$x_958Qs`%)HDp-#9unUiU?N+9+smxZeh|&no zY{GJan15y)VngRSD)DKuK~YJ8PO`f%VQ9FFM%L;ujHR6xHC4m+0?%~UAM9GPUyHMk z@L)&JAo;`;yk4coH$x<+0ixVyjqsF0y2F|a%IH~z_%%B8cwQ@z!-D`zN(oOPF8DBE z6Y7hd-1b_s?_dvAfL!o|<};|*t)Jvcq9TgeS)oMnEC_0_z4w=xlGvmx@%{WICmX@& zuLPu=Zj?!GAD7M8pH0wD5dG0DNkl|0`ys^Y>!~J>6k9D!+bg5Bz*+kDp3v438M!Nq zst%izYlKLDrl5WfevW*yGmt0CHFO6CZ36@D56Orb3?&)%lXkD}9_4YI;)LGxp<>(g z!aXVS5yXC4MZ9mB-{z;rQuTD3g@+G|If8d6$8aB1YSs5RWjGi#r`BKDM+V72>Z4=G z?0fl7*8*Iv6SoPpK#+LIHOLPXLVwgC za3N)6{v_Z04vVRz6N{_<@lamj=9$gP+km}YZO-Sw_HcC%2zwqvTH;QTCh{`Hax|hj zC2dj%d!>W!CrWI;7**8WM`GU_?4hulms6)ZjN0W`+%=c#yy!=M;u<#j0}VTjI<5kD zZB0!>RNJyks`t2;Th1p7A#gKD6km61Vp8Fm#GWW2hygKCtij&N(pJhiQt5@yP{d&_ zS4vwr#`&fLWD_au{3JW{v}aBGMeq9H;l@gr#l-*Ow$$9Rs&qXZPqW99z~&qaFF~@c zaj2@~ad!Pb0zivH5tg+QbTJ1TlHbXVKMPK!GS=Jx3kNL>5|AwQAdmK%Sqh4ea&v>UpmT*QiLZy&=5CF^+e@WmkA z5pT*L`RGx&0! zAjYK^sV8&D8Gn7xv=kTMiv5r`g6^2{U*)~{03=9K?)F_65^LM_MD=ik)DhGf*3>^r zb9%eIUbdqG`M{6mv6T55qnSv}UbgM`Zu=SLz*Q*`ZkB|&b3$WhY0d{l ze#E^I?hIzL5R&vtggcy5hY_bSTLtBd{Q1DV`@=gsOF7py6!fN`*gqUY)5$vb8mV(v z1mKIzwv6??=B?om>t|B^R1g&X!%-*hul?KlMdaJFlQDBc2L@W_F`rK>YPeo?&g92C zQ1#yaEA}=+1IaxQ?#N!o`0>DA=1P+e>Dh+XP{;M=pp>N}`#|wHpHx~OlxPWEi-2Zv-CtLR|mq546 zq-_)IOTVbZM53J?gE}9bWlQ@KNf%3TBw2xhZlqWqA{`yB7z~9GVLnBPA@#Yj1G!UI zM|fe8$nM8shQo!!`0YXy#WNBB5NawO zV)w}$MxRNKX|Ar`yLx_)rT(Ff*F6wd3f*nY%R-!6kv+t%7(x-ay4m!5k`v{R#OURELp=EuUI;Ojn~G?$K zT_}m#bW@I_?fQ~2TS6R1YDNkODXA9>TbSekjXWd4yE@bbIBM@Dc`(txsyDLi)C`Ew zSQlfs9Z}V?t1%NA*8eKa7%01rpEk489ihxpR$PU%E);Hha-Md9NEwMT#7FjK zQra0L>BPunR#!{o&42mbB@p&yGjjHG{6+pF%D_;%0`-JbfDZ;Kom&|IDv!jG=VSY^ zB%8qgL;vbojj%n}xX~7NR0(s|$YD92Gp%sF{ZySA?~k_t9f8hRZi3khI0^AD+8z7r z?I$04x1DVXvYh>jM~wqNw~W`d1p-x)VKfrq-d~bVO9z7o2K#mahJ)t%*&&wgG(YJj zJ-a=cp$~$KO8r7)Gy=r{5v{xX2Yq}OSh(=rmj16i1_iqSE_a$ab%)=f%^Q{A(=aU`eWx6Vy?E%Y-_IB61Ydp_1ubLif=?dY=e#>fhw z=90x<`t&_$3`ul8CUJKS)98!x9plARw^ynv>wVGy zw}XGoB=Bd9Oi}H#jn2dF(?RG9L3*kyJGa>dAn@ozT}luNB}a1=j6>w=dh`9}cLG1p zAm^lj6qq*9*Z3(}op@{2%pQH6k|IwFQm-5XeY>VCKMLFvfzZ-@1AAjQULJL~Z2UV7 z_j+jmT0@Ukz8ooA=9xokg#i~wU`GW$sL$@GV zg+nc15pJ70ZwO(=A5VA8F@w`s!O(s!{9r4cQFje0UOR(jnaP0)yrf%*m5_Ok z9Y)T$=5ZI6p==ND$Ys2wV)bK{s01W#Y&jB8)E;)oK(=U|CTY9(qLZ5I7opA^-aUme z4EHkLS1KX4fMFE$89Kj?nKFU3<|So^0hDs>pXt15I>W%@ASr{vK1ncbg3u}0EDrJ2 zq(;nkvY*-ECfZtu*~+YXFaq*@QW#o#<0%RI`qGJ*>Nc~1r&lWTry#8*!zpCHV3!l% zc$dBRU1{Ihj9_NGl&xD7+wYvc6kN}P{}T|k<7#9RaoO#WrL=D!O8;`jB$|{YjZR*? zgQ#~#0j@QqM>BI5MgCcJC?wyou@)rp2XkLbwj&p0jUplg-8XCb)4KOD+e6*~_1Ua& znK`ek17BD3$4BgtHj>B630~9cLr3| zg7`V=#H)87&SZEd=-Z4+gOJJGxWEGS8^}~PO57onc7|n{Z{Wys$R2rZsOqXxY zhE+t>E}|nH9}+Qkg3&|)I&&ex9okz#e5NG!a#qBzgN9bmL))xZ*KeYUNsR|8>I|_k zILmfo)oz+o`LNXMgmdq-y}+_Wck#hwkZ|i8x(wYrIie@SNYQ7_h6N4%5Hq+Tg31ol zf+n1k@AQJUty|S16k$Rz28DpuX#1W@I8uoD#|!81lBZ77oX@q!&Ds4UXy!fr23aHvhLIB!L8#T|vSlLz4=Q)Sf}J z#wg$SC;j7$jyhz5Z#J`zn6=r{BG}@#pkEq@mV^^87xAE1r%!h&S!n>jm$|ZeFdwuz zK^*!;m$znxf{`u--c4w1(?yAFe_UKJy3wfN%eDHur(H_PG&*uzmiAYnCJBDsKeF#T zHP1Rcis2FEuor>W$G+Pf_FEn&0`88%gF7ld%a%=4q&Z$&GG7@k;<*rj%l_D4h0Ni( z{vL(LX_zRw@ZL$OO$6W+aXxpnaYpzvKVy1GmHVVxzLWyG;sf4>Cmj*zFj(k*u1%zm zjNAz?9x$^n#>kMA4`CcJ_aRGO}DC}^6VAv*$CkLh9 zIGBg80w3s{nyJz~uc9Dq(yFO-m`x>G@x07Tg+e>lHp(@C+1+y1jB6cT^&xWmackss zZ1$Zy(y>OwJQHf)a{iUOj;n?x$5;>3CJ}umR|z%!WzTtW`6#{5LM>rFT5Z8Kyqv<7 z?5G?@;=p8H0pLhcrjEjM!fySli8n=q-Xv-qRfaDu||pM zxR}_+C8!#sWDB|D{z`hb=1zHM)E(6&Fo4h4*GFmd2j$ceW6*cm*wUGJJDXD%|$3k(W^5RaeoG17xG`zv2&8l*tJk&U1o5Hzdc{ zE2VMRWaSCaUFJ&+K+xoxV&dWTjR)XQ3fz%naV&;SI@#+_(K+5C>KNGkQx1enxJ8NAx z5t!vf24u^g?_Pe5Y-;JKujflV58J1wJR6+BrMJ`E^0`9#60Niae<9Eb)!g3kbVJ3! z49)Q+HgsQ>ZjlMsKd{@*t)f31giCZQXKgIGwvidqvCTfXO#X?QDf?RJ@FQww0_79y ztOr;hS6`Vg3|cP~U0C^hC69OMJh5pJh&@C}WDTuk%OH zhj7$7)sufT{%x2rE7Lq|U(;oeFZO7tygq1fvNevye;o@-{=v!FIbVqUAte5sUS&<^{ z8ITBBgB>8IYQvbfcOQ#_mLn21rR?`d+}-D*^qTdy_m$W+t16MS`*|Yew-Om-jLL`x z&)h^f8s>83r;`)dYMcr6Tfz{TuQB5=XAZP?nq>ONB~oAr_dn8Y^D^VjOxjTuK-HK9 z0>piKf0maV*$~|^^TB2YF93o;tX}VToz=G3Nh2D?xd9g zb~aHCyZ3IwXg!0hgbz0-ksez0v#*I&qpGy8mAD zCf=;DkPnDad6$QL-USg}erZo2u~py2ufBRF-b)>(u1c7EpYPo}n5hihqe3?fOpf$- zVlrSx+rh`w7k_TxZFE`x25eb|H!MPo%@kE$y->k{+DUocc3^l&-snAgrfr3?nT^IM zU9G;y*UaAhyf0vF3VX<{9#&xHaQ7m%?Zos;u1Osx7~f-eFFI7+`s`$iN14_>t-$R3 z;ni&<%>q!v&t4s>Z*IVjQ>^0|%H!~~DO`E;yDq64JwB_EY8wa`0_^c(pv;<@i%b^F zcV%*Mv&~ohDotb>+I9FTj;awx>YT6K>5G2i@|HKg8PX^1mc17WPOCesYKTruL#q^Hk9`7!Uk7nN-b?xF#D>VCot0|rbXF`O6^k!8V+ z*3{*^LrLF-YdGGf0sC@|Ym>}EAD$2G@&MEW;q3^jXO z$XC7kb>S-p?bfbGBG5C(ZsqLWg%vV@&G8XPEAbFQh@)Ol>Rop1b2upMli%65tFO;F zW1NbreD^d5c#HmG*`W~pvULD^Ej)T{kZ$j02~XhO-_yhv{`8^1+IQYLLJOS>fNDP{;^WwHDhZd zDa@xqcONnCS$9kMc)QsCGQ#{eNg_6st*C8#*F`(p`WTwc4~ft_68B-VzRsvOMwh7u z5lzN=+jaCVM|$6js61}`+n0#<^@S*GDa9qUU4~?(fSv7a@R0{D8PQ00hg5)>kwr$f>h7wZ8}+R5rZa8)PA;=sTxja;c8js_OhTS)}X}BV@q7 zI7U3t{D&%fx?1vYOdU1#UZl~VLZWnf>Vl!UbV?CC{WW)mK?Dn!G&K2t6plQD3T3k? z5Wht1Nr8eRKuB|?0;pAyH@FAKZX zP^J2i$~3)6^Hu(3jjo=FSruXqoM0jGl+!6GDd%SX+gwc#djnGkbW28{RmRTUcxrJ^ zSSzOSFXMmPTH4wk`7YfI{U|O@4(5PPq4XVs`C4FRo|Lfcj5`;RvNLySoAt{AQc<<0 zru4ydlA;`I+){@jogrP=0g+Pos?WUqX_lBI@iD9a`ulN(eYMbk;5y->*_ExQyxihmusDY z%cIRj82?X5{~M94*w{W5&ENi%jIhn*VH5Jc4hlu9^;)_Nh#MmNJhz z_kI?*8k3h@Wge z)ncbBKvs5t@?8mh+&^fqZ8unm^O-bV!jilel6{BweMnFq3OD#uA$d&)h|4FZWWf`W zrrZ#T9tQ7<{aD83#Hzn<3(-Vc)sR_%7KOB)2Tzgt?7qaK*s+9ryKrP(ny?RDIxhqC zG1IIJa8|rSvkXLNe>>}#tA3lP9)Cw;H^Z=?lHJhSJYo83-)9?h^5&#}mQ0P1GSLl( z#@_F^+;?cFtu^&c1}lK`Xu=}_GL~s_kOH?O;FO;P`DGV=Wqrr;*J?O=jX#{H5(?WN zr~>l(a(=g3g8NqslPky7=)i@PG(sLg?3wYI!|i=C{{b9O9f=#F#^-df22iOLKwk&% zWvt$L13!9B^yqRaaEd&3X~nq%BA0)JP&C;POl2?Dw`-7Nk?BZ~H6mBJB@h`S8pj~Y z;toYI6CT2F5M#Lfl8I!5^_S%HKi|zog9zgg|FmR=7~Uk`Dw^-3(e19L5D)%TlcHdu2J@Sa%P(3xW1YLbv20kfZU%x%d3o@uI6rl8XwakIfZ54GRNT_f0SsuWSKLm+K;KqFsv zt2DhQ2%)$ucbV0A47nTH<1!sc4sB3>@`!~8!Lf2kK~0Z{N)0`z;7;Blz})zqfr%f0 zLHOy#JWXWee2!&gO6k(xq$%Vaj;~zJpB1bO0`T@vvK&U~G#lQeGldV*pns~pwoNae`Jp}+j{5k2vup?r)OLZ%% zcIY84hLuIBk-0In)J6e=JdlJQ=QJ4pMV4IWSh7HpT&XZlvd8l8U@Z^nliy-e$kvmN zvpT(NzQ1K7%z$T5Ag?G8iphKrzQ3Eqd&sqfV&?$x&c6_8d>{sH*Ru*ZKi$^a!&VYm zYCn&qRyA^g}H3g}_qlC)0vOU93&dw_Fq2C`W$h@56q z;!r;g^3zV}DnA=A{7sAL{t#o7nk-4)H}JXMLyRS+!K9h+n^c$$;s8!!qR++8+Kx(d zMJaU^>-N$FiUkLMJ*v70h5V*H8$|HuKnDWzjz4URLpo4MpTB}pis7h-*ch{3Ej*=kRVtq!rm1Pu1@GmYsLEHroby^YulP z*L#+#{N3(F6hqxlUu1jef=`}V;QjT(Voor;n#1Jz0Ow$TXNfY)Z9!u_a5Sw>b-MU` z1-~}a;TPzhtD0JjCq^5j1$j=brIQRnA9wu1>;D9)4Zl5flI2?=e#!Mr&9qWEN8(6_ zX8Z$;gm&clVR`Y7sAV;LyWq!(gy{Ri%!gHHTJ&d(tfQwg7_-pxkauVSF5hgS^n#Mz z&_Iny;8G`u{c4ctS_qRF(*}|-qj7RqU>R*?&<|16&vlIiS@ha5@(gd~*5+J>G>v}n z-cgvC^!%}Qa%T$@kCGv`vF8af@T(K{gw#)MKUJnKVd96w#%0AeG?jFM7?R_I>Jp>E z72d%sC1r(1CuE#IwWRf@QP~#b@X{-88&O+xK*BO%++~Wla$K!|Po}DEO9OylDbf}z z_1Jf50v}|-)Y{eYRb=}jV^_qyw|W$+TO&Lv{OfRlQm(vbT1(f&k4eF2G|%REDUspi z_o}?-Nuw519n3uiUh0Xy=O-UM^ck}mm7yhNWKr)R<~1$|Gr}UZ&#Cpm6t0aT{4-R zot2%7i;E6{MbW`R($vM0lva}epEXuCcJ6=gC8$X`g0m&`Ny&q=)*(wLP|>me&pm~Y zi}yeG6i&AP>Wp%-|I-<*yZlA~iN*duyF5I6|Jz~ZU`=3i$4EH$q^mRdKZP3$R20{> z3r6ZO~R5GKZ&U|R#OwTHu!0K-!6+gGxl^jyEE^;`|khqW`?m%GZ+M7 zC=U%m^dczBXnMnzZC#pgTV!F7NV=Afhv~|?>05$}4CGJCpCd1x)4#%RRXRt zU4f4MhES=07V+LkxJH5N=NjJiB_oEWOd0lg97V%LJ`(6 z6j@*x+a;_d1~AaEQfvTg8OlcnQ=L^bMS)B%p8&I!bu4j}+YLO>j3eO{O(FW{$|8NP z9Mkn}#cKuw>PlR-z+e#FWT{eWvNAd1ii257HllJ1x#^+?8UuufkUNzvA^J;5QR&)T zwch|ry;+??GHk=hsIp-|p~yCx>-HB&=qFAIy7%9r~ien93}68)LFr zEk-OeCbJP^#*}a5SU4GN$4M#-t=~EJ-w$;>f<5wh(~tt zId4@)9Q`D{DD>;UT#WCn%iq#q&VJ@bPfX{Zr~T%=n4~@TT%W$|tnNPYx0@Fp>^qqA zusZthVf;_dGqX#hW}GaS$8Qbjdpq^&tp5aUUXvD^*V;Su$V;t-F=vY(tloKI@0gEz zcP!q1?a=(wJ34-P^?+mNF8assCd5ZO@*?L3ojkmC&fvDJ z5mU~TpSu`v>gUPx2VD-b`QJ`?cSX?;#V3}p&He7u$Rfw-#E}c5%7QMAMwiE(7!$t# z>c0Zp+uqO7RSe0SxjaUsa&;#ex5h}gHH8M2w6Ce}Pg+Trw30}2>L$69wr2!ma#%_% z;77~Sf+bF)sF3WnOUU81734v!CsG%$YYvt4xh%PJnIzQney9IQto7MZqh?t8>i1;i zf6;dF)7_WM-81IbewCTfX|<<)d})7zc(ozs>1~l2nVq$Bz8SHyCbH^9{lNv$3!Uwm=Gu3L z{X(jGZAtKj8Y!pn*6U}@xwVF|gA@E)t4{x@pj|i|_RUau*5FrI^?1;|U}Z*b_uhcC z;V1f5_o=>-A=6_Ib^Orio}`0kjn#XD(_&6!gtWyb&USuyEA*9#(y}8)j_;_90<&qnZpBwYQ@ax7a3-cWl zU)INix2B2+lZy3uev+qxO1cUvVRs0~g#94VPom{Bj)0#@;<}+j`d_P(Y3YpVdYkwe z0=-RzM*?}cK@8$0DPCeYSz?gF#bbt3NcV&?1^e>+6#e>!zcAD^8~AIf+UY2yXJc zGY75VtTT+{whRJ!8m76KtHhzrC<}Uq``{~%Ac8orBoA;mrHjmfOf18B#8bcuP`Ey;g?xDx{>XUR3V~y_E4)p`!-MyvgNH{ZWg^RRJgDc(#Ak;DOjJwg3P}P4AN-Ye%VOBV zD3EpA!jlwE28YlOV`Yr)6G0I~V4;E`7O^0j3dYHZjMyIRkKi59hubE)1j5nQK* zVXuZRAI2CAu0iA#_|w9$jC@t3k_s5fS|%LJ(lV`5ghRYqXz&j#mJ}^x0R+?$MEp|% zN1*wnVuFCLmL4w)IzRI=VqIDXg1&SQry|Hh#A?mYLp*4$z+;~F4fR?q^IANC1v_}~ zTu=PY3P`(HU`3?W1j>Ux>NwC@!&m?#=zaOh&Wv!K|avSWi>&O)hE3uvO0}L2`-N`YbAmAy4W>P-z1Uq z0)1e5VI-OE-PFR!aC<-lLmW6j57VZx3!+GobUs!vZBJ?@SP*o07)+zXQ&>G7))gQq z-Eav(^UtUFAP`5Jc8Eiw)`W`i delta 22534 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 The Naval Research Laboratory (NRL) reference implementation of the - NORM protocol includes support for 8-bit (and very soon 16-bit) - Reed-Solomon FEC encoding with additional support for other coding - algorithms (e.g., Low-Density Parity Check (LDPC)) planned for the future. - The NORM specification allows for different FEC algorithms to be applied - within the protocol. The current Reed-Solomon NORM FEC algorithms in the - NRL implementation are limited to modest code block sizes (With 16-bit + NORM protocol includes support for 8-bit and 16-bit Reed-Solomon FEC + encoding with additional support for other coding algorithms (e.g., + Low-Density Parity Check (LDPC)) planned for the future. The NORM + specification allows for different FEC algorithms to be applied within the + protocol. The current Reed-Solomon NORM FEC algorithms in the NRL + implementation are limited to modest code block sizes (With 16-bit Reed-Solomon coding, larger block sizes will be allowed but very high data rates may not be possible). For channels with random errors, the current NORM FEC codecs are often adequate as there is flexibility in how the @@ -59,17 +59,10 @@ sizes). The NORM protocol is described in Internet Engineering Task Force - (IETF) Request For Comments (RFC) RFC 3940 and RFC 3941. These are - experimental RFC standards. These documents have been revised in recent - Internet-Drafts and it should be noted that the Naval Research Laboratory - (NRL) implementation of NORM that is represented here has been updated to - reflect the revised protocol. In addition to this demonstration - application, NRL provides a NORM protocol library with a well-defined API - that it is suitable for application development. Additionally, the NRL - source code distribution supports building the NORM protocol as a - component into ns-2 and OPNET network simulation - environments. Refer to the NRL NORM website <http://cs.itd.nrl.navy.mil/work/norm> + (IETF) Request For Comments (RFC) RFC 5740 and RFC 5741. NRL provides a + NORM protocol library with a well-defined API that it is suitable for + application development. Refer to the NORM website <https://github.com/USNavalResearchLaboratory/norm> for these other components as well as up-to-date versions of this demonstration application and documentation. @@ -203,12 +196,12 @@ npc encode input originalFile.txt - The default npc configuration is XXX. - This will produce and output file named "originalFile_txt.npc" in the current working - directory, The original file can be recovered (decoded) using the - syntax: + directory. The default npc configuration is + "auto 100.0" providing 100% parity content which makes + the encoded file size roughly double the input file. The original file can + be recovered (decoded) using the syntax: npc decode input originalFile_txt.npc @@ -216,8 +209,8 @@ named "originalFile.txt" in the current working directory. (The file name information was stored in first "meta data" segment of the ".npc" file). This default naming convention can be - overridden by using the npc "output" option. For example, the - syntax: + overridden by using the npc "" + command. For example, the syntax: npc decode input originalFile_txt.npc output file.txt @@ -247,13 +240,13 @@ commands included to support transport of npc encoded files. The distinction here is that a file that _fails_ NORM transport might still be successfully decoded with npc. There - are two receiver-side norm demo application options that apply - here: + are two receiver-side norm demo application options + that apply here: The "" command causes - norm to not delete (and attempt to postprocess) + norm to not delete (and attempt to postprocess) "aborted" files (files that failed reliable NORM transport). @@ -323,8 +316,8 @@ <numData> Specify the number of source data segments (packets) - per npc FEC coding block. (Default block sizing is - auto) + per npc FEC coding block. (Default block sizing + is auto) @@ -332,7 +325,7 @@ <numParity> Specify the number of FEC parity segments (packets) - added per npc FEC coding block. (Default is 2 + added per npc FEC coding block. (Default is 2 segments). @@ -345,10 +338,10 @@ percentage of FEC parity segments to include per block. The "auto" block sizing sets the block size as large as possible to treat the entire files as one logical FEC block to maximize FEC performance. - The maximum possible block size currently supported by npc are - blocks where (numData + numParity) is less than or equal to 65536. - The maximum buffer size can be limited by using the - command. + The maximum possible block size currently supported by + npc are blocks where (numData + numParity) is + less than or equal to 65536. The maximum buffer size can be + limited by using the command. diff --git a/src/common/normPrecode.cpp b/src/common/normPrecode.cpp index 75bc83c..853706b 100755 --- a/src/common/normPrecode.cpp +++ b/src/common/normPrecode.cpp @@ -112,7 +112,7 @@ const ProtoFile::Offset NormPrecodeApp::SEGMENT_MAX = 8192; NormPrecodeApp::NormPrecodeApp() : encode(true), segment_size(1024), num_data(196), num_parity(4), - parity_fraction(-1.0), b_max(65536), + parity_fraction(100.0), b_max(65536), i_max(1000), i_buffer_max(1500000000) { in_file_path[0] = '\0'; @@ -222,6 +222,7 @@ bool NormPrecodeApp::OnCommand(const char* cmd, const char* val) return false; } num_data = numData; + parity_fraction = -1.0; // explicit block size overrides "auto" mode } else if (!strncmp("parity", cmd, len)) {