From 41be51832237d07f4a201e5e7c8d109059804815 Mon Sep 17 00:00:00 2001 From: Tony Bark Date: Tue, 7 May 2024 11:54:50 -0400 Subject: [PATCH] Added nioTSO's EA MicroTalk encoder to the project --- library/extra/d20/d20.h | 6 +- library/tools/utkencode/README.md | 49 + library/tools/utkencode/UNLICENSE | 24 + library/tools/utkencode/eachunk.h | 77 ++ library/tools/utkencode/io.h | 78 ++ library/tools/utkencode/samples/DS1.M10 | Bin 0 -> 70840 bytes .../tools/utkencode/samples/fifa2001-mt5.dat | Bin 0 -> 106496 bytes library/tools/utkencode/samples/fifa2001.dat | Bin 0 -> 59808 bytes library/tools/utkencode/samples/male.utk | Bin 0 -> 22464 bytes library/tools/utkencode/utk.h | 446 +++++++ library/tools/utkencode/utkdecode-bnb.c | 167 +++ library/tools/utkencode/utkdecode-fifa.c | 229 ++++ library/tools/utkencode/utkdecode.c | 172 +++ library/tools/utkencode/utkencode.c | 1130 +++++++++++++++++ 14 files changed, 2374 insertions(+), 4 deletions(-) create mode 100644 library/tools/utkencode/README.md create mode 100644 library/tools/utkencode/UNLICENSE create mode 100644 library/tools/utkencode/eachunk.h create mode 100644 library/tools/utkencode/io.h create mode 100644 library/tools/utkencode/samples/DS1.M10 create mode 100644 library/tools/utkencode/samples/fifa2001-mt5.dat create mode 100644 library/tools/utkencode/samples/fifa2001.dat create mode 100644 library/tools/utkencode/samples/male.utk create mode 100644 library/tools/utkencode/utk.h create mode 100644 library/tools/utkencode/utkdecode-bnb.c create mode 100644 library/tools/utkencode/utkdecode-fifa.c create mode 100644 library/tools/utkencode/utkdecode.c create mode 100644 library/tools/utkencode/utkencode.c diff --git a/library/extra/d20/d20.h b/library/extra/d20/d20.h index 5c8b980..a0e4c14 100644 --- a/library/extra/d20/d20.h +++ b/library/extra/d20/d20.h @@ -1,10 +1,8 @@ /** @file d20.h * @brief Implements Dungeons & Dragons style dice in C * - * d20.h is a reimplementation of https://github.com/opensourcedoc/d20-c, - * but following the principles of being a single header/file library with - * a minimal API - * + * d20.h is a reimplementation of https://github.com/opensourcedoc/d20-c,but following the principles of being a single header/file library with a minimal API. + * @source https://github.com/adamml/d20 * @author adamml * @date 2022-11-07 */ diff --git a/library/tools/utkencode/README.md b/library/tools/utkencode/README.md new file mode 100644 index 0000000..2159196 --- /dev/null +++ b/library/tools/utkencode/README.md @@ -0,0 +1,49 @@ +## EA MicroTalk + +EA MicroTalk (also UTalk or UTK) is a linear-predictive speech codec used in +various games by Electronic Arts. The earliest known game to use it is +Beasts & Bumpkins (1997). The codec has a bandwidth of 11.025kHz (sampling rate +22.05kHz) and frame size of 20ms (432 samples) and only supports mono. It is +typically encoded at 32 kbit/s. + +Docs: http://wiki.niotso.org/UTK + +In this repository, I have created a set of open source (public domain +via the UNLICENSE) MicroTalk decoders/encoders. + +* Use utkdecode to decode Maxis UTK (The Sims Online, SimCity 4). +* Use utkdecode-bnb to decode PT/M10 (Beasts & Bumpkins). +* Use utkdecode-fifa to decode FIFA 2001/2002 (PS2) speech samples. This tool + supports regular MicroTalk and MicroTalk Revision 3 + [SCxl files](https://wiki.multimedia.cx/index.php/Electronic_Arts_SCxl).(*) +* Use utkencode to encode Maxis UTK. (This is the simplest container format and + is currently the only one supported for encoding.) + +(*) I wasn't able to find any real-world MicroTalk Rev. 3 samples in any games. +However, you can transcode a FIFA MicroTalk Rev. 2 file to Rev. 3 using +[EA's Sound eXchange tool](https://wiki.multimedia.cx/index.php/Electronic_Arts_Sound_eXchange) +(`sx -mt_blk input.dat -=output.dat`). + +## Compiling + +``` +gcc -Wall -Wextra -Wno-unused-function -ansi -pedantic -O2 -ffast-math -fwhole-program -g0 -s -static-libgcc -o utkdecode utkdecode.c +gcc -Wall -Wextra -Wno-unused-function -ansi -pedantic -O2 -ffast-math -fwhole-program -g0 -s -static-libgcc -o utkdecode-fifa utkdecode-fifa.c +gcc -Wall -Wextra -Wno-unused-function -ansi -pedantic -O2 -ffast-math -fwhole-program -g0 -s -static-libgcc -o utkdecode-bnb utkdecode-bnb.c +gcc -Wall -Wextra -Wno-unused-function -ansi -pedantic -O2 -ffast-math -fwhole-program -g0 -s -static-libgcc -o utkencode utkencode.c +``` + +## How the encoder works + +The encoder for now is very simple. It does LPC analysis using the Levinson +algorithm and transmits the entire excitation signal explicitly. Compression is +achieved by choosing a large fixed codebook gain, such that each excitation +sample has a large (coarse) quantization step size. Error is minimized in the +excitation domain, and the quality is somewhat poor for bitrates below about +48 kbit/s. + +However, MicroTalk is a multi-pulse codec (it is cheap to code long runs of +zeros in the excitation signal). Hence, a much better design (and indeed the +standard practice for multi-pulse speech codecs) is to search for the positions +and amplitudes of n pulses such that error is minimized in the output domain +(or the perceptually weighted domain). This new encoder is still in the works. \ No newline at end of file diff --git a/library/tools/utkencode/UNLICENSE b/library/tools/utkencode/UNLICENSE new file mode 100644 index 0000000..68a49da --- /dev/null +++ b/library/tools/utkencode/UNLICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/library/tools/utkencode/eachunk.h b/library/tools/utkencode/eachunk.h new file mode 100644 index 0000000..183bccd --- /dev/null +++ b/library/tools/utkencode/eachunk.h @@ -0,0 +1,77 @@ +typedef struct EAChunk { + uint32_t type; + uint8_t *start; + uint8_t *ptr; + uint8_t *end; +} EAChunk; + +static void chunk_read_bytes(EAChunk *chunk, uint8_t *dest, size_t size) +{ + size_t bytes_remaining = chunk->end - chunk->ptr; + + if (bytes_remaining < size) { + fprintf(stderr, "error: unexpected end of chunk\n"); + exit(EXIT_FAILURE); + } + + memcpy(dest, chunk->ptr, size); + chunk->ptr += size; +} + +static uint32_t chunk_read_u32(EAChunk *chunk) +{ + uint8_t dest[4]; + chunk_read_bytes(chunk, dest, sizeof(dest)); + return dest[0] | (dest[1] << 8) | (dest[2] << 16) | (dest[3] << 24); +} + +static uint32_t chunk_read_u8(EAChunk *chunk) +{ + uint8_t dest; + chunk_read_bytes(chunk, &dest, sizeof(dest)); + return dest; +} + +static uint32_t chunk_read_var_int(EAChunk *chunk) +{ + uint8_t dest[4]; + uint8_t size = chunk_read_u8(chunk); + + if (size > 4) { + fprintf(stderr, "error: invalid varint size %u\n", (unsigned)size); + exit(EXIT_FAILURE); + } + + chunk_read_bytes(chunk, dest, size); + + /* read a big-endian integer of variable length */ + switch (size) { + case 1: return dest[0]; + case 2: return (dest[0]<<8) | dest[1]; + case 3: return (dest[0]<<16) | (dest[1] << 8) | dest[2]; + case 4: return (dest[0]<<24) | (dest[1] << 16) | (dest[2] << 8) | dest[3]; + default: return 0; + } +} + +static EAChunk *read_chunk(FILE *fp) +{ + uint32_t size; + static EAChunk chunk; + static uint8_t buffer[4096]; + + chunk.type = read_u32(fp); + + size = read_u32(fp); + if (size < 8 || size-8 > sizeof(buffer)) { + fprintf(stderr, "error: invalid chunk size %u\n", (unsigned)size); + exit(EXIT_FAILURE); + } + + size -= 8; + read_bytes(fp, buffer, size); + chunk.start = chunk.ptr = buffer; + chunk.end = buffer+size; + + return &chunk; +} \ No newline at end of file diff --git a/library/tools/utkencode/io.h b/library/tools/utkencode/io.h new file mode 100644 index 0000000..4aa5c90 --- /dev/null +++ b/library/tools/utkencode/io.h @@ -0,0 +1,78 @@ +#include +#include +#include +#include +#include + +static void read_bytes(FILE *fp, uint8_t *dest, size_t size) +{ + size_t bytes_copied; + + if (!size) + return; + + bytes_copied = fread(dest, 1, size, fp); + if (bytes_copied < size) { + if (ferror(fp)) + fprintf(stderr, "error: fread failed: %s\n", strerror(errno)); + else + fprintf(stderr, "error: unexpected end of file\n"); + + exit(EXIT_FAILURE); + } +} + +static uint32_t read_u32(FILE *fp) +{ + uint8_t dest[4]; + read_bytes(fp, dest, sizeof(dest)); + return dest[0] | (dest[1] << 8) | (dest[2] << 16) | (dest[3] << 24); +} + +static uint16_t read_u16(FILE *fp) +{ + uint8_t dest[2]; + read_bytes(fp, dest, sizeof(dest)); + return dest[0] | (dest[1] << 8); +} + +static uint16_t read_u8(FILE *fp) +{ + uint8_t dest; + read_bytes(fp, &dest, sizeof(dest)); + return dest; +} + +static void write_bytes(FILE *fp, const uint8_t *dest, size_t size) +{ + if (!size) + return; + + if (fwrite(dest, 1, size, fp) != size) { + fprintf(stderr, "error: fwrite failed: %s\n", strerror(errno)); + exit(EXIT_FAILURE); + } +} + +static void write_u32(FILE *fp, uint32_t x) +{ + uint8_t dest[4]; + dest[0] = (uint8_t)x; + dest[1] = (uint8_t)(x>>8); + dest[2] = (uint8_t)(x>>16); + dest[3] = (uint8_t)(x>>24); + write_bytes(fp, dest, sizeof(dest)); +} + +static void write_u16(FILE *fp, uint16_t x) +{ + uint8_t dest[2]; + dest[0] = (uint8_t)x; + dest[1] = (uint8_t)(x>>8); + write_bytes(fp, dest, sizeof(dest)); +} + +static void write_u8(FILE *fp, uint8_t x) +{ + write_bytes(fp, &x, sizeof(x)); +} \ No newline at end of file diff --git a/library/tools/utkencode/samples/DS1.M10 b/library/tools/utkencode/samples/DS1.M10 new file mode 100644 index 0000000000000000000000000000000000000000..bfe38b9d216e4ca6025d7e5ecfc6389b865803d5 GIT binary patch literal 70840 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ւX&XED%*G;ZhLx7#&|8T_3$3{>NBaan^^cBBbz4EO>ro6z=MhfZHuD% zAIGL>?suo7R8LH%68ecnl(x70m#1|?*Xi>8lj!Q#b|E3p&mZ=avkn5Cdma~+2%R8A z%pYOgRn;Z4^U&mlrB;&wu*oQISCrdihx&EcV-Aw{+UzVSxAAXfcE@Hu`BOQs(0e0BsmUCL%xOXWJ+X6i zHjIq2wazPfPMy3TvS}O<)bdxAnD}f~xIu##zq#6rPVbe*e@4h{W;B)2X8SSGwbPVR z4d6h%K0r2_cHdh^Jyg0?7TQepYbPC@7Lj9$xD?hy<@D7u5tE>-)A1ux(&YM?;CG^J z&+%$`IF{II@ewU-*J{qw>>?3})R`Qth_urUu+YlB*f5r5U9xp?Kxe@h%v|g^!kb#4 z+Xer0YUl3R=9PUls-Eb{bgbgeTm!u|Y<{9DJGjy_o3g=Sqd;XsjB!k&|0i*g@|k70swb~cF? zadBPULrr0De5PbpfFPS%9wd7`B1k@k+wGv1(m(cI06{>9U0goZ=00<+Xuw1-Y1as} zy+^6}L$T}9#+3w+MOVDvg=>}ZJ2g)iox7guue`72#29#n8ss+)YA>oaoWvrWd|u|5 z-F-mJq1RtE=aH+zmqr)#iQL$vJ}f<=OLYh~y*tuvaTitX4YX|Wo#ABL9IcaGHi{3Gp;+%U*(wc^CH8qXt=Y7UnB2cszv1|6K zsR8a#=6dvKH8mX1ykcF!1F2A6>s<>l)So3`QQTbWL*>Hb9v3=SX&Ud4dROGrtXg&3 zj{7LesmHSkDYAq?%cc`r7pc@zZE9{-A(*K8rp98uG`+%d0ls1SaAuV{TGNYRI{4Hc z_YP%JUWa}EUf$pCwSTR6XB@@NWn^4%5H6A^1;v|B&F;)%W<#E<-J0%|_0KyVw!2g2 zZH|8?SXxEYfHTuQdUVOegP+)^jbzU+d;Odocnfa)vPjFjVn@n}b^h0|n^ip|d-F^+ zwl?pp8`xakL8cwVeUo6AX>V`#D`-lX`Q_A3GrJy@Lt!I}?l1~^rG5J7UX`ydc51au zz(GB<-5$BB^g4BFYuDV*@S+hRFId!%E4H>aIQo6L|@;;$yXzn)HJPZ?9 zOM%-}2aE#K=Pa*cvQ|(WSVK*SP=x3n#Rz>SO$ghVQn305f155+%|2~VA;liZUUy!b zpd-Joh2)ooV?5=VEx;5}rX3hRp3U0GsItt~r>4viv&&h(dw0J$U3BDt@`dK2-7hb` zG9q|ew^=r@gHzxUe5+$2p0{v445I0kb7*D2UiV)Ve_Lf7`eEU#Zp+bs^}Wom{YBiZ z9{+Cnt+f`sTbm+oWZf`ajI(erJ7xIeR>n02QQ@DWHwiENgi8=LBGA-`_Set-z$ z!4s3HwrSajdG_H9WGsnv|F}`R1f*r|GN9;|x-d`Dm->YBvyJ`s-TEmvYnOz@^6OQ& zYR7_JQj;hW=P!KGeUc9=O264=oRZ_Zd92W{r(a9ig-)K!iq}iMax4eHL@U0| zFfIyNc%F@53#X`AE65Og7EU*@SvPBgw%I&q zG`vz!2O5e?+E8v|W4yu@EjhIU-Jn2Yf|Q}4z&GiCiZNNRD9bL##m|0S8uY~mON&D*>rcchh1uC3hII!WT|`h~VSa-Fd*tj2 zjT$dA-%qICBI0(L6<^J&F@8Ct95#j-mlQOQddD1HL)Cur&{J0FMn_bt+h<#U(e2sc zeHFP1qdm_n5tFpwr5hNrmkM|}woj~x#;NOhF3gOnnKQ8XX6v#F_mN&# zC^$w79-W_O(LcK>6?$ifba5dT)HNChTu*AnNa?|4!A3cdWvZIrKnz_;b=TGO$@{** z8dsf7Tl0Kr_K&v|t%EA2J{3LbZ$rEyg)Hf=Y`TW$VFq}md#!_l&CK3AY}eep~jr*K+A#7xyllEL$)aLy9nUaNtp|l4Jiw z)Xe)S6JKYTaRF6zJ<#Py#^qB66|UV`1RpYJ!a(s{4ph~@ zEB6fHC==`VRTXaBKN#LxKwsn=PzwL9cnfbw1x|nW$@&ARV<&(nK+``!kA9zca5c~%y(q#p@lNHK zyS*1=zcKKqR`62y^|9#ey0p4PCf&y2up0}#eRaK~zBSc07u}8MP(@KT%^>3IG?gGw zrPN_XZf@*_f-b6VHQeQ&ifUdt5$(w33<0GUt4dF4j7RnBO(hlDUNfty#MDu|MXwm@ zaZ&g?jls7#Jk68~4Y693;n}Y^^M%KyOd3&@Y2s(ACM&Ust|F46MLVH=B*jc^NOREh z8tILx_#m0KH)M82UQRK%gGGj9aZ$@e&Pr1~MH(MQu{G7>+0xC^Uio6D?iIb;IYd%r ziZXES%64r&oEd(2x>qQXj30jb=bbI3`xC{K?1)3tK}43mpQMn)PfOXGG3qaz-#!YY z%9RXE=Eb{5e(KRyZm|HZrwK!98rLXtD$}p)?P@5kbzxjoS2@D7M|IFD8IlM;8*o^S z5FU8_A6(D#QPbjy#zw*=qhbV(BdgU26~F=+W81BN5qIPMIh7g7HFG4{3d9=zv%Hsu z-`^Z=&m%`QWvdV#fJgt+QC%@Sj-fm|5Twd3y}$W6LRVSa6E{^)Ga+YOIoJ(plX3T{ z3(S^s@WRzv78U4x?QdZrx;+WorW`(=K0@JaG$=c}A|#o)C||l? zvU-@u0Vbh9kTgUZvWJ5ph8e$@AYjPgsy?|Sl5UqQcKzJ>i@_yMi7OrZI8VW3mJ2W)0l+@q2PvSSk!?aY_O$H65U1M&AWmX*G$}A#**fTULNvJOO|tKyj4D zfR>0sttZI_Yf- z>&I6BFb4oHfT$k)ZX(XcdOf`;s24oX1X>b7MRU2D!V(Ff(E}K30c((C00Pm>blnUl@dU#$h1zgqoX4XXkwGYVtJ7ES%9mJ)Da{ zwOCEE>~~Gis>Kvgb$CpCNqHM6C}LgyGnQsyGijK;RYSWhUTxrHCx}KCtSi^~Or(p@;N)*la6KYUaYyqOEQQNPxC*I|;ot9Oy>6d+ziVbGK#DB+i6zVa@cZMu}LT!IU zH`h68r0<7t^hKoRi~Lo4^6I1>_p}T*IF2Zm&5s+B?Trx`X|XVBGO8Te3z--;YA;gz z)2=PHD_2l`Q=dH7SaZ%c!Qe%C`Q%YZHz&7)J)UY=9n!4KiT2%ZiCN@l&o)hWq*KRN zzn>v&+evxTauTnl#x$E_rVCn*(%o}H?MT*;T3+HtH0TQzSRO|wvVL<)q4YDVnX%C# zs2r9P1!KEkLm+5LXGuVJW%?UCS0290QnBc;Eqr>Jm$$L#dWu2M8)vS+buK`848g__ zb_P@3?lsVd$6_sq^%_bveMd^P*&A3VTF3ko$f204Hvxdx(- zF#J7C5KbA`Pgdz~FJa^N{Hj4cM$?+Xx!Uq8WB)?a3G?7uiMi$5|gHl0-APgX>y$#u3_f+lCFm(hD?n%q-xAINx= zdoncQk}bi7hZ&hHg%iy%Q`6U=i z_;vr+AHKl3QV{bYV@F_}u_!(=V}^v^$=L%j{+?j^anFJeI6krk4w_&iDt6WjnddgZ zjK4oJ|GGCMa>`hBUT0j~FjVWb!e%;VCo=vHWd3oFA$G_}js;GjJ`Jiq^LTfEW*0b# z3S|9p?=Qha#!oZgoJ-i~oGyD2sr6sLRTcnDiS053ZUGi-L#jr4ZkcaR0gKN7U?g_R zNWRn0aQoEF+Yr2%$x8<;r~q&Y;OLC+XO#R?J1b#&%~o?O5%@L>@IxqLW%=JI_5#oU z2IyNp{~Pq{{c%ulF?k#Q9n5&vc5hf5^y``o`1GC;(;*`a{l%tfbwTXd1aNu+Vq6mi zrkDc-hh@Eve318Dx@=tCtutnkx!P`!4M`38)P;0ypQq^^ zA$L%Q;I!+k_OQ~yo*z<)Lvcfa-9^|-C_dmu-?piV+J&c51{ z>9P)eYo-%PM+AI9wUx8Q-{G4%LZ&2gUXS<7o_Dc&?{#0a_2SX77t`cKiBz0pKaH#- z$k#ZHh~uz|lw@Zn7O6egr*($42VPZr|6-Oo-lsch!!^8Puqie%KyBAQY2M$!3WO02 zdsX7wiVnGp`s_;PoQ>qH-F20TY|`k-4}?{lp74d@E#~&h%6MNRa(PY~<7C7)s(j?bY&7I}Q8VBOXv^uOgRZl{ADqZl3XJH-3N)J5K`t66ZQ=O}B%_x`3Jhd&# z{e8iAf_hK=Ye0J~3%&;A^xN5PYN6kBph|8@dim}-H=MHJS{`f^&Xc_(V|WMRB_|oD zS8|-;)Z-{k=^73%;kDJ02a$RbI`VgF?e1*(d%PG@lJ#iYfPD8eQr3?lKRItTV*9tW z#_RGJlgQH^<9E`5pkNM5xJS!g88m;-@+ms#v%#Q{8+&K>WZ8U` zwzn9J9mZq0787E%rJHAFk!egVvdev4gA$6^L+L1Ky6-KG=W8W_Sz%6cHpwD4J{+>s zt$^CBOSHvHez9cpKITR7!cW;k+g5mIYMiJD zh)l;wvCN*O=oG1kt(jxvXScv767P$@!Iw=&5`Bq-#gJ}}b?HW51zLCAWkO6x|3sp; zTF4Zs1<&WGSzWi&mMz|2n%nGb!aJN-0~4&zt-|3z{iZ|9gyQyN!DJmK<=Rj-j{D4A zJ2fQUQBR1tiyst;mw*(CY*5A-FISA!uIW z98%l?gpq>C6Bx$F=U@b>bxVu3PS%Y~^+pir2kYLwT*BEoEGY}u%xMIae3GIjR42xaq&P}aDe={ckjX}!@#}us{P!KG%9`_NH*<3 ziHzP~=VW|9jMUsJh9Shk_@@xWhW+#!toEMKPu3cOvAAJ|&bIUY!vUf9>@dT6;CAo~ zuM|I2yq*u%0_FV43N@rs2@&r60~r+2{)j}dxbs}613NA)nV^*&aEI4eyyuu^6L)ve zPdzezQ#V4kFcnyWYUWEU0VH+n$4tf+a4^jE)=K0=1d4Zi=Jp6A89MBGl}XJ4Hr{gI zeUT>;CnAMAG6uQ${-VwF*D)B z4<+!`SIr0*T8kY1{fVKw^2J7ZZl@xEtDkXlk-+%-I{4SU2EJ1UYR179<;42;wib|c zNI>@V1hQu@a9zU=muvERU}v2ZyUr*%26AC8aF632kPBVHzi3*{b%=F__A?eY5*gQa z0pKc-3&R3iwHmxf$}4UY7;$Gnl6(jN!50o0F8)_cZJo&eg?HB(LOTG*v;R-4hYZy8 zp^ftLhd?`k zp27jrcYr+#um!nR4Ool;t_(DIoVlh?stSQ^f>7xHbNsp&14Ly;<#D!mg^`JX#mVn2 z2$JR3z3aehYo?~^MPK;0#tYbSxMc#sFu-vQaD_svIjhVG2XF#w)s>(4>sl`WFayhO zrl#h_MT2dSZvzwjy#;v+kf#H#P#O+is!nXxB6ooe(iQ-?0v7LoyVBzgb(j{u9tv=r z947v6tsVfbWOQOY7}d>Pt6VL(9}AVw;XiwjP=u;drfE!bBcBQ#j(1 z-vnIemT+?N7k#NYnq0f6R4*Ge$g|#!yhX2YZ1L%~xAnmj?AI=__1pS4>W>{ww)^UL{z*wR3lW_8I9e%Zj97cr}}OX&lBFmb6f!kUhVB4Lz>~zd*xtLcVxL)ReI%O25)+sO2$ll?-1O zNpPQXRp|^d@GfcIiR!@TGDj< zuoTw-=SvF0Td(X?#lWJkv;+R6&@?!_eYzjAip0{Sf|?3Eori0DyI8_Ap$=}k<}9pR zyll;^X+BwooN3beZ3N~xnF^@e#BJcq&7C3%)l4mA;ueI9)+t8;BEXJ07?Q-oZ)zh^ zAMnYq_KRJk49F>;ATBO$=&)!XL7kO$o|5K>5K8iC0xLKeLm*Iz)P5&_(2#f<$OM`X zlKdeA758LzI7=PO&7D(&O2cE{y4I;1BQu$Wp&*75gI62!>)zRgA94_=yo|W1Bn$@S zsRN0FU>$~K^5S4<)elx^JAV>?13$`rH;jyKKN03oSeMAqfjX8V&3B02|ss?;)T?9`V zBd&mg{Z``p97f+|lN~4W0r|NKR6tzLfQZ-t7DG&b%m-$v8oL6(1wgR&eft>~4*(#E zX<%ORF3)HwASNfjRX-RY-v_k9m}x{nCdEPZkQEeN0O#BLQ0ySz!1^{E<_qZ zfvf@4XsE$i%$z-2fL9cd%YKV$5)eu+5To{rO~K;y;?h%K5*M|ANpuOFEr#6v^6#l% z9LhXCW|{z4x=hMT2mJ7U92^A*p>z zAmMm-m~Px~EL_8~{;g6xsw;hWm&VQV8A@>k`E7d92_1h5i9GvzB3&%;+u@MyCPrx} z+|EW-D}=Kt=kE9d!AQI<0H#p%)kv5u5VenW4(5X2;J);j6EDl&B9}y~9@pw^aXshA zJ9ZaG2zj<*4+<81vUV4sFNG`lYKPH?n-`0`#^jx+7=S zOPi7-Dw5CjCaGXrLBjuPqxqD)#q0PDQZ}s%Ie?v`L-eg%u$O{v_JloIctN1XRG3K9 zThjAFZWR^_tLKGS89e5AZm^~OKE%_JcN->8t$;QJJm~o5T2CF#ll$I(+S4mitm9*+ z;iMNtYNI@ABm@~!-B;`~)P1v6a%fVaLm^Nlqn5z)u4{^h6Ah2_zUL}PeJ)2GU^N?! z9R|x@5h+&#PQtZ$UDTy$n}+{K(sf2PwRPJh1PDE$hAK@6Ray`bG_-^+y(EBifdJB* zdJVmW&=C;1bZMap0YQ{rMFAloO^PUjBB&^z*DLSb@y6iaV(oSEo|eIzfJ|eBq7yRV7$1>@AAo<#d2fXEX0x!Hj^PZR$2fJkm*FP6!liL_kS@K;a`{^ zWk-jUr;N>sI0n1eq#If{&~jxrsrvMY@kqT+r#onmQry%ppHgKV#f7*#mJJ)fqP^0P zjOL6@A2tR=%2`KK3=Zj;tTmtU`AT?#>EZu$6PF@NDqal^l(RUn_s?nt3(^Y$1M~c; z;=y=Xt07OlPh|$OUuy}s0+wmHpF>7)n;-m7{m~G^kKyY&;GO+=$(E0{>N9-x^)6H~ zDt(b9|7cjvK#%IefO;hQzumgJwVmGlXPQB7H~lpV%2M63p)L^u0I}6tkS_GoCpE^w z?AuwN;S*5xqSl-ZS(oYfnK?nAy*1w^eb+*;BU&@(3hu3gsZ9Nc`G5Rt`*aQnF1D*X zf|R$q`KKt3TVrUgT9x#N;ew9;3!T~LA9la3q_q&@fbhD@v|1;_rfd^aIwEUVkRn6%lB0`}S@ppTvRaqbX zMl;4mLLi^Y&RDA2Q|Zo4QpbQZymha*IQDyd+xP{CT*HxrZL{|ErWBQ&pHl}Vs@~c= zM$5QnImbf`E+qVOU|+A(Cr8Hnri$E3kHarZ(S@%s|LwAWw%4BFS&bd+^S4Y+;z=1N zch?A~gY;m-CSHB5Y;(&$R+oGDBip@;dG?UH(_sud8~dOA5v`0iK2XcA9L*=4JEyyR zIM{+3@KU<_yhE;tOTQ7l@~GzWbN1Sy)nYdWv1eCbAlQhq(w#yaJ=7pH=;qzU%~5p~ z&nR9VSvd$*Ndos`l4)xTDq;X*1vTMcm$4dvVO}6dKB$8+W7R!l5JcyyoreAUo4Y}r zTj$~+2!s`s{O7?Q=#RiJX2u474-gc5o(9Y%D5wDcxyN=(v8epa67>zh({AAZ@5ca0 zP6A*vOG#uo3ps3312pUIx&gb_%i#03JHU6PZl0Hi{9PsRuGs!H4hZSO`9ye|*pp_h zqu5{S>OhY}Yk=aZ+ww+w-R5gFXnchn26pte-%2r#ynmwh!emH&|8~H@vtE))-q#|J za2qw|;JV~%JnyA{v@6he&8dQWXM7StOI`~1YgsS2e)9JuT}gPD*AHu6l3S}ij`v`T za*m0|2?$Ab|1cfMio9FSyIK~QxGUo(B^rmiNo7bAjdDiTMfM-jKKBvHD(n(u)p1yi zXBE->q}<2PdC}G_CysY#F{zbl!kYb3T6kh>nnI|anGnD)=?v%b{4B>Xd#D&pB_Kf~ zpcu>E)4tQzn2n7dP~fsPV~RM)z=Y9WRZ*vs-+#YDz`HP9l9`ms>dyy)ksv}46Oc6% zvpDSR0@V6E^^XA9nRV-&2m1YjF~FRd*LtSyL|8iZ31ZF@&o2@I&fyUQpq>W4_X=d6 zhLUo{1w0@w{_++4=eZLTpdpq8a)PQ>%F0!y&xV13J;0qj14xy6Nq~m&`Fpaw<*RAj zQ=s*?3{WI&fC_w52M{j%Z1$GdoQ!>(1b7-wAft@^?EKkPfIIOKZ*VTZWbovF0O9c# z$Pfnv%$)xP{NGNLv~Z2Xr~n-^4+Q3c^I9q(Lna1!OuE-znqK)1^c`n_Kq=67ECXoV z2R@a(>yPJ#O8=vL=s+MC2zcoMjE=o~1AZiTjO81!)C9x7&jWyf`_;(Ua=GM2gpssk-Gc!^3Vvea{gOy)}*VS}t3QS0ju6h<1yJI?q zRyd!iVf*uo4OXy3T6XM=+M+DY&5BleUk)y{(^7$E2Q2d#cGnQ4=h4o|!q5zXTa0S` zHO*c&4^itn9{4e-U0DnCo6wc^)05fc(-E1(8V7J48(*|)a+u%muPpD{2M_YR*eJ*! zwd|CXiNlLwMMQ_fc?OYUyBud!Id8z)BUeKqhH_PkY7%)^s( zTYFWF+$Qrh<0gXV#^Px#h4|76ap+s8!nQ&Gp&tL|EO`M71cDW?#`S|Gm+m@+FdwQ zfac1)C-!PzJZHxG0-fB7I|@y#s^*_@x&`xn)FSs&CW`n4-F<&v87AfTv{=BC#a!5P z)uv>342E0YC1T}Xtw^QGoC;Qdayg>#Ys+;S)0kFQ3AcKXXu&WaJKr9imfC5=zS?N0 zIibEnLiEXBl(^JzcAM@iFH3mXzP$*n^q4)A8)=yLeR?%uOzHM^UrJYl@(5LIJ8mH} zATLWRs8iRKhsaVH?By%WCGt_kT~v6&SaF=>Yo+~+-O29S2%gs3bHGp2Nzgti^PH#Y zysK1Gh3{y|;5%xM<;!Gyg@bLvy<}|Hv}Z;*%xhgnmI@6<->G@6oTUo8uh&HpY2p_C zsNfR&+-_|NkdIQ2;!JPG%@+|R86y(!AOw@<+KFYcRRTX?SDQ(Gd|2w3MbU0!Lf=2#^)0}L}3}?cq z{W>wS<1G%&^`RCur$=`!)f*g{YQ3(y^6FcW6Fg|Hl3y!}rlI$|g6VtygSJ zu+TF>IV9_|+B15q6H|ECm`4Zg;K~Qh3_Dw7Tp?s-Ix|?Bx$bNuKpUslE{&p7=ob5> z2V450U(QnM2(!~Ky}2%NHLH4?f_+2S2??Ql$b;EWW)D>6d)|l4wmzDh50qBuIXWut zSL$LXBOw!VTv=wTfs+W!7E~%V>OrLXn(VUULtsEnMC&!yqCW``d{ZJF!|}5FH#K#+ zz${WQrK5g%fP&zS)b<Q zzI!6Cm6zfcYb_(Es_u8;!+di9x!E)%s>}UNaZP$=rmDoXy#%SDu%6bCglUOa+Q$|x zK?XWcp_hh^cCD40q-XEL609`vL?e8?-dnf7-p~--8xyi%EB(_%utbG z-Fo?JP*F?In4g{r-wP&0>eZVNu2>nzr8-X!CC^g!fl8aBEk>~9cniwp7H8MXuj;%V z9$J?@K2wd>7(cqfZLvCBQX_q&H*n4L2(hRO8QKg<;JhT4i*=IIH-*`t$fua++`^vD z%hTnI?>yDi?1GnS&h(w^_FXR-O(ItxgCO&c?_Z@N@ zY5zUE>{TYF1-Q^_#9=rdmsb=Avz>ulmFsThdPhpJpsl@JX)UF6R#a zHM7lFfua;j6N=abyb8&>4eg5jw}PD}L|zN}JhgUSIYjS&6}+9gBQy0g^C!2m$Bw#f zm~(amrn8A!6E>#o*)x|Et_@;#&St^}z=&>!6#cJSF1VRFZ_uv`D7b(2a3Y=^l7fJR ziefN)(t?n)>qcPczib6y*q>{E>^S!(E+W0}s0aaDl9?;Oj^iWf-{)PN$Jftt&TgFD zQaq~bSQRN>utZk!|I55^uM(uM5BituGLr}tY!3=BHGwVNlb9?A8<6VYk_c{_WXyR| z)m0{Th$#yn$wJyRx06$f!g^(;h3IUSc5?=a31IXgcY26SN+#Db8i08-!3SD6?!FZ) zbu7%os`TYbYuZwV5$iFD-nVW>+ccY-nWHoE!AH`cv zFKmYN7t#weg|>={f+HmsK;}Gi?dkksAigu8SDn4Ik7w^)(fLwWw4ay6GZZTaS1}p) zzXKh_fTeu8!XNJ1Cm>my2>ftsW@i!!%MExiXm7%(k4#BIP0w>8%!A?t76t9Zm` zPSfe8tZ8QLWu#@-2mC@c2pU|Xa}hP>oTEAh4ysiU1alq@d+A^pC8!LEGFnW~i%Knk zMTZ1gEEC~_R$D8oj*YQNH0N>fs1V`MJaHCS-V!L;zOo9*Ek4fzwH7xEFa=HGGa$4T zeM}i>6`G<#Hz5@>HVzI$RzWz#ArISo5(27k3mb+?J8v}>{M6HwViVu8#^{?e6rw;r zRR+k$>c>zKXficfqYiIpVuOM~K-^%!Yl&g2!(^FG!?+vZTlYZ-5k3gj(LJxP=}S>~Az{&j>v>lOnR$(#vi31PtbD0O|9Qax*g&F752Q z77;IjSYf;va1-!uScBv-;AoJcKFI98VX_HHyy0A*R|}F3+Int%o&?&uS1myLm2-BD z7xYKA>V=(uaAb#$qwwH4`J8laQ;Ps$=B|mu;eZtD&bYpFon6@C7N5IT3EjU} zeR>I6^_2dzB`Dk0&kmE!Ep7sXV^|<(Trg<62S^{D2$IP1Y-eIYK{Y_qFqqu_h0s4F zrsVUKbFdeffg1vaGx*zN!WqRu&gQNe@QJ+^dlVElXofMkXx(V=`vNq1D-Z;h!eB_1 zgXiMng9hLyJRWdyjwVPa2+9kU9OT9zKqQlMMt!J03J{H+CqOH(k1pDF%Nu~1Af(E3 zeZZ#rKR)r=bHnq3KU`o(!0c=b9BKvVtC>$#mdy151&Xf{aCR*O)E74a5(_uL2c zCvs^5Ku__%hGrsg+ARROhZ)xF0_Esua{qN9XKjGqDB$0{K?GWUj4JGc<$UAF0U)3U zv{`=wgx8HZAR{TB-MiJ^rW6STeD7}ELxaG8<|P|?cJAhE8o{ksszl@+JdZg63RnWC z<{q)Fb4$k$HHayqlrYeRbgBmm%s~M$jPTYuhsE6O0xP5x*^zV}!vX}}K+o=h0R;=1 zK6hIU`%_Xe5@4eC68^kxWj=eJ_(vGR@ax(y+27ZHGZ#YN>o|E6!)O%@py6`~5cr%A zY%sV3`jhe}jr4~BfMbZYkN^k-hEziASuy7swvg{)NN^|_j-9m*XvZs5l6j%rKfkU& z46^(v&s2#H9`izy${=7S5ahl1oEAnQ3C|3sz(M-?-Q1kw2t^*1WQUq=OgpTJ+_r28 zmaKt#v0J<1<+^ly#zqrI{8i~j9md9CkH2^xSd-hUNsJ40mVD)DGf2O(*>zNomP$0k z>nkmNo9Vdw`XW8WG&)DRtcHql0qe8=udQu4Lft6JGBpf@?K<_>d#`#u57Ii3E&6J4 z0PBLS8$KQE>ZY`D9k{IAvgpEouV2?2@pPUQB8XbH$e0toFGnJSQ|s0&Ghrp&cFvdV zX3Fl%?XqO&-NY(YG>lDWv8SO-7JU~FFQScUrKPx_yPi)JCsOZ-2;gG-v`y&NEpMWz zIG$PmJg3U82OnC30;fyt($;)+!=yyOm>A)KL%P=XSC;8TO~Mdn5k z7=Yvs{zd_C8_3jtPaOK2IWZT501N_*b4+K~VAde(L<|N1tYp$f#wmsq`?*Fm1X`y8 z#lXc$AV7+iJqJ#P|Kj@fGo4}U+>H~UOvOiT>1$tzyaY5MZukTIGnnQ0obM_?6u>4_ zh604Mj+cQKSPgiA+Wj==`S^@%(0Pf;HX7uv^ro*OO-h=}} zu>Ux2K)VG57y**?XG8y`P1b^Pr9I*EhkW+}Kb3l~xa@{7@XXiiXBJnTs$veCJgvB`+o_cn!FxrpCR9ozbdJo_iG=xzQeU!?(c~^U8a?r}NYnb|!*s6I}Mq zN@Sc3`}vH%b6ZqFW7qc}HHu$W36iuWvZ0|nAE*e+S=b_6K3 zvR#CZ=TY<B;}btmuggNcyx*$(90jb$lV{M+sDMTd@jGy|vg{L7sp4_XNR7WILi-R!e`-zA`H)!;NYiv&EuxpsSIyxkl9tgV~OuszB{~!ycnH%ZGz_ zP)7eCLaTIYRQP}FjH`(Uz|fAYg7H~;Qwzrc(^DF@rF5P=H_&yxm_|zyeK(^re-fW@ za;azifZ9xZW8sL?`%qk1@oqb?B1{pkZFQ94NuNe*3dM3y#n%uq*R+1!1!Gf%;b-o_lmzX-J%NxW8-*g+R zr{|`~4QTzf<)Hl0go0!`W9OP?@0*1&eo^wgXRg4!c)7npH)^HxeQTJNq=ADDl<(~FqX2f0pdn;I;iXho z43b(0vi{~xY6#3$L0}l`B;Z|9gi&o-8+grLq3SSfd-<|NmQLQ{(NRctL8)}LJiKU? zcIr`ww#rXVv~3Drj_#1rDlL7HtGWHlw=D1Wn`Of$&R%5Z>Mt5~*GOtez6d7|L#^~t z3Cxqprhb$zrI(+KJzj-d$w?*89aS9lN1AK9_l1;B)_8FE&-E#7`TNj#n?M8@$br}T z)eFEU+xmoU8rf7--2d#9>VM*xlIRN-?>bsr$w6A`Efp6h$d0#8<<(Gc3!|kPqO2lQ zX$H6RBc@?*llXW~-EX0_6obLMEk_GWTC4O%b(Kt0+2uuT_3H;bmq*HICgf#Mlksx0 zneU>7B%#e48fl(Bvg5d`!E`WPtAT{Jpo;@0;-k&rZn;$mk)BCDcn4*ck(U|Dmo z%%{@?Yb=N7tMpx#j-%)VM!r8-53fPxZoK(5^OOwkfwF_D7)knMZRLgs6cK3`k=Rsh zk51Ek{|Yu}sm!y3Df}-EjgeI^gE6-!!c?Na>*WLJV{Gq4yUm-jq>d>W+|BUh%bQgn z123_TI0P6f1{F@4$rkWG5|*8Wylrm$+psRgVh9y8i~O2d2IFIlD2$+^^gy=9YhYHGG}h}Vp7sDdWX->;3hM6+>d zrm@2}(F2TxsKziOm)e@8uF@Ycs>`(2UeYlFEx=|<`ER^q>6FoWV*T4}kFF>SkW9_? zK#@mGl}-Ch`%1WNgt-nLR$kQ)iuz{s3zc(8v86{TM9wVN0P3Qsdef=o^8c?-o1$Z8x)Q6RXONG9wJ+)Q3f0 zjnKLK`~BP^BPo5+Pd)42Z)t8=n`X87-tm?FF&`W7`0Uf&NL7N~UpC7%iS6kIW~_wL zT0!Rey0%rbC_42bM1!hK<)r8&UHGXLAuJoDTS^a3E6P#uk+^)sD2{ixa(uf7T2^?D>gT+ z*P<7+`fkp`jVpUKdHb`){M@Lgo(-|;)Hu2n4~KI0efL^N+R%wXzMSvUPpddznvGvM zWa-b?^K(pFcaFr1@C(i#oE%KgPR7^nZO5;aj%Q${veS{p(+-N{P<1*OZsb3T0bPzj3TUe|0?kNS$iEj*p7E6J?@l;MK+C z(fma*Z>IA8N%-_!_|8n8@6|)kMJ*+<5c={Dw`J-rM%U~1BMlP9mGe3j=aB>HR5W`x z2(d*fXON9p^r>%7*xac6teg5cl4hpa8T2E1V<7S{ii9&CqPIQ~Yh%^$&ov4c>U2&Q z@({$r(kNfHvj!9j4kw&5YZ7pcJW_DCe>SGdG9t$*&f^06Y7S$N_hIUJ%o_4XJziN^ z*+SZ}g_7-iNZC5u=@oMXwUHiF5Z_flwSmf?Nhi`;Hg-m$c3VxW^RAa{#`S^11w91% z>-{Ynug_n}%J@^d zuGY>>aD-QZFetRgQtoNf(?tueQsS8<--#U(;gQ*%bS?ZIWJ}5N% zd8JuJ4}5iV>O!+`8}V35u0akS*ayiS#W1e(?Y9zF=(dcR=&vYL>}6-Y+;%y+D6{rTxdRbbYb(O$!-C+QH{|*Me|KmGw?#+NXnD8{XMpMxY&3&iw${ zAII+A1%2}{hH+ii-OfW&cWw1LQ-Fy2>Y=g%ef1qV<;0?tyx5IhrU)U5ly^my{&_}Y ziE+SLgC&FAWKF5#A5T$kYwuBOv`I1@H>(oha(y!RvDqe?rt_B|t`L{IZXv+PqS=vV z&(f{5;^u)hDc?Gyz5pxl-fzSWu1cCL`q*OM(_MAUxrCL5GkQ)Xp@%FxXKDuh-+#?b z*?Q90uNJ_j409hHe#R5lP7$a&&}+9ocP_FC5<(Y>UQWM>Aqi6bZm3pWe4#FhKfFDr zRD;a)^xSCb;>B4dRKKgXl^J_y>mu~IuUo1wnCIb8-pkw&ZEwG)i35_2sOSA&59H=n z6KuM6)Z|V45<}Q5bfZ@LkHV9AwxK!2uZ#Q(W&-lq2s6TJpCnj zMWs~RtFNi=pf-Y5^`md5y+{?Y&EL3P#=E!L*jleCot~j>uu5ZG&<(8U>cqxiTo$ZR z*%7qn^6LUeJqdCHd`+ELo7E;j0u+#FuhGa2f=mu?p3>FB6JMs+)G^-eDk#qTFp$8* z&mT27z*iZRH>>4V!-~e{c6TCn>osZ5sDFE6RZMkvFYd$eY#)W>S8Kz$c35{~B!c>V zHRk)4rDWZ2C9pW}8(C+iF0$ea88@2z-a$p;>MfieiBfMr_>4Bu`fKbELD_Xw@!S{_ zfs{;{5IQnk^g>3m6!dAIxD5?o_`Ed9W{`;?$kx6`c_(u{o4mrlcC<+?@;vM=n5V}G zf*mY0RNtvQ*0j`5pgrqx=MYm3E36Sj3e6(Y*aTz2_Wf&o-+ac3^d_tXY-O;?Rj`OV zM3@UhrLnmUqS8uDUA=U_{Dm~QN_qmAv8_7Z1MyMma2OqD`x$Rb-Igj)ktg@#`OPzTUD-2b7xeLCI&7zfvcve3vgw9elx zw4FwJtAe#`1J^><=zJtrYmlSyIp_hH_d8cQ&_J~Lm#qm0d4g#>U}_F6KP#yz&tQ4j75p{$)!{lsx0& zMKPS_oL%~Uo$;c!m0TTJ^$!eiE{bB#tInBzfPO#s1A0!ZP1=Bco~+9G*X}j$qrff# z&*L5;+9>-;eD3|~>I8(_;fTW(T(IhZIYqxzB}wY04CgyCE;Odu@n`0E^C{B3UwKoW z49024e1~zvKgExt7Q@7+HjWstjx?}L#Ar<|=(}tby!;}cQ_}lYJ^K6R^h&Vcn?#(g zN(-B{fjG*(b`hPWZ7jXsd6aU0B+f7SN7Y3J_X}VAXGX6+6T0EVpd>2M#^{zL{B3Zo zf3SEpuq1=P3lj~wWz!qOhch{QNSzAC7gD0Mc`U2vQw*Gf3f(ce^J3@4tWs%s@e8}Z z@B~fhPkVoge(#U7^x%f9s7|qxQYc)BuI_PHDlrGid0BsS>NYwY{g%+;%Q#c8|m}l*=O>r~Nu&J^Gu*>A`WJ*4D@ARWD)c zC7QFs8Y#>*%@x+qt+l(--|TM$j9$7KiQO?O@agPy@~*FWu(;i7rdg3j4B49>Bkl+> z)N0u93tI(TO)h0W8jc61dipM_vkW_~(+>vAPNGDMH6MmSEHR8CUq-Lvm-Fnt3>YpZ zkGK?l2-QnGr80Y23ib1E!2eE+AwyjAeJ&|)2?5tqa$U)biz%6)qTg z`}^LAnEf?!&>OsiRXtNXOsRBZgC3fuIrEmv4r*4q%T)X-3ma4``*a%ezSls3@EyaW zDxr%#gwk)ep~r;ABGRcXQ~fdBG9~c?grTjoZa07ZROyLzp;28M^aeU>`bDRaT%}5~ z%mY=ga@Cs9^4)Ejn{RLIin&dd&39|*|25lL&hKwNlc(lBJ~L&Z(sIGLQ^dnxpP^Wt z^=Fg-MNHwH$$G98H>rpc=S*^l(nwb0TE68{%G6ZvuT~B?_IccHQwFE%Hj{w_dlONSrVQqZ40qn_fMGSH{x z=;zH|qMR*kX=9SkVL`9W-USliAFZO%^{-FUMG+yY9@SDwQej_|cHVpB@HB;UgG3S_ z>YLluUyIgC&dAM}o@Z~Smm^meloppxynrdXs0#ks`uAZL)=quHk(IXxGPG4Y%7>(6 z)!(y9OsMI{lTYmyx4n2QW=8XO3FO4W~2Ty~5FcLSxL zFn-U`e;pKdv4)AcFl^yq^0a+>;M9g|ZKb=zsOP7rQC!sBfk`dj^iW;8r*pR0$3CrD zl_3{_2T@cV;zr+?wm5j4961Zi*e-WtByYOo(HpN<)YlZP*8NU`rUrv0$w-^dkODoh z^hzI%aQP-O3z_t?R(obpQ(>%>JU`b1b$VRUE>s+gFqdPs+CU)o1Z4ywyb)g<7@@F* zkC`b;#UEvA3Ify*m93Df9wsF!Pro*+Z*qVRtqunF)qL*T5g4Sdkn88&Kb*`3rf2Q8 z60X;5JLA?$GG3MCC~7N;zZJZ#*T&eIDuh2y^iY(G@rm_|+gW?9ZQ*3U>BI8I+REsV zbhuexVWF!k)9LxKGXhJk7;Rn}=_kA1OhebGc?F16MN2qHy2={vciZ`WR_h@I&#U9K zpyZJni^y6**_OY$PEy<+<(b(;4&aNuM-*mlgDFQF`=#z3>NDT(;Io5J&$*0$+edLhFkwE%ur7rsSm%_%( z4n@T^kx{l+k9LJ`^nGm|iLxy?m04@=I&^>R8z}0yE90($4N6-MGR8f`!%$ihGNbUO zaIX*ZJ!#R~#b}I;MfieTjV|Aez!$XxHT-%e^qq{B0tzZs8yhc zXW0I>u0@*RuTA7{bg!*C(*0-ASu-aOc3*(I!k_lKMQh&{yvX{8xzmvwTD~Rwmh&lJ z-8A2TQ-^@3UcTeawt7a5Asezs;nWg(vyW(Qr@v%FiLkw<@j~_5)56cznZV9wLVNG6 zz59(jY=}go8eph6F_>o%cZth}S*7XDp4*SUI*||l#~CHSChxemT4ESg{cP>H)47)D z`nvw-S+ih{k;wx3PR{z z8A*{_ktZQ|8>{%e(=#hzHlS>tx->O`zPj4U!JwV03S6{79@=?|6{5cUT%*v*Hsc;< z>8V{=gEftQ-QJqWTY^YRv-!{k5qvv!8XLeth+vv?qXjK-bC08BUP?%_fZ-b7O(ywS zGZQhMY6aS*^W}N0yL>&7!sQpW9|3oSAe}Lv`lwYV%dBuxGB5WZHZ?y`WhK>Ef15V((ogq&tP;)BbGhZMgMw3j z3zk@YUv(Glq53k^Ajk3Jm{+7;P+6Ryac5}Qs>CYFnc}FHkg=#fT^4&dKfveuB}w45 z?BR>LRJUK7Za=9#?)Ry}moCz5QdK!G_Q}kHT`m*>w>4~#FIh+KmBqfu_)a#V9<$4S z6NEECLTRPFXm&>X+}6~1C=#P2>I9;WGfFhep$t{#<2AaFRfC8&c@@T+&W~;+NI6E!%SGK z&M_=@7!F`M0OR0rcW0DB)Z#E6%rtmzbl!FV`Yrp7*Z@*o zV?MzB{#WJsvWKDNEQ?zUItidKIsm4E5g;V^{_}8Io3}0Dt7^agM`x}8q+%Q3%Rrj| z#Z_J}%;I;+C%1rrA5bF&4iv`%GGEyB$5Srb4;H?G|KAq&7I>=ccwi}K(;ORlQSxiR z>hTr^)UX4Va{I4%iPB5=3HOKXpMa$r|6@jhfaqO-mn^MPGov*{sT>0thd|)ge?Ra) zBV2+4+_q#Zh4TRXC+!cHu{8+-14D0cgFwvyF$s`2h8Pk_0K#qp2bg)(;CbaeeOLn@ zQd}H{!9XCSKMCTjApR0=(GZi>57w-M`3tt7gj{hDiUT4I(%>S2QhDLLi6HT0go-># zKAx)=#Mmw_p9*C(rt=n+sfj@w5I*K6r0R2h3}v~x*q^~p?DeIw)p9fNf|_4onfO$L zNma=;@uEq5GTWSzN3IOa+bvJJ2$F0sgcS~zwt%xQum%b^p|lKTqo{<(&VwbHJd9}G zWEqP|p+L8}_#jG9l%n}!Q&I}^K8%@LQH51kzFaZHkZJ*vuOs2INbWK+*3PoT(?LPR zR{V0Gm^_ATLtOGKXAGWgpPTGpjTUrXRq_b*m{wKWoa+i4AY(?N1lr8`ecY!bkTS8t zqsm)JIPN8xahuVpwaOMAOV3fa>jLPM03JsikGF&IEvaqkoY0YY!cA|#AH9C71i(VaiQ!6PfDnd@}*u{`R_?Z%Zm$LXn4ldW1*m$m_mAmW$g z6V{0dCpGHMMNipP)|*R9p7!Nc148fOcXo?}hq4J8mewx7U&>ylpI{Dur$Y3rLL7&* z3ZEk(gILe=%|=Y})-Wrwv4fI zCG@)DeW4#`YL0QIWY)+tJjBJ;C(1WT|FMAhQ=uzcld{j|0D&=2DsRkMHp1($?Lt6} zRF7J}QV}I`$H(A{PLROmZ}yaF-ycS-p`WDP$7=AII{AtnnAS%kiwsGpAiLclHj;WM zbUyG-a5I{vPjaH0zjAOAR8H4?CWK_zwSQ97Suc2G#VHQyf+cXz`R5^g-wB0UrYb7a z>qPkaXaD6Em#wUt+F6Bpvcnx$%s^EM$`}@}fyx$pU61hKmQgU=TVWgN!EY_mh|fi9 zfhdsbZdFc*2?>!)nzJ5KVU#C{&yZm>M?KKfB`Ss@jVn2m@uCVIlJ`h z5@2=9{sX3gA%o|GfSZ7qQ6E&y3`

(^v@%0D+CD48y$1dA9(s)B*U{y&C}UngU4D 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 Cr+}XT literal 0 HcmV?d00001 diff --git a/library/tools/utkencode/samples/fifa2001.dat b/library/tools/utkencode/samples/fifa2001.dat new file mode 100644 index 0000000000000000000000000000000000000000..ad7e294d13288c16309c0b500e706343d769261d GIT binary patch literal 59808 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

*@~%3bPs&ULOP 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 Uz~Ko)1a-yCBJ4-4!@sZp0i5fMBme*a literal 0 HcmV?d00001 diff --git a/library/tools/utkencode/samples/male.utk b/library/tools/utkencode/samples/male.utk new file mode 100644 index 0000000000000000000000000000000000000000..bf25a93b7eef54c73dec40e6ae06ebfe6aeec8a1 GIT binary patch literal 22464 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 +#include +#include + +/* Note: This struct assumes a member alignment of 4 bytes. +** This matters when pitch_lag > 216 on the first subframe of any given frame. + */ +typedef struct UTKContext { + FILE *fp; + const uint8_t *ptr, *end; + int parsed_header; + unsigned int bits_value; + int bits_count; + int reduced_bw; + int multipulse_thresh; + float fixed_gains[64]; + float rc[12]; + float synth_history[12]; + float adapt_cb[324]; + float decompressed_frame[432]; +} UTKContext; + +enum { MDL_NORMAL = 0, MDL_LARGEPULSE = 1 }; + +static const float utk_rc_table[64] = {+0.0f, + -.99677598476409912109375f, + -.99032700061798095703125f, + -.983879029750823974609375f, + -.977430999279022216796875f, + -.970982015132904052734375f, + -.964533984661102294921875f, + -.958085000514984130859375f, + -.9516370296478271484375f, + -.930754005908966064453125f, + -.904959976673126220703125f, + -.879167020320892333984375f, + -.853372991085052490234375f, + -.827579021453857421875f, + -.801786005496978759765625f, + -.775991976261138916015625f, + -.75019800662994384765625f, + -.724404990673065185546875f, + -.6986110210418701171875f, + -.6706349849700927734375f, + -.61904799938201904296875f, + -.567460000514984130859375f, + -.515873014926910400390625f, + -.4642859995365142822265625f, + -.4126980006694793701171875f, + -.361110985279083251953125f, + -.309523999691009521484375f, + -.257937014102935791015625f, + -.20634900033473968505859375f, + -.1547619998455047607421875f, + -.10317499935626983642578125f, + -.05158700048923492431640625f, + +0.0f, + +.05158700048923492431640625f, + +.10317499935626983642578125f, + +.1547619998455047607421875f, + +.20634900033473968505859375f, + +.257937014102935791015625f, + +.309523999691009521484375f, + +.361110985279083251953125f, + +.4126980006694793701171875f, + +.4642859995365142822265625f, + +.515873014926910400390625f, + +.567460000514984130859375f, + +.61904799938201904296875f, + +.6706349849700927734375f, + +.6986110210418701171875f, + +.724404990673065185546875f, + +.75019800662994384765625f, + +.775991976261138916015625f, + +.801786005496978759765625f, + +.827579021453857421875f, + +.853372991085052490234375f, + +.879167020320892333984375f, + +.904959976673126220703125f, + +.930754005908966064453125f, + +.9516370296478271484375f, + +.958085000514984130859375f, + +.964533984661102294921875f, + +.970982015132904052734375f, + +.977430999279022216796875f, + +.983879029750823974609375f, + +.99032700061798095703125f, + +.99677598476409912109375f}; + +static const uint8_t utk_codebooks[2][256] = { + {/* normal model */ + 4, 6, 5, 9, 4, 6, 5, 13, 4, 6, 5, 10, 4, 6, 5, 17, 4, 6, 5, 9, + 4, 6, 5, 14, 4, 6, 5, 10, 4, 6, 5, 21, 4, 6, 5, 9, 4, 6, 5, 13, + 4, 6, 5, 10, 4, 6, 5, 18, 4, 6, 5, 9, 4, 6, 5, 14, 4, 6, 5, 10, + 4, 6, 5, 25, 4, 6, 5, 9, 4, 6, 5, 13, 4, 6, 5, 10, 4, 6, 5, 17, + 4, 6, 5, 9, 4, 6, 5, 14, 4, 6, 5, 10, 4, 6, 5, 22, 4, 6, 5, 9, + 4, 6, 5, 13, 4, 6, 5, 10, 4, 6, 5, 18, 4, 6, 5, 9, 4, 6, 5, 14, + 4, 6, 5, 10, 4, 6, 5, 0, 4, 6, 5, 9, 4, 6, 5, 13, 4, 6, 5, 10, + 4, 6, 5, 17, 4, 6, 5, 9, 4, 6, 5, 14, 4, 6, 5, 10, 4, 6, 5, 21, + 4, 6, 5, 9, 4, 6, 5, 13, 4, 6, 5, 10, 4, 6, 5, 18, 4, 6, 5, 9, + 4, 6, 5, 14, 4, 6, 5, 10, 4, 6, 5, 26, 4, 6, 5, 9, 4, 6, 5, 13, + 4, 6, 5, 10, 4, 6, 5, 17, 4, 6, 5, 9, 4, 6, 5, 14, 4, 6, 5, 10, + 4, 6, 5, 22, 4, 6, 5, 9, 4, 6, 5, 13, 4, 6, 5, 10, 4, 6, 5, 18, + 4, 6, 5, 9, 4, 6, 5, 14, 4, 6, 5, 10, 4, 6, 5, 2}, + {/* large-pulse model */ + 4, 11, 7, 15, 4, 12, 8, 19, 4, 11, 7, 16, 4, 12, 8, 23, 4, 11, 7, 15, + 4, 12, 8, 20, 4, 11, 7, 16, 4, 12, 8, 27, 4, 11, 7, 15, 4, 12, 8, 19, + 4, 11, 7, 16, 4, 12, 8, 24, 4, 11, 7, 15, 4, 12, 8, 20, 4, 11, 7, 16, + 4, 12, 8, 1, 4, 11, 7, 15, 4, 12, 8, 19, 4, 11, 7, 16, 4, 12, 8, 23, + 4, 11, 7, 15, 4, 12, 8, 20, 4, 11, 7, 16, 4, 12, 8, 28, 4, 11, 7, 15, + 4, 12, 8, 19, 4, 11, 7, 16, 4, 12, 8, 24, 4, 11, 7, 15, 4, 12, 8, 20, + 4, 11, 7, 16, 4, 12, 8, 3, 4, 11, 7, 15, 4, 12, 8, 19, 4, 11, 7, 16, + 4, 12, 8, 23, 4, 11, 7, 15, 4, 12, 8, 20, 4, 11, 7, 16, 4, 12, 8, 27, + 4, 11, 7, 15, 4, 12, 8, 19, 4, 11, 7, 16, 4, 12, 8, 24, 4, 11, 7, 15, + 4, 12, 8, 20, 4, 11, 7, 16, 4, 12, 8, 1, 4, 11, 7, 15, 4, 12, 8, 19, + 4, 11, 7, 16, 4, 12, 8, 23, 4, 11, 7, 15, 4, 12, 8, 20, 4, 11, 7, 16, + 4, 12, 8, 28, 4, 11, 7, 15, 4, 12, 8, 19, 4, 11, 7, 16, 4, 12, 8, 24, + 4, 11, 7, 15, 4, 12, 8, 20, 4, 11, 7, 16, 4, 12, 8, 3}}; + +static const struct { + int next_model; + int code_size; + float pulse_value; +} utk_commands[29] = {{MDL_LARGEPULSE, 8, 0.0f}, {MDL_LARGEPULSE, 7, 0.0f}, + {MDL_NORMAL, 8, 0.0f}, {MDL_NORMAL, 7, 0.0f}, + {MDL_NORMAL, 2, 0.0f}, {MDL_NORMAL, 2, -1.0f}, + {MDL_NORMAL, 2, +1.0f}, {MDL_NORMAL, 3, -1.0f}, + {MDL_NORMAL, 3, +1.0f}, {MDL_LARGEPULSE, 4, -2.0f}, + {MDL_LARGEPULSE, 4, +2.0f}, {MDL_LARGEPULSE, 3, -2.0f}, + {MDL_LARGEPULSE, 3, +2.0f}, {MDL_LARGEPULSE, 5, -3.0f}, + {MDL_LARGEPULSE, 5, +3.0f}, {MDL_LARGEPULSE, 4, -3.0f}, + {MDL_LARGEPULSE, 4, +3.0f}, {MDL_LARGEPULSE, 6, -4.0f}, + {MDL_LARGEPULSE, 6, +4.0f}, {MDL_LARGEPULSE, 5, -4.0f}, + {MDL_LARGEPULSE, 5, +4.0f}, {MDL_LARGEPULSE, 7, -5.0f}, + {MDL_LARGEPULSE, 7, +5.0f}, {MDL_LARGEPULSE, 6, -5.0f}, + {MDL_LARGEPULSE, 6, +5.0f}, {MDL_LARGEPULSE, 8, -6.0f}, + {MDL_LARGEPULSE, 8, +6.0f}, {MDL_LARGEPULSE, 7, -6.0f}, + {MDL_LARGEPULSE, 7, +6.0f}}; + +static int utk_read_byte(UTKContext *ctx) { + if (ctx->ptr < ctx->end) + return *ctx->ptr++; + + if (ctx->fp) { + static uint8_t buffer[4096]; + size_t bytes_copied = fread(buffer, 1, sizeof(buffer), ctx->fp); + if (bytes_copied > 0 && bytes_copied <= sizeof(buffer)) { + ctx->ptr = buffer; + ctx->end = buffer + bytes_copied; + return *ctx->ptr++; + } + } + + return 0; +} + +static int16_t utk_read_i16(UTKContext *ctx) { + int x = utk_read_byte(ctx); + x = (x << 8) | utk_read_byte(ctx); + return x; +} + +static int utk_read_bits(UTKContext *ctx, int count) { + int ret = ctx->bits_value & ((1 << count) - 1); + ctx->bits_value >>= count; + ctx->bits_count -= count; + + if (ctx->bits_count < 8) { + /* read another byte */ + ctx->bits_value |= utk_read_byte(ctx) << ctx->bits_count; + ctx->bits_count += 8; + } + + return ret; +} + +static void utk_parse_header(UTKContext *ctx) { + int i; + float multiplier; + + ctx->reduced_bw = utk_read_bits(ctx, 1); + ctx->multipulse_thresh = 32 - utk_read_bits(ctx, 4); + ctx->fixed_gains[0] = 8.0f * (1 + utk_read_bits(ctx, 4)); + multiplier = 1.04f + utk_read_bits(ctx, 6) * 0.001f; + + for (i = 1; i < 64; i++) + ctx->fixed_gains[i] = ctx->fixed_gains[i - 1] * multiplier; +} + +static void utk_decode_excitation(UTKContext *ctx, int use_multipulse, + float *out, int stride) { + int i; + + if (use_multipulse) { + /* multi-pulse model: n pulses are coded explicitly; the rest are zero */ + int model, cmd; + model = 0; + i = 0; + while (i < 108) { + cmd = utk_codebooks[model][ctx->bits_value & 0xff]; + model = utk_commands[cmd].next_model; + utk_read_bits(ctx, utk_commands[cmd].code_size); + + if (cmd > 3) { + /* insert a pulse with magnitude <= 6.0f */ + out[i] = utk_commands[cmd].pulse_value; + i += stride; + } else if (cmd > 1) { + /* insert between 7 and 70 zeros */ + int count = 7 + utk_read_bits(ctx, 6); + if (i + count * stride > 108) + count = (108 - i) / stride; + + while (count > 0) { + out[i] = 0.0f; + i += stride; + count--; + } + } else { + /* insert a pulse with magnitude >= 7.0f */ + int x = 7; + + while (utk_read_bits(ctx, 1)) + x++; + + if (!utk_read_bits(ctx, 1)) + x *= -1; + + out[i] = (float)x; + i += stride; + } + } + } else { + /* RELP model: entire residual (excitation) signal is coded explicitly */ + i = 0; + while (i < 108) { + if (!utk_read_bits(ctx, 1)) + out[i] = 0.0f; + else if (!utk_read_bits(ctx, 1)) + out[i] = -2.0f; + else + out[i] = 2.0f; + + i += stride; + } + } +} + +static void rc_to_lpc(const float *rc, float *lpc) { + int i, j; + float tmp1[12]; + float tmp2[12]; + + for (i = 10; i >= 0; i--) + tmp2[1 + i] = rc[i]; + + tmp2[0] = 1.0f; + + for (i = 0; i < 12; i++) { + float x = -tmp2[11] * rc[11]; + + for (j = 10; j >= 0; j--) { + x -= tmp2[j] * rc[j]; + tmp2[j + 1] = x * rc[j] + tmp2[j]; + } + + tmp1[i] = tmp2[0] = x; + + for (j = 0; j < i; j++) + x -= tmp1[i - 1 - j] * lpc[j]; + + lpc[i] = x; + } +} + +static void utk_lp_synthesis_filter(UTKContext *ctx, int offset, + int num_blocks) { + int i, j, k; + float lpc[12]; + float *ptr = &ctx->decompressed_frame[offset]; + + rc_to_lpc(ctx->rc, lpc); + + for (i = 0; i < num_blocks; i++) { + for (j = 0; j < 12; j++) { + float x = *ptr; + + for (k = 0; k < j; k++) + x += lpc[k] * ctx->synth_history[k - j + 12]; + for (; k < 12; k++) + x += lpc[k] * ctx->synth_history[k - j]; + + ctx->synth_history[11 - j] = x; + *ptr++ = x; + } + } +} + +/* +** Public functions. +*/ + +static void utk_decode_frame(UTKContext *ctx) { + int i, j; + int use_multipulse = 0; + float excitation[5 + 108 + 5]; + float rc_delta[12]; + + if (!ctx->bits_count) { + ctx->bits_value = utk_read_byte(ctx); + ctx->bits_count = 8; + } + + if (!ctx->parsed_header) { + utk_parse_header(ctx); + ctx->parsed_header = 1; + } + + memset(&excitation[0], 0, 5 * sizeof(float)); + memset(&excitation[5 + 108], 0, 5 * sizeof(float)); + + /* read the reflection coefficients */ + for (i = 0; i < 12; i++) { + int idx; + if (i == 0) { + idx = utk_read_bits(ctx, 6); + if (idx < ctx->multipulse_thresh) + use_multipulse = 1; + } else if (i < 4) { + idx = utk_read_bits(ctx, 6); + } else { + idx = 16 + utk_read_bits(ctx, 5); + } + + rc_delta[i] = (utk_rc_table[idx] - ctx->rc[i]) * 0.25f; + } + + /* decode four subframes */ + for (i = 0; i < 4; i++) { + int pitch_lag = utk_read_bits(ctx, 8); + float pitch_gain = (float)utk_read_bits(ctx, 4) / 15.0f; + float fixed_gain = ctx->fixed_gains[utk_read_bits(ctx, 6)]; + + if (!ctx->reduced_bw) { + utk_decode_excitation(ctx, use_multipulse, &excitation[5], 1); + } else { + /* residual (excitation) signal is encoded at reduced bandwidth */ + int align = utk_read_bits(ctx, 1); + int zero = utk_read_bits(ctx, 1); + + utk_decode_excitation(ctx, use_multipulse, &excitation[5 + align], 2); + + if (zero) { + /* fill the remaining samples with zero + ** (spectrum is duplicated into high frequencies) */ + for (j = 0; j < 54; j++) + excitation[5 + (1 - align) + 2 * j] = 0.0f; + } else { + /* interpolate the remaining samples + ** (spectrum is low-pass filtered) */ + float *ptr = &excitation[5 + (1 - align)]; + for (j = 0; j < 108; j += 2) + ptr[j] = ptr[j - 5] * 0.01803267933428287506103515625f - + ptr[j - 3] * 0.114591561257839202880859375f + + ptr[j - 1] * 0.597385942935943603515625f + + ptr[j + 1] * 0.597385942935943603515625f - + ptr[j + 3] * 0.114591561257839202880859375f + + ptr[j + 5] * 0.01803267933428287506103515625f; + + /* scale by 0.5f to give the sinc impulse response unit energy */ + fixed_gain *= 0.5f; + } + } + + for (j = 0; j < 108; j++) + ctx->decompressed_frame[108 * i + j] = + fixed_gain * excitation[5 + j] + + pitch_gain * ctx->adapt_cb[108 * i + 216 - pitch_lag + j]; + } + + for (i = 0; i < 324; i++) + ctx->adapt_cb[i] = ctx->decompressed_frame[108 + i]; + + for (i = 0; i < 4; i++) { + for (j = 0; j < 12; j++) + ctx->rc[j] += rc_delta[j]; + + utk_lp_synthesis_filter(ctx, 12 * i, i < 3 ? 1 : 33); + } +} + +static void utk_init(UTKContext *ctx) { memset(ctx, 0, sizeof(*ctx)); } + +static void utk_set_fp(UTKContext *ctx, FILE *fp) { + ctx->fp = fp; + + /* reset the bit reader */ + ctx->bits_count = 0; +} + +static void utk_set_ptr(UTKContext *ctx, const uint8_t *ptr, + const uint8_t *end) { + ctx->ptr = ptr; + ctx->end = end; + + /* reset the bit reader */ + ctx->bits_count = 0; +} + +/* +** MicroTalk Revision 3 decoding function. +*/ + +static void utk_rev3_decode_frame(UTKContext *ctx) { + int pcm_data_present = (utk_read_byte(ctx) == 0xee); + int i; + + utk_decode_frame(ctx); + + /* unread the last 8 bits and reset the bit reader */ + ctx->ptr--; + ctx->bits_count = 0; + + if (pcm_data_present) { + /* Overwrite n samples at a given offset in the decoded frame with + ** raw PCM data. */ + int offset = utk_read_i16(ctx); + int count = utk_read_i16(ctx); + + /* sx.exe does not do any bounds checking or clamping of these two + ** fields (see 004274D1 in sx.exe v3.01.01), which means a specially + ** crafted MT5:1 file can crash sx.exe. + ** We will throw an error instead. */ + if (offset < 0 || offset > 432) { + fprintf(stderr, "error: invalid PCM offset %d\n", offset); + exit(EXIT_FAILURE); + } + if (count < 0 || count > 432 - offset) { + fprintf(stderr, "error: invalid PCM count %d\n", count); + exit(EXIT_FAILURE); + } + + for (i = 0; i < count; i++) + ctx->decompressed_frame[offset + i] = (float)utk_read_i16(ctx); + } +} diff --git a/library/tools/utkencode/utkdecode-bnb.c b/library/tools/utkencode/utkdecode-bnb.c new file mode 100644 index 0000000..35383bb --- /dev/null +++ b/library/tools/utkencode/utkdecode-bnb.c @@ -0,0 +1,167 @@ +/* +** utkdecode-bnb +** Decode Beasts & Bumpkins M10 to wav. +** Authors: Andrew D'Addesio +** License: Public domain +** Compile: gcc -Wall -Wextra -Wno-unused-function -ansi -pedantic -O2 -ffast-math +** -fwhole-program -g0 -s -o utkdecode-bnb utkdecode-bnb.c +*/ +#include +#include +#include +#include +#include +#include "utk.h" +#include "io.h" +#include "eachunk.h" + +#define MAKE_U32(a,b,c,d) ((a)|((b)<<8)|((c)<<16)|((d)<<24)) +#define ROUND(x) ((x) >= 0.0f ? ((x)+0.5f) : ((x)-0.5f)) +#define MIN(x,y) ((x)<(y)?(x):(y)) +#define MAX(x,y) ((x)>(y)?(x):(y)) +#define CLAMP(x,min,max) MIN(MAX(x,min),max) + +typedef struct PTContext { + FILE *infp, *outfp; + uint32_t num_samples; + uint32_t compression_type; + UTKContext utk; +} PTContext; + +static void pt_read_header(PTContext *pt) +{ + EAChunk *chunk = read_chunk(pt->infp); + + if ((chunk->type & 0xffff) != MAKE_U32('P','T','\x00','\x00')) { + fprintf(stderr, "error: expected PT chunk\n"); + exit(EXIT_FAILURE); + } + + while (1) { + uint8_t cmd = chunk_read_u8(chunk); + if (cmd == 0xFD) { + while (1) { + uint8_t key = chunk_read_u8(chunk); + uint32_t value = chunk_read_var_int(chunk); + + if (key == 0xFF) + break; + else if (key == 0x85) + pt->num_samples = value; + else if (key == 0x83) + pt->compression_type = value; + } + break; + } else { + chunk_read_var_int(chunk); + } + } + + if (pt->compression_type != 9) { + fprintf(stderr, "error: invalid compression type %u (expected 9 for MicroTalk 10:1)\n", + (unsigned)pt->compression_type); + exit(EXIT_FAILURE); + } + + if (pt->num_samples >= 0x01000000) { + fprintf(stderr, "error: invalid num_samples %u\n", pt->num_samples); + exit(EXIT_FAILURE); + } + + /* Initialize the decoder. */ + utk_init(&pt->utk); + + /* Write the WAV header. */ + write_u32(pt->outfp, MAKE_U32('R','I','F','F')); + write_u32(pt->outfp, 36 + pt->num_samples*2); + write_u32(pt->outfp, MAKE_U32('W','A','V','E')); + write_u32(pt->outfp, MAKE_U32('f','m','t',' ')); + write_u32(pt->outfp, 16); + write_u16(pt->outfp, 1); + write_u16(pt->outfp, 1); + write_u32(pt->outfp, 22050); + write_u32(pt->outfp, 22050*2); + write_u16(pt->outfp, 2); + write_u16(pt->outfp, 16); + write_u32(pt->outfp, MAKE_U32('d','a','t','a')); + write_u32(pt->outfp, pt->num_samples*2); +} + +static void pt_decode(PTContext *pt) +{ + UTKContext *utk = &pt->utk; + uint32_t num_samples = pt->num_samples; + + utk_set_fp(utk, pt->infp); + + while (num_samples > 0) { + int count = MIN(num_samples, 432); + int i; + + utk_decode_frame(utk); + + for (i = 0; i < count; i++) { + int x = ROUND(pt->utk.decompressed_frame[i]); + write_u16(pt->outfp, (int16_t)CLAMP(x, -32768, 32767)); + } + + num_samples -= count; + } +} + +int main(int argc, char *argv[]) +{ + PTContext pt; + const char *infile, *outfile; + FILE *infp, *outfp; + int force = 0; + + /* Parse arguments. */ + if (argc == 4 && !strcmp(argv[1], "-f")) { + force = 1; + argv++, argc--; + } + + if (argc != 3) { + printf("Usage: utkdecode-bnb [-f] infile outfile\n"); + printf("Decode Beasts & Bumpkins M10 to wav.\n"); + return EXIT_FAILURE; + } + + infile = argv[1]; + outfile = argv[2]; + + /* Open the input/output files. */ + infp = fopen(infile, "rb"); + if (!infp) { + fprintf(stderr, "error: failed to open '%s' for reading: %s\n", infile, strerror(errno)); + return EXIT_FAILURE; + } + + if (!force && fopen(outfile, "rb")) { + fprintf(stderr, "error: '%s' already exists\n", outfile); + return EXIT_FAILURE; + } + + outfp = fopen(outfile, "wb"); + if (!outfp) { + fprintf(stderr, "error: failed to create '%s': %s\n", outfile, strerror(errno)); + return EXIT_FAILURE; + } + + memset(&pt, 0, sizeof(pt)); + pt.infp = infp; + pt.outfp = outfp; + + pt_read_header(&pt); + pt_decode(&pt); + + if (fclose(outfp) != 0) { + fprintf(stderr, "error: failed to close '%s': %s\n", outfile, strerror(errno)); + return EXIT_FAILURE; + } + + fclose(infp); + + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/library/tools/utkencode/utkdecode-fifa.c b/library/tools/utkencode/utkdecode-fifa.c new file mode 100644 index 0000000..06a3abb --- /dev/null +++ b/library/tools/utkencode/utkdecode-fifa.c @@ -0,0 +1,229 @@ +/* +** utkdecode-fifa +** Decode FIFA 2001/2002 MicroTalk to wav. +** Authors: Andrew D'Addesio +** License: Public domain +** Compile: gcc -Wall -Wextra -Wno-unused-function -ansi -pedantic -O2 -ffast-math +** -fwhole-program -g0 -s -o utkdecode-fifa utkdecode-fifa.c +*/ +#include +#include +#include +#include +#include +#include "utk.h" +#include "io.h" +#include "eachunk.h" + +#define MAKE_U32(a,b,c,d) ((a)|((b)<<8)|((c)<<16)|((d)<<24)) +#define ROUND(x) ((x) >= 0.0f ? ((x)+0.5f) : ((x)-0.5f)) +#define MIN(x,y) ((x)<(y)?(x):(y)) +#define MAX(x,y) ((x)>(y)?(x):(y)) +#define CLAMP(x,min,max) MIN(MAX(x,min),max) + +typedef struct EAContext { + FILE *infp, *outfp; + uint32_t audio_pos; + uint32_t num_samples; + uint32_t num_data_chunks; + uint32_t compression_type; + uint32_t codec_revision; + UTKContext utk; +} EAContext; + +static void ea_read_schl(EAContext *ea) +{ + uint32_t id; + EAChunk *chunk = read_chunk(ea->infp); + + if (chunk->type != MAKE_U32('S','C','H','l')) { + fprintf(stderr, "error: expected SCHl chunk\n"); + exit(EXIT_FAILURE); + } + + id = chunk_read_u32(chunk); + if ((id & 0xffff) != MAKE_U32('P','T','\x00','\x00')) { + fprintf(stderr, "error: expected PT chunk in SCHl header\n"); + exit(EXIT_FAILURE); + } + + while (1) { + uint8_t cmd = chunk_read_u8(chunk); + if (cmd == 0xFD) { + while (1) { + uint8_t key = chunk_read_u8(chunk); + uint32_t value = chunk_read_var_int(chunk); + + if (key == 0xFF) + break; + else if (key == 0x80) + ea->codec_revision = value; + else if (key == 0x85) + ea->num_samples = value; + else if (key == 0xA0) + ea->compression_type = value; + } + break; + } else { + chunk_read_var_int(chunk); + } + } + + if (ea->compression_type != 4 && ea->compression_type != 22) { + fprintf(stderr, "error: invalid compression type %u (expected 4 for MicroTalk 10:1 or 22 for MicroTalk 5:1)\n", + (unsigned)ea->compression_type); + exit(EXIT_FAILURE); + } + + if (ea->num_samples >= 0x01000000) { + fprintf(stderr, "error: invalid num_samples %u\n", ea->num_samples); + exit(EXIT_FAILURE); + } + + /* Initialize the decoder. */ + utk_init(&ea->utk); + + /* Write the WAV header. */ + write_u32(ea->outfp, MAKE_U32('R','I','F','F')); + write_u32(ea->outfp, 36 + ea->num_samples*2); + write_u32(ea->outfp, MAKE_U32('W','A','V','E')); + write_u32(ea->outfp, MAKE_U32('f','m','t',' ')); + write_u32(ea->outfp, 16); + write_u16(ea->outfp, 1); + write_u16(ea->outfp, 1); + write_u32(ea->outfp, 22050); + write_u32(ea->outfp, 22050*2); + write_u16(ea->outfp, 2); + write_u16(ea->outfp, 16); + write_u32(ea->outfp, MAKE_U32('d','a','t','a')); + write_u32(ea->outfp, ea->num_samples*2); +} + +static void ea_read_sccl(EAContext *ea) +{ + EAChunk *chunk = read_chunk(ea->infp); + + if (chunk->type != MAKE_U32('S','C','C','l')) { + fprintf(stderr, "error: expected SCCl chunk\n"); + exit(EXIT_FAILURE); + } + + ea->num_data_chunks = chunk_read_u32(chunk); + if (ea->num_data_chunks >= 0x01000000) { + fprintf(stderr, "error: invalid num_data_chunks %u\n", (unsigned)ea->num_data_chunks); + exit(EXIT_FAILURE); + } +} + +static void ea_read_scdl(EAContext *ea) +{ + EAChunk *chunk = read_chunk(ea->infp); + UTKContext *utk = &ea->utk; + uint32_t num_samples; + + if (chunk->type != MAKE_U32('S','C','D','l')) { + fprintf(stderr, "error: expected SCDl chunk\n"); + exit(EXIT_FAILURE); + } + + num_samples = chunk_read_u32(chunk); + chunk_read_u32(chunk); /* unknown */ + chunk_read_u8(chunk); /* unknown */ + + if (num_samples > ea->num_samples - ea->audio_pos) + num_samples = ea->num_samples - ea->audio_pos; + + utk_set_ptr(utk, chunk->ptr, chunk->end); + + while (num_samples > 0) { + int count = MIN(num_samples, 432); + int i; + + if (ea->codec_revision >= 3) + utk_rev3_decode_frame(utk); + else + utk_decode_frame(utk); + + for (i = 0; i < count; i++) { + int x = ROUND(ea->utk.decompressed_frame[i]); + write_u16(ea->outfp, (int16_t)CLAMP(x, -32768, 32767)); + } + + ea->audio_pos += count; + num_samples -= count; + } +} + +static void ea_read_scel(const EAContext *ea) +{ + EAChunk *chunk = read_chunk(ea->infp); + + if (chunk->type != MAKE_U32('S','C','E','l')) { + fprintf(stderr, "error: expected SCEl chunk\n"); + exit(EXIT_FAILURE); + } + + if (ea->audio_pos != ea->num_samples) { + fprintf(stderr, "error: failed to decode the correct number of samples\n"); + exit(EXIT_FAILURE); + } +} + +int main(int argc, char *argv[]) +{ + EAContext ea; + const char *infile, *outfile; + FILE *infp, *outfp; + int force = 0; + unsigned int i; + + if (argc == 4 && !strcmp(argv[1], "-f")) { + force = 1; + argv++, argc--; + } + + if (argc != 3) { + printf("Usage: utkdecode-fifa [-f] infile outfile\n"); + printf("Decode FIFA 2001/2002 MicroTalk to wav.\n"); + return EXIT_FAILURE; + } + + infile = argv[1]; + outfile = argv[2]; + + infp = fopen(infile, "rb"); + if (!infp) { + fprintf(stderr, "error: failed to open '%s' for reading: %s\n", infile, strerror(errno)); + return EXIT_FAILURE; + } + + if (!force && fopen(outfile, "rb")) { + fprintf(stderr, "error: '%s' already exists\n", outfile); + return EXIT_FAILURE; + } + + outfp = fopen(outfile, "wb"); + if (!outfp) { + fprintf(stderr, "error: failed to create '%s': %s\n", outfile, strerror(errno)); + return EXIT_FAILURE; + } + + memset(&ea, 0, sizeof(ea)); + ea.infp = infp; + ea.outfp = outfp; + + ea_read_schl(&ea); + ea_read_sccl(&ea); + + for (i = 0; i < ea.num_data_chunks; i++) + ea_read_scdl(&ea); + + ea_read_scel(&ea); + + if (!outfp) { + fprintf(stderr, "error: failed to close '%s': %s\n", outfile, strerror(errno)); + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/library/tools/utkencode/utkdecode.c b/library/tools/utkencode/utkdecode.c new file mode 100644 index 0000000..8eb5a51 --- /dev/null +++ b/library/tools/utkencode/utkdecode.c @@ -0,0 +1,172 @@ +/* +** utkdecode +** Decode Maxis UTK to wav. +** Authors: Andrew D'Addesio +** License: Public domain +** Compile: gcc -Wall -Wextra -Wno-unused-function -ansi -pedantic -O2 -ffast-math +** -fwhole-program -g0 -s -o utkdecode utkdecode.c +*/ +#include +#include +#include +#include +#include +#include "utk.h" +#include "io.h" + +#define MAKE_U32(a,b,c,d) ((a)|((b)<<8)|((c)<<16)|((d)<<24)) +#define ROUND(x) ((x) >= 0.0f ? ((x)+0.5f) : ((x)-0.5f)) +#define MIN(x,y) ((x)<(y)?(x):(y)) +#define MAX(x,y) ((x)>(y)?(x):(y)) +#define CLAMP(x,min,max) MIN(MAX(x,min),max) + +int main(int argc, char *argv[]) +{ + const char *infile, *outfile; + UTKContext ctx; + uint32_t sID; + uint32_t dwOutSize; + uint32_t dwWfxSize; + uint16_t wFormatTag; + uint16_t nChannels; + uint32_t nSamplesPerSec; + uint32_t nAvgBytesPerSec; + uint16_t nBlockAlign; + uint16_t wBitsPerSample; + uint16_t cbSize; + uint32_t num_samples; + FILE *infp, *outfp; + int force = 0; + int error = 0; + int i; + + /* Parse arguments. */ + if (argc == 4 && !strcmp(argv[1], "-f")) { + force = 1; + argv++, argc--; + } + + if (argc != 3) { + printf("Usage: utkdecode [-f] infile outfile\n"); + printf("Decode Maxis UTK to wav.\n"); + return EXIT_FAILURE; + } + + infile = argv[1]; + outfile = argv[2]; + + /* Open the input/output files. */ + infp = fopen(infile, "rb"); + if (!infp) { + fprintf(stderr, "error: failed to open '%s' for reading: %s\n", infile, strerror(errno)); + return EXIT_FAILURE; + } + + if (!force && fopen(outfile, "rb")) { + fprintf(stderr, "error: '%s' already exists\n", outfile); + return EXIT_FAILURE; + } + + outfp = fopen(outfile, "wb"); + if (!outfp) { + fprintf(stderr, "error: failed to create '%s': %s\n", outfile, strerror(errno)); + return EXIT_FAILURE; + } + + /* Parse the UTK header. */ + sID = read_u32(infp); + dwOutSize = read_u32(infp); + dwWfxSize = read_u32(infp); + wFormatTag = read_u16(infp); + nChannels = read_u16(infp); + nSamplesPerSec = read_u32(infp); + nAvgBytesPerSec = read_u32(infp); + nBlockAlign = read_u16(infp); + wBitsPerSample = read_u16(infp); + cbSize = read_u16(infp); + read_u16(infp); /* padding */ + + if (sID != MAKE_U32('U','T','M','0')) { + fprintf(stderr, "error: not a valid UTK file (expected UTM0 signature)\n"); + return EXIT_FAILURE; + } else if ((dwOutSize & 0x01) != 0 || dwOutSize >= 0x01000000) { + fprintf(stderr, "error: invalid dwOutSize %u\n", (unsigned)dwOutSize); + return EXIT_FAILURE; + } else if (dwWfxSize != 20) { + fprintf(stderr, "error: invalid dwWfxSize %u (expected 20)\n", (unsigned)dwWfxSize); + return EXIT_FAILURE; + } else if (wFormatTag != 1) { + fprintf(stderr, "error: invalid wFormatTag %u (expected 1)\n", (unsigned)wFormatTag); + return EXIT_FAILURE; + } + + if (nChannels != 1) { + fprintf(stderr, "error: invalid nChannels %u (only mono is supported)\n", (unsigned)nChannels); + error = 1; + } + if (nSamplesPerSec < 8000 || nSamplesPerSec > 192000) { + fprintf(stderr, "error: invalid nSamplesPerSec %u\n", (unsigned)nSamplesPerSec); + error = 1; + } + if (nAvgBytesPerSec != nSamplesPerSec * nBlockAlign) { + fprintf(stderr, "error: invalid nAvgBytesPerSec %u (expected nSamplesPerSec * nBlockAlign)\n", (unsigned)nAvgBytesPerSec); + error = 1; + } + if (nBlockAlign != 2) { + fprintf(stderr, "error: invalid nBlockAlign %u (expected 2)\n", (unsigned)nBlockAlign); + error = 1; + } + if (wBitsPerSample != 16) { + fprintf(stderr, "error: invalid wBitsPerSample %u (expected 16)\n", (unsigned)wBitsPerSample); + error = 1; + } + if (cbSize != 0) { + fprintf(stderr, "error: invalid cbSize %u (expected 0)\n", (unsigned)cbSize); + error = 1; + } + if (error) + return EXIT_FAILURE; + + num_samples = dwOutSize/2; + + /* Write the WAV header. */ + write_u32(outfp, MAKE_U32('R','I','F','F')); + write_u32(outfp, 36 + num_samples*2); + write_u32(outfp, MAKE_U32('W','A','V','E')); + write_u32(outfp, MAKE_U32('f','m','t',' ')); + write_u32(outfp, 16); + write_u16(outfp, wFormatTag); + write_u16(outfp, nChannels); + write_u32(outfp, nSamplesPerSec); + write_u32(outfp, nAvgBytesPerSec); + write_u16(outfp, nBlockAlign); + write_u16(outfp, wBitsPerSample); + write_u32(outfp, MAKE_U32('d','a','t','a')); + write_u32(outfp, num_samples*2); + + /* Decode. */ + utk_init(&ctx); + utk_set_fp(&ctx, infp); + + while (num_samples > 0) { + int count = MIN(num_samples, 432); + + utk_decode_frame(&ctx); + + for (i = 0; i < count; i++) { + int x = ROUND(ctx.decompressed_frame[i]); + write_u16(outfp, (int16_t)CLAMP(x, -32768, 32767)); + } + + num_samples -= count; + } + + if (fclose(outfp) != 0) { + fprintf(stderr, "error: failed to close '%s': %s\n", outfile, strerror(errno)); + return EXIT_FAILURE; + } + + fclose(infp); + + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/library/tools/utkencode/utkencode.c b/library/tools/utkencode/utkencode.c new file mode 100644 index 0000000..146c687 --- /dev/null +++ b/library/tools/utkencode/utkencode.c @@ -0,0 +1,1130 @@ +/* +** utkencode +** Encode wav to Maxis UTalk. +** Authors: Fatbag +** License: Public domain (no warranties) +** Compile: gcc -Wall -Wextra -ansi -pedantic -O2 -ffast-math -g0 -s +** -o utkencode utkencode.c +*/ + +#include +#include +#include +#include +#include +#include + +#define MIN(x,y) ((x)<(y)?(x):(y)) +#define MAX(x,y) ((x)>(y)?(x):(y)) +#define CLAMP(x,min,max) ((x)<(min)?(min):(x)>(max)?(max):(x)) +#define ROUND(x) ((int)((x)>=0?((x)+0.5):((x)-0.5))) +#define ABS(x) ((x)>=0?(x):-(x)) + +#define READ16(x) ((x)[0]|((x)[1]<<8)) +#define READ32(x) ((x)[0]|((x)[1]<<8)|((x)[2]<<16)|((x)[3]<<24)) + +#define WRITE16(d,s) (d)[0]=(uint8_t)(s),(d)[1]=(uint8_t)((s)>>8) +#define WRITE32(d,s) (d)[0]=(uint8_t)(s),(d)[1]=(uint8_t)((s)>>8),\ + (d)[2]=(uint8_t)((s)>>16),(d)[3]=(uint8_t)((s)>>24) + +const float utk_rc_table[64] = { + 0, + -.99677598476409912109375, -.99032700061798095703125, -.983879029750823974609375, -.977430999279022216796875, + -.970982015132904052734375, -.964533984661102294921875, -.958085000514984130859375, -.9516370296478271484375, + -.930754005908966064453125, -.904959976673126220703125, -.879167020320892333984375, -.853372991085052490234375, + -.827579021453857421875, -.801786005496978759765625, -.775991976261138916015625, -.75019800662994384765625, + -.724404990673065185546875, -.6986110210418701171875, -.6706349849700927734375, -.61904799938201904296875, + -.567460000514984130859375, -.515873014926910400390625, -.4642859995365142822265625, -.4126980006694793701171875, + -.361110985279083251953125, -.309523999691009521484375, -.257937014102935791015625, -.20634900033473968505859375, + -.1547619998455047607421875, -.10317499935626983642578125, -.05158700048923492431640625, + 0, + +.05158700048923492431640625, +.10317499935626983642578125, +.1547619998455047607421875, +.20634900033473968505859375, + +.257937014102935791015625, +.309523999691009521484375, +.361110985279083251953125, +.4126980006694793701171875, + +.4642859995365142822265625, +.515873014926910400390625, +.567460000514984130859375, +.61904799938201904296875, + +.6706349849700927734375, +.6986110210418701171875, +.724404990673065185546875, +.75019800662994384765625, + +.775991976261138916015625, +.801786005496978759765625, +.827579021453857421875, +.853372991085052490234375, + +.879167020320892333984375, +.904959976673126220703125, +.930754005908966064453125, +.9516370296478271484375, + +.958085000514984130859375, +.964533984661102294921875, +.970982015132904052734375, +.977430999279022216796875, + +.983879029750823974609375, +.99032700061798095703125, +.99677598476409912109375 +}; + +static const char *prog_name; + +static void print_help(void) +{ + printf("Usage: %s [options] infile.wav outfile.utk\n", prog_name); + printf("Encode wav to Maxis UTalk.\n"); + printf("\n"); + printf("General options:\n"); + printf(" -f, --force overwrite without prompting\n"); + printf(" -q, --quiet suppress normal output and do not prompt\n"); + printf(" -h, --help display this help and exit\n"); + printf(" -V, --version output version information and exit\n"); + printf("\n"); + printf("Encoding options:\n"); + printf(" -b, --bitrate=N target bitrate in bits/sec (default 32000)\n"); + printf(" -H, --halved-inn encode innovation using half bandwidth\n"); + printf(" (default)\n"); + printf(" -F, --full-inn encode innovation using full bandwidth\n"); + printf(" -T, --huff-threshold=N use the Huffman codebook with threshold N where\n"); + printf(" N is an integer between 16 and 32 (inclusive)\n"); + printf(" (default 24)\n"); + printf(" -S, --inngain-sig=N use innovation gain significand N where N is\n"); + printf(" between 8 and 128 (inclusive) in steps of 8\n"); + printf(" (default 64)\n"); + printf(" -B, --inngain-base=N use innovation gain base N where N is between\n"); + printf(" 1.040 and 1.103 (inclusive) in steps of 0.001\n"); + printf(" (default 1.068)\n"); + printf("\n"); + printf("If infile is \"-\", read from standard input.\n"); + printf("If outfile is \"-\", write to standard output.\n"); +} + +static void print_version(void) +{ + printf("utkencode 0.0\n"); +} + +static void print_usage_error(void) +{ + fprintf(stderr, "Usage: %s [options] infile.wav outfile.utk\n", + prog_name); + fprintf(stderr, "Try '%s --help' for more options.\n", prog_name); +} + +static const char short_options[] = "fqhVb:HFT:S:B:"; +static const struct option long_options[] = { + {"force", no_argument, 0, 'f'}, + {"quiet", no_argument, 0, 'q'}, + {"help", no_argument, 0, 'h'}, + {"version", no_argument, 0, 'V'}, + {"bitrate", required_argument, 0, 'b'}, + {"halved-inn", no_argument, 0, 'H'}, + {"full-inn", no_argument, 0, 'F'}, + {"huff-threshold", required_argument, 0, 'T'}, + {"inngain-sig", required_argument, 0, 'S'}, + {"inngain-base", required_argument, 0, 'B'}, + {0, 0, 0, 0} +}; + +static int bitrate = 32000; +static int force = 0; +static int quiet = 0; +static int halved_innovation = 1; +static int huffman_threshold = 24; +static int inngain_sig = 64; +static float inngain_base = 1.068f; +static const char *infile = ""; +static const char *outfile = ""; +static FILE *infp = NULL; +static FILE *outfp = NULL; + +static uint8_t wav_buffer[432*2]; +static float input_samples[12+432]; +static float adaptive_codebook[324+432]; +static uint8_t compressed_buffer[1024]; +static uint8_t inn_buffers[2][256]; +static float prev_rc[12]; +static float innovation[5+108+5]; +static float inn_gains[64]; + +struct bit_writer_context { + uint8_t written_bits_count; + size_t pos; + uint8_t *buffer; +}; + +static void read_data(FILE *fp, uint8_t *buffer, size_t size) +{ + if (fread(buffer, 1, size, fp) != size) { + fprintf(stderr, "%s: failed to read '%s': %s\n", + prog_name, infile, ferror(fp) + ? strerror(errno) : "reached end of file"); + exit(EXIT_FAILURE); + } +} + +static void write_data(FILE *fp, const uint8_t *buffer, size_t size) +{ + if (fwrite(buffer, 1, size, fp) != size) { + fprintf(stderr, "%s: failed to write to '%s': %s\n", + prog_name, outfile, ferror(fp) + ? strerror(errno) : "reached end of file"); + exit(EXIT_FAILURE); + } +} + +static void flush_data(FILE *fp) +{ + if (fflush(fp) != 0) { + fprintf(stderr, "%s: failed to flush '%s': %s\n", + prog_name, outfile, strerror(errno)); + exit(EXIT_FAILURE); + } +} + +static void bwc_init(struct bit_writer_context *bwc, uint8_t *buffer) +{ + bwc->written_bits_count = 0; + bwc->pos = 0; + bwc->buffer = buffer; + bwc->buffer[0] = 0; +} + +static void bwc_write_bits(struct bit_writer_context *bwc, unsigned value, + uint8_t count) +{ + unsigned x = value << bwc->written_bits_count; + + bwc->buffer[bwc->pos] |= (uint8_t)x; + bwc->written_bits_count += count; + + while (bwc->written_bits_count >= 8) { + x >>= 8; + bwc->buffer[++bwc->pos] = (uint8_t)x; + bwc->written_bits_count -= 8; + } +} + +static void bwc_pad(struct bit_writer_context *bwc) +{ + if (bwc->written_bits_count != 0) { + bwc->buffer[++bwc->pos] = 0; + bwc->written_bits_count = 0; + } +} + +static void bwc_flush(struct bit_writer_context *bwc, FILE *fp) +{ + write_data(fp, bwc->buffer, bwc->pos); + bwc->buffer[0] = bwc->buffer[bwc->pos]; + bwc->pos = 0; +} + +static unsigned quantize(float value, const float *alphabet, size_t alphabet_size) +{ + unsigned i; + unsigned min_idx = 0; + float min_distance = ABS(value - alphabet[0]); + + for (i = 1; i < alphabet_size; i++) { + float distance = ABS(value - alphabet[i]); + + if (distance < min_distance) { + min_distance = distance; + min_idx = i; + } + } + + return min_idx; +} + +/* used in the parsing of some arguments */ +static int read_dec_places(const char *string, int n) +{ + int i; + int value = 0; + int pows_10[10]; + + pows_10[0] = 1; + for (i = 1; i < n; i++) + pows_10[i] = pows_10[i-1] * 10; + + for (i = 0; i < n && string[i] >= '0' && string[i] <= '9'; i++) + value += pows_10[n-1-i] * (string[i]-'0'); + + return (string[i] == '\0') ? value : -1; +} + +static int file_exists(const char *filename) +{ + FILE *fp; + + fp = fopen(filename, "rb"); + if (fp) { + fclose(fp); + return 1; + } + + return 0; +} + +static void find_autocorrelations(float *r, const float *samples) +{ + int i, j; + + for (i = 0; i < 13; i++) { + r[i] = 0; + for (j = 0; j < 432 - i; j++) + r[i] += samples[j]*samples[j+i]; + } +} + +static void levinson_durbin_symmetric(float *x, float *k, + const float *r, const float *y) +{ + float a[12]; /* the forward vector */ + float e; /* prediction error */ + int i; + + if (r[0] <= 1.0f/32768.0f && r[0] >= -1.0f/32768.0f) + goto zero; + + a[0] = 1; + e = r[0]; + x[0] = y[0]/r[0]; + + for (i = 1; i < 12; i++) { + float u, m; + float a_temp[12]; + int j; + + u = 0.0f; + for (j = 0; j < i; j++) + u += a[j]*r[i-j]; + + k[i-1] = -u/e; /* reflection coefficient i-1 */ + e += u*k[i-1]; /* update e to the new value e - u*u/e */ + + if (e <= 1.0f/32768.0f && e >= -1.0f/32768.0f) + goto zero; + + memcpy(a_temp, a, i*sizeof(float)); + a[i] = 0.0f; + for (j = 1; j <= i; j++) + a[j] += k[i-1]*a_temp[i-j]; + + m = y[i]; + for (j = 0; j < i; j++) + m -= x[j]*r[i-j]; + m /= e; + + x[i] = 0.0f; + for (j = 0; j <= i; j++) + x[j] += m*a[i-j]; + } + + k[11] = -x[11]; + + return; + +zero: + for (i = 0; i < 12; i++) + x[i] = 0.0f; + for (i = 0; i < 12; i++) + k[i] = 0.0f; +} + +static void rc_to_lpc(float *x, const float *k) +{ + float a[13]; /* the forward vector */ + unsigned i, j; + a[0] = 1; + + for (i = 1; i < 13; i++) { + float a_temp[12]; + memcpy(a_temp, a, i*sizeof(float)); + a[i] = 0.0f; + for (j = 1; j <= i; j++) + a[j] += k[i-1]*a_temp[i-j]; + } + + for (i = 1; i < 13; i++) + x[i-1] = -a[i]; +} + +static void find_rc(float *rc, const float *samples) +{ + float r[13]; + float lpc[12]; + find_autocorrelations(r, samples); + levinson_durbin_symmetric(lpc, rc, r, r+1); +} + +static void find_excitation(float *excitation, const float *source, + int length, const float *lpc) +{ + int i, j; + + for (i = 0; i < length; i++) { + float prediction = 0.0f; + for (j = 0; j < 12; j++) + prediction += lpc[j]*source[i-1-j]; + excitation[i] = source[i] - prediction; + } +} + +static void find_pitch(int *pitch_lag, float *pitch_gain, + const float *excitation) +{ + int max_corr_offset = 108; + float max_corr_value = 0.0f; + float history_energy; + float gain; + int i, j; + + /* Find the optimal pitch lag. */ + for (i = 108; i < 324; i++) { + float corr = 0.0f; + for (j = 0; j < 108; j++) + corr += excitation[j]*excitation[j-i]; + if (corr > max_corr_value) { + max_corr_offset = i; + max_corr_value = corr; + } + } + + /* Find the optimal pitch gain. */ + history_energy = 0.0f; + for (i = 0; i < 108; i++) { + float value = excitation[i-max_corr_offset]; + history_energy += value*value; + } + + if (history_energy >= 1/32768.0f) { + gain = max_corr_value / history_energy; + gain = CLAMP(gain, 0.0f, 1.0f); + + *pitch_lag = max_corr_offset; + *pitch_gain = gain; + } else { + *pitch_lag = 108; + *pitch_gain = 0.0f; + } +} + +static void interpolate(float *x, int a, int z) +{ + int i; + + if (z) { + for (i = !a; i < 108; i+=2) + x[i] = 0.0f; + } else { + for (i = !a; i < 108; i+=2) + x[i] + = (x[i-1]+x[i+1]) * .5973859429f + - (x[i-3]+x[i+3]) * .1145915613f + + (x[i-5]+x[i+5]) * .0180326793f; + } +} + +static float interpolation_error(int a, int z, const float *x) +{ + float error = 0.0f; + int i; + + if (z) { + for (i = !a; i < 108; i+=2) + error += x[i]*x[i]; + } else { + for (i = !a; i < 108; i+=2) { + float prediction + = (x[i-1]+x[i+1]) * .5973859429f + - (x[i-3]+x[i+3]) * .1145915613f + + (x[i-5]+x[i+5]) * .0180326793f; + error += (prediction - x[i])*(prediction - x[i]); + } + } + + return error; +} + +static void find_a_z_flags(int *a, int *z, const float *innovation) +{ + /* Find the a and z flags such that the least error is introduced + ** in the downsampling step. In case of a tie (e.g. in silence), + ** prefer using the zero flag. Thus, we will test in the order: + ** (a=0,z=1), (a=1,z=1), (a=0,z=0), (a=1,z=1). */ + float error; + float best_error; + int best_a = 0, best_z = 1; + + best_error = interpolation_error(0, 1, innovation); + + error = interpolation_error(1, 1, innovation); + if (error < best_error) { + best_error = error; + best_a = 1, best_z = 1; + } + + error = interpolation_error(0, 0, innovation); + if (error < best_error) { + best_error = error; + best_a = 0, best_z = 0; + } + + error = interpolation_error(1, 0, innovation); + if (error < best_error) { + best_error = error; + best_a = 1, best_z = 0; + } + + *a = best_a; + *z = best_z; +} + +struct huffman_code { + uint16_t bits_value; + uint16_t bits_count; +}; + +static const struct huffman_code huffman_models[2][13+1+13] = { + /* model 0 */ + { + /* -13 */ {16255, 16}, + /* -12 */ {8063, 15}, + /* -11 */ {3967, 14}, + /* -10 */ {1919, 13}, + /* -9 */ {895, 12}, + /* -8 */ {383, 11}, + /* -7 */ {127, 10}, + /* -6 */ {63, 8}, + /* -5 */ {31, 7}, + /* -4 */ {15, 6}, + /* -3 */ {7, 5}, + /* -2 */ {3, 4}, + /* -1 */ {2, 2}, + /* 0 */ {0, 2}, + /* +1 */ {1, 2}, + /* +2 */ {11, 4}, + /* +3 */ {23, 5}, + /* +4 */ {47, 6}, + /* +5 */ {95, 7}, + /* +6 */ {191, 8}, + /* +7 */ {639, 10}, + /* +8 */ {1407, 11}, + /* +9 */ {2943, 12}, + /* +10 */ {6015, 13}, + /* +11 */ {12159, 14}, + /* +12 */ {24447, 15}, + /* +13 */ {49023, 16} + }, + + /* model 1 */ + { + /* -13 */ {8127, 15}, + /* -12 */ {4031, 14}, + /* -11 */ {1983, 13}, + /* -10 */ {959, 12}, + /* -9 */ {447, 11}, + /* -8 */ {191, 10}, + /* -7 */ {63, 9}, + /* -6 */ {31, 7}, + /* -5 */ {15, 6}, + /* -4 */ {7, 5}, + /* -3 */ {3, 4}, + /* -2 */ {1, 3}, + /* -1 */ {2, 3}, + /* 0 */ {0, 2}, + /* +1 */ {6, 3}, + /* +2 */ {5, 3}, + /* +3 */ {11, 4}, + /* +4 */ {23, 5}, + /* +5 */ {47, 6}, + /* +6 */ {95, 7}, + /* +7 */ {319, 9}, + /* +8 */ {703, 10}, + /* +9 */ {1471, 11}, + /* +10 */ {3007, 12}, + /* +11 */ {6079, 13}, + /* +12 */ {12223, 14}, + /* +13 */ {24511, 15} + } +}; + +static void encode_huffman(struct bit_writer_context *bwc, + float *innovation_out, int *bits_used_out, float *error_out, + const float *innovation_in, int halved_innovation, + int pow, int a, int z) +{ + int interval = halved_innovation ? 2 : 1; + float inn_gain; + float total_error = 0.0f; + int counter; + int values[108]; + int zero_counts[108]; + int model; + int bits_start, bits_end; + int i; + + inn_gain = inn_gains[pow]; + if (!z) + inn_gain *= 0.5f; + + bits_start = 8*bwc->pos + bwc->written_bits_count; + + if (halved_innovation) + bwc_write_bits(bwc, pow | (a<<6) | (z<<7), 8); + else + bwc_write_bits(bwc, pow, 6); + + for (i = a; i < 108; i += interval) { + float e; + + values[i] = ROUND(CLAMP( + innovation_in[i]/inn_gain, -13.0f, 13.0f)); + + innovation_out[i] = inn_gain*values[i]; + + e = innovation_out[i] - innovation_in[i]; + total_error += e*e; + } + + *error_out = total_error; + + /* Find the zero runs at each position i (how many zeros + ** in a row there are at position i). + ** When interval=2 and a=1, start the search from i=105 instead + ** of 107 in order to duplicate the off-by-one mistake in the + ** decoder. (Thus, we will subtract a instead of adding.) + ** For details, see: http://wiki.niotso.org/UTK */ + counter = 0; + for (i = 108 - interval - a; i >= 0; i -= interval) { + if (values[i] == 0) + counter++; + else + counter = 0; + zero_counts[i] = counter; + } + + i = a; + model = 0; + while (i < 108) { + if (zero_counts[i] >= 7) { + int length = MIN(zero_counts[i], 70); + + if (model == 0) + bwc_write_bits(bwc, 255 | ((length-7)<<8), 14); + else + bwc_write_bits(bwc, 127 | ((length-7)<<7), 13); + + model = 0; + i += length * interval; + } else { + int value = values[i]; + + bwc_write_bits(bwc, + huffman_models[model][13+value].bits_value, + huffman_models[model][13+value].bits_count); + + model = (value < -1 || value > 1); + i += interval; + } + } + + bits_end = 8*bwc->pos + bwc->written_bits_count; + *bits_used_out = bits_end - bits_start; +} + +static void encode_triangular(struct bit_writer_context *bwc, + float *innovation_out, int *bits_used_out, float *error_out, + const float *innovation_in, int halved_innovation, + int pow, int a, int z) +{ + int interval = halved_innovation ? 2 : 1; + float inn_gain; + float total_error = 0.0f; + int bits_start, bits_end; + int i; + + inn_gain = 2.0f*inn_gains[pow]; + if (!z) + inn_gain *= 0.5f; + + bits_start = 8*bwc->pos + bwc->written_bits_count; + + if (halved_innovation) + bwc_write_bits(bwc, pow | (a<<6) | (z<<7), 8); + else + bwc_write_bits(bwc, pow, 6); + + for (i = a; i < 108; i += interval) { + float e; + int value = ROUND(CLAMP( + innovation_in[i]/inn_gain, -1.0f, 1.0f)); + + if (value > 0) + bwc_write_bits(bwc, 3, 2); + else if (value < 0) + bwc_write_bits(bwc, 1, 2); + else + bwc_write_bits(bwc, 0, 1); + + innovation_out[i] = inn_gain*value; + + e = innovation_out[i] - innovation_in[i]; + total_error += e*e; + } + + bits_end = 8*bwc->pos + bwc->written_bits_count; + *bits_used_out = bits_end - bits_start; + + *error_out = total_error; +} + +static void low_pass_innovation(float *x, int a, int z) +{ + /* Apply a weak low-pass filter to the innovation signal suitable for + ** downsampling it by 1/2. Note that, since we are throwing out all + ** x[m] samples where m != a+2*k for integer k, we only have to filter + ** the x[n] samples where n = a+2*k. */ + int i; + + /* filter coeffs: (GNU Octave) + ** n = 10; b = sinc((-n/4):.5:(n/4)).*hamming(n+9)(5:(n+5))' */ + for (i = a; i < 108; i+=2) + x[i] = (z ? 1.0f : 0.5f)*(x[i] + + (x[i-1]+x[i+1]) * 0.6189590521549956f + + (x[i-3]+x[i+3]) * -0.1633990749076792f + + (x[i-5]+x[i+5]) * 0.05858453198856907f); +} + +struct innovation_encoding { + struct bit_writer_context bwc; + float innovation[108]; + int bits_used; + float error; +}; + +static void encode_innovation(struct bit_writer_context *bwc, + float *innovation, int halved_innovation, int use_huffman, + int *bits_used, int target_bit_count) +{ + int a = 0, z = 1; + struct innovation_encoding encodings[2]; + int m = 0; + + if (halved_innovation) { + find_a_z_flags(&a, &z, innovation); + low_pass_innovation(innovation, a, z); + } + + if (use_huffman) { + /* Encode using the Huffman model. */ + int interval = halved_innovation ? 2 : 1; + float max_value = 0.0f; + int min_pow; + int best_distance = 0; + int pow; + int i; + + /* Find the minimum innovation power such that the innovation + ** signal doesn't clip anywhere in time. (We consider clipping + ** a sample by <=0.5 of a quantization level to be okay since + ** the sample already rounds down [towards zero].) */ + for (i = a; i < 108; i += interval) { + float value = ABS(innovation[i]); + if (value > max_value) + max_value = value; + } + for (i = 62; i >= 0; i--) { + if (inn_gains[i]*(!z ? 0.5f : 1.0f)*13.5f + < max_value) + break; + } + min_pow = i+1; + + /* Find the innovation gain that results in the closest + ** to the target bitrate without clipping occurring. */ + for (pow = min_pow; pow <= 63; pow++) { + int distance; + + bwc_init(&encodings[m].bwc, inn_buffers[m]); + bwc_write_bits(&encodings[m].bwc, bwc->buffer[bwc->pos], + bwc->written_bits_count); + + encode_huffman(&encodings[m].bwc, + encodings[m].innovation, + &encodings[m].bits_used, + &encodings[m].error, + innovation, halved_innovation, + pow, a, z); + + distance = ABS(encodings[m].bits_used + - target_bit_count); + if (pow == min_pow || distance < best_distance) { + best_distance = distance; + m = !m; /* swap the buffers */ + } + } + } else { + /* Encode using the triangular noise model. */ + float best_error = 0.0f; + int pow; + + /* Find the innovation gain that results in + ** the highest quality. */ + for (pow = 0; pow <= 63; pow++) { + bwc_init(&encodings[m].bwc, inn_buffers[m]); + bwc_write_bits(&encodings[m].bwc, bwc->buffer[bwc->pos], + bwc->written_bits_count); + + encode_triangular(&encodings[m].bwc, + encodings[m].innovation, + &encodings[m].bits_used, + &encodings[m].error, + innovation, halved_innovation, + pow, a, z); + + if (pow == 0 || encodings[m].error < best_error) { + best_error = encodings[m].error; + m = !m; /* swap the buffers */ + } + } + } + + /* Swap the buffers again to return back to our best encoding. */ + m = !m; + + /* Write this encoding out to the UTK bitstream. */ + memcpy(&bwc->buffer[bwc->pos], encodings[m].bwc.buffer, + encodings[m].bwc.pos+1); + bwc->pos += encodings[m].bwc.pos; + bwc->written_bits_count = encodings[m].bwc.written_bits_count; + + /* Update the innovation signal with the quantized version. */ + memcpy(innovation, encodings[m].innovation, 108*sizeof(float)); + if (halved_innovation) + interpolate(innovation, a, z); + + *bits_used = encodings[m].bits_used; +} + +static int parse_arguments(int argc, char *argv[]) +{ + int c; + int value; + char *endptr; + + prog_name = (argc >= 1 && argv[0][0] != '\0') ? argv[0] : "utkencode"; + + while ((c = getopt_long(argc, argv, short_options, + long_options, NULL)) != -1) { + switch (c) { + case 'b': + bitrate = (int)strtol(optarg, &endptr, 10); + if (*endptr != '\0' + || bitrate < 1000 + || bitrate > 1000000) { + fprintf(stderr, "%s: invalid bitrate -- %s\n", + prog_name, optarg); + print_usage_error(); + return -1; + } + break; + case 'f': + force = 1; + break; + case 'q': + quiet = 1; + break; + case 'h': + print_help(); + return 1; + case 'V': + print_version(); + return 1; + case 'H': + halved_innovation = 1; + break; + case 'F': + halved_innovation = 0; + break; + case 'T': + huffman_threshold = (int)strtol(optarg, &endptr, 10); + if (*endptr != '\0' + || huffman_threshold < 16 + || huffman_threshold > 32) { + fprintf(stderr, "%s: invalid Huffman " + "threshold -- %s\n", prog_name, optarg); + print_usage_error(); + return -1; + } + break; + case 'S': + inngain_sig = (int)strtol(optarg, &endptr, 10); + if (*endptr != '\0' + || inngain_sig < 8 + || inngain_sig > 128 + || (inngain_sig & 7) != 0) { + fprintf(stderr, "%s: invalid innovation gain" + " significand -- %s\n", prog_name, + optarg); + print_usage_error(); + return -1; + } + break; + case 'B': + if (optarg[0] != '1' || optarg[1] != '.' + || (value = read_dec_places(optarg+2, 3)) < 0 + || value < 40 + || value > 103) { + fprintf(stderr, "%s: invalid innovation gain" + " base -- %s\n", prog_name, optarg); + print_usage_error(); + return -1; + } + inngain_base = 1.0f + (float)value/1000.0f; + break; + default: + print_usage_error(); + return -1; + } + } + + if (argc - optind == 0) { + fprintf(stderr, "%s: missing infile\n", prog_name); + print_usage_error(); + return -1; + } else if (argc - optind == 1) { + fprintf(stderr, "%s: missing outfile\n", prog_name); + print_usage_error(); + return -1; + } else if (argc - optind >= 3) { + fprintf(stderr, "%s: too many arguments passed\n", prog_name); + print_usage_error(); + return -1; + } + + infile = argv[optind]; + outfile = argv[optind+1]; + + return 0; +} + +int main(int argc, char *argv[]) +{ + int ret; + uint8_t wav_header[44]; + uint8_t utk_header[32]; + unsigned bytes_remaining; + int sampling_rate; + struct bit_writer_context bwc; + int i, j; + + ret = parse_arguments(argc, argv); + if (ret < 0) + return EXIT_FAILURE; + else if (ret > 0) + return EXIT_SUCCESS; + + if (!strcmp(infile, "-")) { + infp = stdin; + } else { + infp = fopen(infile, "rb"); + if (!infp) { + fprintf(stderr, "%s: failed to open '%s' for" + " reading: %s\n", prog_name, infile, + strerror(errno)); + return EXIT_FAILURE; + } + } + setvbuf(infp, NULL, _IOFBF, BUFSIZ); + + if (!strcmp(outfile, "-")) { + outfp = stdout; + } else { + if (!force && file_exists(outfile)) { + if (quiet) { + fprintf(stderr, "%s: failed to open '%s' for" + " writing: file already exists\n", + prog_name, outfile); + return EXIT_FAILURE; + } else { + fprintf(stderr, "%s: overwrite '%s'? ", + prog_name, outfile); + if (getchar() != 'y') + return EXIT_FAILURE; + } + } + + outfp = fopen(outfile, "wb"); + if (!outfp) { + fprintf(stderr, "%s: failed to open '%s' for" + " writing: %s\n", prog_name, outfile, + strerror(errno)); + return EXIT_FAILURE; + } + } + setvbuf(outfp, NULL, _IOFBF, BUFSIZ); + + if (fread(wav_header, 1, 44, infp) != 44) { + if (ferror(infp)) + fprintf(stderr, "%s: failed to read '%s': %s\n", + prog_name, infile, strerror(errno)); + else + fprintf(stderr, "%s: '%s' is not a valid wav file\n", + prog_name, infile); /* (reached end of file) */ + return EXIT_FAILURE; + } + + if (memcmp(wav_header, "RIFF", 4) != 0 + || memcmp(wav_header+8, "WAVEfmt ", 8) != 0) { + fprintf(stderr, "%s: '%s' is not a valid wav file\n", + prog_name, infile); + return EXIT_FAILURE; + } + + if (READ16(wav_header+20) != 1 /* wFormatTag */ + || READ16(wav_header+22) != 1 /* nChannels */ + || READ16(wav_header+32) != 2 /* nBlockAlign */ + || READ16(wav_header+34) != 16 /* wBitsPerSample */) { + fprintf(stderr, "%s: wav file must be 1-channel 16-bit LPCM\n", + prog_name); + return EXIT_FAILURE; + } + + sampling_rate = READ32(wav_header+24); /* nSamplesPerSec */ + if (sampling_rate < 1000 || sampling_rate > 1000000) { + fprintf(stderr, "%s: unsupported sampling rate %d\n", + prog_name, sampling_rate); + return EXIT_FAILURE; + } + + memcpy(utk_header, "UTM0", 4); /* sID */ + + /* Drop the last byte from the wav file if there are an odd + ** number of sample bytes. */ + bytes_remaining = READ32(wav_header+40) & (~1); + WRITE32(utk_header+4, bytes_remaining); /* dwOutSize */ + + WRITE32(utk_header+8, 20); /* dwWfxSize */ + memcpy(utk_header+12, wav_header+20, 16); /* WAVEFORMATEX */ + WRITE32(utk_header+28, 0); /* cbSize */ + + write_data(outfp, utk_header, 32); + + bwc_init(&bwc, compressed_buffer); + + bwc_write_bits(&bwc, halved_innovation, 1); + bwc_write_bits(&bwc, 32 - huffman_threshold, 4); + bwc_write_bits(&bwc, inngain_sig/8 - 1, 4); + bwc_write_bits(&bwc, ROUND((inngain_base - 1.04f)*1000.0f), 6); + bwc_flush(&bwc, outfp); + + for (i = 0; i < 12; i++) + input_samples[i] = 0.0f; + for (i = 0; i < 324; i++) + adaptive_codebook[i] = 0.0f; + for (i = 0; i < 12; i++) + prev_rc[i] = 0.0f; + for (i = 0; i < 5; i++) + innovation[i] = 0.0f; + for (i = 5+108; i < 5+108+5; i++) + innovation[i] = 0.0f; + + inn_gains[0] = inngain_sig; + for (i = 1; i < 64; i++) + inn_gains[i] = inn_gains[i-1]*inngain_base; + + while (bytes_remaining != 0) { + /* Encode the next frame of 432 samples. */ + int bytes_to_read; + int samples_to_read; + float rc[12]; + float rc_delta[12]; + int use_huffman = 0; + + bytes_to_read = (int)MIN(bytes_remaining, 432*2); + samples_to_read = bytes_to_read >> 1; + + read_data(infp, wav_buffer, bytes_to_read); + bytes_remaining -= bytes_to_read; + + for (i = 0; i < samples_to_read; i++) { + int16_t x = READ16(wav_buffer+2*i); + input_samples[12+i] = (float)x; + } + for (i = samples_to_read; i < 432; i++) + input_samples[12+i] = 0.0f; + + find_rc(rc, input_samples+12); + + /* Quantize the reflection coefficients. + ** In our encoder, we will not make use of utk_rc_table[0]. */ + for (i = 0; i < 4; i++) { + int idx = 1+quantize(rc[i], utk_rc_table+1, 63); + bwc_write_bits(&bwc, idx, 6); + rc[i] = utk_rc_table[idx]; + if (i == 0 && idx < huffman_threshold) + use_huffman = 1; + } + for (i = 4; i < 12; i++) { + int idx = quantize(rc[i], utk_rc_table+16, 32); + bwc_write_bits(&bwc, idx, 5); + rc[i] = utk_rc_table[16+idx]; + } + + for (i = 0; i < 12; i++) + rc_delta[i] = (rc[i] - prev_rc[i])/4.0f; + + memcpy(rc, prev_rc, 12*sizeof(float)); + + for (i = 0; i < 4; i++) { + /* Linearly interpolate the reflection coefficients over + ** the four subframes and find the excitation signal. */ + float lpc[12]; + + for (j = 0; j < 12; j++) + rc[j] += rc_delta[j]; + + rc_to_lpc(lpc, rc); + + find_excitation(adaptive_codebook+324+12*i, + input_samples+12+12*i, + i < 3 ? 12 : 396, lpc); + } + + memcpy(input_samples, &input_samples[432], 12*sizeof(float)); + memcpy(prev_rc, rc, 12*sizeof(float)); + + for (i = 0; i < 4; i++) { + /* Encode the i'th subframe. */ + float *excitation = adaptive_codebook+324+108*i; + int pitch_lag; + float pitch_gain; + int idx; + int bits_used; + + find_pitch(&pitch_lag, &pitch_gain, excitation); + + bwc_write_bits(&bwc, pitch_lag - 108, 8); + + idx = ROUND(pitch_gain*15.0f); + bwc_write_bits(&bwc, idx, 4); + pitch_gain = (float)idx/15.0f; + + for (j = 0; j < 108; j++) + innovation[5+j] = excitation[j] + - pitch_gain*excitation[j-pitch_lag]; + + encode_innovation(&bwc, &innovation[5], + halved_innovation, use_huffman, &bits_used, + ROUND(bitrate * 432 / sampling_rate / 4) - 18); + + /* Update the adaptive codebook using the quantized + ** innovation signal. */ + for (j = 0; j < 108; j++) + excitation[j] = innovation[5+j] + + pitch_gain*excitation[j-pitch_lag]; + } + + /* Copy the last 3 subframes to the beginning of the + ** adaptive codebook. */ + memcpy(adaptive_codebook, &adaptive_codebook[432], + 324*sizeof(float)); + + bwc_flush(&bwc, outfp); + } + + bwc_pad(&bwc); + bwc_flush(&bwc, outfp); + + flush_data(outfp); + + fclose(outfp); + fclose(infp); + + return EXIT_SUCCESS; +} \ No newline at end of file