#!/usr/bin/perl # based on fl2.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") }; my $i; for (1 .. $n){ isa_ok(my $frame = MPEG::Audio::Frame->read(*DATA), "MPEG::Audio::Frame", "frame $_"); ok($frame->mpeg1, "frame is MPEG1"); 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, 44100, "sample rate"); ok($frame->any_stereo, "frame is some kind of stereo"); # intensity stereo is oppertunistic $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/joint stereo"); __DATA__ tvݙwwfwUfUUDD33"4㮺 7c舆t}с H$~}{wvfUUUUDDDDDD33""0 <$L,זZk^J1RWv[ox4QI$ic!c#gyT@JQ_dnٺ42he;$o_zӹuVa  oߜ*hTؾq|֪ve4|FfQCI|I8=0+ɎG?q١;Bwc*>l]d %pJrK#>8UҒKmʐT~wWp"4h#mh_F=sMqBvFhm?vuL8N'u*O8jX[fF,?eY[޵b$ApfmdIJ>r| B`iRС uH_gϠiJ^CAUg%|=XzJhD3 ,UTq">ҶJ٢h-Bir֭ZM3xFؚ&i__cmL1͔~,KvͤdZ44Atf|p뎺Pp榡Bm,MI%)Fԝ'~"G<3@gaa`u(mEgzkKw֖.~4ӮogteHfUDUUUUUDDDD33!0oノ?`e JiuמJ{9fwLaP9A﨣MC ZҗUnF䭍[%q+y)}c9{Uɓz LE,99ь̪ٓ 8Kpc`Ί)$vm1i 0dDȍnBm4%+]*%G~˄ T7{YaiЈř-ZS+OV.> ̲2INs[9,ͩRJC!yUX cwxk X@sӒ 81[3]9TՆG8I}s[,=Vz7q5DrHBs[ 'qU̙33DUUDDDD333"QC ]QH[r,"X$81svfiXaDa i8u{җ9""@Z(} H~Hfs1fmU,zPPwZacU'|E}{'xV_}j&pswwxB&R{罚"eW]z_?71}sy!ŌwUi#X+k[m21"Uqz>ƱZykvh"nvYvss1UU*|ݭfJfIUE$R(fwv8Akc*.UDUhwfT2SM0,|>c>~|5*ِ骨\I3&jzߍˤR& 'da=dZɽ zV~DpUHCu:R j0Pܡ3P`@2E7l\(}Ǐ*Ryb!YS6qn YM 4i@" F2̉XBf͛9L^5n{q}B{* PB[͜H8E.2*HImPTT*K$CԄr#ޑhq! @r9gDUJAm~L)N[ mqs >tΨ[.4[6]`7 a?>lMtffw޻3"3DUUUT3!ᄁ 88ᆬJdYW%]v ;C I#j"=/ x\!p"!Uw:bIeJzJJ"~.hF1E]l06l G'I^ayhwJe'͡á{r0CWo{̒AFy?~ļ =b})mv[wsuUbdz\N'8̴J$ )ݬټy6, jɫ&*bu eH.1z96 '/̪)K,QO= tlLٿ?4M:A!U9Js`@pqYf`dJ=3L z29Uqێ4UMfffw̻"3DDD33"U0.`@t?Fo_UV*1metL&65 &nU[f9!hPxO٢!UUnek{Gv,W0%*TfgUUw:sR"Yrܹb nns EUV9fn1,9:%/{g{U[BřEt\L؈>hUUIV{gygϩa0w|yUU%WsْVTڤ~3WWUYBRIdɅ &k6nn0 M۟U[f{ԩ͙%nǯ`0 @I&j)ZUmݭɘD0W.{[`.nUUQRPDϰt4VwwvS!4Mミ$k` Y---,>B?V#+Juwb/Dի]mep?Ro4\tΚ }v ,&fl D( aLR+"B4DaMm~,0+b,E;Ib(-Z"z,\V(q+`JO?Xw7Dh &FDd&t{5ȏϰ+^zrFHX s,䗨hX8Dl|_MC2RJ1r#5MQV*8DY^{Y6|bρͲ>TYh725׌8HMe H@i6*TAaww"4UUT2mMAトX,O)^4 e*T?Ɩ-ykPI A}z\e[R/o5|(Pg#"H!rrjcS(sV ن[jZYdYr9 #!l(-jQa#kuff`b0!{'g]RBAlX,vGA@v[n2ool nFc8\eXRl6LZ <+qLQ1\6x\ShxFr'#a_\x$ r9,loG橷3;QtaFssV,#ח{d{wwfw"#DD2Q4 ݎȌEj\~d EeAw XT8))JR&V2jƬrNRQW.K~~Nr @gՍ%ͤDBfX@p#r+|3*No6FI4[gu< UWO;Zc>HI Ob{@@Hpꪝ.^S)6gL1w||mXllZY-1f3/ڭZmmJaaXjŎ^9}66Ec>vFc/1 =m4/m~VK&1vv@6NaxJb0jA63ϯ.!q mtwwfݻ3"3314Ԓ矾76FHqϖKh {wUVU!GGQ(c1tg~WuUn%W7:G,˪`|wU^dkkW'sk5#'ЕX7uUnۛ&'I$bVK#]`wUᡔb_YtN;AGuZmZY ij @ p=7;#ZV-mmx\ ߇dQ^euUmȘKF p6 I&1fUT^!{{_orV)H(UmںBAq8qqŠ UPV~~::b1 0ylIA%UdwwxwUUw""""I#MqϾklr8hX4ӎ{3J7"K 99fZv,CO}X:UnX]ΗMR?>㎻*Z#m23cjDI$d[mE!8}}UTm%ggDD15:{M/#m퍒t:g3ffe*4fUdm&ս ^A ͶW^GG*";11aǫɶnIW79nqJE@D$6܊[-I))$WURn&0x<κX/x r,tt\[w;n7 # =UVҒEDB4EUT!3 4ۮm-װYE*p4%+6O2kzO:'DoÂp2_ڥPfZsWvNʹU\xgekX(p5DTÌ8wG|ۉQ*-"dq0>̥ 9g,Rm]ՂOՓ͠.d6ZgdyYd܅ &ʙRݛ@5 Bwrf)dLW`!zZjYrNA#HԌ/ ;m['Y]${c}zU~g-klf1 C'[nyHO~Ѷj6g> A_ d,]:чm,mᴪT) 7ʙNݷV]ȑJdlt+TԬ,b$+%V+%S(vɨfhl[FzO;7fٴ-_ bdwfDUQ}I# oTTf! `BL3QUVZYa0A_nRU'}UY Y}_V]r$IH\UZ!p-i\Wha ?K]WU{{GN'}uIcw($h̾eUVEr9%~E]WV_/,hE:IҁUYUҍ#H.^׷s$G(yG vR$2ZZc-`@ @ZmQw;|>f&IR*1y\?Uyw b؎cA9Ia}h3U\M om4R(zLfΕUt 2wwxfDD"ホ3M4V&%"#.7tNݺք?D<ȫhZ-\.+5c P& 7dU==YY7uL1C S:L[ztW.Rkɯ1ÎYf`m&lKɓ9c9|՚J03I{4ːJQ.aeP:wwwwD3D̈0ƚwx.rg3('9{ێ_ccrrA ⚚sY]l)XhfUWkڍHHG!)Q]``eekk}>gSrr{ꔠ G)9JV憊e1{/U'bv(FfT #||Ro{ӔXv3CC?, lmE"_` #8˅E.oGl<,sCuV#a-o eL?tOnC=/9nS ˢqi-An'CVǂ4O0a.Vh^١]Fq{<vmƹ>ikE-*h5}cicv-=O|l3"4>۫uol NVq5 km[` f]XB|)b~{9ĜALQx5Rûq̷TDm I/3x]z Q0]Zֹ_aWꅡl{y͹=G^9QSv;Xqo!vq4=7({dYs~srnA;"k[m:{ ZJ'BL)V9=`v YXAp$w[F^{ܱl4.XAuE|5:GMC]sk$JY-[l[K `+:|_(X~fB_5Ƹߛ%k{;X<p6^3R\9D[/BiTlp!7-%)d {UYP_強!J#wUtWoanvݷiځgpM-v % GwǕۭמw}]XoEцCL,EFv]C"E"]vj #Gar`r\@r6Yfw/ftFjx^乜U*mHeE{~3ih#dYbS wfExЖ}Ivɲ"K u:)bKsykT*C!zJjbGfw3 PtfwwwfD""f̻0ѝ߯5̛M{Vŋ(_))HfO\_YT 4IYӥe\\ju7ՋLZVׯo^׏ࠛ ;t^:R[cFI2INp9C$sVFJW ѥe\zF{=h4"ńV߿W:H {ܜT/IzhYVVbbYl3geJsYұ+j⢞ޏIo7ӄT~Xb].^ ?sV߿Wؽ!\_ _/RsTx7wwJ՟bb;Dڵk[V߿Ul6fwwwxwfU3"UI#M}p䤦f);~mY'%QEޔvnô;_~8xxq|:ǎJYZfM;qS$fU=Dz wv푑VUj:]11062k}FlA55.Yhhz[s716kk~~zzU*v nmVn8eiI#RGuY!D(ur !" V+>|~rڄڍImUa4ы8554:Wûv*@1 Zƺϵ5'SS*YfZpwD'ڻuD~!ᆰM4ka7Gtwf{0XUs&}+%[*eKZkNL/ӳPD:K s5UZ AG a‘d5}ryPi.U*qNG|w\= GM'ꡑcY%XnQba){v `DҊN2dg[i~jIB ݄"yo`j14^̳%\#5*p5OBxvB )bׂ gfl#zt.7pĘ-*04Tռ%DT VZwN!by™EBf[St?a&d,3ųڛhٰIPT興u2; 0afbػ76(;'!Wk \VrLд=n[OzƊp4CK(:fa-K෕YV˶ob|<ʲ0 yCT)H[vt3[⁠^GocK]C$\4OT յmIRGYɥa0JRv桨Cx ?1'U"L@T)-KR4lf9m+}ޏIx"幢hmx@` nqN˒uEQA/HdwwU3!@8rrUh4"gܢmf6## ZG{eq:MFr8S"g #ggS?}c2Q()XQLyu)zPd.@ufjV'wccشXz1vp25E"{tbvOݫݬ t0=wwwU3"| 0mmaŒjuyafJQ7}LI$=srIL}_h( p8k5T&K%QRUO^/^, HY: e;:4*x;^o8((N^TW [[~~HՎILF$,+%cX,V*v)L]s2J0~j{=. w;ᅙ_*33cAuجHol3#P;yŠЇgsm~eRw13 kh\\6`Qi[1}i4LUХ1-}thN*G;ffwwwwwwffU3UI#MyP8\\eerrv4fUZbY_~ Ӣ%\`뫜Yz~ߕ**ϦL8^=X**VVrqbayW|{o}Fuuxi$DUrq_~dR'"ba榣#ѣvYYkJ}'ߗ.TPNJ'uDuv4gϮU~ݣ},bbppttSS4hfUx .jD ``##cY8A^+y1ظ ih8663F2GuW~-Zrferq neV1@DSd27Q(0Î_mehu zC$e7an%$Rg =H|HsY3:`Yq{˽wh)N:5㡣=.-#HѴgtr3*sJ'0)}f 3E|D 㓗8u #3.`E76>c?Gd!j < tL>w&ŒQ62Ls~/Ǹ_|-S>_ߛo9qc˖Xkb{Ƨ@hI<1ҴޒḀ~4MԤ:M?fb;&D9,m^ȵJ&3yPPά8޷ 5'xatnT}OwvB0U[g3"]W+$%~( bד]x<)Eo$icjiHn=u[Wa<hT$b"N(6 M[wvy}H'wZGdV5oTg]qSTՈb%IRo7gĎwwP(:7p\j6pffwwwwwwwgfU3"qM<&4i6:JHxx(':ꬊCl8n88DD@@?E330trVZPT 彽ÌXڭ \@K.[S3,PO ͭ_yjWnl\||ffffA*Tq6ӱLa"D냄CE6gb!`Έ__afjY^F4ͫs+̱=zܸ͝i$IWb^Vy쬩 n`+j1x˳35577QQḺȑbU$~^]Ã6p@"{,/^㷆}Qbn\%^Pbܷ.˲_fk+-h.e%/%|xs#SjmH"Y<@0tae@Lٶqf}NSw f~B@/6ͺ&<1Jh0##qShKTwT"+M3Mm•JwV~{4L4M\,,q,pÇ2Ȑf^ j-"/_"DhTR~6$eg|pݻO@9ڔ0f l*L7n̉ LfIN9LjUz*t[vb;"C ;%$&mѣ+ ƍ%2j.Um)jzjTn˗2FelHi6p9rōСd)eVrX[eNׯ^=1c"D :k*THZ>ǯXaݵЛ{oiarR,r3fʔٴO=1p@8p 'O2cfǯbŗ.Dm`,8'D3ÙvC"& レcMA<(8u]Y8oqaރ-+QFJfm۳9vl\:!bR|.g=^%[!52uгw Lx9$= ;k,w9qIs0&S6*of4̇oC4˂SMLNxZ45-:\{24f^2c[MR5=t#гrnV✔tr6R[C`=Ϛ\Z ֏E&*?\~mPMt*..&~ߔ[_ gfa]7Nh_IOZz Y55 2̳żG TM~pخvY]W2dX11ꪯ/2R*OڱgRRpprrT.dHu؆p20`Ņ33$$MҤ,6)kQ_WHbA:+(fB׃c%$&n;*xjz]NrsO;ң#Wk6N&bW8j$Cpj 5s9s+k0-}=~Ed'{=̳*ԵDՏ%`!+wJC >l lԁFD׆@TĚwxuC! 0]{{p862Y6K$`sӬŌƇCI\mH awB\Icyc2  d 2RО9~[-x a"IvFrWmhhxZm,C~C)$vq //B$erC!}>  ؕ[6q^]13&A 9yW+cP W n3!i' _#EwwRSD"8&z'w>cvG@k9#с@/ ]+uX%c_bx6[(T+{b ZA//{;@%RӶpٴyO