#!/usr/bin/perl # based on fl1.mpg # http://bmrc.berkeley.edu/ftp/pub/multimedia/mpeg/mpeg2/conformance-bitstreams/audio/mpeg1/compliance/ use strict; use integer; my $n; use Test::More tests => ($n = 49) * 8 + 3; BEGIN { use_ok("MPEG::Audio::Frame") }; $MPEG::Audio::Frame::lax = 1; my $i; for (1 .. $n){ isa_ok(my $frame = MPEG::Audio::Frame->read(*DATA), "MPEG::Audio::Frame", "frame $_"); ok($frame->mpeg1, "frame is MPEG1") or diag unpack("B*", scalar $frame->header); ok($frame->layer1, "frame is layer I"); ok($frame->has_crc, "frame has CRC"); ok(!$frame->broken, "frame isn't broken"); is($frame->bitrate, 384, "bitrate"); is($frame->sample, 32000, "sample rate"); ok($frame->any_stereo, "frame is some kind of stereo"); $i++ if $frame->joint_stereo; } is(MPEG::Audio::Frame->read(*DATA), undef, "nothing else in the file"); ok($i, "at least some frames were intensity mode joint stereo"); __DATA__ 홈wwfwUfUUUUDDD3D"3""0am,0Lm4u}~y~~㎺߿{@~߿}}{mݶ0?o@ >{n  G_߿}Ϡyw{wmΣvqX4mp@뮻B{ۺM %bW78PqӨqsmhRTVRnCv M}riָ#Ksͧy~_7io6VT46T AF1r@_>$5]0@ pBuI 9;&MDJNC!uu|&%ݻ(au!:"mݶw4Ao/I mqֽ{n* W`}Ϡyaw{wmD+ݪveT20ĒϾj Y#TqT@R%00ʘ!31hE|tO?M3J0KuE*.vxN<?3{rcHq(пЌ+l6"҉]5t؏ ӆ?20cqAj\_-;;&Fv1Z*hz@kUU޻UjLԼ76wF'tzqm)F Ѐr<\|B sPM'_P՘K0:uzg WFPoT;. vsd\Ș1qfۃl/-̡G&fa /6^lnC:i^:Lnיȗ+֐م *+\#ȭ&׻y3iX zᚎٚ5zxG xPÒMVwi%WalTawwwvfUD3!< ?-[/^n^\z}vy\v/-"/EY,[M[ӊuj^T_mM*D&U(fBV<F:s2[m>˫Y ZWLo{zyjMNF@yRt^eK:YZ[2[-9G~7:\k[>EvvνJzd:pt]5نbA ]=v{fY9j-vڷoXGnj:iN(VFjoz~DNoGU'Xn)tit{6z|iy2 0udh'X)6;v;$WM%lqaXlgl_e!i5N#ZHW$wnu|k&S HntcN3avu*dr4wwwwwffwfffUTC"3MM?<,0@`t.~ba"!Æͤ۷tHv 40$"J4$i / NMҚ ,caC\n?ŗ~f>>nYL}1K誕Έ[ń !YFR""*)˕˟gZ@`؁I‘*)1&""!˗ϗ~gjX% Ǻd6JIڲXd]Tf-bvٟf>N|ف㛦vuDFX4$uϘ_7 fVV65ūV\ńՌqu '~.w&baaMMvu۷Nb#I<Qt !CQsUxvu]]rc\0ETvP0aq_啕mmӟe=>LzȢ0B0lcMʰ*PzaJ=)Rl٣J+u4v#;5Pv0@e@: eez͖ݻ $H&Y[-Ԣs!)?~#,D>vJpmwkfV-[I^{~hfٳxTl֭pÇmraqB -k±y Zix T7ʵaCN6>a^^|YrH|4e]uaaEl( %HZכIIgnÕ)˖ܹT(zSn e#D7ܟ$#ʺ6hѣHbŇ geZmXgw-ܵk\bW~w9Lr%ɾMqq$Gϙ2|ÉagrNI$1`{!nnT $z$G._i%fr2P{ffUUffUUUUUUUEDDDD33"""4M߾WJM~^zDI!YfZj1F0;#j#1f)SLRjߪmÆl0ŠAEg؅Ymba !sp.ߎ48qȢi a"Veji+pݻwO*y?,tP뮻)#kfbm%6ÓaF• gn*V硅V%$b9ӜDBRHbWˍ7ml첺28䲾:ZsֶRfwQ<߿y]V&Yi7m]ldc9 `mCZsۜ8sM4ԩBI4/zkg7UXpiӠ)H|4r {$ !T-2WQ:AilW46'Er*\Iٟ[Q!%2*V?SPNwM-)1dc B+m~++Tw݈DDhwveD20燈'#vdy Vpٛa2Ў)jjF/|CAsieyLi:>nMtYѕ+Knigd FП3  a8<<КH byd0ՇJjkkLA)'sflٳ|>#&+ygy@'pIfzU8+w7އC cU̒̉nmBaa[3fNGӯYf3Z闈^Il ͒<^`4y82AVO:G&L:PZT~+xE§-dkwU33DfwwveTC"4奩QJ/Sǁ3b<;G4Cj\YI6i)!P#Eb*.Q8;wCrm&6rw̙EW^.^r03=CC>y3^%35Z`֛ZtŊ,N8)E%$9g &fvRuy(&vBK]8 ꢤ_]'^ġEeef3y#COx ӝ0/8pWxjާm\%k9ˮ5EŹjͦ)l]郰xY󁘜fJA fGZtFԤw ;<+/+FWx3˞WM%`jVaa\G"P@A](QBcJ*4^?zpk|Υmvg@k%;0229`'.nta]O' TO|H;'JHט,qvtfw̪3""3UfwwwwvfUD2!M3 U_bŵpkA u_U%Xzɱ QB(KCQ[)qJ_m K3006Δ*[Z4^W^u#jF0ْm\__||GyoJK ,,}8F3|h s0 l2TnXZP/X2@VwmW[ۛa߶~48w o#%J## B薌Q79jZdFD= yӎx*99Qe?\P@v.3EhͿ5 gGz zH_?r&Umh ^^&%&)Jm../^86HQ7]:ZZgcf80G8sYn!@qqll\vjͭv5ts?Ы5YQ $$44,,|C.q*iUfw3"3UUffVUUUDDD33"SM4,ifUUw['N%PTx ƭceq1 ڬqj [ͪ3 c-Q 61bcYek{ІeVW^D:wUVitꪯ<0ֵ{t Ti$f;EǏeZ9eXavBA`/:uUUwߪ&LqªB d 3"A/h^ʪۻm 9~i J1fU_>a+Zb.Um'nOiK6NTT<<yFaHQ4μ}u׽kkYUDdEgweT20OSפ4tKRdPΦ'jWgg@PL+tP-]E9|A޾f@Ic#jMIHR|]NW-cIn׸26ԭZfGڼ>Xǿ2"/4C'V2D#%=ϣtnPnLג;(}l+NXïR办fA[պZ˿t*?UOl>/3il"Y8\q} 6<ŲU񬌌v4?~_]n[} 8s_ PɣgtqPd ;tٳl.QD2;'G%H__h%"! dzX36-; !8L_pDI[4vg aiyaT*`=PIBv[{T_MV7LTs+`p6x* Qʄ }>co/7˂-1E+JH7z; <(ߪK Y7FnZW^l:. bظq` eY7/w ՜zE~ w:z-^"Ɵq79_ɲ#HQ`e@ʕVX 읺d͖B)u۶XzYnD]v@v[CFcd *(Q1m݌e$qG raa0yqUuHKZY_BtLXFBakF4h`}nUn!n6u4@ՉV*iӓIŁØ1!ae 4BGFc1È 4UwUm1haGmuK Oܹ>puT\Fojdz=KFk5r0a3UmUq>>"Mqmm^O$NsH=2zCVZ_ՁPxPwwwwwwUfD"3DUUUUUDD33"u< bammevyͽUV!]$Y$kXɗyllyyxxqqa,9{U2Y[m}cQ!*`㣞y/Ŀn"8ayekwmWGDWVFGe <`U[Uk^ybz1s"VVV!BweZPVV׊'mc%'yzzff\\wwttmC8ӆsUJYXb^yXǾUb&##m'UIUΖZێ8AwmW(*(WG?U[YfyuYU"!ѝ^%ILsx)>s:p@: ?o [ d17M2Vkӆ(,[xأb(ԠBfg/k;G"CBK.OPT{ )#Ḣ(u]U3fzp1buy C꺯3rд1"A.]T㖮4G ㋻gS{%GIg,:FtgD[aGwB\0ÚbQCal.6MP /!Cu?Rܽ0`MpFfƺ,ƴk#LBt+⪫C6i(-6"PT' D !#DV0IZ6XG\)9g,(z'}S1#&V\zd섉wUD~!"#4DDC!ᄒM4,RR+J AG(z8n lFKmKol7Fo 5rRחem \n|!8cԴ~Wk !cqlꪲ9xOwV{ڣTt.º3Fcpuw{ݻR4$AR_ aQ̉' 8Ab˹2em>O !glC(uXgn^57>PS:ni;w~3b.OR)@ctz.:w/r\_((BiA XMM> }>#@fLșPj 0Ir\pNDibK$jMI߻UJ]v|&f\q)~k1\Be2H,i@H cYk/+CC,sKlv[Zu`*grY9ge`㔠ߑ<9twwD3D1"#320ヌ/~ x{h#NBxi UBheHqdX$s&%fkGX4oTVCfFrd) ED3{3Tg)K"33dBa2KW5nqgppcZy`rYV$V_/t:)n#KL!UkEػ_"Ř>Db2["Hk_gaWCAc_V:3%߁m7嵩j&S;a.\&E^0hwc软k~/pDՕKnрB cYz*SDD9o{d XC*RudM}{kDy@湮۷DϷUvUXNk- BLc\UwwU33Df""EM?vv]*jڷ{ʲ8Yww,qcUUmX-eYXq\YRTmFppvg{9+QZUUVU^^z]=KR°aUfsnUmXju:eu"Ibr\6``x)H2񗟿UUVUiiiuuDdfYwp,eUEWSg3c1h0jǦuvhd8>UUTUb1!jZv]NvjHH ffsT%UUXL%vgWyt)zƱqȈBDR"cUPVU[yVUcYix6uZַ7:D{ߒjUUUnEWT)UUUmg9ΆuWw9Oj@B UUVUxxDRoYփuejZVw{ l` EUUWdzm#oazf^W]]mII/yaBUUY$UD<ܗgC34DEUCᄁ <マlg+9V(1Ak!ŒӘ}q,:?Ԉdbj,('@rp)78upa*1Q+ 719!{Sژv÷rHx_ؾBc /#"{[M+8l̖dOjƠ[кARX`C~[3pxiy35)1*V.oGyg:rX" 0=Obzg[Ys60Ο279z],t"9ã_nk{z{gNCmy;J͘m^ tEtWJ~SeXɵ ia?43L· w缽彻" t (=5/wVާo;T?YwsS7/{EF2^h?@) ֜T[+)QJhEv|ec)^FEs,af<6ml8.VJqWq+?3.`T?̙UnB"#320U}h/ܓk8yGKT(R8q=n$>efVi`nښb?F+I92L}_ p*`YHp qmYRg]V+.mx/ 7Y+^1(j$-'Z5r3·m( r.viYXJ}Go^s侯A `_{q/)]lV3]쩉xNb?p֪j}Ϻ AIG~ w^=t\ 2z/ENB$:C:SჟŊ#|ChܻyujRq_a,EБ*}|gq!%{XK9*i8v|ػO%U_'{ŚcVc?rKڲF2ٖeZa=Ň)j7OJ"3dsifTFb""!8 ヘu1V*TI,5ӊq(? ,Q#agU4 9 By=6FhPxx?Oڬ6C n1VDzSxCp_izmߵTj^5z>SyC(Z]4&w{\5?j9Uu#H6F~o& {ɏBB[qӖ@T [+h,oh& 2_ai\ʨ` 9t] #y 0߻xo3Y?D6Um)!hrVa "\K4%]KuiR}HWmr\ICpo9L DN?i9sP-U'0VUhZ+%a !fL<ǖJ`vnn7|ҭ ASKRU]Z1f,~l8pPގ5H⋛s_xdLmm¸ZeL㜣Ti7fm&H˂jtfD333q M?゙O$9hY>]+wW5Fpַwu^ӕmDuHș:GDX;"dK%dӧNl%UUF=OX. n(~Cw.\PY@KJ3 `+qH qB(E6@)3;Hd eTh4{VV]a"JID^UjjEe\!eGQzVv͡dwu ]TTlV+U=OL<.5 okUװD-Yji4㷡l[c5ͥhT*4g:!)|̍UF!+q'2 +$ВKAC!\.}fVն8#Xַ=dRfnEXfD:!QUmY9S-[W2?sLۻ> zeBjɲ""_桨t:#kb$mwDEDx˘eis"#3430M?フy zKlrw}TўTcڭ߂ykgt!ٜ0sM,b8|u9Aw&3y 8`4M7i4]xOچUxxEnYr̝!% 2wV{oC;\ʍح{N  +N`<gqh1c&aH?oU[MgYi> AFir&`S&ʌU ]QJ)j-HM؝ܝacs!]UUmmϹ cqxggy]h_u yllifns~T%AYyמ]YJA=8VUZMdf؈S"^ ノ4eᄂRoF˹y1&!3|/m͹r\v,~ZgTUInZLi"'cu@N<E+U]1̆DŽ0#w[kj3Vw&\ry*$3LL#.nS*X |ޗzdq0F #]zUU*ȳ]gm~J<(0CXj|ΓEK6"۔/?V*BKI[#dQ>0&ti#)`gN5@<ܛPg- qwBu;Fy?/UgrcxZKF$į5f@(RgȖ%K#~S*8t94;-%@xOChlp[7D̔U[ozQ*(ۛj]n$**x߂J.^*58. .<7T<rABp?  Pt숙wUD3!(00Î;l[]w^fLHCDw䖖y!>m6x^>^TJDș4H!-oo7ak]Ϡ1hnzHsSJhewwe1U ~]vxZiZZk¸2Wmx-""iTi\G"_K/*~VUmm}Ze vUn TUu\mͺ@OMgJbycd*dYnmת`7RT׵__u)U2BYu:Zsmx`uѺ7M] {SUBg)qӺvWp~_vjjX!jt:#t]#t/E&2kY򤋾z:6-X[ _pص~~W!dCw]hZ#Ե l v?7N מsڟ 6wwwU3""̈0Ymmyys9oC`0$WǶWȤR~}mUm4&.u߯ڝNQ(CxfUS( BByU'N-mjjQQn7.o7֡q+Ub Jc1#`S$x2 hY\.iUopG^^S<U*Nmu:S)eUl½eGt:YfRU< mppN`t:a0qys84jidUJC%ࡡ֋F eo7w[JJU[mbbkkbdWs9QQ'T ,~~imx3‹EwwaalbGҩqM&-ey$Un@aD]ӻ̹TD~2""ᄒM40ネr'"qzSҟMm腙~ܽ.s =}vo!g*̇@Z7a9L[A_!P-pKYr5Ұ Z%[꾬죮Nגbd]Dl!kilER6iz%_]&N4T=eij:1A˻[Ljq 7mލ}kak.,.$6u˕Յ8؍ _  f%(~s ޙm3K2K$]Šꫛ)C mhũpW-Wg6szwZ0VietkaꎜlՇt-4M{n=v@[mZM$[OJmdGW .LN arkMr7"@>poC'FKo*tm!TvC#K10Qᄂ) z]cr.FavA!7-XZ uc8d9Ck|vk9c>.+xCHX* tMw.WWp!*k*Eӥ$$nѦ;eW%Z+FSJe_q^B(kco8ClS )"e]3#2`E).9]9rp\Z͠@u%iYɹ8=TdI_֟yz.S("ymiT6jY׆ٵ[)NQS~SdW!5,vUw\3SIfi!_xzŌG| kur:lTj&be}32;1]gAK. X(EfٶBX!<1 q'״pg:V!ivzjVBab!ywfFeZZbfU5Mi7qѺ7z~i6fmoaJϨrȌ)~UdCeB!$a98|Q.Oi2Ll}_W& 6'IҴmڥ2XK W*W+J҄NeI~jE'd\k&$)Z$:Y]%?pC{"gLCvà]KTu#[-RSXCJ1WH|=y^Wum_ulp=jU'ŏcB@,l͂Q}_O/iP{F<y4#sRNIk]HReFEym@"OIhVKIedQECDz9F|czвF!I1Eػ A ȾBgƷ6)zmv%fY|o>&(H꺱yG֖)CmQ>.%+:Ίۘ-kt wUD2}ハ# 4޺^EZez&(J;X s}ki6n `2̳N3T-k[d6M mED=f[-WuݵmWyiZT iGbXd2?Z剃& &I$>3ض1n7P xM[0y z=+g^|z9NgobNME}k1η\;<;*|JҴ% <#bm\8^VN^lnejb%-j`JzvY)6J$s9TXV y$I4 IRQdYŮ\]㐄UgN(L%p$5{d%d' v6a,&hO`mF 6L$IGQ/ Wq[7G$44Q9 i-~?&s7wad(9 %~_ɘ̂}I֫Q8AΫ5JE34Lc쌏<?"\wwwwwfU3"4סUW؍ff!U|ooV5Fy<_O[엗hh(P<-pp{{yyߏ#I$Hj}>m6rr&(RUr'!iidhQMRHyyrU8G|%mmS)vf+__nnrIUn}>vaAMK%}}wwpbUp``Y,UD!Pv+OOzYUx vvJJK,YiiccdbUyO)]-__ww~~p9SG$?rU}-bbGL*U*}>BHl5{{dd(U䂂rrFF\Z}=vaá^i$U~}vvss`p9cm鏏]]fuRU D6˻vT26s04MϾ[yC$1ymtcd-e۲W31=eK6PeM9- CCU2l\Zc.AQ z}Hxةq^Or)ʉ=@B@hnG~Tv`A_> [%,B*~tZRcV5` %_(~ 4iV3,By3wqqT B=TIKzv\{!&Q\oIY,]%n gR1s7</_1PJ (| [b͛V"G&Id27Q d èu#҄qn裑Qc6DO8DPƊ2{=Ea+EludYvVհtI9Z5@YeYTuxFW&-+Li70 vM!=x/d0~BP|Om EFQx<6sayuj p* +J&'Fl/QY$Gefjovtt- <s̰5 E j Z&XgE\WĘ.*C %v^tp(wwwUC! ゙sMI-rr^gSenhZkxeI `cqټ<&S2~OSѤh84 2Lx:M';J&3l$HZw"H{s9[q㋵\$qQM Md#l$R(PI#{{1ڱꪶ su yDZՊE%Xd\43ye~. +Ou_ tm;`0YF82 WCDDjj7CUl_{f1 B~9d=^wo5VW[eCss1}b6w{/B#ᡘa~F}R6Q#F-7R)<^0po/0@j;V]o:o7 _oNK56^g#x3J$^似qU@ր\}fwwwwwwwwfD3"0Ŗmnff)JZ5qqnn}}uu1J|qpnmrr_/XZU*+ll[[l٭wmQTTeFV!RR^^ZGs=xxqq__hΈmc=3z65|S<~~smbH8#rRQeeJJffTw\Wr)pmmG"Yii[[dswmb8,1Z9Q#q⼼MMvvAI_wWz]^*)l`wllpfm_@ I$*)II~^\N'C!yyuu Έm`Hp{==EF66W+c;3rrvvxx1wI_Y,lٕt:#$WWTTuuww&1wI_0 ω65ij `O'vvppnnA_y>D㞪̻T3"#^!c4ii !_nh5xӟ% u{;C]o׻69<,R/qW k3SB<&;&5_ƥT*$@9 16+0u}iK^+ fM{LƘFO>{繮i=Q)S:W ^i~c`,lVp `sV9!va&ZiѮMY1N(3zEh-C93$Z-1o}H3zL4 \+l60qc~x/auk֠q!cu^D3W_ ;C<>1n +tD=v%(q2>~ǤzE čenA׆3Ҏb#htlp>]0n}-alJ:M^;9J6 !YW58Iԩ?F0,"?)^N.jv;џ>ClxA\5#I?bf51lr5[q.{^= >7] 45o(rB0 dweC!́EMqϾnnd_#űWrl[x7]r5b,AOmC{LM3LM442!@rsI(TL5ku^,K [+ B9K*d.'I}yu,V9 eax=bغ6$D"]^/'3W/d#DDF#ɲjm>:.K-FQdYcZΐ6  OFya}vixivu`p9mɔRzpJ# v]r8Q{*ʫA*oXݷ%jMqqA!A(. UՇ!gH}aU%p=A,[ZBp&&/:TJҗڸ&W,|~m[v<'9qZ% [5U˲\WlNS! C [a4lvc\y