PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  lYF@sddlmZeddZdZdZdZdZdZd Zd Z d Z d Z d Z dZ dZdZdZeeeeeegZGdddeZddZddZGdddZGdddZdddZeZdS)) namedtuple _sunau_paramsz7nchannels sampwidth framerate nframes comptype compnameidns.lc@seZdZdS)ErrorN)__name__ __module__ __qualname__rr$/opt/python35/lib/python3.5/sunau.pyrs rcCsPd}xCtdD]5}|jd}|s4t|dt|}qW|S)Nrrr)rangereadEOFErrorord)filexiZbyterrr _read_u32srcCseg}xEtdD]7}t|d\}}|jdt||}qW|jt|dS)Nrrr)rdivmodinsertintwritebytes)rrdatardmrrr _write_u32s  r'c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)S)*Au_readcCs\t|tdkrBddl}|j|d}d|_n d|_|j|dS)NrrbTF)typebuiltinsopen_openedinitfp)selffr,rrr__init__s    zAu_read.__init__cCs|jr|jdS)N)_fileclose)r0rrr__del__s zAu_read.__del__cCs|S)Nr)r0rrr __enter__szAu_read.__enter__cGs|jdS)N)r4)r0argsrrr__exit__szAu_read.__exit__c Cso||_d|_tt|}|tkr<tdtt||_|jdkrltd|jdkrtdt||_|jtkrt|j|_tt||_ |j t krtd|j t t fkrd|_ d |_n|j tkr3d |_|_ nr|j tkrUd|_|_ nP|j tkrwd |_|_ n.|j tkrd |_|_ n td tt||_tt||_|j|j|_|jdkr+|j|jd|_|jjd \|_}}n d|_y|j|_Wn!ttfk rjd|_YnXdS)Nrzbad magic numberr zheader size too smalldzheader size ridiculously largezencoding not (yet) supportedrrrrzunknown encodings)r3 _soundposr!rAUDIO_FILE_MAGICrZ _hdr_size _data_sizeAUDIO_UNKNOWN_SIZE _encoding_simple_encodingsAUDIO_FILE_ENCODING_MULAW_8AUDIO_FILE_ENCODING_ALAW_8 _sampwidth _framesizeAUDIO_FILE_ENCODING_LINEAR_8AUDIO_FILE_ENCODING_LINEAR_16AUDIO_FILE_ENCODING_LINEAR_24AUDIO_FILE_ENCODING_LINEAR_32 _framerate _nchannelsr_info partitiontell _data_posAttributeErrorOSError)r0rmagic_rrrr/sP            ! zAu_read.initfpcCs|jS)N)r3)r0rrrgetfpsz Au_read.getfpcCs|jS)N)rJ)r0rrr getnchannelsszAu_read.getnchannelscCs|jS)N)rC)r0rrr getsampwidthszAu_read.getsampwidthcCs|jS)N)rI)r0rrr getframerateszAu_read.getframeratecCs4|jtkrtS|jtkr0|j|jSdS)Nr)r=r>r?r@rD)r0rrr getnframess zAu_read.getnframescCs.|jtkrdS|jtkr&dSdSdS)NULAWALAWNONE)r?rArB)r0rrr getcomptypes zAu_read.getcomptypecCs.|jtkrdS|jtkr&dSdSdS)NzCCITT G.711 u-lawzCCITT G.711 A-lawznot compressed)r?rArB)r0rrr getcompnames zAu_read.getcompnamecCs=t|j|j|j|j|j|jS)N)rrTrUrVrWr[r\)r0rrr getparamsszAu_read.getparamscCsdS)Nr)r0rrr getmarkersszAu_read.getmarkerscCstddS)Nzno marks)r)r0idrrrgetmarkszAu_read.getmarkcCs|jtkr|tkr-|jj}n|jj||j}|jt||j7_|jtkrddl }|j ||j }|SdS)Nr) r?r@r>r3rrDr;lenrAaudioopZulaw2linrC)r0nframesr$rbrrr readframes s  zAu_read.readframescCs;|jdkrtd|jj|jd|_dS)Nz cannot seekr)rNrPr3seekr;)r0rrrrewinds zAu_read.rewindcCs|jS)N)r;)r0rrrrMsz Au_read.tellcCsp|dks||jkr*td|jdkrEtd|jj|j||j||_dS)Nrzposition not in rangez cannot seek)rWrrNrPr3rerDr;)r0posrrrsetpos!s   zAu_read.setposcCs/|j}|r+d|_|jr+|jdS)N)r3r.r4)r0rrrrr4)s    z Au_read.closeN)rrrr2r5r6r8r/rSrTrUrVrWr[r\r]r^r`rdrfrMrhr4rrrrr(s(     ,             r(c@s<eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3S)4Au_writecCs\t|tdkrBddl}|j|d}d|_n d|_|j|dS)Nr)rwbTF)r+r,r-r.r/)r0r1r,rrrr22s    zAu_write.__init__cCs |jr|jd|_dS)N)r3r4)r0rrrr5;s  zAu_write.__del__cCs|S)Nr)r0rrrr6@szAu_write.__enter__cGs|jdS)N)r4)r0r7rrrr8CszAu_write.__exit__cCsg||_d|_d|_d|_d|_t|_d|_d|_d|_ d|_ d|_ dS)Nrr:rX) r3rIrJrCrDr>_nframes_nframeswritten _datawritten _datalengthrK _comptype)r0rrrrr/Fs          zAu_write.initfpcCs:|jrtd|dkr-td||_dS)Nz0cannot change parameters after starting to writerrrz"only 1, 2, or 4 channels supported)rrr)rlrrJ)r0 nchannelsrrr setnchannelsSs     zAu_write.setnchannelscCs|jstd|jS)Nznumber of channels not set)rJr)r0rrrrTZs  zAu_write.getnchannelscCs:|jrtd|dkr-td||_dS)Nz0cannot change parameters after starting to writerrrrzbad sample width)rrrr)rlrrC)r0 sampwidthrrr setsampwidth_s     zAu_write.setsampwidthcCs|jstd|jS)Nzsample width not specified)rIrrC)r0rrrrUfs  zAu_write.getsampwidthcCs"|jrtd||_dS)Nz0cannot change parameters after starting to write)rlrrI)r0 frameraterrr setframerateks  zAu_write.setframeratecCs|jstd|jS)Nzframe rate not set)rIr)r0rrrrVps  zAu_write.getframeratecCs:|jrtd|dkr-td||_dS)Nz0cannot change parameters after starting to writerz# of frames cannot be negative)rlrrk)r0rcrrr setnframesus     zAu_write.setnframescCs|jS)N)rl)r0rrrrW|szAu_write.getnframescCs(|dkr||_n tddS)NrZrXzunknown compression type)rZrX)ror)r0r+namerrr setcomptypes  zAu_write.setcomptypecCs|jS)N)ro)r0rrrr[szAu_write.getcomptypecCs.|jdkrdS|jdkr&dSdSdS)NrXzCCITT G.711 u-lawrYzCCITT G.711 A-lawznot compressed)ro)r0rrrr\s zAu_write.getcompnamecCs`|\}}}}}}|j||j||j||j||j||dS)N)rqrsrurvrx)r0paramsrprrrtrcZcomptypeZcompnamerrr setparamss     zAu_write.setparamscCs=t|j|j|j|j|j|jS)N)rrTrUrVrWr[r\)r0rrrr]szAu_write.getparamscCs|jS)N)rl)r0rrrrMsz Au_write.tellcCst|ttfs*t|jd}|j|jdkrdddl}|j||j }t ||j }|j j ||j||_|jt ||_dS)NBrXr) isinstancer# bytearray memoryviewcast_ensure_header_writtenrorbZlin2ulawrCrarDr3r"rlrm)r0r$rbrcrrrwriteframesraws  zAu_write.writeframesrawcCs?|j||j|jks1|j|jkr;|jdS)N)rrlrkrnrm _patchheader)r0r$rrr writeframess zAu_write.writeframesc Cs|jr{zI|j|j|jks:|j|jkrD|j|jjWd|j}d|_|jrz|j XdS)N) r3rrlrkrnrmrflushr.r4)r0rrrrr4s      zAu_write.closecCsV|jsR|jstd|js3td|jsHtd|jdS)Nz# of channels not specifiedzsample width not specifiedzframe rate not specified)rlrJrrCrI _write_header)r0rrrrs       zAu_write._ensure_header_writtenc Cs|jdkr|jdkr0t}d|_q|jdkrQt}d|_q|jdkrrt}d|_q|jdkrt}d|_qtdn-|jdkrt}d|_n td|j|j |_t |j t dt |j}|d d @}t |j ||jtkr;t}n|j|j}y|j j|_Wn!ttfk rd|_YnXt |j |||_t |j |t |j |jt |j |j |j j|j|j jd |t |jd dS) NrZrrrrzinternal errorrXr r sr i)rorCrErDrFrGrHrrArJr'r3r<rarKrkr>rM_form_length_posrOrPrnrIr")r0encodingZ header_sizelengthrrrrsJ        zAu_write._write_headercCsd|jdkrtd|jj|jt|j|j|j|_|jjdddS)Nz cannot seekrr)rrPr3rer'rmrn)r0rrrrs   zAu_write._patchheaderN)rrrr2r5r6r8r/rqrTrsrUrurVrvrWrxr[r\rzr]rMrrr4rrrrrrrri0s2                     *riNcCsi|dkr-t|dr'|j}nd}|dkrCt|S|dkrYt|StddS) Nmoder*rwrjz$mode must be 'r', 'rb', 'w', or 'wb')rr*)rrj)hasattrrr(rir)r1rrrrr-s      r-) collectionsrrr<rArErFrGrHZAUDIO_FILE_ENCODING_FLOATZAUDIO_FILE_ENCODING_DOUBLEZAUDIO_FILE_ENCODING_ADPCM_G721ZAUDIO_FILE_ENCODING_ADPCM_G722Z AUDIO_FILE_ENCODING_ADPCM_G723_3Z AUDIO_FILE_ENCODING_ADPCM_G723_5rBr>r@ Exceptionrrr'r(rir-Zopenfprrrrjs: