From e4d18bccf4f40be2fdfaf2e8cda067261aa42b1a Mon Sep 17 00:00:00 2001 From: Ozkan Sezer Date: Thu, 5 Dec 2019 01:41:50 +0300 Subject: [PATCH] external libs: updates to opus and libmodplug, rebuild: opus: - bugfix commit 8493bf50 from mainstream git, add missing src libmodplug: - replace GlobalAllocPtr()/GlobalFreePtr with calloc()/free(). - replace POSIX.1 sranrom()/random with ANSI C srand()/rand(). - fix wrong translation of POSIX.1 sleep into Windows Sleep(). - add FIXME note about the non-Windows BOOL typedef. --- VisualC/external/lib/x64/libmodplug-1.dll | Bin 252928 -> 252928 bytes VisualC/external/lib/x64/libopus-0.dll | Bin 328704 -> 328704 bytes VisualC/external/lib/x86/libmodplug-1.dll | Bin 245248 -> 245248 bytes VisualC/external/lib/x86/libopus-0.dll | Bin 316928 -> 316928 bytes .../Frameworks/Opus.framework/Versions/A/Opus | Bin 860340 -> 860340 bytes .../modplug.framework/Versions/A/modplug | Bin 395624 -> 395920 bytes external/libmodplug-0.8.9.0.patch | 2 +- .../libmodplug-0.8.9.0.patch | 1226 ++++++++++------- .../src/libmodplug/stdafx.h | 28 +- external/libmodplug-0.8.9.0/src/load_abc.cpp | 8 +- external/libmodplug-0.8.9.0/src/load_mid.cpp | 2 +- external/libmodplug-0.8.9.0/src/load_pat.cpp | 4 +- external/libmodplug-0.8.9.0/src/mmcmp.cpp | 6 +- external/libmodplug-0.8.9.0/src/sndfile.cpp | 9 +- .../opus-1.3.1/0004-opus.git-8493bf50.patch | 28 + .../celt/arm/celt_pitch_xcorr_arm-gnu.S | 555 ++++++++ .../opus-1.3.1/src/opus_multistream_decoder.c | 7 +- 17 files changed, 1310 insertions(+), 565 deletions(-) create mode 100644 external/opus-1.3.1/0004-opus.git-8493bf50.patch create mode 100644 external/opus-1.3.1/celt/arm/celt_pitch_xcorr_arm-gnu.S diff --git a/VisualC/external/lib/x64/libmodplug-1.dll b/VisualC/external/lib/x64/libmodplug-1.dll index 3b02e5f631e736dae7227d9ea96f9e2ec46c920b..83c8fe67765b7b7c853d9153e2f21fd71651ce63 100644 GIT binary patch delta 22651 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 auYs_KY&szrskm=R{*qI&>6Gw5`2PSlwG%u5 delta 22817 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 delta 612 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 delta 13594 zcmc(l33yFc_y5n{_aej)BxnesF%LcG&gY(U&rJ~X5GrOBlv0NVF|<`T6-tB(2S*KU zOf{1VP7CVsX{fxdv^}g+(dd>9i?}F0`P#D=cbQw_JW8!_+}Si6XVj&sr16gp)-LLo2pP z7&$G0VVLF0yW}X@t#qbSDN`roAni^nZ~vMy$+^kKh{9htDRqs}q(B*FG?V_yQe!x& zrtCGo2+ai}ORpSKDwhi<%azvUx&cT%~t;XPx*>lsOXpBa;&SQ*uItF}Yqu za{GvY!YpNdc_AVUg-K6IwI$I%PTo}L-9nigYjndte;8I$3>AixjmoGBEsS4nri`+q zLM>%Wg;3H-Ib5LwsjgHG7(=EiQv#xhRmlw4MC+v~!z)fDHI)k$i%G4Fvz5+J@=3l{(EM$t-0+^S&fiNpIeOj8pQPH*B=>(KEH)NVmy6XJV88m2|UC^5o)_$pOhj9?rg>z$M)ZN(sw^J*MqF zopjS!(m;-{fj{YX`*bNo9;Qq#PA+$INbaaqCBIbz(po8M#f6Q{LLelqf+zG(O44$q zX6Gc-(8H#uBDHQv!j!nyFOe!rYU^mKWh!S|e@Fw?DpT7elT{hyrA35!|L*moVnE6}mG!!4qVV^X${q6yNPX19&xN2Nt~o^)1T?S6~AuDsksz_wl3qYXCwfgWyhQhC~A zD7me?(z7dhIb%!DCxljBt8DBwi!NHCwC){7hAUlrHzwVb3B7|!1?9co^XZnE8Nn|{ zP|`kwj~!5hWGl*Rzmg-$oY8a8aG26)|Wy9<5k%k$q##XLGf)#$UmHx0e zBYyIbN|@OR&kRcQXJ_=7dCowJGn&4)J%AQDJDKo@ka)u$| z_6&_QB0m~v;S%j?W1<;JHTA<5WNL%B`dM<}!9>Df+Xc6~tH3!+2$THeTA0`C)ncMZ6-wUFUTH@v(F%i836o-VsBc7*{WN`{+NJ~POZuy` zJCJT9P(9UwaHO+p>_}{M?fa_Ok%W@>w0<4Q50t2ytqaK}^yVe)ZdZ~-Nk?r;50Yyj z>ojL?GL6zoceUMph&O;V*LDvf(X8$FC%AY`7}ZUkA41=p^O zAoB=`QOAuW;|SF*jwJnzWS(Yzozx}deXZwMGJ}%Z+KF+*KuAsX)Ohk6DW~SWK{}H! zwHoncKOw)U`4b2m@l}Ez%gH61KcP=bY-P@Ch}F-1{an&d^};P9w1|l$pfX8UThAaj z$Zquo4|z;BYr%br|bh}wJs8A(oP3m1^X269e~T|`=tAzI=h@-C_W<;(DNY=8mVex`mXm5fF| zKyWbaY^ya;NSKipMW~WW-X!I;OqE=uG^?AobOo7QjZ(kP zs)>3Ofj9v921JO&Zb9>S`}#leYZq5GlUDSz3R<-jB%F}dDti*+oumysNkS>2Zt~aIBUWws*N8!StG`xsN{_3~TEaKv zT_ZWF-aoHTUE?p10p&@HjY9KE?8fi|-twI>$; z?p@PAXrHXV0@n1=6Nu|#^>Y^;-e&W(r`|O&x-L2(=}^R=A=fmRFWB8gzoPY5TZzQ0 z4WGhK)m{>9)bQHWr`~H7a9}M+Xu_aIVQ1*#hKa$R)eZ1JlOXLUDIkUUUxZ>`r1B0QQ^nx&h0dtGHcbbJ7`SR;*z&n(CnPa zq27=*^@|;pC1&mM4vGW3SgVyzPZLL4`F(QI6K_HzEKp@{@amHM4Kn$je(CMcmJ8cH z_Ii^J1rHjM%U!%dlXDleBPqeN)6|B$=p54~^njOn$~y(g(P!{X^oA^lCi#drWR)&+ zy&>Cl8J)i%`W!~-4arw8?4qjqJ7{5!J_c{xCwoI4`tsh8B}nKYSkcJjlvMbsq$Hs5 z6LozCwKhmaHYMy+eDOea4Ed!LSDLOelo%JO4>M>BlBd47o3^LXjnpx_vC~u4l-)E8 z+ReKWd8z94-S9)6T6YhPfQZ~fN8tQfzX!{3NWHL!?jZNH=~z;rChVtaBvK7IK!2)n&o@l{H7a43=O?m)1S1zspf|;z6qYU3t4)Iu29&B$qb*JF~mFbaKmIsxwTgz7tbidGI-= zppX5p`(1p9?)5c@uS!_?(s3OriR5$Y@WV6_UinKekXH;7rcJ*8}H4g!_ zO5Kr%TLy*a^AIzuRM!`D4QwubL0_c7Yc=CB`ZUnemU4LBmFYbFT43=j9*UkNl)Xse#LaZWc{+9Uy6RY#4p?X<$S;F1;2Wg9`w_<`z^i_}b-XfJ(74b*RwpIBmZZkQVN z1D$U#J@nc~R4$zK0N<%%@6A4y5La>-9*xe_cb|SH;t)xRPDg|kj)&2jR;uw5F4_ia zn@hBI*dJ}cXq#>n0;3xn^w4Xi4u@s=&+mJ^g@@EdmvC6LQV&8^Wf)Zc9twx34=>Si z;vWrFF1+}g-VeO=@9x*@E&o)ihQBJ|O7)i(9@5qn(2tCyo)+~lYAl^>K@JXNIHbMW z=Vv;h)Jtc4%G&CgpXq40*HuWzl$JH~d2o%or;xr2pWCm|Wi;oSdh!~5t<)yKXR}z1 zzD|$ArpgVv2sT>U4K(LB%6VAQNnV&%`xjcB;ACrli#{rC!QpFRlgi!3#TKt_x=r`! zy$mg)FPGZX@!7OiKQAh=aonNnber$*(2=D!@jjc?YOlM01VNln*-_(u)h|(2O}R&% z6@3wsR#;v=agT=L<$moReNwIpYtNE%u4KyvAWggT81E{jh(<0ergO=sT5>UUcPUqJ zO)op%!7#LnXUNN$auEpclPNR(GUZKuGvxxn#%9WKU}G6{+i;YX(jRs5K+pi69O;*3 z^Lm}X!6T=k)3OG7KEMB;b!E%{chlm3?#>99DNQ&(9?G^nJ3UoKYFKC-)$?1kHIsZP|dId`d@CaOd9)=gNJYT`!1SKO6|!XZQKp>!7y}5-lH+P2e-ysWLxUGFufZ$c=r9oW#TejIv|9)D>v}M&To{5<59EJ=29F{C4?Pfm2)3Zq1Cd{%15Dx{dB9Tx zqxk>m0TQRJo?xgzt516c?v2Zmi-uy2K#sb7lA*4v50W8(9S%nUW*C-Sm!Jsg0+0`K zKsrbRDo6!$)ZZr=Uh+i3wC=Plc_?@p=;`Ot9c87I+D7^9_4;M&m6n(4gfivUKk9ho zvB-4q)1Apl#27&uNCk;tB!~f#fCG&|5HNy=9?TEqgEe3&NCf+5_=rb34)g-iem(1# z;eHw9sr^RgFm!(WZ zx(G1PAN8m8d@1?A!4^zWuT3#D^_*&wE%QK)$d>2%Wg_GhAcI)Y1L!s{0lBfyb|7RB z@^>ITU=kP!V*U9IC~Mq0TP|vqEk{Cfpa5yDWwy*9J*i{1e6~}zN6zV#Eq?&s1-kNi z$o}$vkZqr1%RWc{yf!Cw^gO>qy;5B?Sn(e;`T(|te>3>f0i1`;F_3>1-upRQj%$WL zdWJ%N23eL!=weFCwLQ}eU5V#~p4sxN&!FqdG7)(l-L5qK-=tpO^&HBy;65FeOHb&^#NKG=8B&qg^%MO(TmDb-f7R~4 z>v^8(u(aTBEBWh`4y?4!KatP2Tm9KeiE5SUh8I0S{SZ(8fUSMA<>wJI&{r0PcH)6< zmp%Ybet-JedY4hA_nF@hyO`b2G3T~D?F3W%*Ew3EoGv7C|t^Zy5OxDm>f3{n!8Kw6tvBU+7B9{!=0dN|lMI7z^V4=;^Z5 z#7uR{>i)0Oou29Bf7)P8?UBcDk$7H9%$B`=BHzuHUrfrD&x7z;+48ak+`^C>r(@~f zK^jz@kuA>wPr+0;;}&?BoGrgG4>#^y=)f)T8gv6@|3Na+e}U&u%7f@^4m$lAjeV4o zEuTiEI`8>pzd6~m&YAhy@&?${nVc;z1R5BF{NAZPsi)OxKAOD=`8L{uJP9_vl`S_w zelKW^NsURUiWr~U8oBHG&o!q>vtWzs70 zhrwMCzAjrEJ0koV%>JTkB&y_q^xGv> z$K6ELc-Te)7G0Ef{}B2d=u-8vGJ4~deRAX-bPZz4=!2k7)O8@PjJ_W9Inbqnc(wXc zL+y|vB=dC@%=B3$f>gbzCjO(e+puNO1+~I5LqktcH_C(q78G^GQx`H0G94r$9S>rV zE`p2%`Q0g#ihKdmaa|~r1DOiaK^h20Sw3VW?BXDEkdNyDd)THS-D^=GGX^Aq4;BS# z8D zc7Y?{2XG%$T8AHu0UPK527&}I3oHg{ARQb4C%|<;*9S5+Kr0XlV!(JX1KpNNq zJ_YB%_4R=s<}ngM8!$$of13HF2{ID&0R6$MKn4k52ABtyfK}jQumkJ`2fz_<0-OT{ z;5xVmo`L}QEeM2yh>tyiOdBK|pe^VI`U3qk+%Ny1ddP#>{}&hiKlPCG-(B=~9#W^Q zGFD^T3~r9gmu0 zwSlV*>!|Ae$S_$AN;A~a64DISiCSf?Auu356XyWX))dnMvUj~9osw78Pd+w8dFDHo zJMtXo9ltm>IJ2F{oj*DsIjaec1y<-SU>zeF#sP8MZ(Jyd zW0=Yi29Ir&jfuzaEs@z_UTbM#tzpZt^|r4Pp-A-U`*8EPkE7pNQhoYX zY$UsrJ7#Jma^hS!?9&(~2;vpf2d4A-AkrBIKM!I?m`|9`n13+eHaE0%vn;l3wR~zh zWI17ZWT|WQq*#|)KeBGN?y`PrJ#0N={g?H&^^w(Ut!S%h3%9kfS!|N6ukAJ41lt1J z4%>cPp6#sds;vlfu4=Do54A_w+t?lUw)SrJvGzIkb@tEfU)gWiAKL>QFF4vedOHR= z#yTcB-f_%vtaWU5>~b7%eC@dGD0EchYw`{F#vVSBkK^a@EBQ72Mt(cLi{Hl|;*asC z`S17}{5}46zPz)cv!&DICPq270!>HSjriz|?@tpXB z_>*{DEE2t9fQxn6T!O2eE7mp1^_FXqE6tVeI_mn$b;@LLx2hDoC& zS(+%lEzOb^NXw)TrH#^F>40=px+WD#52UA3Id?6$#Vxt}yWe!DxEH(Ex;MLzxzD(n z9EMqi)v3wWV1}l68AcHhWn)ZC--AFlaDJ2qYGlg*kG;! zXXCnY!?`!Ph1?2mJ->&~;q&;b&Ie8^R1%tr?L}FfA*$joF<-nWhDtVRxHL(cA+3-; zlTJuXLCFSUj+oDyub8i!J6i`@M_R{OFWBze>f2fDnO8mbnf3+tDtvRkJwJ+{z%Sr; z@SpOWyR*BWd$^k^D%mN_d+Z17Ms^o_j62U=1ESf=Go>|=3VAI^CfeT zrLN^N|A?>Ptl=CbyeZ5P77G`|YvLm@#MQzT>FVnm;nJjo(s}7ImZlDR=z~4uAtn1e z%X-ZE4V<{rzRj*7hLiaX{Biyg|B$cgs%_zqvp*ApG$tKwuaQCuZ{E`A{@(l$iMN$Gp(J|ZN{ zJ)zzv<38wq=*I7?^)1XWYzW&Mu`r3<&mLxvv){2+ZX&mcQ@OR=UhV*w$DQE5 z<-A-qQ!^81vYYyv;!I7BRlQccF!WmdhE*mj%Aqf9{y|oDn?zy*}(amlM!kQt%Y{NKp|duTiC82 zFf3s#x?lyiFFS~x%FbaIu+gSorgU?bxwmDeWr=m8^^onljkibJd)bHJG-M)4$w}8m zuOCB7PQ~}RrCfW{a?@2)SC4tT`II?9m?c!#4dQ&p#VpeCq~tVX*a!A;{CSBL%jRZXF`r?$_9*IY?@{ZwC_Mr=>(4r_H6lkaOU)P%AkUwXVb*USXb zl0n&7PoThr`!e5HRtZcbWv0RQh&_OB$hY7fd?$VYKb(JqpT^JTRelwYsY1S%vk{J@ zC}$UEKj(U9TVc7dL1-tQb``j;x$e52xQtR2sg~40Y9?`#Q)(x5lg3F?B#$&#T7;dk z4l%H&Un$z0+ZTH@NbxH*_tiYdhQs%@`rrM)Nrx-daFE}RjJVxTCA(P9@@ zFIS>#PRS*L-```fmDw6>Cu=)4YMlGJ_$`u&uB(!%Rt*ZI;h04Xh^XMQdmK zK>JgBQ-{;>65keQtY@e5ptFhK6!r`Gf<^2i?m(P2b~#-ix;}A*;H-OJT7&Hp>Ym|V zBi_6m+r#|+0J$8U~Gycbb4#W~M;QM@Hu zrRMH#CCh`Kx1(+q_6OF>j^s93_IXOiRl~N$5$rTOw>Wn?bDW&8Ky2n_(tI5)W4B-* zwBTIaPVOMr)Z{cZH9O5K%-hYiEiG`9U9d3d_FaeS@H*D?iG4?Zx)#j@gb4j;*+anql^@@M|%D{u&?bZ0;QFeA_wKxzM@RdD{8C^R_ck zXe6{1Itl%Sp@J+-6W$dR;X@%;_(muceig#S=D0%M5EqDB#UtWx4gVx`g2ThdHvp7a6M{442}bPqefg1fT2t~=b_%;V$lfxyK59l(mX9eT2{>~MB8JC|L@Zf19~XV?quBe=0L*OBYZ z4dF&`6S%iIh5LXTVUlq-OgCLL{cQTh^uQEo4l*}3Ti~_!=CS5^=2Up^U*>z}$7Z9& zQys@el%=Dkmt~~ob<2mA&n-tSUt2C)iY#7BBdf!jZ9Ql`Z9Q+jY+dfy?)c1c)Nuy4 z_g%*mM|s@fFY;zSil@$%&TY7mk2&uT%Y$OimTI(*Un=1a$HTHxR2<;lTVrT z5QMGDnpg+hj_t*cLTqHSlndZ$at(1+t>u2>YMCTN{dmlOo@tNiu!)!(n&ZvCnR{Bs zSyW50>ue)# zF1MKb7$JO&JH=h#u5j16yWC^d^@*XmXNM`z^i9cXJ;r#enQNJk;uinFo@Vdr810yj zp?wLb7du+=-T1e02z|-l#ZAXJt2^sEXFC@-H#l?g5-KM&6dVZD zOfiIsZHqf)I6IMTiFd?cE`{5Qd*mYbkP9$1@|fC~+M0UcNip8E(NxY{*<2GB>wL3f z&On$HBTPoYc?pP(uPnE4<2|+1u=3Wn*6!A!*4fqtctPH`{%$qmJ-pU-$o7@(jO~go z$R1+X@A$shZ{p%yEUpv}ipRy<;sZR;>baV_dbkF-hPuYN6xT}EIv15HNrw;DOEPS4lhUpO@L$?0j|;JJ597I?eX3Eg8dIZ`)+sW=k)RF&EgD LXpeRo9#r~2WnLa^ diff --git a/VisualC/external/lib/x86/libopus-0.dll b/VisualC/external/lib/x86/libopus-0.dll index 9f410b060411d21b703c3b43afa3da0cfb2eecde..efd0a59438018d790673b25f7cec4719a22384c5 100644 GIT binary patch delta 605 zcmXw0J!lj`6rRZ}{#|`;o|#cL&zJn8ldIJx^n@if5v|RdNnbN2h8eKd?j)5^PQ>m5ce?BHW^!X|ma9 zzDCZE%tB3B(1VcQz@o6{uINb`^Z_fo%Z_Pq2YUDm2f}WR6c;W)$yy?u)?<&E(Oa2; zB6lnwq%lHVYE2=h;Pl@U|67NL*EJHBG_phduN^M0nXbh{Z6^vDA@z)VD@7+wkF~he zsx){8nxf$NZR{S=Fxpxp*{j-tk2|*T(oJt4!N(_@6t^7!t@h`#QWdi);*CJT2^kx``3WMPsPbmA2^~4#ZT_=M@uFjc(SXR? z&2cA#BU&dTqc8q*#1+f`pi>4_EgS0mIMi8_r9XPhVIk+DA@CXd@v-Z37(lAU8<6Tv zM-N_vvzwhRdcaDi0O96^MXxY7+opjX-K~?;@T;RbIqPbtWapPsY@0WPS)Eq5pw6{i mL!t7Lwg5eqENeVIJdmX!bbp<^T(>Mrz7Muv^**@;X;#>SGjAt~AaxpFX7dapfRJtt^bC#kiGfjqMq@MAkyk-2Yfb$>N@nDi+@q+svE$ zt;IJGNM=UjI!;ge;N(D7!pgA@G>#7XC!OkDq?66GM64o{)m@b~xs+z#e=#OBMG?qwIL z@euAc{YeI!A3;`p1rebi82Uke9`~R{CVOpR>Mc$ diff --git a/Xcode/Frameworks/Opus.framework/Versions/A/Opus b/Xcode/Frameworks/Opus.framework/Versions/A/Opus index 00562cb3c651fda92395bed1b97a18051ddbea14..21de4ab52dbf1b99a7c170fc5db3dd8d0f59cde8 100755 GIT binary patch delta 49130 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 delta 48988 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 K?X~G!pZ^1lc5WL0 diff --git a/Xcode/Frameworks/modplug.framework/Versions/A/modplug b/Xcode/Frameworks/modplug.framework/Versions/A/modplug index f7db9c865a89678d5845c89a503e6354f2cbbc31..e4418ace7b52141e0c9128e1171c353ffabbca9e 100755 GIT binary patch delta 56141 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 J_WQW%{{iz-QhNXZ delta 55765 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 Ky5ZkvW&anAqrnIO diff --git a/external/libmodplug-0.8.9.0.patch b/external/libmodplug-0.8.9.0.patch index 15aa08b2..26f3caa4 100644 --- a/external/libmodplug-0.8.9.0.patch +++ b/external/libmodplug-0.8.9.0.patch @@ -1,7 +1,7 @@ diff -ruN libmodplug-0.8.9.0.orig/Android.mk libmodplug-0.8.9.0/Android.mk --- libmodplug-0.8.9.0.orig/Android.mk 1969-12-31 16:00:00.000000000 -0800 +++ libmodplug-0.8.9.0/Android.mk 2017-10-22 11:43:42.132552241 -0700 -@@ -0,0 +1,47 @@ +@@ -0,0 +1,46 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) diff --git a/external/libmodplug-0.8.9.0/libmodplug-0.8.9.0.patch b/external/libmodplug-0.8.9.0/libmodplug-0.8.9.0.patch index dbdd773a..b3d96e00 100644 --- a/external/libmodplug-0.8.9.0/libmodplug-0.8.9.0.patch +++ b/external/libmodplug-0.8.9.0/libmodplug-0.8.9.0.patch @@ -14,69 +14,10 @@ synced with libmodplug git -- with further changes, including: - merge libmodplug github PR/41 (timidity paths update) - merge libmodplug github PR/24 (make some stuff static) -diff -u libmodplug-0.8.9.0/configure.ac~ libmodplug-0.8.9.0/configure.ac ---- libmodplug-0.8.9.0/configure.ac~ -+++ libmodplug-0.8.9.0/configure.ac -@@ -29,7 +29,7 @@ LT_INIT([win32-dll]) - - AC_HEADER_STDC - AC_CHECK_HEADERS([inttypes.h stdint.h malloc.h]) --AC_CHECK_FUNCS(setenv sinf) -+AC_CHECK_FUNCS(sinf) - - CXXFLAGS="$CXXFLAGS -fno-exceptions -Wall -ffast-math -fno-common -D_REENTRANT" - -@@ -82,6 +82,39 @@ case ${target_os} in - ;; - esac - -+AC_ARG_ENABLE([cxx_interface], -+ [AS_HELP_STRING([--enable-cxx-interface], -+ [export C++ interface from library [[default=yes]]])],, -+ [enable_cxx_interface=yes]) -+if test x$enable_cxx_interface != xyes; then -+ AC_DEFINE(NO_CXX_EXPORTS, 1, [Do not export the C++ interface.]) -+fi -+AM_CONDITIONAL(EXPORT_CXX, test x$enable_cxx_interface = xyes) -+ -+AC_ARG_ENABLE([midi], -+ [AS_HELP_STRING([--enable-midi], -+ [compile with midi formats support [[default=no]]])],, -+ [enable_midi=no]) -+if test x$enable_midi = xyes; then -+ AC_DEFINE(MIDIFMT_SUPPORT, 1, [Enable midi formats support.]) -+fi -+ -+AC_ARG_ENABLE([wav], -+ [AS_HELP_STRING([--enable-wav], -+ [compile with wav formats support [[default=no]]])],, -+ [enable_wav=no]) -+if test x$enable_wav = xyes; then -+ AC_DEFINE(WAV_SUPPORT, 1, [Enable wav formats support.]) -+fi -+ -+AC_ARG_ENABLE([mmcmp], -+ [AS_HELP_STRING([--enable-mmcmp], -+ [compile with mmcmp and pp20 decompression support [[default=no]]])],, -+ [enable_mmcmp=no]) -+if test x$enable_mmcmp = xyes; then -+ AC_DEFINE(MMCMP_SUPPORT, 1, [Enable mmcmp and pp20 decompression support.]) -+fi -+ - # portable types. requires autoconf 2.60 - # `configure' will check if these are defined in system headers. - # if not, it will auto-detect and define them in `config.h' -@@ -99,6 +132,6 @@ MODPLUG_LIBRARY_VERSION=1:0:0 - AC_SUBST(MODPLUG_LIBRARY_VERSION) - - AC_CONFIG_FILES([Makefile -- src/Makefile -+ src/Makefile - libmodplug.pc]) - AC_OUTPUT -diff -u libmodplug-0.8.9.0/CMakeLists.txt~ libmodplug-0.8.9.0/CMakeLists.txt ---- libmodplug-0.8.9.0/CMakeLists.txt~ -+++ libmodplug-0.8.9.0/CMakeLists.txt +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 468f1a3..34099d8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt @@ -1,19 +1,73 @@ cmake_minimum_required(VERSION 2.8.0) @@ -85,7 +26,7 @@ diff -u libmodplug-0.8.9.0/CMakeLists.txt~ libmodplug-0.8.9.0/CMakeLists.txt +set(VERSION "0.8.9.0") + +option(BUILD_SHARED_LIBS "Build Shared Library (DLL)" OFF) -+option(EXPORT_CXX "Export C++ interface from library" OFF) ++option(EXPORT_CXX "Export C++ interface from library" ON) +option(MIDIFMT_SUPPORT "Enable midi formats support" OFF) +option(WAV_SUPPORT "Enable wav formats support" OFF) +option(MMCMP_SUPPORT "Enable mmcmp and pp20 decompression support" OFF) @@ -288,164 +229,107 @@ diff -u libmodplug-0.8.9.0/CMakeLists.txt~ libmodplug-0.8.9.0/CMakeLists.txt if (NOT WIN32) set(prefix "${CMAKE_INSTALL_PREFIX}") -diff -u libmodplug-0.8.9.0/configure~ libmodplug-0.8.9.0/configure ---- libmodplug-0.8.9.0/configure~ -+++ libmodplug-0.8.9.0/configure -@@ -634,6 +634,8 @@ am__EXEEXT_TRUE - LTLIBOBJS - LIBOBJS - MODPLUG_LIBRARY_VERSION -+EXPORT_CXX_FALSE -+EXPORT_CXX_TRUE - LT_LDFLAGS - LT_SYS_LIBRARY_PATH - OTOOL64 -@@ -772,6 +774,10 @@ with_aix_soname - with_gnu_ld - with_sysroot - enable_libtool_lock -+enable_cxx_interface -+enable_midi -+enable_wav -+enable_mmcmp - ' - ac_precious_vars='build_alias - host_alias -@@ -1418,6 +1424,11 @@ Optional Features: - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) -+ --enable-cxx-interface export C++ interface from library [[default=yes]] -+ --enable-midi compile with midi formats support [[default=no]] -+ --enable-wav compile with wav formats support [[default=no]] -+ --enable-mmcmp compile with mmcmp and pp20 decompression support -+ [[default=no]] +diff --git a/Makefile.am b/Makefile.am +index abb51c1..0bf6578 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -2,7 +2,7 @@ ACLOCAL_AMFLAGS = -I m4 - Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] -@@ -16702,13 +16713,12 @@ fi + SUBDIRS = src - done +-EXTRA_DIST = \ ++EXTRA_DIST = CMakeLists.txt \ + AUTHORS COPYING ChangeLog \ + INSTALL README TODO --for ac_func in setenv sinf -+for ac_func in sinf - do : -- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` --ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" --if eval test \"x\$"$as_ac_var"\" = x"yes"; then : -+ ac_fn_cxx_check_func "$LINENO" "sinf" "ac_cv_func_sinf" -+if test "x$ac_cv_func_sinf" = xyes; then : - cat >>confdefs.h <<_ACEOF --#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+#define HAVE_SINF 1 - _ACEOF +diff --git a/configure.ac b/configure.ac +index f96a28e..42a161d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -29,7 +29,7 @@ LT_INIT([win32-dll]) - fi -@@ -16786,6 +16796,66 @@ case ${target_os} in + AC_HEADER_STDC + AC_CHECK_HEADERS([inttypes.h stdint.h malloc.h]) +-AC_CHECK_FUNCS(setenv sinf) ++AC_CHECK_FUNCS(sinf) + + CXXFLAGS="$CXXFLAGS -fno-exceptions -Wall -ffast-math -fno-common -D_REENTRANT" + +@@ -82,6 +82,39 @@ case ${target_os} in ;; esac -+# Check whether --enable-cxx_interface was given. -+if test "${enable_cxx_interface+set}" = set; then : -+ enableval=$enable_cxx_interface; -+else -+ enable_cxx_interface=yes -+fi -+ ++AC_ARG_ENABLE([cxx_interface], ++ [AS_HELP_STRING([--enable-cxx-interface], ++ [export C++ interface from library [[default=yes]]])],, ++ [enable_cxx_interface=yes]) +if test x$enable_cxx_interface != xyes; then -+ -+$as_echo "#define NO_CXX_EXPORTS 1" >>confdefs.h -+ -+fi -+ if test x$enable_cxx_interface = xyes; then -+ EXPORT_CXX_TRUE= -+ EXPORT_CXX_FALSE='#' -+else -+ EXPORT_CXX_TRUE='#' -+ EXPORT_CXX_FALSE= -+fi -+ -+ -+# Check whether --enable-midi was given. -+if test "${enable_midi+set}" = set; then : -+ enableval=$enable_midi; -+else -+ enable_midi=no ++ AC_DEFINE(NO_CXX_EXPORTS, 1, [Do not export the C++ interface.]) +fi ++AM_CONDITIONAL(EXPORT_CXX, test x$enable_cxx_interface = xyes) + ++AC_ARG_ENABLE([midi], ++ [AS_HELP_STRING([--enable-midi], ++ [compile with midi formats support [[default=no]]])],, ++ [enable_midi=no]) +if test x$enable_midi = xyes; then -+ -+$as_echo "#define MIDIFMT_SUPPORT 1" >>confdefs.h -+ -+fi -+ -+# Check whether --enable-wav was given. -+if test "${enable_wav+set}" = set; then : -+ enableval=$enable_wav; -+else -+ enable_wav=no ++ AC_DEFINE(MIDIFMT_SUPPORT, 1, [Enable midi formats support.]) +fi + ++AC_ARG_ENABLE([wav], ++ [AS_HELP_STRING([--enable-wav], ++ [compile with wav formats support [[default=no]]])],, ++ [enable_wav=no]) +if test x$enable_wav = xyes; then -+ -+$as_echo "#define WAV_SUPPORT 1" >>confdefs.h -+ -+fi -+ -+# Check whether --enable-mmcmp was given. -+if test "${enable_mmcmp+set}" = set; then : -+ enableval=$enable_mmcmp; -+else -+ enable_mmcmp=no ++ AC_DEFINE(WAV_SUPPORT, 1, [Enable wav formats support.]) +fi + ++AC_ARG_ENABLE([mmcmp], ++ [AS_HELP_STRING([--enable-mmcmp], ++ [compile with mmcmp and pp20 decompression support [[default=no]]])],, ++ [enable_mmcmp=no]) +if test x$enable_mmcmp = xyes; then -+ -+$as_echo "#define MMCMP_SUPPORT 1" >>confdefs.h -+ ++ AC_DEFINE(MMCMP_SUPPORT, 1, [Enable mmcmp and pp20 decompression support.]) +fi + # portable types. requires autoconf 2.60 # `configure' will check if these are defined in system headers. # if not, it will auto-detect and define them in `config.h' -@@ -17036,6 +17106,10 @@ if test -z "${am__fastdepCXX_TRUE}" && t - Usually this means the macro was only invoked conditionally." "$LINENO" 5 - fi - -+if test -z "${EXPORT_CXX_TRUE}" && test -z "${EXPORT_CXX_FALSE}"; then -+ as_fn_error $? "conditional \"EXPORT_CXX\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi - - : "${CONFIG_STATUS=./config.status}" - ac_write_fail=0 -diff -u libmodplug-0.8.9.0/Makefile.am~ libmodplug-0.8.9.0b/Makefile.am ---- libmodplug-0.8.9.0/Makefile.am -+++ libmodplug-0.8.9.0/Makefile.am -@@ -2,7 +2,7 @@ ACLOCAL_AMFLAGS = -I m4 - - SUBDIRS = src +@@ -99,6 +132,6 @@ MODPLUG_LIBRARY_VERSION=1:0:0 + AC_SUBST(MODPLUG_LIBRARY_VERSION) --EXTRA_DIST = \ -+EXTRA_DIST = CMakeLists.txt \ - AUTHORS COPYING ChangeLog \ - INSTALL README TODO + AC_CONFIG_FILES([Makefile +- src/Makefile ++ src/Makefile + libmodplug.pc]) + AC_OUTPUT +diff --git a/src/Makefile.am b/src/Makefile.am +index 19b32cc..00cecf4 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -35,7 +35,6 @@ libmodplug_la_SOURCES = tables.h \ + load_ams.cpp \ + load_amf.cpp \ + load_669.cpp \ +- load_j2b.cpp \ + load_mt2.cpp \ + load_psm.cpp \ + load_abc.cpp \ +@@ -45,6 +44,8 @@ libmodplug_la_SOURCES = tables.h \ -diff -u libmodplug-0.8.9.0/Makefile.in~ libmodplug-0.8.9.0b/Makefile.in ---- libmodplug-0.8.9.0/Makefile.in -+++ libmodplug-0.8.9.0/Makefile.in -@@ -359,7 +359,7 @@ top_builddir = @top_builddir@ - top_srcdir = @top_srcdir@ - ACLOCAL_AMFLAGS = -I m4 - SUBDIRS = src --EXTRA_DIST = \ -+EXTRA_DIST = CMakeLists.txt \ - AUTHORS COPYING ChangeLog \ - INSTALL README TODO + libmodplugincludedir = $(includedir)/libmodplug -diff -u libmodplug-0.8.9.0/src/config.h.in~ libmodplug-0.8.9.0/src/config.h.in ---- libmodplug-0.8.9.0/src/config.h.in~ -+++ libmodplug-0.8.9.0/src/config.h.in +- +-libmodpluginclude_HEADERS = libmodplug/stdafx.h libmodplug/sndfile.h libmodplug/it_defs.h modplug.h ++if EXPORT_CXX ++HEADERS_CXX = libmodplug/stdafx.h libmodplug/sndfile.h libmodplug/it_defs.h ++endif ++libmodpluginclude_HEADERS = modplug.h $(HEADERS_CXX) + noinst_HEADERS = load_pat.h +diff --git a/src/config.h.in b/src/config.h.in +index 4190283..2eb5f6a 100644 +--- a/src/config.h.in ++++ b/src/config.h.in @@ -15,9 +15,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H @@ -482,9 +366,10 @@ diff -u libmodplug-0.8.9.0/src/config.h.in~ libmodplug-0.8.9.0/src/config.h.in /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD -diff -u libmodplug-0.8.9.0/src/fastmix.cpp~ libmodplug-0.8.9.0/src/fastmix.cpp ---- libmodplug-0.8.9.0/src/fastmix.cpp~ -+++ libmodplug-0.8.9.0/src/fastmix.cpp +diff --git a/src/fastmix.cpp b/src/fastmix.cpp +index d693d20..7aad373 100644 +--- a/src/fastmix.cpp ++++ b/src/fastmix.cpp @@ -9,7 +9,7 @@ #include "sndfile.h" #include @@ -503,7 +388,32 @@ diff -u libmodplug-0.8.9.0/src/fastmix.cpp~ libmodplug-0.8.9.0/src/fastmix.cpp #pragma bss_seg() #endif -@@ -1611,7 +1611,7 @@ UINT CSoundFile::CreateStereoMix(int cou +@@ -287,8 +287,14 @@ CzWINDOWEDFIR sfir; + // ---------------------------------------------------------------------------- + // MIXING MACROS + // ---------------------------------------------------------------------------- ++#if defined(__cplusplus) && (__cplusplus >= 201402L) ++#define REGISTER ++#else ++#define REGISTER register ++#endif ++ + #define SNDMIX_BEGINSAMPLELOOP8\ +- register MODCHANNEL * const pChn = pChannel;\ ++ REGISTER MODCHANNEL * const pChn = pChannel;\ + nPos = pChn->nPosLo;\ + const signed char *p = (signed char *)(pChn->pCurrentSample+pChn->nPos);\ + if (pChn->dwFlags & CHN_STEREO) p += pChn->nPos;\ +@@ -296,7 +302,7 @@ CzWINDOWEDFIR sfir; + do { + + #define SNDMIX_BEGINSAMPLELOOP16\ +- register MODCHANNEL * const pChn = pChannel;\ ++ REGISTER MODCHANNEL * const pChn = pChannel;\ + nPos = pChn->nPosLo;\ + const signed short *p = (signed short *)(pChn->pCurrentSample+(pChn->nPos*2));\ + if (pChn->dwFlags & CHN_STEREO) p += pChn->nPos;\ +@@ -1611,7 +1617,7 @@ UINT CSoundFile::CreateStereoMix(int count) #endif // Clip and convert to 8 bit @@ -512,7 +422,7 @@ diff -u libmodplug-0.8.9.0/src/fastmix.cpp~ libmodplug-0.8.9.0/src/fastmix.cpp __declspec(naked) DWORD MPPASMCALL X86_Convert32To8(LPVOID lp16, int *pBuffer, DWORD lSampleCount, LPLONG lpMin, LPLONG lpMax) //------------------------------------------------------------------------------ { -@@ -1701,7 +1701,7 @@ DWORD MPPASMCALL X86_Convert32To8(LPVOID +@@ -1701,7 +1707,7 @@ DWORD MPPASMCALL X86_Convert32To8(LPVOID lp8, int *pBuffer, DWORD lSampleCount, #endif //MSC_VER, else @@ -521,7 +431,7 @@ diff -u libmodplug-0.8.9.0/src/fastmix.cpp~ libmodplug-0.8.9.0/src/fastmix.cpp // Clip and convert to 16 bit __declspec(naked) DWORD MPPASMCALL X86_Convert32To16(LPVOID lp16, int *pBuffer, DWORD lSampleCount, LPLONG lpMin, LPLONG lpMax) //------------------------------------------------------------------------------ -@@ -1794,7 +1794,7 @@ DWORD MPPASMCALL X86_Convert32To16(LPVOI +@@ -1794,7 +1800,7 @@ DWORD MPPASMCALL X86_Convert32To16(LPVOID lp16, int *pBuffer, DWORD lSampleCount } #endif //MSC_VER, else @@ -530,7 +440,7 @@ diff -u libmodplug-0.8.9.0/src/fastmix.cpp~ libmodplug-0.8.9.0/src/fastmix.cpp // Clip and convert to 24 bit __declspec(naked) DWORD MPPASMCALL X86_Convert32To24(LPVOID lp16, int *pBuffer, DWORD lSampleCount, LPLONG lpMin, LPLONG lpMax) //------------------------------------------------------------------------------ -@@ -1902,7 +1902,7 @@ DWORD MPPASMCALL X86_Convert32To24(LPVOI +@@ -1902,7 +1908,7 @@ DWORD MPPASMCALL X86_Convert32To24(LPVOID lp16, int *pBuffer, DWORD lSampleCount } #endif @@ -539,7 +449,7 @@ diff -u libmodplug-0.8.9.0/src/fastmix.cpp~ libmodplug-0.8.9.0/src/fastmix.cpp // Clip and convert to 32 bit __declspec(naked) DWORD MPPASMCALL X86_Convert32To32(LPVOID lp16, int *pBuffer, DWORD lSampleCount, LPLONG lpMin, LPLONG lpMax) //------------------------------------------------------------------------------ -@@ -1992,7 +1992,7 @@ DWORD MPPASMCALL X86_Convert32To32(LPVOI +@@ -1992,7 +1998,7 @@ DWORD MPPASMCALL X86_Convert32To32(LPVOID lp16, int *pBuffer, DWORD lSampleCount #endif @@ -548,7 +458,7 @@ diff -u libmodplug-0.8.9.0/src/fastmix.cpp~ libmodplug-0.8.9.0/src/fastmix.cpp void MPPASMCALL X86_InitMixBuffer(int *pBuffer, UINT nSamples) //------------------------------------------------------------ { -@@ -2034,7 +2034,7 @@ void MPPASMCALL X86_InitMixBuffer(int *p +@@ -2034,7 +2040,7 @@ void MPPASMCALL X86_InitMixBuffer(int *pBuffer, UINT nSamples) #endif @@ -557,7 +467,7 @@ diff -u libmodplug-0.8.9.0/src/fastmix.cpp~ libmodplug-0.8.9.0/src/fastmix.cpp __declspec(naked) void MPPASMCALL X86_InterleaveFrontRear(int *pFrontBuf, int *pRearBuf, DWORD nSamples) //------------------------------------------------------------------------------ { -@@ -2079,7 +2079,7 @@ void MPPASMCALL X86_InterleaveFrontRear( +@@ -2079,7 +2085,7 @@ void MPPASMCALL X86_InterleaveFrontRear(int *pFrontBuf, int *pRearBuf, DWORD nSa #endif @@ -566,7 +476,7 @@ diff -u libmodplug-0.8.9.0/src/fastmix.cpp~ libmodplug-0.8.9.0/src/fastmix.cpp VOID MPPASMCALL X86_MonoFromStereo(int *pMixBuf, UINT nSamples) //------------------------------------------------------------- { -@@ -2116,7 +2116,7 @@ VOID MPPASMCALL X86_MonoFromStereo(int * +@@ -2116,7 +2122,7 @@ VOID MPPASMCALL X86_MonoFromStereo(int *pMixBuf, UINT nSamples) #define OFSDECAYMASK 0xFF @@ -575,7 +485,7 @@ diff -u libmodplug-0.8.9.0/src/fastmix.cpp~ libmodplug-0.8.9.0/src/fastmix.cpp void MPPASMCALL X86_StereoFill(int *pBuffer, UINT nSamples, LPLONG lpROfs, LPLONG lpLOfs) //------------------------------------------------------------------------------ { -@@ -2217,7 +2217,7 @@ void MPPASMCALL X86_StereoFill(int *pBuf +@@ -2217,7 +2223,7 @@ void MPPASMCALL X86_StereoFill(int *pBuffer, UINT nSamples, LPLONG lpROfs, LPLON } #endif @@ -584,7 +494,7 @@ diff -u libmodplug-0.8.9.0/src/fastmix.cpp~ libmodplug-0.8.9.0/src/fastmix.cpp void MPPASMCALL X86_EndChannelOfs(MODCHANNEL *pChannel, int *pBuffer, UINT nSamples) //------------------------------------------------------------------------------ { -@@ -2291,7 +2291,7 @@ void MPPASMCALL X86_EndChannelOfs(MODCHA +@@ -2291,7 +2297,7 @@ void MPPASMCALL X86_EndChannelOfs(MODCHANNEL *pChannel, int *pBuffer, UINT nSamp #define MIXING_LIMITMAX (0x08100000) #define MIXING_LIMITMIN (-MIXING_LIMITMAX) @@ -593,7 +503,7 @@ diff -u libmodplug-0.8.9.0/src/fastmix.cpp~ libmodplug-0.8.9.0/src/fastmix.cpp __declspec(naked) UINT MPPASMCALL X86_AGC(int *pBuffer, UINT nSamples, UINT nAGC) //------------------------------------------------------------------------------ { -@@ -2327,7 +2327,6 @@ agcupdate: +@@ -2327,7 +2333,6 @@ agcupdate: jmp agcrecover } } @@ -601,7 +511,7 @@ diff -u libmodplug-0.8.9.0/src/fastmix.cpp~ libmodplug-0.8.9.0/src/fastmix.cpp #pragma warning (default:4100) #else // Version for GCC -@@ -2378,11 +2377,9 @@ void CSoundFile::ProcessAGC(int count) +@@ -2378,11 +2383,9 @@ void CSoundFile::ProcessAGC(int count) } @@ -613,9 +523,10 @@ diff -u libmodplug-0.8.9.0/src/fastmix.cpp~ libmodplug-0.8.9.0/src/fastmix.cpp } - #endif // NO_AGC -diff -u libmodplug-0.8.9.0/src/libmodplug/it_defs.h~ libmodplug-0.8.9.0/src/libmodplug/it_defs.h ---- libmodplug-0.8.9.0/src/libmodplug/it_defs.h~ -+++ libmodplug-0.8.9.0/src/libmodplug/it_defs.h +diff --git a/src/libmodplug/it_defs.h b/src/libmodplug/it_defs.h +index 89cb456..43fb944 100644 +--- a/src/libmodplug/it_defs.h ++++ b/src/libmodplug/it_defs.h @@ -128,7 +128,9 @@ typedef struct ITSAMPLESTRUCT #pragma pack() @@ -628,9 +539,10 @@ diff -u libmodplug-0.8.9.0/src/libmodplug/it_defs.h~ libmodplug-0.8.9.0/src/libm +#endif #endif -diff -u libmodplug-0.8.9.0/src/libmodplug/sndfile.h~ libmodplug-0.8.9.0/src/libmodplug/sndfile.h ---- libmodplug-0.8.9.0/src/libmodplug/sndfile.h~ -+++ libmodplug-0.8.9.0/src/libmodplug/sndfile.h +diff --git a/src/libmodplug/sndfile.h b/src/libmodplug/sndfile.h +index c009265..a638d2d 100644 +--- a/src/libmodplug/sndfile.h ++++ b/src/libmodplug/sndfile.h @@ -43,7 +43,6 @@ typedef const BYTE * LPCBYTE; #define MAX_EQ_BANDS 6 #define MAX_MIXPLUGINS 8 @@ -877,10 +789,11 @@ diff -u libmodplug-0.8.9.0/src/libmodplug/sndfile.h~ libmodplug-0.8.9.0/src/libm // Byte swapping functions from the GNU C Library and libsdl /* Swap bytes in 16 bit value. */ -diff -u libmodplug-0.8.9.0/src/libmodplug/stdafx.h~ libmodplug-0.8.9.0/src/libmodplug/stdafx.h ---- libmodplug-0.8.9.0/src/libmodplug/stdafx.h~ -+++ libmodplug-0.8.9.0/src/libmodplug/stdafx.h -@@ -23,11 +23,11 @@ +diff --git a/src/libmodplug/stdafx.h b/src/libmodplug/stdafx.h +index d45d949..219bc7d 100644 +--- a/src/libmodplug/stdafx.h ++++ b/src/libmodplug/stdafx.h +@@ -23,35 +23,43 @@ /* disable AGC and FILESAVE for all targets for uniformity. */ #define NO_AGC @@ -894,8 +807,12 @@ diff -u libmodplug-0.8.9.0/src/libmodplug/stdafx.h~ libmodplug-0.8.9.0/src/libmo #pragma warning (disable:4201) #pragma warning (disable:4514) #endif -@@ -38,7 +38,16 @@ - #include + + #define WIN32_LEAN_AND_MEAN + #include +-#include +-#include ++#include /* for WAVE_FORMAT_PCM */ #include #include +#if defined(_MSC_VER) && (_MSC_VER < 1600) @@ -909,9 +826,16 @@ diff -u libmodplug-0.8.9.0/src/libmodplug/stdafx.h~ libmodplug-0.8.9.0/src/libmo #include +#endif - #define srandom(_seed) srand(_seed) - #define random() rand() -@@ -51,7 +60,9 @@ inline void ProcessPlugins(int n) {} +-#define srandom(_seed) srand(_seed) +-#define random() rand() +-#define sleep(_ms) Sleep(_ms) ++#define sleep(_ms) Sleep(_ms * 1000) + +-inline void ProcessPlugins(int n) {} ++inline void ProcessPlugins(int n) { (void)n; } + + #undef strcasecmp + #undef strncasecmp #define strcasecmp(a,b) _stricmp(a,b) #define strncasecmp(a,b,c) _strnicmp(a,b,c) @@ -921,19 +845,16 @@ diff -u libmodplug-0.8.9.0/src/libmodplug/stdafx.h~ libmodplug-0.8.9.0/src/libmo #ifndef isblank #define isblank(c) ((c) == ' ' || (c) == '\t') -@@ -66,6 +77,11 @@ inline void ProcessPlugins(int n) {} - #include - #endif - -+#ifdef __WATCOMC__ -+#define srandom(_seed) srand(_seed) -+#define random() rand() -+#endif -+ - typedef int8_t CHAR; - typedef uint8_t UCHAR; - typedef uint8_t* PUCHAR; -@@ -88,12 +104,6 @@ typedef const char* LPCSTR; +@@ -80,7 +88,7 @@ typedef uint32_t* LPDWORD; + typedef uint16_t WORD; + typedef uint8_t BYTE; + typedef uint8_t* LPBYTE; +-typedef bool BOOL; ++typedef bool BOOL; /* FIXME: must be 'int' */ + typedef char* LPSTR; + typedef void* LPVOID; + typedef uint16_t* LPWORD; +@@ -88,12 +96,6 @@ typedef const char* LPCSTR; typedef void* PVOID; typedef void VOID; @@ -946,7 +867,26 @@ diff -u libmodplug-0.8.9.0/src/libmodplug/stdafx.h~ libmodplug-0.8.9.0/src/libmo #define LPCTSTR LPCSTR #define lstrcpyn strncpy #define lstrcpy strcpy -@@ -132,10 +142,22 @@ inline void ProcessPlugins(int n) {} +@@ -102,17 +104,7 @@ inline LONG MulDiv (long a, long b, long c) + + #define WAVE_FORMAT_PCM 1 + +-#define GHND 0 +-#define GlobalFreePtr(p) free((void *)(p)) +-inline int8_t * GlobalAllocPtr(unsigned int, size_t size) +-{ +- int8_t * p = (int8_t *) malloc(size); +- +- if (p != NULL) memset(p, 0, size); +- return p; +-} +- +-inline void ProcessPlugins(int n) {} ++inline void ProcessPlugins(int n) { (void)n; } + + #ifndef FALSE + #define FALSE false +@@ -132,10 +124,22 @@ inline void ProcessPlugins(int n) {} # else # define MODPLUG_EXPORT __declspec(dllimport) /* using libmodplug dll for windows */ # endif @@ -969,9 +909,10 @@ diff -u libmodplug-0.8.9.0/src/libmodplug/stdafx.h~ libmodplug-0.8.9.0/src/libmo +#endif + #endif -diff -u libmodplug-0.8.9.0/src/load_669.cpp~ libmodplug-0.8.9.0/src/load_669.cpp ---- libmodplug-0.8.9.0/src/load_669.cpp~ -+++ libmodplug-0.8.9.0/src/load_669.cpp +diff --git a/src/load_669.cpp b/src/load_669.cpp +index c275615..236e07d 100644 +--- a/src/load_669.cpp ++++ b/src/load_669.cpp @@ -17,7 +17,7 @@ typedef struct tagFILEHEADER669 { @@ -998,7 +939,7 @@ diff -u libmodplug-0.8.9.0/src/load_669.cpp~ libmodplug-0.8.9.0/src/load_669.cpp DWORD len = (length[3] << 24) + (length[2] << 16) + (length[1] << 8) + -@@ -156,9 +155,9 @@ BOOL CSoundFile::Read669(const BYTE *lpS +@@ -156,9 +155,9 @@ BOOL CSoundFile::Read669(const BYTE *lpStream, DWORD dwMemLength) case 0x04: command = CMD_VIBRATO; param |= 0x40; break; case 0x05: if (param) command = CMD_SPEED; else command = 0; param += 2; break; case 0x06: if (param == 0) { command = CMD_PANNINGSLIDE; param = 0xFE; } @@ -1011,10 +952,19 @@ diff -u libmodplug-0.8.9.0/src/load_669.cpp~ libmodplug-0.8.9.0/src/load_669.cpp default: command = 0; } if (command) -diff -u libmodplug-0.8.9.0/src/load_abc.cpp~ libmodplug-0.8.9.0/src/load_abc.cpp ---- libmodplug-0.8.9.0/src/load_abc.cpp~ -+++ libmodplug-0.8.9.0/src/load_abc.cpp -@@ -37,9 +37,19 @@ +diff --git a/src/load_abc.cpp b/src/load_abc.cpp +index ee79f39..fe5e74c 100644 +--- a/src/load_abc.cpp ++++ b/src/load_abc.cpp +@@ -31,15 +31,25 @@ + #include + #include + #ifndef _WIN32 +-#include // for sleep +-#endif // _WIN32 ++#include /* sleep() */ ++#endif + #include "stdafx.h" #include "sndfile.h" @@ -1035,7 +985,7 @@ diff -u libmodplug-0.8.9.0/src/load_abc.cpp~ libmodplug-0.8.9.0/src/load_abc.cpp #define putenv _putenv #define strdup _strdup #endif -@@ -256,16 +266,6 @@ static void abc_add_setjumploop(ABCHANDL +@@ -256,16 +266,6 @@ static void abc_add_setjumploop(ABCHANDLE *h, ABCTRACK *tp, uint32_t tracktime, static uint32_t abc_pattracktime(ABCHANDLE *h, uint32_t tracktime); static int abc_patno(ABCHANDLE *h, uint32_t tracktime); @@ -1052,7 +1002,7 @@ diff -u libmodplug-0.8.9.0/src/load_abc.cpp~ libmodplug-0.8.9.0/src/load_abc.cpp static int abc_isvalidchar(char c) { return(isalpha(c) || isdigit(c) || isspace(c) || c == '%' || c == ':'); -@@ -403,7 +403,7 @@ static void abc_dumptracks(ABCHANDLE *h, +@@ -403,7 +403,7 @@ static void abc_dumptracks(ABCHANDLE *h, const char *p) } } @@ -1061,7 +1011,7 @@ diff -u libmodplug-0.8.9.0/src/load_abc.cpp~ libmodplug-0.8.9.0/src/load_abc.cpp #undef _mm_free #endif -@@ -1484,7 +1484,7 @@ static void abc_add_chord(const char *p, +@@ -1484,7 +1484,7 @@ static void abc_add_chord(const char *p, ABCHANDLE *h, ABCTRACK *tp, uint32_t tr d[chordnote] = i; break; } @@ -1070,7 +1020,7 @@ diff -u libmodplug-0.8.9.0/src/load_abc.cpp~ libmodplug-0.8.9.0/src/load_abc.cpp switch(*p) { case 'b': d[chordnote]--; -@@ -1506,7 +1506,7 @@ static void abc_add_chord(const char *p, +@@ -1506,7 +1506,7 @@ static void abc_add_chord(const char *p, ABCHANDLE *h, ABCTRACK *tp, uint32_t tr d[chordbase] = i; break; } @@ -1079,7 +1029,7 @@ diff -u libmodplug-0.8.9.0/src/load_abc.cpp~ libmodplug-0.8.9.0/src/load_abc.cpp switch(*p) { case 'b': d[chordbase]--; -@@ -2345,9 +2345,9 @@ BOOL CSoundFile::TestABC(const BYTE *lpS +@@ -2345,9 +2345,9 @@ BOOL CSoundFile::TestABC(const BYTE *lpStream, DWORD dwMemLength) // ===================================================================================== static ABCHANDLE *ABC_Init(void) { @@ -1101,8 +1051,10 @@ diff -u libmodplug-0.8.9.0/src/load_abc.cpp~ libmodplug-0.8.9.0/src/load_abc.cpp } } else { - srandom((uint32_t)time(0)); // initialize random generator with seed - retval->pickrandom = 1+(int)(10000.0*random()/(RAND_MAX+1.0)); +- srandom((uint32_t)time(0)); // initialize random generator with seed +- retval->pickrandom = 1+(int)(10000.0*random()/(RAND_MAX+1.0)); ++ srand((unsigned int)time(0)); // initialize random generator with seed ++ retval->pickrandom = 1+(int)(10000.0*rand()/(RAND_MAX+1.0)); // can handle pickin' from songbooks with 10.000 songs - sprintf(buf,"-%ld",retval->pickrandom); // xmms preloads the file - setenv(ABC_ENV_NORANDOMPICK, buf, 1); @@ -1111,7 +1063,7 @@ diff -u libmodplug-0.8.9.0/src/load_abc.cpp~ libmodplug-0.8.9.0/src/load_abc.cpp } return retval; } -@@ -2643,10 +2643,11 @@ static int ABC_ReadPatterns(MODCOMMAND * +@@ -2643,10 +2643,11 @@ static int ABC_ReadPatterns(MODCOMMAND *pattern[], WORD psize[], ABCHANDLE *h, i static int ABC_Key(const char *p) { int i,j; @@ -1124,7 +1076,7 @@ diff -u libmodplug-0.8.9.0/src/load_abc.cpp~ libmodplug-0.8.9.0/src/load_abc.cpp for( i=0; i<8 && *p && *p != ']'; p++ ) { if( isspace(*p) ) { while( isspace(*p) ) p++; -@@ -2939,9 +2940,10 @@ static void abc_MIDI_voice(const char *p +@@ -2939,9 +2940,10 @@ static void abc_MIDI_voice(const char *p, ABCTRACK *tp, ABCHANDLE *h) static void abc_MIDI_chordname(const char *p) { char name[20]; @@ -1137,7 +1089,7 @@ diff -u libmodplug-0.8.9.0/src/load_abc.cpp~ libmodplug-0.8.9.0/src/load_abc.cpp i = 0; while ((i < 19) && (*p != ' ') && (*p != '\0')) { name[i] = *p; -@@ -2953,9 +2955,12 @@ static void abc_MIDI_chordname(const cha +@@ -2953,9 +2955,12 @@ static void abc_MIDI_chordname(const char *p) abc_message("Failure: Bad format for chordname command, %s", p); } else { @@ -1151,14 +1103,15 @@ diff -u libmodplug-0.8.9.0/src/load_abc.cpp~ libmodplug-0.8.9.0/src/load_abc.cpp p += abc_getnumber(p, ¬es[i]); i = i + 1; } -@@ -4878,3 +4883,4 @@ BOOL CSoundFile::ReadABC(const uint8_t * +@@ -4878,3 +4883,4 @@ BOOL CSoundFile::ReadABC(const uint8_t *lpStream, DWORD dwMemLength) ABC_Cleanup(h); // we dont need it anymore return 1; } +#endif // MIDIFMT_SUPPORT -diff -u libmodplug-0.8.9.0/src/load_amf.cpp~ libmodplug-0.8.9.0/src/load_amf.cpp ---- libmodplug-0.8.9.0/src/load_amf.cpp~ -+++ libmodplug-0.8.9.0/src/load_amf.cpp +diff --git a/src/load_amf.cpp b/src/load_amf.cpp +index c560a29..82ea867 100644 +--- a/src/load_amf.cpp ++++ b/src/load_amf.cpp @@ -44,7 +44,6 @@ typedef struct _AMFSAMPLE UCHAR volume; } AMFSAMPLE; @@ -1176,7 +1129,7 @@ diff -u libmodplug-0.8.9.0/src/load_amf.cpp~ libmodplug-0.8.9.0/src/load_amf.cpp //------------------------------------------------------------------------------- { UINT lastinstr = 0; -@@ -163,7 +162,6 @@ VOID AMF_Unpack(MODCOMMAND *pPat, const +@@ -163,7 +162,6 @@ VOID AMF_Unpack(MODCOMMAND *pPat, const BYTE *pTrack, UINT nRows, UINT nChannels } @@ -1184,10 +1137,11 @@ diff -u libmodplug-0.8.9.0/src/load_amf.cpp~ libmodplug-0.8.9.0/src/load_amf.cpp BOOL CSoundFile::ReadAMF(LPCBYTE lpStream, const DWORD dwMemLength) //----------------------------------------------------------- { -diff -u libmodplug-0.8.9.0/src/load_dbm.cpp~ libmodplug-0.8.9.0/src/load_dbm.cpp ---- libmodplug-0.8.9.0/src/load_dbm.cpp~ -+++ libmodplug-0.8.9.0/src/load_dbm.cpp -@@ -249,7 +249,7 @@ BOOL CSoundFile::ReadDBM(const BYTE *lpS +diff --git a/src/load_dbm.cpp b/src/load_dbm.cpp +index 9aff94b..8bc9c9b 100644 +--- a/src/load_dbm.cpp ++++ b/src/load_dbm.cpp +@@ -249,7 +249,7 @@ BOOL CSoundFile::ReadDBM(const BYTE *lpStream, DWORD dwMemLength) MODCOMMAND *m = AllocatePattern(nRows, m_nChannels); if (m) { @@ -1196,15 +1150,16 @@ diff -u libmodplug-0.8.9.0/src/load_dbm.cpp~ libmodplug-0.8.9.0/src/load_dbm.cpp UINT row = 0; UINT i = 0; -@@ -365,4 +365,3 @@ BOOL CSoundFile::ReadDBM(const BYTE *lpS +@@ -365,4 +365,3 @@ BOOL CSoundFile::ReadDBM(const BYTE *lpStream, DWORD dwMemLength) } return TRUE; } - -diff -u libmodplug-0.8.9.0/src/load_dmf.cpp~ libmodplug-0.8.9.0/src/load_dmf.cpp ---- libmodplug-0.8.9.0/src/load_dmf.cpp~ -+++ libmodplug-0.8.9.0/src/load_dmf.cpp -@@ -279,7 +279,8 @@ BOOL CSoundFile::ReadDMF(const BYTE *lpS +diff --git a/src/load_dmf.cpp b/src/load_dmf.cpp +index 7bfca22..1d4f8a7 100644 +--- a/src/load_dmf.cpp ++++ b/src/load_dmf.cpp +@@ -279,7 +279,8 @@ BOOL CSoundFile::ReadDMF(const BYTE *lpStream, DWORD dwMemLength) case 8: cmd.command = CMD_VIBRATO; cmd.param = eval; break; // 12: Note cut case 12: if (eval & 0xe0) { cmd.command = CMD_S3MCMDEX; cmd.param = (eval>>5)|0xc0; } @@ -1223,7 +1178,7 @@ diff -u libmodplug-0.8.9.0/src/load_dmf.cpp~ libmodplug-0.8.9.0/src/load_dmf.cpp //------------------------------------------- { BYTE x = 0, bitv = 1; -@@ -534,7 +535,7 @@ BYTE DMFReadBits(DMF_HTREE *tree, UINT n +@@ -534,7 +535,7 @@ BYTE DMFReadBits(DMF_HTREE *tree, UINT nbits) // tree: [8-bit value][12-bit index][12-bit index] = 32-bit // @@ -1232,9 +1187,10 @@ diff -u libmodplug-0.8.9.0/src/load_dmf.cpp~ libmodplug-0.8.9.0/src/load_dmf.cpp //------------------------------ { BYTE isleft, isright; -diff -u libmodplug-0.8.9.0/src/load_it.cpp~ libmodplug-0.8.9.0/src/load_it.cpp ---- libmodplug-0.8.9.0/src/load_it.cpp~ -+++ libmodplug-0.8.9.0/src/load_it.cpp +diff --git a/src/load_it.cpp b/src/load_it.cpp +index 4c6a4e1..32be603 100644 +--- a/src/load_it.cpp ++++ b/src/load_it.cpp @@ -15,26 +15,13 @@ #pragma warning(disable:4244) #endif @@ -1263,7 +1219,7 @@ diff -u libmodplug-0.8.9.0/src/load_it.cpp~ libmodplug-0.8.9.0/src/load_it.cpp BOOL CSoundFile::ITInstrToMPT(const void *p, INSTRUMENTHEADER *penv, UINT trkvers) //-------------------------------------------------------------------------------- { -@@ -165,6 +152,7 @@ BOOL CSoundFile::ReadIT(const BYTE *lpSt +@@ -165,6 +152,7 @@ BOOL CSoundFile::ReadIT(const BYTE *lpStream, DWORD dwMemLength) DWORD patpos[MAX_PATTERNS]; BYTE chnmask[64], channels_used[64]; MODCOMMAND lastvalue[64]; @@ -1271,7 +1227,7 @@ diff -u libmodplug-0.8.9.0/src/load_it.cpp~ libmodplug-0.8.9.0/src/load_it.cpp if ((!lpStream) || (dwMemLength < sizeof(ITFILEHEADER))) return FALSE; ITFILEHEADER pifh = *(ITFILEHEADER *)lpStream; -@@ -237,7 +225,7 @@ BOOL CSoundFile::ReadIT(const BYTE *lpSt +@@ -237,7 +225,7 @@ BOOL CSoundFile::ReadIT(const BYTE *lpStream, DWORD dwMemLength) if (inspossize > MAX_INSTRUMENTS) inspossize = MAX_INSTRUMENTS; inspossize <<= 2; memcpy(inspos, lpStream+dwMemPos, inspossize); @@ -1280,7 +1236,7 @@ diff -u libmodplug-0.8.9.0/src/load_it.cpp~ libmodplug-0.8.9.0/src/load_it.cpp { inspos[j] = bswapLE32(inspos[j]); } -@@ -248,7 +236,7 @@ BOOL CSoundFile::ReadIT(const BYTE *lpSt +@@ -248,7 +236,7 @@ BOOL CSoundFile::ReadIT(const BYTE *lpStream, DWORD dwMemLength) if (smppossize > MAX_SAMPLES) smppossize = MAX_SAMPLES; smppossize <<= 2; memcpy(smppos, lpStream+dwMemPos, smppossize); @@ -1289,7 +1245,7 @@ diff -u libmodplug-0.8.9.0/src/load_it.cpp~ libmodplug-0.8.9.0/src/load_it.cpp { smppos[j] = bswapLE32(smppos[j]); } -@@ -259,7 +247,7 @@ BOOL CSoundFile::ReadIT(const BYTE *lpSt +@@ -259,7 +247,7 @@ BOOL CSoundFile::ReadIT(const BYTE *lpStream, DWORD dwMemLength) if (patpossize > MAX_PATTERNS) patpossize = MAX_PATTERNS; patpossize <<= 2; memcpy(patpos, lpStream+dwMemPos, patpossize); @@ -1298,7 +1254,7 @@ diff -u libmodplug-0.8.9.0/src/load_it.cpp~ libmodplug-0.8.9.0/src/load_it.cpp { patpos[j] = bswapLE32(patpos[j]); } -@@ -592,593 +580,6 @@ BOOL CSoundFile::ReadIT(const BYTE *lpSt +@@ -592,593 +580,6 @@ BOOL CSoundFile::ReadIT(const BYTE *lpStream, DWORD dwMemLength) } @@ -1892,10 +1848,31 @@ diff -u libmodplug-0.8.9.0/src/load_it.cpp~ libmodplug-0.8.9.0/src/load_it.cpp ////////////////////////////////////////////////////////////////////////////// // IT 2.14 compression -Only in libmodplug-0.8.9.0/src: load_j2b.cpp -diff -u libmodplug-0.8.9.0/src/load_mdl.cpp~ libmodplug-0.8.9.0/src/load_mdl.cpp ---- libmodplug-0.8.9.0/src/load_mdl.cpp~ -+++ libmodplug-0.8.9.0/src/load_mdl.cpp +diff --git a/src/load_j2b.cpp b/src/load_j2b.cpp +deleted file mode 100644 +index 2d86ce8..0000000 +--- a/src/load_j2b.cpp ++++ /dev/null +@@ -1,15 +0,0 @@ +-/* +- * This source code is public domain. +- * +- * Authors: Olivier Lapicque +-*/ +- +- +-/////////////////////////////////////////////////// +-// +-// J2B module loader +-// +-/////////////////////////////////////////////////// +-#include "stdafx.h" +-#include "sndfile.h" +- +diff --git a/src/load_mdl.cpp b/src/load_mdl.cpp +index 8f2724f..177f322 100644 +--- a/src/load_mdl.cpp ++++ b/src/load_mdl.cpp @@ -42,7 +42,7 @@ typedef struct MDLPATTERNDATA } MDLPATTERNDATA; @@ -1905,7 +1882,7 @@ diff -u libmodplug-0.8.9.0/src/load_mdl.cpp~ libmodplug-0.8.9.0/src/load_mdl.cpp //-------------------------------------------------------- { UINT command = 0, param = data; -@@ -91,7 +91,7 @@ void ConvertMDLCommand(MODCOMMAND *m, UI +@@ -91,7 +91,7 @@ void ConvertMDLCommand(MODCOMMAND *m, UINT eff, UINT data) } @@ -1914,7 +1891,7 @@ diff -u libmodplug-0.8.9.0/src/load_mdl.cpp~ libmodplug-0.8.9.0/src/load_mdl.cpp //------------------------------------------------------------------------------------------------- { MODCOMMAND cmd, *m = pat; -@@ -168,7 +168,6 @@ void UnpackMDLTrack(MODCOMMAND *pat, UIN +@@ -168,7 +168,6 @@ void UnpackMDLTrack(MODCOMMAND *pat, UINT nChannels, UINT nRows, UINT nTrack, co } @@ -1922,10 +1899,11 @@ diff -u libmodplug-0.8.9.0/src/load_mdl.cpp~ libmodplug-0.8.9.0/src/load_mdl.cpp BOOL CSoundFile::ReadMDL(const BYTE *lpStream, DWORD dwMemLength) //--------------------------------------------------------------- { -diff -u libmodplug-0.8.9.0/src/load_med.cpp~ libmodplug-0.8.9.0/src/load_med.cpp ---- libmodplug-0.8.9.0/src/load_med.cpp~ -+++ libmodplug-0.8.9.0/src/load_med.cpp -@@ -876,7 +876,7 @@ BOOL CSoundFile::ReadMed(const BYTE *lpS +diff --git a/src/load_med.cpp b/src/load_med.cpp +index 745e2c6..614674e 100644 +--- a/src/load_med.cpp ++++ b/src/load_med.cpp +@@ -876,7 +876,7 @@ BOOL CSoundFile::ReadMed(const BYTE *lpStream, DWORD dwMemLength) { DWORD nameofs = bswapBE32(pbi->blockname); UINT namelen = bswapBE32(pbi->blocknamelen); @@ -1934,10 +1912,17 @@ diff -u libmodplug-0.8.9.0/src/load_med.cpp~ libmodplug-0.8.9.0/src/load_med.cpp { SetPatternName(iBlk, (LPCSTR)(lpStream+nameofs)); } -diff -u libmodplug-0.8.9.0/src/load_mid.cpp~ libmodplug-0.8.9.0/src/load_mid.cpp ---- libmodplug-0.8.9.0/src/load_mid.cpp~ -+++ libmodplug-0.8.9.0/src/load_mid.cpp -@@ -35,6 +35,17 @@ +diff --git a/src/load_mid.cpp b/src/load_mid.cpp +index 5992fa6..734a247 100644 +--- a/src/load_mid.cpp ++++ b/src/load_mid.cpp +@@ -30,11 +30,22 @@ + #include + #include + #ifndef _WIN32 +-#include // for sleep ++#include /* sleep() */ + #endif #include "stdafx.h" #include "sndfile.h" @@ -1969,13 +1954,12 @@ diff -u libmodplug-0.8.9.0/src/load_mid.cpp~ libmodplug-0.8.9.0/src/load_mid.cpp #define _mm_fseek(f,pos,whence) fseek(f,pos,whence) #define _mm_read_UBYTES(buf,sz,f) fread(buf,sz,1,f) #define _mm_read_SBYTES(buf,sz,f) fread(buf,sz,1,f) -@@ -256,18 +267,18 @@ static void mid_adjust_for_optimal_tempo +@@ -256,18 +267,18 @@ static void mid_adjust_for_optimal_tempo(MIDHANDLE *h, int maxtempo) static MIDEVENT *mid_new_event(MIDHANDLE *h) // ===================================================================================== { - MIDEVENT *retval; -+ MIDEVENT *retval; - +- - retval = (MIDEVENT *)_mm_calloc(h->trackhandle, 1,sizeof(MIDEVENT)); - retval->next = NULL; - retval->tracktick = h->tracktime; @@ -1986,6 +1970,8 @@ diff -u libmodplug-0.8.9.0/src/load_mid.cpp~ libmodplug-0.8.9.0/src/load_mid.cpp - retval->fx = none; - retval->fxparam = 0; - return retval; ++ MIDEVENT *retval; ++ + retval = (MIDEVENT *)_mm_calloc(h->trackhandle, 1,sizeof(MIDEVENT)); + retval->next = NULL; + retval->tracktick = h->tracktime; @@ -1999,15 +1985,16 @@ diff -u libmodplug-0.8.9.0/src/load_mid.cpp~ libmodplug-0.8.9.0/src/load_mid.cpp } // ===================================================================================== -@@ -1582,3 +1593,4 @@ BOOL CSoundFile::ReadMID(const BYTE *lpS +@@ -1582,3 +1593,4 @@ BOOL CSoundFile::ReadMID(const BYTE *lpStream, DWORD dwMemLength) avoid_reentry = 0; // it is safe now, I'm finished return TRUE; } +#endif // MIDIFMT_SUPPORT -diff -u libmodplug-0.8.9.0/src/load_mod.cpp~ libmodplug-0.8.9.0/src/load_mod.cpp ---- libmodplug-0.8.9.0/src/load_mod.cpp~ -+++ libmodplug-0.8.9.0/src/load_mod.cpp -@@ -39,7 +39,9 @@ void CSoundFile::ConvertModCommand(MODCO +diff --git a/src/load_mod.cpp b/src/load_mod.cpp +index c8ba8d2..68ee30b 100644 +--- a/src/load_mod.cpp ++++ b/src/load_mod.cpp +@@ -39,7 +39,9 @@ void CSoundFile::ConvertModCommand(MODCOMMAND *m) const case 0x0D: command = CMD_PATTERNBREAK; param = ((param >> 4) * 10) + (param & 0x0F); break; case 0x0E: command = CMD_MODCMDEX; break; case 0x0F: command = (param <= (UINT)((m_nType & (MOD_TYPE_XM|MOD_TYPE_MT2)) ? 0x1F : 0x20)) ? CMD_SPEED : CMD_TEMPO; @@ -2018,7 +2005,7 @@ diff -u libmodplug-0.8.9.0/src/load_mod.cpp~ libmodplug-0.8.9.0/src/load_mod.cpp // Extension for XM extended effects case 'G' - 55: command = CMD_GLOBALVOLUME; break; case 'H' - 55: command = CMD_GLOBALVOLSLIDE; if (param & 0xF0) param &= 0xF0; break; -@@ -59,95 +61,7 @@ void CSoundFile::ConvertModCommand(MODCO +@@ -59,95 +61,7 @@ void CSoundFile::ConvertModCommand(MODCOMMAND *m) const m->param = param; } @@ -2122,7 +2109,7 @@ diff -u libmodplug-0.8.9.0/src/load_mod.cpp~ libmodplug-0.8.9.0/src/load_mod.cpp #pragma pack() static BOOL IsValidName(LPCSTR s, int length, CHAR minChar) -@@ -184,12 +97,11 @@ static BOOL IsValidName(LPCSTR s, int le +@@ -184,12 +97,11 @@ static BOOL IsValidName(LPCSTR s, int length, CHAR minChar) return TRUE; } @@ -2136,7 +2123,7 @@ diff -u libmodplug-0.8.9.0/src/load_mod.cpp~ libmodplug-0.8.9.0/src/load_mod.cpp BOOL CSoundFile::ReadMod(const BYTE *lpStream, DWORD dwMemLength) //--------------------------------------------------------------- { -@@ -386,151 +298,5 @@ BOOL CSoundFile::ReadMod(const BYTE *lpS +@@ -386,151 +298,5 @@ BOOL CSoundFile::ReadMod(const BYTE *lpStream, DWORD dwMemLength) dwErrCheck++; } } @@ -2288,17 +2275,19 @@ diff -u libmodplug-0.8.9.0/src/load_mod.cpp~ libmodplug-0.8.9.0/src/load_mod.cpp -#endif - -#endif // MODPLUG_NO_FILESAVE -diff -u libmodplug-0.8.9.0/src/load_pat.cpp~ libmodplug-0.8.9.0/src/load_pat.cpp ---- libmodplug-0.8.9.0/src/load_pat.cpp~ -+++ libmodplug-0.8.9.0/src/load_pat.cpp +diff --git a/src/load_pat.cpp b/src/load_pat.cpp +index adcccc3..9546272 100644 +--- a/src/load_pat.cpp ++++ b/src/load_pat.cpp @@ -33,36 +33,47 @@ #include #include #include --#ifndef _WIN32 - #include // for PATH_MAX -+#ifndef _WIN32 - #include // for sleep ++#include /* PATH_MAX */ + #ifndef _WIN32 +-#include // for PATH_MAX +-#include // for sleep ++#include /* sleep() */ #endif + +#include "stdafx.h" @@ -2356,7 +2345,7 @@ diff -u libmodplug-0.8.9.0/src/load_pat.cpp~ libmodplug-0.8.9.0/src/load_pat.cpp #undef _mm_free #endif -@@ -764,10 +775,7 @@ BOOL CSoundFile::TestPAT(const BYTE *lpS +@@ -764,10 +775,7 @@ BOOL CSoundFile::TestPAT(const BYTE *lpStream, DWORD dwMemLength) // ===================================================================================== static PATHANDLE *PAT_Init(void) { @@ -2368,14 +2357,15 @@ diff -u libmodplug-0.8.9.0/src/load_pat.cpp~ libmodplug-0.8.9.0/src/load_pat.cpp } // ===================================================================================== -@@ -1259,3 +1267,4 @@ BOOL CSoundFile::ReadPAT(const BYTE *lpS +@@ -1259,3 +1267,4 @@ BOOL CSoundFile::ReadPAT(const BYTE *lpStream, DWORD dwMemLength) PAT_Cleanup(h); // we dont need it anymore return 1; } +#endif // MIDIFMT_SUPPORT -diff -u libmodplug-0.8.9.0/src/load_psm.cpp~ libmodplug-0.8.9.0/src/load_psm.cpp ---- libmodplug-0.8.9.0/src/load_psm.cpp~ -+++ libmodplug-0.8.9.0/src/load_psm.cpp +diff --git a/src/load_psm.cpp b/src/load_psm.cpp +index 92c5bf9..d107375 100644 +--- a/src/load_psm.cpp ++++ b/src/load_psm.cpp @@ -84,7 +84,9 @@ typedef struct _PSMSAMPLE BYTE reserved6[19]; } PSMSAMPLE; @@ -2396,7 +2386,7 @@ diff -u libmodplug-0.8.9.0/src/load_psm.cpp~ libmodplug-0.8.9.0/src/load_psm.cpp BOOL CSoundFile::ReadPSM(LPCBYTE lpStream, DWORD dwMemLength) //----------------------------------------------------------- -@@ -313,17 +313,17 @@ BOOL CSoundFile::ReadPSM(LPCBYTE lpStrea +@@ -313,17 +313,17 @@ BOOL CSoundFile::ReadPSM(LPCBYTE lpStream, DWORD dwMemLength) ch = p[pos++]; if (ch >= m_nChannels) { sp = &dummy; @@ -2422,7 +2412,7 @@ diff -u libmodplug-0.8.9.0/src/load_psm.cpp~ libmodplug-0.8.9.0/src/load_psm.cpp if ((flags & 0x40) && (pos+1 < len)) { UINT nins = p[pos++]; -@@ -351,10 +351,10 @@ BOOL CSoundFile::ReadPSM(LPCBYTE lpStrea +@@ -351,10 +351,10 @@ BOOL CSoundFile::ReadPSM(LPCBYTE lpStream, DWORD dwMemLength) case 0x01: command = CMD_VOLUMESLIDE; param |= 0x0f; if (param == 15) param=31; break; @@ -2437,7 +2427,7 @@ diff -u libmodplug-0.8.9.0/src/load_psm.cpp~ libmodplug-0.8.9.0/src/load_psm.cpp if (param == 240) param=241; break; // 04: fine volslide down -@@ -366,7 +366,7 @@ BOOL CSoundFile::ReadPSM(LPCBYTE lpStrea +@@ -366,7 +366,7 @@ BOOL CSoundFile::ReadPSM(LPCBYTE lpStream, DWORD dwMemLength) // 0F: tone portamento case 0x0F: command = CMD_TONEPORTAMENTO; param = param/4; break; // 15: vibrato @@ -2446,7 +2436,7 @@ diff -u libmodplug-0.8.9.0/src/load_psm.cpp~ libmodplug-0.8.9.0/src/load_psm.cpp // 29: sample offset case 0x29: pos += 2; break; // 2A: retrigger note -@@ -401,466 +401,3 @@ BOOL CSoundFile::ReadPSM(LPCBYTE lpStrea +@@ -401,466 +401,3 @@ BOOL CSoundFile::ReadPSM(LPCBYTE lpStream, DWORD dwMemLength) // Done (finally!) return TRUE; } @@ -2913,9 +2903,10 @@ diff -u libmodplug-0.8.9.0/src/load_psm.cpp~ libmodplug-0.8.9.0/src/load_psm.cpp - END; - -*/ -diff -u libmodplug-0.8.9.0/src/load_s3m.cpp~ libmodplug-0.8.9.0/src/load_s3m.cpp ---- libmodplug-0.8.9.0/src/load_s3m.cpp~ -+++ libmodplug-0.8.9.0/src/load_s3m.cpp +diff --git a/src/load_s3m.cpp b/src/load_s3m.cpp +index 121da12..136357a 100644 +--- a/src/load_s3m.cpp ++++ b/src/load_s3m.cpp @@ -39,7 +39,6 @@ typedef struct tagS3MSAMPLESTRUCT CHAR scrs[4]; } S3MSAMPLESTRUCT; @@ -2932,7 +2923,7 @@ diff -u libmodplug-0.8.9.0/src/load_s3m.cpp~ libmodplug-0.8.9.0/src/load_s3m.cpp void CSoundFile::S3MConvert(MODCOMMAND *m, BOOL bIT) const -@@ -104,85 +104,6 @@ void CSoundFile::S3MConvert(MODCOMMAND * +@@ -104,85 +104,6 @@ void CSoundFile::S3MConvert(MODCOMMAND *m, BOOL bIT) const m->param = param; } @@ -3018,7 +3009,7 @@ diff -u libmodplug-0.8.9.0/src/load_s3m.cpp~ libmodplug-0.8.9.0/src/load_s3m.cpp static DWORD boundInput(DWORD input, DWORD smin, DWORD smax) { if (input > smax) input = smax; -@@ -190,7 +111,6 @@ static DWORD boundInput(DWORD input, DWO +@@ -190,7 +111,6 @@ static DWORD boundInput(DWORD input, DWORD smin, DWORD smax) return(input); } @@ -3026,7 +3017,7 @@ diff -u libmodplug-0.8.9.0/src/load_s3m.cpp~ libmodplug-0.8.9.0/src/load_s3m.cpp BOOL CSoundFile::ReadS3M(const BYTE *lpStream, DWORD dwMemLength) //--------------------------------------------------------------- { -@@ -299,7 +219,7 @@ BOOL CSoundFile::ReadS3M(const BYTE *lpS +@@ -299,7 +219,7 @@ BOOL CSoundFile::ReadS3M(const BYTE *lpStream, DWORD dwMemLength) } S3MSAMPLESTRUCT pSmp; memcpy(&pSmp, lpStream+nInd, 0x50); @@ -3035,7 +3026,7 @@ diff -u libmodplug-0.8.9.0/src/load_s3m.cpp~ libmodplug-0.8.9.0/src/load_s3m.cpp insflags[iSmp-1] = pSmp.flags; inspack[iSmp-1] = pSmp.pack; memcpy(m_szNames[iSmp], pSmp.name, 28); -@@ -410,261 +330,3 @@ BOOL CSoundFile::ReadS3M(const BYTE *lpS +@@ -410,261 +330,3 @@ BOOL CSoundFile::ReadS3M(const BYTE *lpStream, DWORD dwMemLength) if (psfh.flags & 0x10) m_dwSongFlags |= SONG_AMIGALIMITS; return TRUE; } @@ -3297,10 +3288,11 @@ diff -u libmodplug-0.8.9.0/src/load_s3m.cpp~ libmodplug-0.8.9.0/src/load_s3m.cpp -#endif - -#endif // MODPLUG_NO_FILESAVE -diff -u libmodplug-0.8.9.0/src/load_stm.cpp~ libmodplug-0.8.9.0/src/load_stm.cpp ---- libmodplug-0.8.9.0/src/load_stm.cpp~ -+++ libmodplug-0.8.9.0/src/load_stm.cpp -@@ -64,8 +64,8 @@ BOOL CSoundFile::ReadSTM(const BYTE *lpS +diff --git a/src/load_stm.cpp b/src/load_stm.cpp +index 6f55b78..8b0ca0f 100644 +--- a/src/load_stm.cpp ++++ b/src/load_stm.cpp +@@ -64,8 +64,8 @@ BOOL CSoundFile::ReadSTM(const BYTE *lpStream, DWORD dwMemLength) if ((!lpStream) || (dwMemLength < sizeof(STMHEADER))) return FALSE; if ((phdr->filetype != 2) || (phdr->unused != 0x1A) @@ -3311,9 +3303,10 @@ diff -u libmodplug-0.8.9.0/src/load_stm.cpp~ libmodplug-0.8.9.0/src/load_stm.cpp memcpy(m_szNames[0], phdr->songname, 20); // Read STM header m_nType = MOD_TYPE_STM; -diff -u libmodplug-0.8.9.0/src/load_wav.cpp~ libmodplug-0.8.9.0/src/load_wav.cpp ---- libmodplug-0.8.9.0/src/load_wav.cpp~ -+++ libmodplug-0.8.9.0/src/load_wav.cpp +diff --git a/src/load_wav.cpp b/src/load_wav.cpp +index cf721df..e6232e9 100644 +--- a/src/load_wav.cpp ++++ b/src/load_wav.cpp @@ -7,6 +7,12 @@ #include "stdafx.h" #include "sndfile.h" @@ -3327,7 +3320,7 @@ diff -u libmodplug-0.8.9.0/src/load_wav.cpp~ libmodplug-0.8.9.0/src/load_wav.cpp #ifndef WAVE_FORMAT_EXTENSIBLE #define WAVE_FORMAT_EXTENSIBLE 0xFFFE #endif -@@ -139,19 +145,16 @@ BOOL CSoundFile::ReadWav(const BYTE *lpS +@@ -139,19 +145,16 @@ BOOL CSoundFile::ReadWav(const BYTE *lpStream, DWORD dwMemLength) return TRUE; } @@ -3355,14 +3348,15 @@ diff -u libmodplug-0.8.9.0/src/load_wav.cpp~ libmodplug-0.8.9.0/src/load_wav.cpp BOOL IMAADPCMUnpack16(signed short *pdest, UINT nLen, LPBYTE psrc, DWORD dwBytes, UINT pkBlkAlign) //------------------------------------------------------------------------------------------------ { -@@ -215,3 +217,4 @@ BOOL IMAADPCMUnpack16(signed short *pdes +@@ -215,3 +217,4 @@ BOOL IMAADPCMUnpack16(signed short *pdest, UINT nLen, LPBYTE psrc, DWORD dwBytes } return TRUE; } +#endif // WAV_SUPPORT -diff -u libmodplug-0.8.9.0/src/load_xm.cpp~ libmodplug-0.8.9.0/src/load_xm.cpp ---- libmodplug-0.8.9.0/src/load_xm.cpp~ -+++ libmodplug-0.8.9.0/src/load_xm.cpp +diff --git a/src/load_xm.cpp b/src/load_xm.cpp +index 3a22b7d..531b1d6 100644 +--- a/src/load_xm.cpp ++++ b/src/load_xm.cpp @@ -11,7 +11,7 @@ //////////////////////////////////////////////////////// // FastTracker II XM file support @@ -3396,7 +3390,7 @@ diff -u libmodplug-0.8.9.0/src/load_xm.cpp~ libmodplug-0.8.9.0/src/load_xm.cpp BOOL CSoundFile::ReadXM(const BYTE *lpStream, DWORD dwMemLength) //-------------------------------------------------------------- { -@@ -582,315 +579,3 @@ BOOL CSoundFile::ReadXM(const BYTE *lpSt +@@ -582,315 +579,3 @@ BOOL CSoundFile::ReadXM(const BYTE *lpStream, DWORD dwMemLength) } return TRUE; } @@ -3712,92 +3706,10 @@ diff -u libmodplug-0.8.9.0/src/load_xm.cpp~ libmodplug-0.8.9.0/src/load_xm.cpp -} - -#endif // MODPLUG_NO_FILESAVE -diff -u libmodplug-0.8.9.0/src/Makefile.am~ libmodplug-0.8.9.0/src/Makefile.am ---- libmodplug-0.8.9.0/src/Makefile.am~ -+++ libmodplug-0.8.9.0/src/Makefile.am -@@ -35,7 +35,6 @@ libmodplug_la_SOURCES = tables.h - load_ams.cpp \ - load_amf.cpp \ - load_669.cpp \ -- load_j2b.cpp \ - load_mt2.cpp \ - load_psm.cpp \ - load_abc.cpp \ -@@ -45,6 +44,8 @@ libmodplug_la_SOURCES = tables.h - - libmodplugincludedir = $(includedir)/libmodplug - -- --libmodpluginclude_HEADERS = libmodplug/stdafx.h libmodplug/sndfile.h libmodplug/it_defs.h modplug.h -+if EXPORT_CXX -+HEADERS_CXX = libmodplug/stdafx.h libmodplug/sndfile.h libmodplug/it_defs.h -+endif -+libmodpluginclude_HEADERS = modplug.h $(HEADERS_CXX) - noinst_HEADERS = load_pat.h -diff -u libmodplug-0.8.9.0/src/Makefile.in~ libmodplug-0.8.9.0/src/Makefile.in ---- libmodplug-0.8.9.0/src/Makefile.in~ -+++ libmodplug-0.8.9.0/src/Makefile.in -@@ -97,8 +97,9 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/l - $(top_srcdir)/configure.ac - am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) --DIST_COMMON = $(srcdir)/Makefile.am $(libmodpluginclude_HEADERS) \ -- $(noinst_HEADERS) $(am__DIST_COMMON) -+DIST_COMMON = $(srcdir)/Makefile.am \ -+ $(am__libmodpluginclude_HEADERS_DIST) $(noinst_HEADERS) \ -+ $(am__DIST_COMMON) - mkinstalldirs = $(install_sh) -d - CONFIG_HEADER = config.h - CONFIG_CLEAN_FILES = -@@ -139,8 +140,8 @@ am_libmodplug_la_OBJECTS = sndmix.lo snd - load_umx.lo load_ult.lo load_stm.lo load_s3m.lo load_ptm.lo \ - load_okt.lo load_mtm.lo load_mod.lo load_med.lo load_mdl.lo \ - load_it.lo load_far.lo load_dsm.lo load_dmf.lo load_dbm.lo \ -- load_ams.lo load_amf.lo load_669.lo load_j2b.lo load_mt2.lo \ -- load_psm.lo load_abc.lo load_mid.lo load_pat.lo modplug.lo -+ load_ams.lo load_amf.lo load_669.lo load_mt2.lo load_psm.lo \ -+ load_abc.lo load_mid.lo load_pat.lo modplug.lo - libmodplug_la_OBJECTS = $(am_libmodplug_la_OBJECTS) - AM_V_lt = $(am__v_lt_@AM_V@) - am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -@@ -209,6 +210,8 @@ am__can_run_installinfo = \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -+am__libmodpluginclude_HEADERS_DIST = modplug.h libmodplug/stdafx.h \ -+ libmodplug/sndfile.h libmodplug/it_defs.h - HEADERS = $(libmodpluginclude_HEADERS) $(noinst_HEADERS) - am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ - $(LISP)config.h.in -@@ -392,7 +395,6 @@ libmodplug_la_SOURCES = tables.h - load_ams.cpp \ - load_amf.cpp \ - load_669.cpp \ -- load_j2b.cpp \ - load_mt2.cpp \ - load_psm.cpp \ - load_abc.cpp \ -@@ -401,7 +403,8 @@ libmodplug_la_SOURCES = tables.h - modplug.cpp - - libmodplugincludedir = $(includedir)/libmodplug --libmodpluginclude_HEADERS = libmodplug/stdafx.h libmodplug/sndfile.h libmodplug/it_defs.h modplug.h -+@EXPORT_CXX_TRUE@HEADERS_CXX = libmodplug/stdafx.h libmodplug/sndfile.h libmodplug/it_defs.h -+libmodpluginclude_HEADERS = modplug.h $(HEADERS_CXX) - noinst_HEADERS = load_pat.h - all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-am -@@ -507,7 +510,6 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_dsm.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_far.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_it.Plo@am__quote@ --@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_j2b.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_mdl.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_med.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_mid.Plo@am__quote@ -diff -u libmodplug-0.8.9.0/src/mmcmp.cpp~ libmodplug-0.8.9.0/src/mmcmp.cpp ---- libmodplug-0.8.9.0/src/mmcmp.cpp~ -+++ libmodplug-0.8.9.0/src/mmcmp.cpp +diff --git a/src/mmcmp.cpp b/src/mmcmp.cpp +index 890df2f..2ad7a7b 100644 +--- a/src/mmcmp.cpp ++++ b/src/mmcmp.cpp @@ -8,6 +8,7 @@ #include "stdafx.h" #include "sndfile.h" @@ -3806,15 +3718,41 @@ diff -u libmodplug-0.8.9.0/src/mmcmp.cpp~ libmodplug-0.8.9.0/src/mmcmp.cpp BOOL PP20_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength); #pragma pack(1) -@@ -501,3 +502,4 @@ BOOL PP20_Unpack(LPCBYTE *ppMemFile, LPD +@@ -175,7 +176,7 @@ BOOL MMCMP_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength) + || (!pmmh->nblocks) || (pmmh->filesize < 16) || (pmmh->filesize > 0x8000000) + || (pmmh->blktable >= dwMemLength) || (pmmh->blktable + 4*pmmh->nblocks > dwMemLength)) return FALSE; + dwFileSize = pmmh->filesize; +- if ((pBuffer = (LPBYTE)GlobalAllocPtr(GHND, (dwFileSize + 31) & ~15)) == NULL) return FALSE; ++ if ((pBuffer = (LPBYTE)calloc(1, (dwFileSize + 31) & ~15)) == NULL) return FALSE; + pblk_table = (const DWORD *)(lpMemFile+pmmh->blktable); + for (UINT nBlock=0; nBlocknblocks; nBlock++) + { +@@ -382,7 +383,7 @@ BOOL MMCMP_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength) + } + } else + { +- GlobalFreePtr(pBuffer); ++ free(pBuffer); + return FALSE; + } + } +@@ -495,9 +496,10 @@ BOOL PP20_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength) + dwDstLen = (lpMemFile[dwMemLength-4]<<16) | (lpMemFile[dwMemLength-3]<<8) | (lpMemFile[dwMemLength-2]); + //Log("PP20 detected: Packed length=%d, Unpacked length=%d\n", dwMemLength, dwDstLen); + if ((dwDstLen < 512) || (dwDstLen > 0x400000) || (dwDstLen > 16*dwMemLength)) return FALSE; +- if ((pBuffer = (LPBYTE)GlobalAllocPtr(GHND, (dwDstLen + 31) & ~15)) == NULL) return FALSE; ++ if ((pBuffer = (LPBYTE)calloc(1, (dwDstLen + 31) & ~15)) == NULL) return FALSE; + PP20_DoUnpack(lpMemFile+4, dwMemLength-4, pBuffer, dwDstLen); + *ppMemFile = pBuffer; *pdwMemLength = dwDstLen; return TRUE; } +#endif /* MMCMP_SUPPORT */ -diff -u libmodplug-0.8.9.0/src/modplug.cpp~ libmodplug-0.8.9.0/src/modplug.cpp ---- libmodplug-0.8.9.0/src/modplug.cpp~ -+++ libmodplug-0.8.9.0/src/modplug.cpp -@@ -187,28 +187,6 @@ char* ModPlug_GetMessage(ModPlugFile* fi +diff --git a/src/modplug.cpp b/src/modplug.cpp +index bb4ab62..eb00003 100644 +--- a/src/modplug.cpp ++++ b/src/modplug.cpp +@@ -187,28 +187,6 @@ char* ModPlug_GetMessage(ModPlugFile* file) return file->mSoundFile.m_lpszSongComments; } @@ -3843,9 +3781,10 @@ diff -u libmodplug-0.8.9.0/src/modplug.cpp~ libmodplug-0.8.9.0/src/modplug.cpp unsigned int ModPlug_NumInstruments(ModPlugFile* file) { return file->mSoundFile.m_nInstruments; -diff -u libmodplug-0.8.9.0/src/modplug.h~ libmodplug-0.8.9.0/src/modplug.h ---- libmodplug-0.8.9.0/src/modplug.h~ -+++ libmodplug-0.8.9.0/src/modplug.h +diff --git a/src/modplug.h b/src/modplug.h +index f7f78b7..64e157c 100644 +--- a/src/modplug.h ++++ b/src/modplug.h @@ -19,6 +19,12 @@ extern "C" { # else # define MODPLUG_EXPORT __declspec(dllimport) /* using libmodplug dll for windows */ @@ -3859,7 +3798,7 @@ diff -u libmodplug-0.8.9.0/src/modplug.h~ libmodplug-0.8.9.0/src/modplug.h #elif defined(MODPLUG_BUILD) && defined(SYM_VISIBILITY) # define MODPLUG_EXPORT __attribute__((visibility("default"))) #else -@@ -130,24 +136,6 @@ MODPLUG_EXPORT void ModPlug_SeekOrder(Mo +@@ -130,24 +136,6 @@ MODPLUG_EXPORT void ModPlug_SeekOrder(ModPlugFile* file,int order); MODPLUG_EXPORT int ModPlug_GetModuleType(ModPlugFile* file); MODPLUG_EXPORT char* ModPlug_GetMessage(ModPlugFile* file); @@ -3884,15 +3823,89 @@ diff -u libmodplug-0.8.9.0/src/modplug.h~ libmodplug-0.8.9.0/src/modplug.h MODPLUG_EXPORT unsigned int ModPlug_NumInstruments(ModPlugFile* file); MODPLUG_EXPORT unsigned int ModPlug_NumSamples(ModPlugFile* file); MODPLUG_EXPORT unsigned int ModPlug_NumPatterns(ModPlugFile* file); -@@ -182,4 +170,4 @@ MODPLUG_EXPORT void ModPlug_UnloadMixerC +@@ -182,4 +170,4 @@ MODPLUG_EXPORT void ModPlug_UnloadMixerCallback(ModPlugFile* file) ; } /* extern "C" */ #endif -#endif +#endif /* MODPLUG_H__INCLUDED */ -diff -u libmodplug-0.8.9.0/src/sndfile.cpp~ libmodplug-0.8.9.0/src/sndfile.cpp ---- libmodplug-0.8.9.0/src/sndfile.cpp~ -+++ libmodplug-0.8.9.0/src/sndfile.cpp +diff --git a/src/snd_flt.cpp b/src/snd_flt.cpp +index f8a573c..510ef76 100644 +--- a/src/snd_flt.cpp ++++ b/src/snd_flt.cpp +@@ -13,12 +13,11 @@ + + #ifndef NO_FILTER + +-#ifdef MSC_VER ++#if defined(_MSC_VER) && defined(_M_IX86) + #define _ASM_MATH + #endif + + #ifdef _ASM_MATH +- + // pow(a,b) returns a^^b -> 2^^(b.log2(a)) + static float pow(float a, float b) + { +@@ -42,7 +41,6 @@ static float pow(float a, float b) + return result; + } + +- + #else + + #include +diff --git a/src/snd_fx.cpp b/src/snd_fx.cpp +index 0ed4f88..845ecb3 100644 +--- a/src/snd_fx.cpp ++++ b/src/snd_fx.cpp +@@ -9,7 +9,7 @@ + #include "sndfile.h" + #include "tables.h" + +-#ifdef MSC_VER ++#ifdef _MSC_VER + #pragma warning(disable:4244) + #endif + +@@ -514,7 +514,6 @@ void CSoundFile::NoteChange(UINT nChn, int note, BOOL bPorta, BOOL bResetEnv) + if (!bPorta) + { + pChn->nVUMeter = 0x100; +- pChn->nLeftVU = pChn->nRightVU = 0xFF; + pChn->dwFlags &= ~CHN_FILTER; + pChn->dwFlags |= CHN_FASTVOLRAMP; + pChn->nRetrigCount = 0; +@@ -1225,9 +1224,6 @@ BOOL CSoundFile::ProcessEffects() + if (m_nRepeatCount > 0) m_nRepeatCount--; + } else + { +- #ifdef MODPLUG_TRACKER +- if (gdwSoundSetup & SNDMIX_NOBACKWARDJUMPS) +- #endif + // Backward jump disabled + bNoLoop = TRUE; + //reset repeat count incase there are multiple loops. +@@ -2074,7 +2070,6 @@ void CSoundFile::SetSpeed(UINT param) + { + UINT max = (m_nType == MOD_TYPE_IT) ? 256 : 128; + // Modplug Tracker and Mod-Plugin don't do this check +-#ifndef MODPLUG_TRACKER + #ifndef MODPLUG_FASTSOUNDLIB + // Big Hack!!! + if ((!param) || (param >= 0x80) || ((m_nType & (MOD_TYPE_MOD|MOD_TYPE_XM|MOD_TYPE_MT2)) && (param >= 0x1E))) +@@ -2085,7 +2080,6 @@ void CSoundFile::SetSpeed(UINT param) + } + } + #endif // MODPLUG_FASTSOUNDLIB +-#endif // MODPLUG_TRACKER + if ((m_nType & MOD_TYPE_S3M) && (param > 0x80)) param -= 0x80; + if ((param) && (param <= max)) m_nMusicSpeed = param; + } +diff --git a/src/sndfile.cpp b/src/sndfile.cpp +index 2dfc79e..c79e8fa 100644 +--- a/src/sndfile.cpp ++++ b/src/sndfile.cpp @@ -9,8 +9,6 @@ #include "libmodplug/stdafx.h" #include "libmodplug/sndfile.h" @@ -3902,7 +3915,7 @@ diff -u libmodplug-0.8.9.0/src/sndfile.cpp~ libmodplug-0.8.9.0/src/sndfile.cpp #ifdef MMCMP_SUPPORT extern BOOL MMCMP_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength); #endif -@@ -24,24 +22,6 @@ extern void ITUnpack8Bit(signed char *pS +@@ -24,24 +22,6 @@ extern void ITUnpack8Bit(signed char *pSample, DWORD dwLen, LPBYTE lpMemFile, DW extern void ITUnpack16Bit(signed char *pSample, DWORD dwLen, LPBYTE lpMemFile, DWORD dwMemLength, BOOL b215); @@ -3927,7 +3940,7 @@ diff -u libmodplug-0.8.9.0/src/sndfile.cpp~ libmodplug-0.8.9.0/src/sndfile.cpp ////////////////////////////////////////////////////////// // CSoundFile -@@ -140,12 +120,16 @@ BOOL CSoundFile::Create(LPCBYTE lpStream +@@ -140,12 +120,16 @@ BOOL CSoundFile::Create(LPCBYTE lpStream, DWORD dwMemLength) if ((!ReadXM(lpStream, dwMemLength)) && (!ReadS3M(lpStream, dwMemLength)) && (!ReadIT(lpStream, dwMemLength)) @@ -3944,7 +3957,37 @@ diff -u libmodplug-0.8.9.0/src/sndfile.cpp~ libmodplug-0.8.9.0/src/sndfile.cpp && (!ReadSTM(lpStream, dwMemLength)) && (!ReadMed(lpStream, dwMemLength)) && (!ReadMTM(lpStream, dwMemLength)) -@@ -753,41 +737,6 @@ void CSoundFile::LoopPattern(int nPat, i +@@ -168,7 +152,7 @@ BOOL CSoundFile::Create(LPCBYTE lpStream, DWORD dwMemLength) + #ifdef MMCMP_SUPPORT + if (bMMCmp) + { +- GlobalFreePtr(lpStream); ++ free((void*)lpStream); + lpStream = NULL; + } + #endif +@@ -355,7 +339,7 @@ void CSoundFile::FreePattern(LPVOID pat) + signed char* CSoundFile::AllocateSample(UINT nbytes) + //------------------------------------------- + { +- signed char * p = (signed char *)GlobalAllocPtr(GHND, (nbytes+39) & ~7); ++ signed char * p = (signed char *)calloc(1, (nbytes+39) & ~7); + if (p) p += 16; + return p; + } +@@ -364,9 +348,8 @@ signed char* CSoundFile::AllocateSample(UINT nbytes) + void CSoundFile::FreeSample(LPVOID p) + //----------------------------------- + { +- if (p) +- { +- GlobalFreePtr(((LPSTR)p)-16); ++ if (p) { ++ free((char*)p - 16); + } + } + +@@ -753,41 +736,6 @@ void CSoundFile::LoopPattern(int nPat, int nRow) } @@ -3986,7 +4029,7 @@ diff -u libmodplug-0.8.9.0/src/sndfile.cpp~ libmodplug-0.8.9.0/src/sndfile.cpp UINT CSoundFile::GetSampleName(UINT nSample,LPSTR s) const //-------------------------------------------------------- { -@@ -817,274 +766,6 @@ UINT CSoundFile::GetInstrumentName(UINT +@@ -817,274 +765,6 @@ UINT CSoundFile::GetInstrumentName(UINT nInstr,LPSTR s) const } @@ -4261,7 +4304,7 @@ diff -u libmodplug-0.8.9.0/src/sndfile.cpp~ libmodplug-0.8.9.0/src/sndfile.cpp // Flags: // 0 = signed 8-bit PCM data (default) // 1 = unsigned 8-bit PCM data -@@ -1376,17 +1057,18 @@ UINT CSoundFile::ReadSample(MODINSTRUMEN +@@ -1376,17 +1056,18 @@ UINT CSoundFile::ReadSample(MODINSTRUMENT *pIns, UINT nFlags, LPCSTR lpMemFile, // PTM 8bit delta to 16-bit sample case RS_PTM8DTO16: { @@ -4282,7 +4325,7 @@ diff -u libmodplug-0.8.9.0/src/sndfile.cpp~ libmodplug-0.8.9.0/src/sndfile.cpp { uint16_t rawSample = *pSampleW; *pSampleW++ = bswapLE16(rawSample); -@@ -1448,88 +1130,6 @@ UINT CSoundFile::ReadSample(MODINSTRUMEN +@@ -1448,88 +1129,6 @@ UINT CSoundFile::ReadSample(MODINSTRUMENT *pIns, UINT nFlags, LPCSTR lpMemFile, len = DMFUnpack((LPBYTE)pIns->pSample, ibuf, ibufmax, maxlen); } break; @@ -4371,7 +4414,7 @@ diff -u libmodplug-0.8.9.0/src/sndfile.cpp~ libmodplug-0.8.9.0/src/sndfile.cpp #endif // !MODPLUG_FASTSOUNDLIB #endif // !MODPLUG_BASIC_SUPPORT -@@ -1654,8 +1254,7 @@ void CSoundFile::AdjustSampleLoop(MODINS +@@ -1654,8 +1253,7 @@ void CSoundFile::AdjustSampleLoop(MODINSTRUMENT *pIns) DWORD CSoundFile::TransposeToFrequency(int transp, int ftune) //----------------------------------------------------------- { @@ -4381,7 +4424,7 @@ diff -u libmodplug-0.8.9.0/src/sndfile.cpp~ libmodplug-0.8.9.0/src/sndfile.cpp const float _fbase = 8363; const float _factor = 1.0f/(12.0f*128.0f); int result; -@@ -1695,8 +1294,7 @@ DWORD CSoundFile::TransposeToFrequency(i +@@ -1695,8 +1293,7 @@ DWORD CSoundFile::TransposeToFrequency(int transp, int ftune) int CSoundFile::FrequencyToTranspose(DWORD freq) //---------------------------------------------- { @@ -4391,80 +4434,10 @@ diff -u libmodplug-0.8.9.0/src/sndfile.cpp~ libmodplug-0.8.9.0/src/sndfile.cpp const float _f1_8363 = 1.0f / 8363.0f; const float _factor = 128 * 12; LONG result; -diff -u libmodplug-0.8.9.0/src/snd_flt.cpp~ libmodplug-0.8.9.0/src/snd_flt.cpp ---- libmodplug-0.8.9.0/src/snd_flt.cpp~ -+++ libmodplug-0.8.9.0/src/snd_flt.cpp -@@ -13,12 +13,11 @@ - - #ifndef NO_FILTER - --#ifdef MSC_VER -+#if defined(_MSC_VER) && defined(_M_IX86) - #define _ASM_MATH - #endif - - #ifdef _ASM_MATH -- - // pow(a,b) returns a^^b -> 2^^(b.log2(a)) - static float pow(float a, float b) - { -@@ -42,7 +41,6 @@ static float pow(float a, float b) - return result; - } - -- - #else - - #include -diff -u libmodplug-0.8.9.0/src/snd_fx.cpp~ libmodplug-0.8.9.0/src/snd_fx.cpp ---- libmodplug-0.8.9.0/src/snd_fx.cpp~ -+++ libmodplug-0.8.9.0/src/snd_fx.cpp -@@ -9,7 +9,7 @@ - #include "sndfile.h" - #include "tables.h" - --#ifdef MSC_VER -+#ifdef _MSC_VER - #pragma warning(disable:4244) - #endif - -@@ -514,7 +514,6 @@ void CSoundFile::NoteChange(UINT nChn, i - if (!bPorta) - { - pChn->nVUMeter = 0x100; -- pChn->nLeftVU = pChn->nRightVU = 0xFF; - pChn->dwFlags &= ~CHN_FILTER; - pChn->dwFlags |= CHN_FASTVOLRAMP; - pChn->nRetrigCount = 0; -@@ -1225,9 +1224,6 @@ BOOL CSoundFile::ProcessEffects() - if (m_nRepeatCount > 0) m_nRepeatCount--; - } else - { -- #ifdef MODPLUG_TRACKER -- if (gdwSoundSetup & SNDMIX_NOBACKWARDJUMPS) -- #endif - // Backward jump disabled - bNoLoop = TRUE; - //reset repeat count incase there are multiple loops. -@@ -2074,7 +2070,6 @@ void CSoundFile::SetSpeed(UINT param) - { - UINT max = (m_nType == MOD_TYPE_IT) ? 256 : 128; - // Modplug Tracker and Mod-Plugin don't do this check --#ifndef MODPLUG_TRACKER - #ifndef MODPLUG_FASTSOUNDLIB - // Big Hack!!! - if ((!param) || (param >= 0x80) || ((m_nType & (MOD_TYPE_MOD|MOD_TYPE_XM|MOD_TYPE_MT2)) && (param >= 0x1E))) -@@ -2085,7 +2080,6 @@ void CSoundFile::SetSpeed(UINT param) - } - } - #endif // MODPLUG_FASTSOUNDLIB --#endif // MODPLUG_TRACKER - if ((m_nType & MOD_TYPE_S3M) && (param > 0x80)) param -= 0x80; - if ((param) && (param <= max)) m_nMusicSpeed = param; - } -diff -u libmodplug-0.8.9.0/src/sndmix.cpp~ libmodplug-0.8.9.0/src/sndmix.cpp ---- libmodplug-0.8.9.0/src/sndmix.cpp~ -+++ libmodplug-0.8.9.0/src/sndmix.cpp +diff --git a/src/sndmix.cpp b/src/sndmix.cpp +index 20f722f..426f8ab 100644 +--- a/src/sndmix.cpp ++++ b/src/sndmix.cpp @@ -8,10 +8,6 @@ #include "libmodplug/sndfile.h" #include "tables.h" @@ -4604,3 +4577,208 @@ diff -u libmodplug-0.8.9.0/src/sndmix.cpp~ libmodplug-0.8.9.0/src/sndmix.cpp pChn->nLeftVol = pChn->nRightVol = 0; pChn->nLength = 0; +diff -u libmodplug-0.8.9.0/configure~ libmodplug-0.8.9.0/configure +--- libmodplug-0.8.9.0/configure~ ++++ libmodplug-0.8.9.0/configure +@@ -634,6 +634,8 @@ + LTLIBOBJS + LIBOBJS + MODPLUG_LIBRARY_VERSION ++EXPORT_CXX_FALSE ++EXPORT_CXX_TRUE + LT_LDFLAGS + LT_SYS_LIBRARY_PATH + OTOOL64 +@@ -772,6 +774,10 @@ + with_gnu_ld + with_sysroot + enable_libtool_lock ++enable_cxx_interface ++enable_midi ++enable_wav ++enable_mmcmp + ' + ac_precious_vars='build_alias + host_alias +@@ -1418,6 +1424,11 @@ + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) ++ --enable-cxx-interface export C++ interface from library [[default=yes]] ++ --enable-midi compile with midi formats support [[default=no]] ++ --enable-wav compile with wav formats support [[default=no]] ++ --enable-mmcmp compile with mmcmp and pp20 decompression support ++ [[default=no]] + + Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] +@@ -16702,13 +16713,12 @@ + + done + +-for ac_func in setenv sinf ++for ac_func in sinf + do : +- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +-ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" +-if eval test \"x\$"$as_ac_var"\" = x"yes"; then : ++ ac_fn_cxx_check_func "$LINENO" "sinf" "ac_cv_func_sinf" ++if test "x$ac_cv_func_sinf" = xyes; then : + cat >>confdefs.h <<_ACEOF +-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 ++#define HAVE_SINF 1 + _ACEOF + + fi +@@ -16786,6 +16796,66 @@ + ;; + esac + ++# Check whether --enable-cxx_interface was given. ++if test "${enable_cxx_interface+set}" = set; then : ++ enableval=$enable_cxx_interface; ++else ++ enable_cxx_interface=yes ++fi ++ ++if test x$enable_cxx_interface != xyes; then ++ ++$as_echo "#define NO_CXX_EXPORTS 1" >>confdefs.h ++ ++fi ++ if test x$enable_cxx_interface = xyes; then ++ EXPORT_CXX_TRUE= ++ EXPORT_CXX_FALSE='#' ++else ++ EXPORT_CXX_TRUE='#' ++ EXPORT_CXX_FALSE= ++fi ++ ++ ++# Check whether --enable-midi was given. ++if test "${enable_midi+set}" = set; then : ++ enableval=$enable_midi; ++else ++ enable_midi=no ++fi ++ ++if test x$enable_midi = xyes; then ++ ++$as_echo "#define MIDIFMT_SUPPORT 1" >>confdefs.h ++ ++fi ++ ++# Check whether --enable-wav was given. ++if test "${enable_wav+set}" = set; then : ++ enableval=$enable_wav; ++else ++ enable_wav=no ++fi ++ ++if test x$enable_wav = xyes; then ++ ++$as_echo "#define WAV_SUPPORT 1" >>confdefs.h ++ ++fi ++ ++# Check whether --enable-mmcmp was given. ++if test "${enable_mmcmp+set}" = set; then : ++ enableval=$enable_mmcmp; ++else ++ enable_mmcmp=no ++fi ++ ++if test x$enable_mmcmp = xyes; then ++ ++$as_echo "#define MMCMP_SUPPORT 1" >>confdefs.h ++ ++fi ++ + # portable types. requires autoconf 2.60 + # `configure' will check if these are defined in system headers. + # if not, it will auto-detect and define them in `config.h' +@@ -17036,6 +17106,10 @@ + Usually this means the macro was only invoked conditionally." "$LINENO" 5 + fi + ++if test -z "${EXPORT_CXX_TRUE}" && test -z "${EXPORT_CXX_FALSE}"; then ++ as_fn_error $? "conditional \"EXPORT_CXX\" was never defined. ++Usually this means the macro was only invoked conditionally." "$LINENO" 5 ++fi + + : "${CONFIG_STATUS=./config.status}" + ac_write_fail=0 +diff -u libmodplug-0.8.9.0/Makefile.in~ libmodplug-0.8.9.0b/Makefile.in +--- libmodplug-0.8.9.0/Makefile.in~ ++++ libmodplug-0.8.9.0/Makefile.in +@@ -359,7 +359,7 @@ + top_srcdir = @top_srcdir@ + ACLOCAL_AMFLAGS = -I m4 + SUBDIRS = src +-EXTRA_DIST = \ ++EXTRA_DIST = CMakeLists.txt \ + AUTHORS COPYING ChangeLog \ + INSTALL README TODO + +diff -u libmodplug-0.8.9.0/src/Makefile.in~ libmodplug-0.8.9.0/src/Makefile.in +--- libmodplug-0.8.9.0/src/Makefile.in~ ++++ libmodplug-0.8.9.0/src/Makefile.in +@@ -97,8 +97,9 @@ + $(top_srcdir)/configure.ac + am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +-DIST_COMMON = $(srcdir)/Makefile.am $(libmodpluginclude_HEADERS) \ +- $(noinst_HEADERS) $(am__DIST_COMMON) ++DIST_COMMON = $(srcdir)/Makefile.am \ ++ $(am__libmodpluginclude_HEADERS_DIST) $(noinst_HEADERS) \ ++ $(am__DIST_COMMON) + mkinstalldirs = $(install_sh) -d + CONFIG_HEADER = config.h + CONFIG_CLEAN_FILES = +@@ -139,8 +140,8 @@ + load_umx.lo load_ult.lo load_stm.lo load_s3m.lo load_ptm.lo \ + load_okt.lo load_mtm.lo load_mod.lo load_med.lo load_mdl.lo \ + load_it.lo load_far.lo load_dsm.lo load_dmf.lo load_dbm.lo \ +- load_ams.lo load_amf.lo load_669.lo load_j2b.lo load_mt2.lo \ +- load_psm.lo load_abc.lo load_mid.lo load_pat.lo modplug.lo ++ load_ams.lo load_amf.lo load_669.lo load_mt2.lo load_psm.lo \ ++ load_abc.lo load_mid.lo load_pat.lo modplug.lo + libmodplug_la_OBJECTS = $(am_libmodplug_la_OBJECTS) + AM_V_lt = $(am__v_lt_@AM_V@) + am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +@@ -209,6 +210,8 @@ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac ++am__libmodpluginclude_HEADERS_DIST = modplug.h libmodplug/stdafx.h \ ++ libmodplug/sndfile.h libmodplug/it_defs.h + HEADERS = $(libmodpluginclude_HEADERS) $(noinst_HEADERS) + am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +@@ -392,7 +395,6 @@ + load_ams.cpp \ + load_amf.cpp \ + load_669.cpp \ +- load_j2b.cpp \ + load_mt2.cpp \ + load_psm.cpp \ + load_abc.cpp \ +@@ -401,7 +403,8 @@ + modplug.cpp + + libmodplugincludedir = $(includedir)/libmodplug +-libmodpluginclude_HEADERS = libmodplug/stdafx.h libmodplug/sndfile.h libmodplug/it_defs.h modplug.h ++@EXPORT_CXX_TRUE@HEADERS_CXX = libmodplug/stdafx.h libmodplug/sndfile.h libmodplug/it_defs.h ++libmodpluginclude_HEADERS = modplug.h $(HEADERS_CXX) + noinst_HEADERS = load_pat.h + all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-am +@@ -507,7 +510,6 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_dsm.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_far.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_it.Plo@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_j2b.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_mdl.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_med.Plo@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load_mid.Plo@am__quote@ + diff --git a/external/libmodplug-0.8.9.0/src/libmodplug/stdafx.h b/external/libmodplug-0.8.9.0/src/libmodplug/stdafx.h index 15a8b112..219bc7d3 100644 --- a/external/libmodplug-0.8.9.0/src/libmodplug/stdafx.h +++ b/external/libmodplug-0.8.9.0/src/libmodplug/stdafx.h @@ -34,8 +34,7 @@ #define WIN32_LEAN_AND_MEAN #include -#include -#include +#include /* for WAVE_FORMAT_PCM */ #include #include #if defined(_MSC_VER) && (_MSC_VER < 1600) @@ -49,11 +48,9 @@ typedef unsigned int uint32_t; #include #endif -#define srandom(_seed) srand(_seed) -#define random() rand() -#define sleep(_ms) Sleep(_ms) +#define sleep(_ms) Sleep(_ms * 1000) -inline void ProcessPlugins(int n) {} +inline void ProcessPlugins(int n) { (void)n; } #undef strcasecmp #undef strncasecmp @@ -77,11 +74,6 @@ inline void ProcessPlugins(int n) {} #include #endif -#ifdef __WATCOMC__ -#define srandom(_seed) srand(_seed) -#define random() rand() -#endif - typedef int8_t CHAR; typedef uint8_t UCHAR; typedef uint8_t* PUCHAR; @@ -96,7 +88,7 @@ typedef uint32_t* LPDWORD; typedef uint16_t WORD; typedef uint8_t BYTE; typedef uint8_t* LPBYTE; -typedef bool BOOL; +typedef bool BOOL; /* FIXME: must be 'int' */ typedef char* LPSTR; typedef void* LPVOID; typedef uint16_t* LPWORD; @@ -112,17 +104,7 @@ typedef void VOID; #define WAVE_FORMAT_PCM 1 -#define GHND 0 -#define GlobalFreePtr(p) free((void *)(p)) -inline int8_t * GlobalAllocPtr(unsigned int, size_t size) -{ - int8_t * p = (int8_t *) malloc(size); - - if (p != NULL) memset(p, 0, size); - return p; -} - -inline void ProcessPlugins(int n) {} +inline void ProcessPlugins(int n) { (void)n; } #ifndef FALSE #define FALSE false diff --git a/external/libmodplug-0.8.9.0/src/load_abc.cpp b/external/libmodplug-0.8.9.0/src/load_abc.cpp index e5afa5fb..fe5e74c8 100644 --- a/external/libmodplug-0.8.9.0/src/load_abc.cpp +++ b/external/libmodplug-0.8.9.0/src/load_abc.cpp @@ -31,8 +31,8 @@ #include #include #ifndef _WIN32 -#include // for sleep -#endif // _WIN32 +#include /* sleep() */ +#endif #include "stdafx.h" #include "sndfile.h" @@ -2370,8 +2370,8 @@ static ABCHANDLE *ABC_Init(void) } } else { - srandom((uint32_t)time(0)); // initialize random generator with seed - retval->pickrandom = 1+(int)(10000.0*random()/(RAND_MAX+1.0)); + srand((unsigned int)time(0)); // initialize random generator with seed + retval->pickrandom = 1+(int)(10000.0*rand()/(RAND_MAX+1.0)); // can handle pickin' from songbooks with 10.000 songs sprintf(buf,"%s=-%ld",ABC_ENV_NORANDOMPICK,retval->pickrandom); // xmms preloads the file putenv(buf); diff --git a/external/libmodplug-0.8.9.0/src/load_mid.cpp b/external/libmodplug-0.8.9.0/src/load_mid.cpp index e3406dc2..734a247f 100644 --- a/external/libmodplug-0.8.9.0/src/load_mid.cpp +++ b/external/libmodplug-0.8.9.0/src/load_mid.cpp @@ -30,7 +30,7 @@ #include #include #ifndef _WIN32 -#include // for sleep +#include /* sleep() */ #endif #include "stdafx.h" diff --git a/external/libmodplug-0.8.9.0/src/load_pat.cpp b/external/libmodplug-0.8.9.0/src/load_pat.cpp index 273aa634..95462720 100644 --- a/external/libmodplug-0.8.9.0/src/load_pat.cpp +++ b/external/libmodplug-0.8.9.0/src/load_pat.cpp @@ -33,9 +33,9 @@ #include #include #include -#include // for PATH_MAX +#include /* PATH_MAX */ #ifndef _WIN32 -#include // for sleep +#include /* sleep() */ #endif #include "stdafx.h" diff --git a/external/libmodplug-0.8.9.0/src/mmcmp.cpp b/external/libmodplug-0.8.9.0/src/mmcmp.cpp index ce052aa0..2ad7a7b3 100644 --- a/external/libmodplug-0.8.9.0/src/mmcmp.cpp +++ b/external/libmodplug-0.8.9.0/src/mmcmp.cpp @@ -176,7 +176,7 @@ BOOL MMCMP_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength) || (!pmmh->nblocks) || (pmmh->filesize < 16) || (pmmh->filesize > 0x8000000) || (pmmh->blktable >= dwMemLength) || (pmmh->blktable + 4*pmmh->nblocks > dwMemLength)) return FALSE; dwFileSize = pmmh->filesize; - if ((pBuffer = (LPBYTE)GlobalAllocPtr(GHND, (dwFileSize + 31) & ~15)) == NULL) return FALSE; + if ((pBuffer = (LPBYTE)calloc(1, (dwFileSize + 31) & ~15)) == NULL) return FALSE; pblk_table = (const DWORD *)(lpMemFile+pmmh->blktable); for (UINT nBlock=0; nBlocknblocks; nBlock++) { @@ -383,7 +383,7 @@ BOOL MMCMP_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength) } } else { - GlobalFreePtr(pBuffer); + free(pBuffer); return FALSE; } } @@ -496,7 +496,7 @@ BOOL PP20_Unpack(LPCBYTE *ppMemFile, LPDWORD pdwMemLength) dwDstLen = (lpMemFile[dwMemLength-4]<<16) | (lpMemFile[dwMemLength-3]<<8) | (lpMemFile[dwMemLength-2]); //Log("PP20 detected: Packed length=%d, Unpacked length=%d\n", dwMemLength, dwDstLen); if ((dwDstLen < 512) || (dwDstLen > 0x400000) || (dwDstLen > 16*dwMemLength)) return FALSE; - if ((pBuffer = (LPBYTE)GlobalAllocPtr(GHND, (dwDstLen + 31) & ~15)) == NULL) return FALSE; + if ((pBuffer = (LPBYTE)calloc(1, (dwDstLen + 31) & ~15)) == NULL) return FALSE; PP20_DoUnpack(lpMemFile+4, dwMemLength-4, pBuffer, dwDstLen); *ppMemFile = pBuffer; *pdwMemLength = dwDstLen; diff --git a/external/libmodplug-0.8.9.0/src/sndfile.cpp b/external/libmodplug-0.8.9.0/src/sndfile.cpp index daeb3bf6..c79e8faa 100644 --- a/external/libmodplug-0.8.9.0/src/sndfile.cpp +++ b/external/libmodplug-0.8.9.0/src/sndfile.cpp @@ -152,7 +152,7 @@ BOOL CSoundFile::Create(LPCBYTE lpStream, DWORD dwMemLength) #ifdef MMCMP_SUPPORT if (bMMCmp) { - GlobalFreePtr(lpStream); + free((void*)lpStream); lpStream = NULL; } #endif @@ -339,7 +339,7 @@ void CSoundFile::FreePattern(LPVOID pat) signed char* CSoundFile::AllocateSample(UINT nbytes) //------------------------------------------- { - signed char * p = (signed char *)GlobalAllocPtr(GHND, (nbytes+39) & ~7); + signed char * p = (signed char *)calloc(1, (nbytes+39) & ~7); if (p) p += 16; return p; } @@ -348,9 +348,8 @@ signed char* CSoundFile::AllocateSample(UINT nbytes) void CSoundFile::FreeSample(LPVOID p) //----------------------------------- { - if (p) - { - GlobalFreePtr(((LPSTR)p)-16); + if (p) { + free((char*)p - 16); } } diff --git a/external/opus-1.3.1/0004-opus.git-8493bf50.patch b/external/opus-1.3.1/0004-opus.git-8493bf50.patch new file mode 100644 index 00000000..b6c34df5 --- /dev/null +++ b/external/opus-1.3.1/0004-opus.git-8493bf50.patch @@ -0,0 +1,28 @@ +From: Felicia Lim +Date: Tue, 3 Dec 2019 00:37:14 +0000 (-0800) +Subject: Don't update null data pointer after each multistream decoder +X-Git-Url: http://git.xiph.org/?p=opus.git;a=commitdiff_plain;h=8493bf50892be0e902a354444747e6d14f2a6a10 + +Don't update null data pointer after each multistream decoder + +The data pointer could be null in the case of DTX or packet loss. +--- + +diff --git a/src/opus_multistream_decoder.c b/src/opus_multistream_decoder.c +index 0018517a..a2837c35 100644 +--- a/src/opus_multistream_decoder.c ++++ b/src/opus_multistream_decoder.c +@@ -251,8 +251,11 @@ int opus_multistream_decode_native( + } + packet_offset = 0; + ret = opus_decode_native(dec, data, len, buf, frame_size, decode_fec, s!=st->layout.nb_streams-1, &packet_offset, soft_clip); +- data += packet_offset; +- len -= packet_offset; ++ if (!do_plc) ++ { ++ data += packet_offset; ++ len -= packet_offset; ++ } + if (ret <= 0) + { + RESTORE_STACK; diff --git a/external/opus-1.3.1/celt/arm/celt_pitch_xcorr_arm-gnu.S b/external/opus-1.3.1/celt/arm/celt_pitch_xcorr_arm-gnu.S new file mode 100644 index 00000000..10668e54 --- /dev/null +++ b/external/opus-1.3.1/celt/arm/celt_pitch_xcorr_arm-gnu.S @@ -0,0 +1,555 @@ + .syntax unified +@ Copyright (c) 2007-2008 CSIRO +@ Copyright (c) 2007-2009 Xiph.Org Foundation +@ Copyright (c) 2013 Parrot +@ Written by AurĂ©lien Zanelli +@ +@ Redistribution and use in source and binary forms, with or without +@ modification, are permitted provided that the following conditions +@ are met: +@ +@ - Redistributions of source code must retain the above copyright +@ notice, this list of conditions and the following disclaimer. +@ +@ - Redistributions in binary form must reproduce the above copyright +@ notice, this list of conditions and the following disclaimer in the +@ documentation and/or other materials provided with the distribution. +@ +@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +@ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +@ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +@ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +@ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +@ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +@ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +@ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +@ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + .text; .p2align 2; .arch armv7-a + .fpu neon + .object_arch armv4t + + .include "celt/arm/armopts-gnu.S" + + .if OPUS_ARM_MAY_HAVE_EDSP + .global celt_pitch_xcorr_edsp + .endif + + .if OPUS_ARM_MAY_HAVE_NEON + .global celt_pitch_xcorr_neon + .endif + + .if OPUS_ARM_MAY_HAVE_NEON + +@ Compute sum[k]=sum(x[j]*y[j+k],j=0...len-1), k=0...3 + .type xcorr_kernel_neon, %function; xcorr_kernel_neon: @ PROC +xcorr_kernel_neon_start: + @ input: + @ r3 = int len + @ r4 = opus_val16 *x + @ r5 = opus_val16 *y + @ q0 = opus_val32 sum[4] + @ output: + @ q0 = opus_val32 sum[4] + @ preserved: r0-r3, r6-r11, d2, q4-q7, q9-q15 + @ internal usage: + @ r12 = int j + @ d3 = y_3|y_2|y_1|y_0 + @ q2 = y_B|y_A|y_9|y_8|y_7|y_6|y_5|y_4 + @ q3 = x_7|x_6|x_5|x_4|x_3|x_2|x_1|x_0 + @ q8 = scratch + @ + @ Load y[0...3] + @ This requires len>0 to always be valid (which we assert in the C code). + VLD1.16 {d5}, [r5]! + SUBS r12, r3, #8 + BLE xcorr_kernel_neon_process4 +@ Process 8 samples at a time. +@ This loop loads one y value more than we actually need. Therefore we have to +@ stop as soon as there are 8 or fewer samples left (instead of 7), to avoid +@ reading past the end of the array. +xcorr_kernel_neon_process8: + @ This loop has 19 total instructions (10 cycles to issue, minimum), with + @ - 2 cycles of ARM insrtuctions, + @ - 10 cycles of load/store/byte permute instructions, and + @ - 9 cycles of data processing instructions. + @ On a Cortex A8, we dual-issue the maximum amount (9 cycles) between the + @ latter two categories, meaning the whole loop should run in 10 cycles per + @ iteration, barring cache misses. + @ + @ Load x[0...7] + VLD1.16 {d6, d7}, [r4]! + @ Unlike VMOV, VAND is a data processsing instruction (and doesn't get + @ assembled to VMOV, like VORR would), so it dual-issues with the prior VLD1. + VAND d3, d5, d5 + SUBS r12, r12, #8 + @ Load y[4...11] + VLD1.16 {d4, d5}, [r5]! + VMLAL.S16 q0, d3, d6[0] + VEXT.16 d16, d3, d4, #1 + VMLAL.S16 q0, d4, d7[0] + VEXT.16 d17, d4, d5, #1 + VMLAL.S16 q0, d16, d6[1] + VEXT.16 d16, d3, d4, #2 + VMLAL.S16 q0, d17, d7[1] + VEXT.16 d17, d4, d5, #2 + VMLAL.S16 q0, d16, d6[2] + VEXT.16 d16, d3, d4, #3 + VMLAL.S16 q0, d17, d7[2] + VEXT.16 d17, d4, d5, #3 + VMLAL.S16 q0, d16, d6[3] + VMLAL.S16 q0, d17, d7[3] + BGT xcorr_kernel_neon_process8 +@ Process 4 samples here if we have > 4 left (still reading one extra y value). +xcorr_kernel_neon_process4: + ADDS r12, r12, #4 + BLE xcorr_kernel_neon_process2 + @ Load x[0...3] + VLD1.16 d6, [r4]! + @ Use VAND since it's a data processing instruction again. + VAND d4, d5, d5 + SUB r12, r12, #4 + @ Load y[4...7] + VLD1.16 d5, [r5]! + VMLAL.S16 q0, d4, d6[0] + VEXT.16 d16, d4, d5, #1 + VMLAL.S16 q0, d16, d6[1] + VEXT.16 d16, d4, d5, #2 + VMLAL.S16 q0, d16, d6[2] + VEXT.16 d16, d4, d5, #3 + VMLAL.S16 q0, d16, d6[3] +@ Process 2 samples here if we have > 2 left (still reading one extra y value). +xcorr_kernel_neon_process2: + ADDS r12, r12, #2 + BLE xcorr_kernel_neon_process1 + @ Load x[0...1] + VLD2.16 {d6[],d7[]}, [r4]! + @ Use VAND since it's a data processing instruction again. + VAND d4, d5, d5 + SUB r12, r12, #2 + @ Load y[4...5] + VLD1.32 {d5[]}, [r5]! + VMLAL.S16 q0, d4, d6 + VEXT.16 d16, d4, d5, #1 + @ Replace bottom copy of {y5,y4} in d5 with {y3,y2} from d4, using VSRI + @ instead of VEXT, since it's a data-processing instruction. + VSRI.64 d5, d4, #32 + VMLAL.S16 q0, d16, d7 +@ Process 1 sample using the extra y value we loaded above. +xcorr_kernel_neon_process1: + @ Load next *x + VLD1.16 {d6[]}, [r4]! + ADDS r12, r12, #1 + @ y[0...3] are left in d5 from prior iteration(s) (if any) + VMLAL.S16 q0, d5, d6 + MOVLE pc, lr +@ Now process 1 last sample, not reading ahead. + @ Load last *y + VLD1.16 {d4[]}, [r5]! + VSRI.64 d4, d5, #16 + @ Load last *x + VLD1.16 {d6[]}, [r4]! + VMLAL.S16 q0, d4, d6 + MOV pc, lr + .size xcorr_kernel_neon, .-xcorr_kernel_neon @ ENDP + +@ opus_val32 celt_pitch_xcorr_neon(opus_val16 *_x, opus_val16 *_y, +@ opus_val32 *xcorr, int len, int max_pitch, int arch) + .type celt_pitch_xcorr_neon, %function; celt_pitch_xcorr_neon: @ PROC + @ input: + @ r0 = opus_val16 *_x + @ r1 = opus_val16 *_y + @ r2 = opus_val32 *xcorr + @ r3 = int len + @ output: + @ r0 = int maxcorr + @ internal usage: + @ r4 = opus_val16 *x (for xcorr_kernel_neon()) + @ r5 = opus_val16 *y (for xcorr_kernel_neon()) + @ r6 = int max_pitch + @ r12 = int j + @ q15 = int maxcorr[4] (q15 is not used by xcorr_kernel_neon()) + @ ignored: + @ int arch + STMFD sp!, {r4-r6, lr} + LDR r6, [sp, #16] + VMOV.S32 q15, #1 + @ if (max_pitch < 4) goto celt_pitch_xcorr_neon_process4_done + SUBS r6, r6, #4 + BLT celt_pitch_xcorr_neon_process4_done +celt_pitch_xcorr_neon_process4: + @ xcorr_kernel_neon parameters: + @ r3 = len, r4 = _x, r5 = _y, q0 = {0, 0, 0, 0} + MOV r4, r0 + MOV r5, r1 + VEOR q0, q0, q0 + @ xcorr_kernel_neon only modifies r4, r5, r12, and q0...q3. + @ So we don't save/restore any other registers. + BL xcorr_kernel_neon_start + SUBS r6, r6, #4 + VST1.32 {q0}, [r2]! + @ _y += 4 + ADD r1, r1, #8 + VMAX.S32 q15, q15, q0 + @ if (max_pitch < 4) goto celt_pitch_xcorr_neon_process4_done + BGE celt_pitch_xcorr_neon_process4 +@ We have less than 4 sums left to compute. +celt_pitch_xcorr_neon_process4_done: + ADDS r6, r6, #4 + @ Reduce maxcorr to a single value + VMAX.S32 d30, d30, d31 + VPMAX.S32 d30, d30, d30 + @ if (max_pitch <= 0) goto celt_pitch_xcorr_neon_done + BLE celt_pitch_xcorr_neon_done +@ Now compute each remaining sum one at a time. +celt_pitch_xcorr_neon_process_remaining: + MOV r4, r0 + MOV r5, r1 + VMOV.I32 q0, #0 + SUBS r12, r3, #8 + BLT celt_pitch_xcorr_neon_process_remaining4 +@ Sum terms 8 at a time. +celt_pitch_xcorr_neon_process_remaining_loop8: + @ Load x[0...7] + VLD1.16 {q1}, [r4]! + @ Load y[0...7] + VLD1.16 {q2}, [r5]! + SUBS r12, r12, #8 + VMLAL.S16 q0, d4, d2 + VMLAL.S16 q0, d5, d3 + BGE celt_pitch_xcorr_neon_process_remaining_loop8 +@ Sum terms 4 at a time. +celt_pitch_xcorr_neon_process_remaining4: + ADDS r12, r12, #4 + BLT celt_pitch_xcorr_neon_process_remaining4_done + @ Load x[0...3] + VLD1.16 {d2}, [r4]! + @ Load y[0...3] + VLD1.16 {d3}, [r5]! + SUB r12, r12, #4 + VMLAL.S16 q0, d3, d2 +celt_pitch_xcorr_neon_process_remaining4_done: + @ Reduce the sum to a single value. + VADD.S32 d0, d0, d1 + VPADDL.S32 d0, d0 + ADDS r12, r12, #4 + BLE celt_pitch_xcorr_neon_process_remaining_loop_done +@ Sum terms 1 at a time. +celt_pitch_xcorr_neon_process_remaining_loop1: + VLD1.16 {d2[]}, [r4]! + VLD1.16 {d3[]}, [r5]! + SUBS r12, r12, #1 + VMLAL.S16 q0, d2, d3 + BGT celt_pitch_xcorr_neon_process_remaining_loop1 +celt_pitch_xcorr_neon_process_remaining_loop_done: + VST1.32 {d0[0]}, [r2]! + VMAX.S32 d30, d30, d0 + SUBS r6, r6, #1 + @ _y++ + ADD r1, r1, #2 + @ if (--max_pitch > 0) goto celt_pitch_xcorr_neon_process_remaining + BGT celt_pitch_xcorr_neon_process_remaining +celt_pitch_xcorr_neon_done: + VMOV.32 r0, d30[0] + LDMFD sp!, {r4-r6, pc} + .size celt_pitch_xcorr_neon, .-celt_pitch_xcorr_neon @ ENDP + + .endif + + .if OPUS_ARM_MAY_HAVE_EDSP + +@ This will get used on ARMv7 devices without NEON, so it has been optimized +@ to take advantage of dual-issuing where possible. + .type xcorr_kernel_edsp, %function; xcorr_kernel_edsp: @ PROC +xcorr_kernel_edsp_start: + @ input: + @ r3 = int len + @ r4 = opus_val16 *_x (must be 32-bit aligned) + @ r5 = opus_val16 *_y (must be 32-bit aligned) + @ r6...r9 = opus_val32 sum[4] + @ output: + @ r6...r9 = opus_val32 sum[4] + @ preserved: r0-r5 + @ internal usage + @ r2 = int j + @ r12,r14 = opus_val16 x[4] + @ r10,r11 = opus_val16 y[4] + STMFD sp!, {r2,r4,r5,lr} + LDR r10, [r5], #4 @ Load y[0...1] + SUBS r2, r3, #4 @ j = len-4 + LDR r11, [r5], #4 @ Load y[2...3] + BLE xcorr_kernel_edsp_process4_done + LDR r12, [r4], #4 @ Load x[0...1] + @ Stall +xcorr_kernel_edsp_process4: + @ The multiplies must issue from pipeline 0, and can't dual-issue with each + @ other. Every other instruction here dual-issues with a multiply, and is + @ thus "free". There should be no stalls in the body of the loop. + SMLABB r6, r12, r10, r6 @ sum[0] = MAC16_16(sum[0],x_0,y_0) + LDR r14, [r4], #4 @ Load x[2...3] + SMLABT r7, r12, r10, r7 @ sum[1] = MAC16_16(sum[1],x_0,y_1) + SUBS r2, r2, #4 @ j-=4 + SMLABB r8, r12, r11, r8 @ sum[2] = MAC16_16(sum[2],x_0,y_2) + SMLABT r9, r12, r11, r9 @ sum[3] = MAC16_16(sum[3],x_0,y_3) + SMLATT r6, r12, r10, r6 @ sum[0] = MAC16_16(sum[0],x_1,y_1) + LDR r10, [r5], #4 @ Load y[4...5] + SMLATB r7, r12, r11, r7 @ sum[1] = MAC16_16(sum[1],x_1,y_2) + SMLATT r8, r12, r11, r8 @ sum[2] = MAC16_16(sum[2],x_1,y_3) + SMLATB r9, r12, r10, r9 @ sum[3] = MAC16_16(sum[3],x_1,y_4) + LDRGT r12, [r4], #4 @ Load x[0...1] + SMLABB r6, r14, r11, r6 @ sum[0] = MAC16_16(sum[0],x_2,y_2) + SMLABT r7, r14, r11, r7 @ sum[1] = MAC16_16(sum[1],x_2,y_3) + SMLABB r8, r14, r10, r8 @ sum[2] = MAC16_16(sum[2],x_2,y_4) + SMLABT r9, r14, r10, r9 @ sum[3] = MAC16_16(sum[3],x_2,y_5) + SMLATT r6, r14, r11, r6 @ sum[0] = MAC16_16(sum[0],x_3,y_3) + LDR r11, [r5], #4 @ Load y[6...7] + SMLATB r7, r14, r10, r7 @ sum[1] = MAC16_16(sum[1],x_3,y_4) + SMLATT r8, r14, r10, r8 @ sum[2] = MAC16_16(sum[2],x_3,y_5) + SMLATB r9, r14, r11, r9 @ sum[3] = MAC16_16(sum[3],x_3,y_6) + BGT xcorr_kernel_edsp_process4 +xcorr_kernel_edsp_process4_done: + ADDS r2, r2, #4 + BLE xcorr_kernel_edsp_done + LDRH r12, [r4], #2 @ r12 = *x++ + SUBS r2, r2, #1 @ j-- + @ Stall + SMLABB r6, r12, r10, r6 @ sum[0] = MAC16_16(sum[0],x,y_0) + LDRHGT r14, [r4], #2 @ r14 = *x++ + SMLABT r7, r12, r10, r7 @ sum[1] = MAC16_16(sum[1],x,y_1) + SMLABB r8, r12, r11, r8 @ sum[2] = MAC16_16(sum[2],x,y_2) + SMLABT r9, r12, r11, r9 @ sum[3] = MAC16_16(sum[3],x,y_3) + BLE xcorr_kernel_edsp_done + SMLABT r6, r14, r10, r6 @ sum[0] = MAC16_16(sum[0],x,y_1) + SUBS r2, r2, #1 @ j-- + SMLABB r7, r14, r11, r7 @ sum[1] = MAC16_16(sum[1],x,y_2) + LDRH r10, [r5], #2 @ r10 = y_4 = *y++ + SMLABT r8, r14, r11, r8 @ sum[2] = MAC16_16(sum[2],x,y_3) + LDRHGT r12, [r4], #2 @ r12 = *x++ + SMLABB r9, r14, r10, r9 @ sum[3] = MAC16_16(sum[3],x,y_4) + BLE xcorr_kernel_edsp_done + SMLABB r6, r12, r11, r6 @ sum[0] = MAC16_16(sum[0],tmp,y_2) + CMP r2, #1 @ j-- + SMLABT r7, r12, r11, r7 @ sum[1] = MAC16_16(sum[1],tmp,y_3) + LDRH r2, [r5], #2 @ r2 = y_5 = *y++ + SMLABB r8, r12, r10, r8 @ sum[2] = MAC16_16(sum[2],tmp,y_4) + LDRHGT r14, [r4] @ r14 = *x + SMLABB r9, r12, r2, r9 @ sum[3] = MAC16_16(sum[3],tmp,y_5) + BLE xcorr_kernel_edsp_done + SMLABT r6, r14, r11, r6 @ sum[0] = MAC16_16(sum[0],tmp,y_3) + LDRH r11, [r5] @ r11 = y_6 = *y + SMLABB r7, r14, r10, r7 @ sum[1] = MAC16_16(sum[1],tmp,y_4) + SMLABB r8, r14, r2, r8 @ sum[2] = MAC16_16(sum[2],tmp,y_5) + SMLABB r9, r14, r11, r9 @ sum[3] = MAC16_16(sum[3],tmp,y_6) +xcorr_kernel_edsp_done: + LDMFD sp!, {r2,r4,r5,pc} + .size xcorr_kernel_edsp, .-xcorr_kernel_edsp @ ENDP + + .type celt_pitch_xcorr_edsp, %function; celt_pitch_xcorr_edsp: @ PROC + @ input: + @ r0 = opus_val16 *_x (must be 32-bit aligned) + @ r1 = opus_val16 *_y (only needs to be 16-bit aligned) + @ r2 = opus_val32 *xcorr + @ r3 = int len + @ output: + @ r0 = maxcorr + @ internal usage + @ r4 = opus_val16 *x + @ r5 = opus_val16 *y + @ r6 = opus_val32 sum0 + @ r7 = opus_val32 sum1 + @ r8 = opus_val32 sum2 + @ r9 = opus_val32 sum3 + @ r1 = int max_pitch + @ r12 = int j + @ ignored: + @ int arch + STMFD sp!, {r4-r11, lr} + MOV r5, r1 + LDR r1, [sp, #36] + MOV r4, r0 + TST r5, #3 + @ maxcorr = 1 + MOV r0, #1 + BEQ celt_pitch_xcorr_edsp_process1u_done +@ Compute one sum at the start to make y 32-bit aligned. + SUBS r12, r3, #4 + @ r14 = sum = 0 + MOV r14, #0 + LDRH r8, [r5], #2 + BLE celt_pitch_xcorr_edsp_process1u_loop4_done + LDR r6, [r4], #4 + MOV r8, r8, LSL #16 +celt_pitch_xcorr_edsp_process1u_loop4: + LDR r9, [r5], #4 + SMLABT r14, r6, r8, r14 @ sum = MAC16_16(sum, x_0, y_0) + LDR r7, [r4], #4 + SMLATB r14, r6, r9, r14 @ sum = MAC16_16(sum, x_1, y_1) + LDR r8, [r5], #4 + SMLABT r14, r7, r9, r14 @ sum = MAC16_16(sum, x_2, y_2) + SUBS r12, r12, #4 @ j-=4 + SMLATB r14, r7, r8, r14 @ sum = MAC16_16(sum, x_3, y_3) + LDRGT r6, [r4], #4 + BGT celt_pitch_xcorr_edsp_process1u_loop4 + MOV r8, r8, LSR #16 +celt_pitch_xcorr_edsp_process1u_loop4_done: + ADDS r12, r12, #4 +celt_pitch_xcorr_edsp_process1u_loop1: + LDRHGE r6, [r4], #2 + @ Stall + SMLABBGE r14, r6, r8, r14 @ sum = MAC16_16(sum, *x, *y) + SUBSGE r12, r12, #1 + LDRHGT r8, [r5], #2 + BGT celt_pitch_xcorr_edsp_process1u_loop1 + @ Restore _x + SUB r4, r4, r3, LSL #1 + @ Restore and advance _y + SUB r5, r5, r3, LSL #1 + @ maxcorr = max(maxcorr, sum) + CMP r0, r14 + ADD r5, r5, #2 + MOVLT r0, r14 + SUBS r1, r1, #1 + @ xcorr[i] = sum + STR r14, [r2], #4 + BLE celt_pitch_xcorr_edsp_done +celt_pitch_xcorr_edsp_process1u_done: + @ if (max_pitch < 4) goto celt_pitch_xcorr_edsp_process2 + SUBS r1, r1, #4 + BLT celt_pitch_xcorr_edsp_process2 +celt_pitch_xcorr_edsp_process4: + @ xcorr_kernel_edsp parameters: + @ r3 = len, r4 = _x, r5 = _y, r6...r9 = sum[4] = {0, 0, 0, 0} + MOV r6, #0 + MOV r7, #0 + MOV r8, #0 + MOV r9, #0 + BL xcorr_kernel_edsp_start @ xcorr_kernel_edsp(_x, _y+i, xcorr+i, len) + @ maxcorr = max(maxcorr, sum0, sum1, sum2, sum3) + CMP r0, r6 + @ _y+=4 + ADD r5, r5, #8 + MOVLT r0, r6 + CMP r0, r7 + MOVLT r0, r7 + CMP r0, r8 + MOVLT r0, r8 + CMP r0, r9 + MOVLT r0, r9 + STMIA r2!, {r6-r9} + SUBS r1, r1, #4 + BGE celt_pitch_xcorr_edsp_process4 +celt_pitch_xcorr_edsp_process2: + ADDS r1, r1, #2 + BLT celt_pitch_xcorr_edsp_process1a + SUBS r12, r3, #4 + @ {r10, r11} = {sum0, sum1} = {0, 0} + MOV r10, #0 + MOV r11, #0 + LDR r8, [r5], #4 + BLE celt_pitch_xcorr_edsp_process2_loop_done + LDR r6, [r4], #4 + LDR r9, [r5], #4 +celt_pitch_xcorr_edsp_process2_loop4: + SMLABB r10, r6, r8, r10 @ sum0 = MAC16_16(sum0, x_0, y_0) + LDR r7, [r4], #4 + SMLABT r11, r6, r8, r11 @ sum1 = MAC16_16(sum1, x_0, y_1) + SUBS r12, r12, #4 @ j-=4 + SMLATT r10, r6, r8, r10 @ sum0 = MAC16_16(sum0, x_1, y_1) + LDR r8, [r5], #4 + SMLATB r11, r6, r9, r11 @ sum1 = MAC16_16(sum1, x_1, y_2) + LDRGT r6, [r4], #4 + SMLABB r10, r7, r9, r10 @ sum0 = MAC16_16(sum0, x_2, y_2) + SMLABT r11, r7, r9, r11 @ sum1 = MAC16_16(sum1, x_2, y_3) + SMLATT r10, r7, r9, r10 @ sum0 = MAC16_16(sum0, x_3, y_3) + LDRGT r9, [r5], #4 + SMLATB r11, r7, r8, r11 @ sum1 = MAC16_16(sum1, x_3, y_4) + BGT celt_pitch_xcorr_edsp_process2_loop4 +celt_pitch_xcorr_edsp_process2_loop_done: + ADDS r12, r12, #2 + BLE celt_pitch_xcorr_edsp_process2_1 + LDR r6, [r4], #4 + @ Stall + SMLABB r10, r6, r8, r10 @ sum0 = MAC16_16(sum0, x_0, y_0) + LDR r9, [r5], #4 + SMLABT r11, r6, r8, r11 @ sum1 = MAC16_16(sum1, x_0, y_1) + SUB r12, r12, #2 + SMLATT r10, r6, r8, r10 @ sum0 = MAC16_16(sum0, x_1, y_1) + MOV r8, r9 + SMLATB r11, r6, r9, r11 @ sum1 = MAC16_16(sum1, x_1, y_2) +celt_pitch_xcorr_edsp_process2_1: + LDRH r6, [r4], #2 + ADDS r12, r12, #1 + @ Stall + SMLABB r10, r6, r8, r10 @ sum0 = MAC16_16(sum0, x_0, y_0) + LDRHGT r7, [r4], #2 + SMLABT r11, r6, r8, r11 @ sum1 = MAC16_16(sum1, x_0, y_1) + BLE celt_pitch_xcorr_edsp_process2_done + LDRH r9, [r5], #2 + SMLABT r10, r7, r8, r10 @ sum0 = MAC16_16(sum0, x_0, y_1) + SMLABB r11, r7, r9, r11 @ sum1 = MAC16_16(sum1, x_0, y_2) +celt_pitch_xcorr_edsp_process2_done: + @ Restore _x + SUB r4, r4, r3, LSL #1 + @ Restore and advance _y + SUB r5, r5, r3, LSL #1 + @ maxcorr = max(maxcorr, sum0) + CMP r0, r10 + ADD r5, r5, #2 + MOVLT r0, r10 + SUB r1, r1, #2 + @ maxcorr = max(maxcorr, sum1) + CMP r0, r11 + @ xcorr[i] = sum + STR r10, [r2], #4 + MOVLT r0, r11 + STR r11, [r2], #4 +celt_pitch_xcorr_edsp_process1a: + ADDS r1, r1, #1 + BLT celt_pitch_xcorr_edsp_done + SUBS r12, r3, #4 + @ r14 = sum = 0 + MOV r14, #0 + BLT celt_pitch_xcorr_edsp_process1a_loop_done + LDR r6, [r4], #4 + LDR r8, [r5], #4 + LDR r7, [r4], #4 + LDR r9, [r5], #4 +celt_pitch_xcorr_edsp_process1a_loop4: + SMLABB r14, r6, r8, r14 @ sum = MAC16_16(sum, x_0, y_0) + SUBS r12, r12, #4 @ j-=4 + SMLATT r14, r6, r8, r14 @ sum = MAC16_16(sum, x_1, y_1) + LDRGE r6, [r4], #4 + SMLABB r14, r7, r9, r14 @ sum = MAC16_16(sum, x_2, y_2) + LDRGE r8, [r5], #4 + SMLATT r14, r7, r9, r14 @ sum = MAC16_16(sum, x_3, y_3) + LDRGE r7, [r4], #4 + LDRGE r9, [r5], #4 + BGE celt_pitch_xcorr_edsp_process1a_loop4 +celt_pitch_xcorr_edsp_process1a_loop_done: + ADDS r12, r12, #2 + LDRGE r6, [r4], #4 + LDRGE r8, [r5], #4 + @ Stall + SMLABBGE r14, r6, r8, r14 @ sum = MAC16_16(sum, x_0, y_0) + SUBGE r12, r12, #2 + SMLATTGE r14, r6, r8, r14 @ sum = MAC16_16(sum, x_1, y_1) + ADDS r12, r12, #1 + LDRHGE r6, [r4], #2 + LDRHGE r8, [r5], #2 + @ Stall + SMLABBGE r14, r6, r8, r14 @ sum = MAC16_16(sum, *x, *y) + @ maxcorr = max(maxcorr, sum) + CMP r0, r14 + @ xcorr[i] = sum + STR r14, [r2], #4 + MOVLT r0, r14 +celt_pitch_xcorr_edsp_done: + LDMFD sp!, {r4-r11, pc} + .size celt_pitch_xcorr_edsp, .-celt_pitch_xcorr_edsp @ ENDP + + .endif + +@ END: + .section .note.GNU-stack,"",%progbits diff --git a/external/opus-1.3.1/src/opus_multistream_decoder.c b/external/opus-1.3.1/src/opus_multistream_decoder.c index 0018517a..a2837c35 100644 --- a/external/opus-1.3.1/src/opus_multistream_decoder.c +++ b/external/opus-1.3.1/src/opus_multistream_decoder.c @@ -251,8 +251,11 @@ int opus_multistream_decode_native( } packet_offset = 0; ret = opus_decode_native(dec, data, len, buf, frame_size, decode_fec, s!=st->layout.nb_streams-1, &packet_offset, soft_clip); - data += packet_offset; - len -= packet_offset; + if (!do_plc) + { + data += packet_offset; + len -= packet_offset; + } if (ret <= 0) { RESTORE_STACK;