f ddlZejedddgZddlmZeddZd ej_d ej _d ej _d ej _d ej _dZ dZgZdZeedZeedZeedZeedZeedZeedZeedZeedZdZdZdZdZdZedkr edSdS)N) )removewhatwhathdr) namedtuple SndHeadersz.filetype framerate nchannels nframes sampwidthzThe value for type indicates the data type and will be one of the strings 'aifc', 'aiff', 'au','hcom', 'sndr', 'sndt', 'voc', 'wav', '8svx', 'sb', 'ub', or 'ul'.zYThe sampling_rate will be either the actual value or 0 if unknown or difficult to decode.z^The number of channels or 0 if it cannot be determined or if the value is difficult to decode.z?The value for frames will be either the number of frames or -1.zAEither the sample size in bits or 'A' for A-LAW or 'U' for u-LAW.c& t|}|S)N)r)filenameress -/opt/alt/python311/lib64/python3.11/sndhdr.pyrr8s) (  C Jc t|d5}|d}tD]'}|||}|rt|ccdddS( ddddS#1swxYwYdS)Nrbi)openreadtestsr )r fhtfr s r rr>s" h   FF3KK ( (B"Q((C (!3'''  ( s7A%A%%A),A)c< tj5tjdtddl}dddn #1swxYwY|dsdS|dddkrd}n|ddd krd }ndS|d ||d }n#t|j f$rYdSwxYw|| | | d| zfS) Nignore)categoryrFORM sAIFCaifcsAIFFaiffr)warningscatch_warnings simplefilterDeprecationWarningr startswithseekrEOFErrorError getframerate getnchannels getnframes getsampwidth)rrrfmtas r test_aifcr.Osp  " "h1CDDDD  << t2w' 1R4G  tFF1III IIa   dj !tt !!1>>#3#3 LLNNA 0 00 22s# AAAB44C C c |drt}n|dddvrt}ndSd}||dd}||dd}||dd}||dd}||dd }d } |d krd } n|d krd} n |d krd} d } nd} | |z} | r|| z } nd} |||| | fS)Ns.snd)sds.sdns.aurrUr?)r$ get_long_be get_long_le) rrfuncfiletypehdr_size data_sizeencodingrate nchannels sample_size sample_bits frame_sizenframes r test_aurGgs!||G 2A2% % %tHtAacF||HQqtW ItAbeH~~H 4"R%>>DQr"uXIK1}} Q Q   y(JZ' T9fk 99rc |dddks|dddkrdSt|dd}|rd |z }nd }d |d d dfS)NAEsFSSDsHCOMi"Vrhcomr5r9r)r:)rrdivisorrAs r test_hcomrQsmBx7aCjG33t!CG*%%Gw 4B !!rc |dsdSt|dd}d}d|cxkrdkr1nn.||dkr"d||dzz }|rtd |z }d |dd d fS) NsCreative Voice Filer3rir5r0g.Avocr9r)r$ get_short_leint)rrsbseekrAratecodes r test_vocrZs <<2 3 3t !BrE( # #F DFSQvY!^^6!8$  -y8+,,D $2q  rc ddl}|dr|dddks|dddkrdS|d ||d}n#t|jf$rYdSwxYwd |||d| zfS) NrsRIFFrrsWAVEr2sfmt rwav) waver$r%rr&r'r(r)r*r+)rrr]ws r test_wavr_sKKK << AadGw$6$6!BrE(g:M:MtFF1III IIa   dj !tt 1>>##Q^^%5%5<<>>1Q^^%5%5#5 77sA&&A;:A;cR |dr|dddkrdSdS)Nrrrs8SVX)8svxrr5rr)r$)rrs r test_8svxrbs6 << AadGw$6$6t  rc |dr5t|dd}t|dd}d|d|dfSdS)NsSOUNDrrr3rSsndtr5)r$r;rV)rrnsamplesrAs r test_sndtrfs^||H,q2w''AbeH%%tQ!++,,rc |dr/t|dd}d|cxkrdkr ndSd|ddd fSdSdS) Nsr7r0iiasndrr5r9r)r$rV)rrrAs r test_sndrrist||G*AacF## 4 5 4B) )** rcZ|ddz|ddzz|ddzz|dzS)Nrr4r5r2r7rrbs r r:r:3 aDBJ1Q42: &!A$!) 4qt ;;rcZ|ddz|ddzz|ddzz|dzS)Nrr4r7r2r5rrrkrls r r;r;rnrc*|ddz|dzS)Nrrr5rkrls r get_short_berq aDAI1 rc*|ddz|dzS)Nr5rrrkrls r rVrVrrrcnddl}d}|jddr|jddkr |jdd=d} |jddr t|jdd|ddStdg|ddS#t$r3|jd|dYdSwxYw)Nrr5z-rr7.z [Interrupted] )sysargvtestallKeyboardInterruptstderrwriteexit)rv recursives r testr~sJJJI x| t++ HQqSM  8ABB< ) CHQRRL)Q / / / / / SE9a ( ( ( ( (  ,---  s-A7#A779B43B4cFddl}ddl}|D]}|j|rt |dzd|s|rft dddl}||j||d}t||dt dt |dzd|j  t t|#t$rt d YwxYwdS) Nrz/: )endzrecursing down:*z*** directory (use -r) ***:z*** not found ***) rvospathisdirprintglobjoinescaperxstdoutflushrOSError)listr}toplevelrvrr rnamess r rxrxsLJJJ III++ 7== " " + (T/s + + + + 4H 4'(((  "',,t{{8/D/Dc"J"JKKy!,,,,23333 (S.c * * * * J      +d8nn%%%% + + +)***** +++s$DDD__main__)r _deprecated__name____all__ collectionsrr r=__doc__ frameraterBnframes sampwidthrrrr.appendrGrQrZr_rbrfrir:r;rqrVr~rxrkrr rs_:Xg.... 9 """""" Z HJJ  > !1 !6  !#   222* Y:::> W " " " Y ! ! ! X 7 7 7 X Y,,, Y*** Y<<<<<<   +++* zDFFFFFr