grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026o ®û|jîFã@sª ddlmZeddƒZdZdZdZdZdZd Zd Z d Z d Z d Z dZ dZdZdZeeeeeegZGdd„deƒZdd„Zdd„ZGdd„dƒZGdd„dƒZddd„ZdS) é)Ú namedtupleÚ _sunau_paramsz7nchannels sampwidth framerate nframes comptype compnameidns.éééééééééééélÿÿc@s eZdZdS)ÚErrorN)Ú__name__Ú __module__Ú __qualname__©rrú,/opt/alt/python310/lib64/python3.10/sunau.pyr‰srcCs8d}tdƒD]}| d¡}|st‚|dt|ƒ}q|S)Nrrré)ÚrangeÚreadÚEOFErrorÚord)ÚfileÚxÚiZbyterrrÚ _read_u32Œs  rcCsFg}tdƒD]}t|dƒ\}}| dt|ƒ¡|}q| t|ƒ¡dS)Nrrr)rÚdivmodÚinsertÚintÚwriteÚbytes)rrÚdatarÚdÚmrrrÚ _write_u32•s  r'c@s¬eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)S)*ÚAu_readcCó@t|ƒtdƒkrddl}| |d¡}d|_nd|_| |¡dS)NÚrÚrbTF©ÚtypeÚbuiltinsÚopenÚ_openedÚinitfp©ÚselfÚfr.rrrÚ__init__Ÿó  zAu_read.__init__cCs|jr | ¡dSdS©N©Ú_fileÚclose©r3rrrÚ__del__¨s ÿzAu_read.__del__cCó|Sr7rr;rrrÚ __enter__¬ózAu_read.__enter__cGó | ¡dSr7©r:©r3ÚargsrrrÚ__exit__¯ó zAu_read.__exit__c Cs¾||_d|_tt|ƒƒ}|tkrtdƒ‚tt|ƒƒ|_|jdkr$tdƒ‚|jdkr-tdƒ‚t|ƒ|_|jtkr=t|jƒ|_tt|ƒƒ|_ |j t vrMtdƒ‚|j t t fvr[d|_ d |_n4|j tkrgd |_|_ n(|j tkrsd|_|_ n|j tkrd |_|_ n|j tkr‹d |_|_ ntd ƒ‚tt|ƒƒ|_tt|ƒƒ|_|js¤td ƒ‚|j|j|_|jdkrÄ| |jd¡|_|j d¡\|_}}nd|_z| ¡|_WdSttfyÞd|_YdSw)Nrzbad magic numberr zheader size too smallédzheader size ridiculously largezencoding not (yet) supportedrrrrzunknown encodingzbad # of channelsóó)r9Ú _soundposr!rÚAUDIO_FILE_MAGICrZ _hdr_sizeÚ _data_sizeÚAUDIO_UNKNOWN_SIZEÚ _encodingÚ_simple_encodingsÚAUDIO_FILE_ENCODING_MULAW_8ÚAUDIO_FILE_ENCODING_ALAW_8Ú _sampwidthÚ _framesizeÚAUDIO_FILE_ENCODING_LINEAR_8ÚAUDIO_FILE_ENCODING_LINEAR_16ÚAUDIO_FILE_ENCODING_LINEAR_24ÚAUDIO_FILE_ENCODING_LINEAR_32Ú _framerateÚ _nchannelsrÚ_infoÚ partitionÚtellÚ _data_posÚAttributeErrorÚOSError)r3rÚmagicÚ_rrrr1²sX       ÿ      ÿzAu_read.initfpcCó|jSr7)r9r;rrrÚgetfpàóz Au_read.getfpcCrar7)rXr;rrrÚ getnchannelsãrczAu_read.getnchannelscCrar7)rQr;rrrÚ getsampwidthærczAu_read.getsampwidthcCrar7)rWr;rrrÚ getframerateérczAu_read.getframeratecCs(|jtkrtS|jtvr|j|jSdS©Nr)rKrLrMrNrRr;rrrÚ getnframesìs   zAu_read.getnframescCó |jtkrdS|jtkrdSdS)NÚULAWÚALAWÚNONE©rMrOrPr;rrrÚ getcomptypeóó  zAu_read.getcomptypecCri)NúCCITT G.711 u-lawúCCITT G.711 A-lawúnot compressedrmr;rrrÚ getcompnameûrozAu_read.getcompnamecCó*t| ¡| ¡| ¡| ¡| ¡| ¡ƒSr7©rrdrerfrhrnrsr;rrrÚ getparamsó  þzAu_read.getparamscCsdSr7rr;rrrÚ getmarkersr?zAu_read.getmarkerscCstdƒ‚)Nzno marks)r)r3ÚidrrrÚgetmark szAu_read.getmarkcCsp|jtvr6|tkr|j ¡}n |j ||j¡}|jt|ƒ|j7_|jtkr4ddl }|  ||j ¡}|SdSrg) rMrNrLr9rrRrIÚlenrOÚaudioopZulaw2linrQ)r3Únframesr$r|rrrÚ readframess   zAu_read.readframescCs*|jdur tdƒ‚|j |j¡d|_dS)Nú cannot seekr)r\r^r9ÚseekrIr;rrrÚrewinds  zAu_read.rewindcCrar7)rIr;rrrr[!rcz Au_read.tellcCsP|dks || ¡krtdƒ‚|jdurtdƒ‚|j |j||j¡||_dS)Nrzposition not in ranger)rhrr\r^r9r€rRrI)r3ÚposrrrÚsetpos$s   zAu_read.setposcCs*|j}|rd|_|jr| ¡dSdSdSr7)r9r0r:©r3rrrrr:,s ýz Au_read.closeN)rrrr5r<r>rDr1rbrdrerfrhrnrsrvrxrzr~r�r[rƒr:rrrrr(�s* .  r(c@sÔeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3S)4ÚAu_writecCr))Nr*rÚwbTFr,r2rrrr55r6zAu_write.__init__cCs|jr| ¡d|_dSr7r8r;rrrr<>ó zAu_write.__del__cCr=r7rr;rrrr>Cr?zAu_write.__enter__cGr@r7rArBrrrrDFrEzAu_write.__exit__cCsF||_d|_d|_d|_d|_t|_d|_d|_d|_ d|_ d|_ dS)NrrHrj) r9rWrXrQrRrLÚ_nframesÚ_nframeswrittenÚ _datawrittenÚ _datalengthrYÚ _comptyper„rrrr1Is zAu_write.initfpcCó(|jrtdƒ‚|dvrtdƒ‚||_dS)Nú0cannot change parameters after starting to write)rrrz"only 1, 2, or 4 channels supported)r‰rrX)r3Ú nchannelsrrrÚ setnchannelsVó  zAu_write.setnchannelscCó|jstdƒ‚|jS)Nznumber of channels not set)rXrr;rrrrd]ózAu_write.getnchannelscCr�)NrŽ)rrrrzbad sample width)r‰rrQ)r3Ú sampwidthrrrÚ setsampwidthbr‘zAu_write.setsampwidthcCs|jstdƒ‚|jS)Núsample width not specified)rWrrQr;rrrreir“zAu_write.getsampwidthcCs|jrtdƒ‚||_dS)NrŽ)r‰rrW)r3Ú frameraterrrÚ setframeratenr‡zAu_write.setframeratecCr’)Nzframe rate not set)rWrr;rrrrfsr“zAu_write.getframeratecCs(|jrtdƒ‚|dkrtdƒ‚||_dS)NrŽrz# of frames cannot be negative)r‰rrˆ)r3r}rrrÚ setnframesxr‘zAu_write.setnframescCrar7©r‰r;rrrrhrczAu_write.getnframescCs|dvr ||_dStdƒ‚)N)rlrjzunknown compression type)rŒr)r3r-ÚnamerrrÚ setcomptype‚s zAu_write.setcomptypecCrar7©rŒr;rrrrnˆrczAu_write.getcomptypecCs |jdkrdS|jdkrdSdS)Nrjrprkrqrrr�r;rrrrs‹rozAu_write.getcompnamecCsH|\}}}}}}| |¡| |¡| |¡| |¡| ||¡dSr7)r�r•r˜r™rœ)r3Úparamsr�r”r—r}ZcomptypeZcompnamerrrÚ setparams“s     zAu_write.setparamscCrtr7rur;rrrrv›rwzAu_write.getparamscCrar7ršr;rrrr[ rcz Au_write.tellcCs~t|ttfƒst|ƒ d¡}| ¡|jdkr"ddl}| ||j ¡}t |ƒ|j }|j   |¡|j||_|jt |ƒ|_dS)NÚBrjr)Ú isinstancer#Ú bytearrayÚ memoryviewÚcastÚ_ensure_header_writtenrŒr|Zlin2ulawrQr{rRr9r"r‰rŠ)r3r$r|r}rrrÚwriteframesraw£s   zAu_write.writeframesrawcCs2| |¡|j|jks|j|jkr| ¡dSdSr7)r¦r‰rˆr‹rŠÚ _patchheader)r3r$rrrÚ writeframes¯s    ÿzAu_write.writeframescCs€|jr>z+| ¡|j|jks|j|jkr| ¡|j ¡W|j}d|_|jr-|  ¡dSdS|j}d|_|jr=|  ¡wwdSr7) r9r¥r‰rˆr‹rŠr§Úflushr0r:r„rrrr:µs$    ÿþ ÿözAu_write.closecCs@|js|js tdƒ‚|jstdƒ‚|jstdƒ‚| ¡dSdS)Nz# of channels not specifiedr–zframe rate not specified)r‰rXrrQrWÚ _write_headerr;rrrr¥Çs ùzAu_write._ensure_header_writtenc Cs||jdkr5|jdkrt}d|_n4|jdkrt}d|_n)|jdkr&t}d|_n|jdkr1t}d|_ntdƒ‚|jdkr@t}d|_ntdƒ‚|j|j |_t |j t ƒdt |jƒ}|d d @}t |j |ƒ|jtkrlt}n|j|j}z|j  ¡|_Wnttfyˆd|_Ynwt |j |ƒ||_t |j |ƒt |j |jƒt |j |j ƒ|j  |j¡|j  d |t |jƒd ¡dS) Nrlrrrrzinternal errorrjr r iøÿÿÿrGr )rŒrQrSrRrTrUrVrrOrXr'r9rJr{rYrˆrLr[Ú_form_length_posr]r^r‹rWr")r3ÚencodingÚ header_sizeZlengthrrrrªÑsL            ÿ  "zAu_write._write_headercCsH|jdur tdƒ‚|j |j¡t|j|jƒ|j|_|j dd¡dS)Nrrr)r«r^r9r€r'rŠr‹r;rrrr§ûs zAu_write._patchheaderN)rrrr5r<r>rDr1r�rdr•rer˜rfr™rhrœrnrsrŸrvr[r¦r¨r:r¥rªr§rrrrr…3s4    *r…NcCsF|durt|dƒr |j}nd}|dvrt|ƒS|dvrt|ƒStdƒ‚)NÚmoder+)Úrr+)Úwr†z$mode must be 'r', 'rb', 'w', or 'wb')Úhasattrr®r(r…r)r4r®rrrr/s r/r7)Ú collectionsrrrJrOrSrTrUrVZAUDIO_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_5rPrLrNÚ Exceptionrrr'r(r…r/rrrrÚsD iÿû Q