�&ǐk�@'bJ�h�ۊL'}T� :��'2�Z#$��n�a��� �>a��`��_3d�Qpt�/�P -��#5�,�M��� �pA:©�q�����NW��ډ�A���� �9nʺج���� �TSM��{J6?7��r�@�\����D��� �׶���s�f�TJj?"��D��`?��̒� b�#�%�C*v�$�{�$����5Ծ�F�s��y�e/8��h-�f�̰&(����Gj�L:U� 2�� ����v�_k����Y��gp,�k�WF�R������_C�R��N@���R�@�ߔ?A�w9���F("iNa-S���Q�o�3tDMLh*�#4k�T/iQ��Y*�G��m����)��8�hBm/�I�,g�ﯖ���Z��}�Cz�q@´��d.����L�ŕ�,��1�Z�܌�: ̪���F+J-'��c�tvJ8��]Q-��b��y �6;*J`r_�d ��'�G ~p��)'�C,�%F��E(��2�k�����lР�z�!�=t ��_�0��f7��� ;�p�|�U �%r?r@rArE)r0rrr getnframess    zAu_read.getnframescCs$|jtkrdS|jtkrdSdSdS)NULAWALAWNONE)r@rBrC)r0rrr getcomptypes   zAu_read.getcomptypecCs$|jtkrdS|jtkrdSdSdS)NzCCITT G.711 u-lawzCCITT G.711 A-lawznot compressed)r@rBrC)r0rrr getcompnames   zAu_read.getcompnamecCs*t|j|j|j|j|j|jS)N)rrUrVrWrXr\r])r0rrr getparamss zAu_read.getparamscCsdS)Nr)r0rrr getmarkersszAu_read.getmarkerscCs tddS)Nzno marks)r)r0idrrrgetmarkszAu_read.getmarkcCsp|jtkrl|tkr|jj}n|jj||j}|jt||j7_|jtkrhddl }|j ||j }|SdS)Nr) r@rAr?r3rrEr<lenrBaudioopZulaw2linrD)r0nframesr$rcrrr readframes s   zAu_read.readframescCs*|jdkrtd|jj|jd|_dS)Nz cannot seekr)rOrQr3seekr<)r0rrrrewinds zAu_read.rewindcCs|jS)N)r<)r0rrrrNsz Au_read.tellcCsP|dks||jkrtd|jdkr.td|jj|j||j||_dS)Nrzposition not in rangez cannot seek)rXrrOrQr3rfrEr<)r0posrrrsetpos!s  zAu_read.setposcCs"|j}|rd|_|jr|jdS)N)r3r.r4)r0rrrrr4)s z Au_read.closeN)rrrr2r5r6r8r/rTrUrVrWrXr\r]r^r_rarergrNrir4rrrrr(s( , r(c@seZdZddZddZddZddZd 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|tdkr,ddl}|j|d}d|_nd|_|j|dS)Nr)rwbTF)r+r,r-r.r/)r0r1r,rrrr22s  zAu_write.__init__cCs|jr|jd|_dS)N)r3r4)r0rrrr5;szAu_write.__del__cCs|S)Nr)r0rrrr6@szAu_write.__enter__cGs |jdS)N)r4)r0r7rrrr8CszAu_write.__exit__cCsF||_d|_d|_d|_d|_t|_d|_d|_d|_ d|_ d|_ dS)Nrr;rY) r3rJrKrDrEr?_nframes_nframeswritten _datawritten _datalengthrL _comptype)r0rrrrr/FszAu_write.initfpcCs(|jrtd|dkrtd||_dS)Nz0cannot change parameters after starting to writerrrz"only 1, 2, or 4 channels supported)rrr)rmrrK)r0 nchannelsrrr setnchannelsSs zAu_write.setnchannelscCs|jstd|jS)Nznumber of channels not set)rKr)r0rrrrUZszAu_write.getnchannelscCs(|jrtd|dkrtd||_dS)Nz0cannot change parameters after starting to writerrrrzbad sample width)rrrr)rmrrD)r0 sampwidthrrr setsampwidth_s zAu_write.setsampwidthcCs|jstd|jS)Nzsample width not specified)rJrrD)r0rrrrVfszAu_write.getsampwidthcCs|jrtd||_dS)Nz0cannot change parameters after starting to write)rmrrJ)r0 frameraterrr setframeratekszAu_write.setframeratecCs|jstd|jS)Nzframe rate not set)rJr)r0rrrrWpszAu_write.getframeratecCs(|jrtd|dkrtd||_dS)Nz0cannot change parameters after starting to writerz# of frames cannot be negative)rmrrl)r0rdrrr setnframesus zAu_write.setnframescCs|jS)N)rm)r0rrrrX|szAu_write.getnframescCs|dkr||_ntddS)Nr[rYzunknown compression type)r[rY)rpr)r0r+namerrr setcomptypeszAu_write.setcomptypecCs|jS)N)rp)r0rrrr\szAu_write.getcomptypecCs$|jdkrdS|jdkrdSdSdS)NrYzCCITT G.711 u-lawrZzCCITT G.711 A-lawznot compressed)rp)r0rrrr]s   zAu_write.getcompnamecCsH|\}}}}}}|j||j||j||j||j||dS)N)rrrtrvrwry)r0ZparamsrqrsrurdZcomptypeZcompnamerrr setparamss     zAu_write.setparamscCs*t|j|j|j|j|j|jS)N)rrUrVrWrXr\r])r0rrrr^s zAu_write.getparamscCs|jS)N)rm)r0rrrrNsz Au_write.tellcCs~t|ttfst|jd}|j|jdkrDddl}|j||j }t ||j }|j j ||j||_|jt ||_dS)NBrYr) isinstancer# bytearray memoryviewcast_ensure_header_writtenrprcZlin2ulawrDrbrEr3r"rmrn)r0r$rcrdrrrwriteframesraws   zAu_write.writeframesrawcCs.|j||j|jks"|j|jkr*|jdS)N)rrmrlrorn _patchheader)r0r$rrr writeframess   zAu_write.writeframesc Cs^|jrZz6|j|j|jks(|j|jkr0|j|jjWd|j}d|_|jrX|j XdS)N) r3rrmrlrornrflushr.r4)r0rrrrr4s  zAu_write.closecCs<|js8|jstd|js"td|js0td|jdS)Nz# of channels not specifiedzsample width not specifiedzframe rate not specified)rmrKrrDrJ _write_header)r0rrrrszAu_write._ensure_header_writtenc Cs|jdkrl|jdkr t}d|_q|jdkr6t}d|_q|jdkrLt}d|_q|jdkrbt}d|_qtdn|jdkrt}d|_ntd|j|j |_t |j t dt |j}|d d @}t |j ||jtkrt}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) Nr[rrrrzinternal errorrYr r r:r i)rprDrFrErGrHrIrrBrKr'r3r=rbrLrlr?rN_form_length_posrPrQrorJr")r0encodingZ header_sizeZlengthrrrrsJ               zAu_write._write_headercCsH|jdkrtd|jj|jt|j|j|j|_|jjdddS)Nz cannot seekrr)rrQr3rfr'rnro)r0rrrrs  zAu_write._patchheaderN)rrrr2r5r6r8r/rrrUrtrVrvrWrwrXryr\r]rzr^rNrrr4rrrrrrrrj0s2    *rjNcCsJ|dkrt|dr|j}nd}|dkr.t|S|dkr>t|StddS) Nmoder*rwrkz$mode must be 'r', 'rb', 'w', or 'wb')rr*)rrk)hasattrrr(rjr)r1rrrrr-s r-)N)__doc__ collectionsrrr=rBrFrGrHrIZAUDIO_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_5rCr?rA Exceptionrrr'r(rjr-Zopenfprrrrhs@  Q