alac_decoder-0.2.0-4.red80> K KtĉH2!c31^ Wgebsupport@red-soft.ru  WgUʹȪ$ʳunH޹EnƆm댈w!/r㣽Ӡڋ) 2<$?jvuCs,FhT1!Jzw]Q!Qo[UjUq6 `-͗n__W#Kc B6g 6*Ԝner֥=nr+y B%cc]V*l,C"`uU3i _w6d>EY' =X*N[36da9aa4e696c50985d06e2df13e333af54f540478904551caab21db4ae70b82bec4b74497827bdc7cfd0b8fdcb22236eae707a2Fb"4I|x>==?-d  R $(1:> GS}     *Pl   ( 8 9 : DG XH tI X Y \ ] ^ -b d e f l t 0u Lv hwHxdyCalac_decoder0.2.04.red80A basic decoder for Apple Lossless Audio Codec filesLocated here is a basic decoder for Apple Lossless Audio Codec files (ALAC). ALAC is a proprietary lossless audio compression scheme. Apple never released any documents on the format. What I provide here is a C implementation of a decoder, written from reverse engineering the file format. It turns out that most of the algorithms in the codec are fairly well known. ALAC uses an adaptive FIR prediction algorithm and stores the error values using a modified rice or golumb algorithm. Further details are in alac.c. Although an encoder is not provided, by using the decoder as a sort of specification it should be fairly trivial to write an encoder. By exploiting other lossless audio encoders, such as FLAC, the task will be much easier. Although one wouldn't be able to copy the compression algorithms verbatim, as adaptive compression is used in ALAC and not in FLAC. There are, however, a bunch of academic papers on the issue. The program located here will not be able to handle all ALAC files, it can only handle mono or stereo files. ALAC allows up to 8 channels. It should be trivial to finish the implementation once I find files that I can test it with. The ALAC decoder supports both 16 and 24 bit sample sizes. The decoder is fairly self explanatory, it can read an ALAC stream from either a file or from stdin, and write it as raw PCM data or as a WAV file to either stdout or a file. In theory one should be able to stream data to the decoder.dNiUstapel80.red-soft.rux RED SOFTRED SOFTMITRED SOFTUnspecifiedhttp://craz.net/programs/itunes/alac.htmllinuxx86_64o)AAA큤dNiWdNiWdNiWdNiWdNiWdNiUJ"b143f84fb3b174dbc62ee08b8c2193376973e4c468d44d6a966a0294ad4a397ac63336a6e71461b17b29bbbc9d1495b148337b717ff9bff4e615707d5a8110e3349abe36938e27f00cc24dc065fb99207e437c371066a4140f8157cb9915c36a../../../../usr/bin/alacrootrootrootrootrootrootrootrootrootrootrootrootrootrootalac_decoder-0.2.0-4.red80.src.rpmalac_decoderalac_decoder(x86-64)@@@@@@    @libc.so.6()(64bit)libc.so.6(GLIBC_2.14)(64bit)libc.so.6(GLIBC_2.2.5)(64bit)libc.so.6(GLIBC_2.3.4)(64bit)libc.so.6(GLIBC_2.34)(64bit)libc.so.6(GLIBC_2.4)(64bit)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsZstd)rtld(GNU_HASH)3.0.4-14.6.0-14.0-15.4.18-14.18.0dNX@Aexandr Subbotin - 0.2.0-4- Build for red800.2.0-4.red800.2.0-4.red80alac.build-ide8bc1195a9239a382f76b123a718d9885b99b81dalac_decoderLICENSEREADME/usr/bin//usr/lib//usr/lib/.build-id//usr/lib/.build-id/e8//usr/share/doc//usr/share/doc/alac_decoder/-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protectioncpiozstd19x86_64-redhat-linux-gnuELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=e8bc1195a9239a382f76b123a718d9885b99b81d, for GNU/Linux 3.2.0, strippeddirectoryASCII textRRRRRRR utf-8d158aeeb62976b1e8b00db4b42e13a8f6f8dc0fd3898c39de429a73387c1c2c4b975b5ca649cb79e7c7221019d45cef89b10ff57d3d6275cea4dbc8118a6eedf?0(/hyP!YCS}pBo;_utߤgU0*!!10"*ݳabxcv0Ħɿ73+ wN:*b0RKG~1;N_:8 `cwo ؀cuN (>8:8&΁khO XIt%1ļzl&| #M'/LpcqI`߾qx]f"0m`n0w@0՘}xO+`q~};ԗD-:}FI8df6$]N|/?I$cnWdn+O/̷|ŮQ izi%k2? ,_9`ҷw}}RBDFHG!& ̿13EfvIF I棝}lA!KiCQYSP{QNeAey5_L}(] 5u'/6+?,2:jbVXg`biXb 5of7jOW`Įo dz`^GG./t>7񅧠+.)5ō;<;dn=WD#jOܨbg{ (.iXLR2q7tl&"bU95jةLD&U\<{  V1)UJ-D1|(|XAT|obIfW"~zhA_mz#3j$dScjD{ Vƛ3I˥Hy{[Fq\js(a FBXI=}Q/QJj1|:靯,TY6\eyFoa6NE[]7mxzreVxe,,V䝽O,=@!GbL^Iyi>-Je콜lF9 `6z]dlyt(`߻WzhԿ/S`7%j%|#@pd6K 7By =~O}2B2s'> Vel6opSYF jȞhMW6[o8Voa6o< QuV4kC+jHٿD״B+Yg+j2ETCz:Vxq,- wj g89n8dxB{Y]1[Ivr5=ۍ~Wl e>bD5i(1 A9͎N?}AT?qǂ:ڼNs~\kɘ$daL⚒R.Ox&jsVi>cZZ,VNV'4kbcH[)W h)N}^zi^݆M} *kc[tFsR*zlyʷrqy Cδ=|oHɧyo_Ak_'ᵼ^Hs">B74y >\iy[gY<R:|P$GeZVՉYܨt$v$VGQ+WՊ$< ,t49,vԙjݰA>q!;nͦ?E7DAe~A?>,Q@<(&O,I2}ZHت"GiĒTI "6M;}j:uM TWӱRd{Lo(=րߢۯJqf*2n=B,t3 Lw#c \Uc!{m dj(S6x΅QFx4Ѷ9v_ܿx:d)th᧷-@vKX okq?qaJ+4upL2oHD:p bMR{ O{j2KIчoءVd) !b'aA -(AvP^ qTl_K.zlah#||P3pHzfx{NCTlVNa[ƩIJ# y_.ߛK<<<NeY :&f'St/7 VKMHϤL~}v:dTHk3Ay-_٥թ/˻ +=zqx quGy}TS=ҭQDG=p]8 ^@Aϕ_3pe8 M DU){޻/&8dJBOcJD{{nI>C'}\Ԫ']o[\B%qDYր{!30/+d-<2~'\tېDHoҗsu ^=F'ݚ+FP@2dى^~cQA7w<{\lQkȾmղUjؾRgNKӭ}DDwTSh# Ѡ7pQ[6hZ w o`X?_ WYzq~⌮ -{'kjUIyrqPkod%d#u 7²ghm+>Wh2vʛ}m'u};8 wL,[+ L_o]':'r`E9{+t..to{?{{/W$]ME熹+n?g 4)i&/?u(ɷOd&^҉I̴R B'w︢dMB]B^0'*2<{nm 10OݲCrmM>)2CAB+Sy(ѠD&t9lJo½K2T8Z..Kڛ.,Ev>Bt0\Βm~?lvH4d}(ݖE%\2aZkRLyؤ{]&bs}ΪL\] "+VznW ]KnܰǗM[VO05~v[:A[SH٤Hy7-ؼ/'s92alh9a;bLDüCS'RɯzH@XٻG 1ۉr[U)*AP/䢐D\7VVU a[P)WVT,wOת-#Ȥ$$BXH| LJNGvgS\OQGhɹ VjF*qٞX0G.*!@>hg(z^!7*. HY-t6Y(XU&\d'|'T䘨Wpv2 Z(oʆ6P<vTT&ACRAC `ߍ,5{{B8壇K5=K4\4LT9.J%#Lì8 k4#K`7uPh5q+C="ǡPF6 kP GOP'bP1K~/;pCs(/ (Tġ/xH̱P#sx b!I6%x!d|`|yc/'Ag4#L?d?u;V*t}J2TE9=N\m6gn1 VUg h"Z<0EKק(Jy=' Cl[(>ͱRbSIDqhW}Υ_QR'Jt}fk.&r5,hBiqOpr)8&xnHHOW閖ʨѕ*B&*ذ,6RkuJJmVt^RbR){mWt6jNg^U1)g4.FZj^ Xk7N; 36Xzηݍ.8E [`w8'. mx7,F Ы{hƓl/[KWh bXU|ʬZ 8Ӫg|o'<7 GVsBV>D(rƅ&3$3A}5~r5'ePmH7FePL_a1DCM4d'jM؁f|S!5H7/{PϾ_1XM9VE[}jA KWC^-4u2"&ݛ^"#kӭ:l 2w5y(u~ʷd-a|wYfMqu+?B,f:FN)JJ6LA8f8/VJ%yt8/ނǶ<SqB3R+Akf5Pް^Vk(JNm̵3]ߦSnqnY):BDM;qR}} %{o'Ų/\8%Xn".}1۸d}ğ/'= /IgZMdhM_\ܓ"NF2N19eߚK&g.Nϯw <GKH1C&74M+jw_(wE]o֕q\^5~! Qe2w:cޤ6H6_J0GI3%mCeފ=oe \q(S#k̑Z~{ǭa xpVn_6R~ "Bds?c!"t@18(DMc/-n؂${?44t\*B!4ǢYP(kZ[87K\lu:vV)V *L[5񼊄U0Z?&ʊyRcR'=h0Su; HHM&jd^aaacO6lij(|2>ŤT`՜?Jד~W+K( ~1,HT;$ӮWJ^II^ХSɈvR^մQKyet嬚7+䉚Y۴SY/K:)V7O(Z4諬Z\7"IUIfJYe'WYM^fMMJ*Q ryO]%XI%mt*%OT)T2\6Jjj%i#JnQUTVt gU}E;nm@I[Ic)UIeE'oVZZ)XFaY5;] bܩ𚥆Ṷ*Z8V q*^zqi5jsxZFV(4fy5F8`q q.B8s!~ҹWǰO#fiǼx66*yĪJN)HKINIJKJOd4E%$#k)ڄb1Mjt\rB"^HRMTj"TJzS놐e4>,]hZ< ~G‚E#8_K74CK>f4}9Gbrr@*EN8G775' Aų3ͦo'jVy4zʳ_s>Q*Uj٩47z7Vsinc8v,jg~գ/#F̷9NōE `BFxK^XPYZ&`Sn%_+!up[hج"`CG=fB@BpF$ T͍1xK$Y\[K4$g(Zxi2%ǃ!&a:tX0&iPAa!%@2?BAw!xP)wF,#hK -E2&<4>Xzld)CfI\Q' c,p'[lNtr Ԧ`  TD ،ح9w j_TaS_EF̍)R[Z ]ؐܒd ɍ\ ҠCC&N$-F")L &m`8@fMYlYwiIJLPɁ5A HlLh-=M z 1xb/j cCDݶƂ266yc)ɕR1CE!lV 2 p4ׅʎ%['#?fx`O@eqYeH` !QD>%A D$$n`ˏ#MdS_G(H=#+Jڤ(X'dA8!ZC_G.eaEC(P >BBTE |1% `/K&DLJ%s0~WfA!"b% {Z2F=Y_\/ixl2*G_UOky[j5Pij ރ䨤i=H: CC(" $7JR 0'h s סmUd~>RΆRfs`@W^F?^ˡ}2ͼ,{.fj]íbZFec!7&G+EiSl ZZ۬F =?f):V(&P'dyڲX+&Vt"G&ltxx6'Giw]c#<1{~N)q A~ưM4P+%{G C 41k`qO*ZJgd &B?LOTr 1\ :{<c,m <p0wtټ&\J4 R:A#G7v`WiqyCշTI(씟b-1 mlCM7v qO} ;rTPH 8:qڽ" w냷{<|ͿfRBPM |~p 2zn ^ r`R#zlﷱdyy ƾho[ښQa(9+qG@Ao`<Ia_5{G:\L:<`uuzr]bxQW|z @V8Z]VFine; yc(ˋv9@)Lu zߟW)WS/ ѓ9~n.]pkc~"xEe =7 0Zț?tt>ǭ,āq'\.eT IûevOdp4u2tN}ẉۙOSpX#fv0.Up kp1-㝦onjtP,z@P;j#lhp 5Q4`!-a"ߎ^-m8lkҳo汅ꉩ#*ٝlWkkaEA?YkhݍTU{fscYA=4/nn?.^j_ʖx5 D63o[w M>]n)86"Kʾz>-ֳ *  ߯g {3lHr]B15on:U^5?=߂`2%evBǓOvQ ޿Nr+p)"cCGC&vX:fތ6ͫ8HIDZds+;i9"p=[s κ^ӢgPGtKCljjI6FR-uL[\һpdXM\f 3nP&*;S7RM%h?" p%GD\V$n:r֬8:ɐߟyKr0B* 3:7I ɷi 8Q^q&"k1#yZ AHm<:bԀI~ TFl`%ZoaR%^QݪӦjڱ 4NeU5p0|77xx֢Z6'wax%s8dQkx\2E!NMgYK!@I"u! uEcrc"|KAɕ+Ec{nN GCdB_{l7ӯʓi5rot(aYY{҄pۥX&&$s%~=8p U3H s։-_+H7+{>=z*BCq$9 $_IBCa[@p}Rwxy|r=XS JϺ8"I"^Ǔ$4m>}(2sh>ꠋ]:ezm׆k:hRKcI{/r/2YdU:D~25 3u}VU9g^͝eS7PbXg@ ڈ~65ϞrIZ8ɭ!].j Q%F%qa+o6$nFLZ̍<)JI2l;`N-yGL Iimi!5|^aUFP]f% @Cwhph. 0/**0Kȕ R~j2aѬLW OD$_py5)9 L䬽&猪`!t7HO&kJIȌ.IV06Ej2>G.Q@~&4/fDǸRfAz`4_5QΩ`Jv4QAWM92'I > \J‘: itNNrP^v6NzLo@Jv렬JPg+WƗkb*uqu8&lQZTy j3|2 Fk!)21 < 718A L[7NdO ZRMֽh{ 𜛠GmQ`kc:bȁU(Zx+YSb'D%O¥{]:I*B,Cyj oD KPP9ѺP%[JpӤKD7P>Yp 1M3LX`<,|?Ċ p&c7"Zc-t2<+L>N{ϲ΋ΦwVpyA9Z?&?KA@F<]>!z"O}_D<2azg2lhh`e,G'Xڣih"W_Id0P,32Q` Zm0Pm xM^'ڽO_hΥI@lƾضh)6R;%6IoPZ;1VckUEcF2z7Cj'IZ`/'R_ԪP46(㚣p:д*#.RyO 1ةLcQH<J|4TǗT3ǸuDzH" K-AO sug u_#hInJb5Rrq%/d8b]Jž^L$c"a2[NJ)P굷T0Lu Jiܑ̠>`Ψ5.@E4-͂3[̈-Xd g 4bMu(셀~ !p( fyQȒ&JG} 8^C+$yTYs2čZ_7Q9-j"ROL =7&٣ "`Rt)P$$2{ Wo%X3?hR4JFY.3f" Om~Smxւ e!ҀtF8G9}Ng} )nk@T0OoSYl A|H.x:NqA?eךm*7IeNgoi@ALhl)i#Rhu}dΠQQ[ui_iͽ1P9q^)q ;jRؾYf%n<23{xC|-==yخ 2[II&}?zU{WU*zP 7R1΃ n+ty֞4 SקQtGf:"x]V5#[@ށ-;÷q$PT|u+ws Ud.hwR-rXKܢkicpAhguΣMi~/=3RAX0Ǚ/ x9f^jAg%gs,7>^~p5ŭWspXQW#[O=f@zE2%j2u" 6ryal`