o ?OgF@s ddlmZeddZdZdZdZdZdZd Zd Z d Z d Z d Z dZ dZdZdZeeeeeegZGdddeZddZddZGdddZGdddZdddZdS) ) namedtuple _sunau_paramsz7nchannels sampwidth framerate nframes comptype compnameidns.lc@s eZdZdS)ErrorN)__name__ __module__ __qualname__rr,/opt/alt/python310/lib64/python3.10/sunau.pyrsrcCs8d}tdD]}|d}|st|dt|}q|S)Nrrr)rangereadEOFErrorord)filexiZbyterrr _read_u32s  rcCsFg}tdD]}t|d\}}|dt||}q|t|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_readcC@t|tdkrddl}||d}d|_nd|_||dS)NrrbTFtypebuiltinsopen_openedinitfpselffr.rrr__init__  zAu_read.__init__cCs|jr |dSdSN_filecloser3rrr__del__s zAu_read.__del__cC|Sr7rr;rrr __enter__zAu_read.__enter__cG |dSr7r:r3argsrrr__exit__ zAu_read.__exit__c Cs||_d|_tt|}|tkrtdtt||_|jdkr$td|jdkr-tdt||_|jtkr=t|j|_tt||_ |j t vrMtd|j t t fvr[d|_ d |_n4|j tkrgd |_|_ n(|j tkrsd|_|_ n|j tkrd |_|_ n|j tkrd |_|_ ntd tt||_tt||_|jstd |j|j|_|jdkr||jd|_|jd\|_}}nd|_z||_WdSttfyd|_YdSw)Nrzbad magic numberr zheader size too smalldzheader size ridiculously largezencoding not (yet) supportedrrrrzunknown encodingzbad # of channels)r9 _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)r3rmagic_rrrr1sX             zAu_read.initfpcC|jSr7)r9r;rrrgetfpz Au_read.getfpcCrar7)rXr;rrr getnchannelsrczAu_read.getnchannelscCrar7)rQr;rrr getsampwidthrczAu_read.getsampwidthcCrar7)rWr;rrr getframeraterczAu_read.getframeratecCs(|jtkrtS|jtvr|j|jSdSNr)rKrLrMrNrRr;rrr getnframess   zAu_read.getnframescC |jtkrdS|jtkrdSdS)NULAWALAWNONErMrOrPr;rrr getcomptype  zAu_read.getcomptypecCri)NCCITT G.711 u-lawCCITT G.711 A-lawnot compressedrmr;rrr getcompnamerozAu_read.getcompnamecC*t||||||Sr7rrdrerfrhrnrsr;rrr getparams  zAu_read.getparamscCsdSr7rr;rrr getmarkersr?zAu_read.getmarkerscCstd)Nzno marks)r)r3idrrrgetmark szAu_read.getmarkcCsp|jtvr6|tkr|j}n |j||j}|jt||j7_|jtkr4ddl }| ||j }|SdSrg) rMrNrLr9rrRrIlenrOaudioopZulaw2linrQ)r3nframesr$r|rrr readframess   zAu_read.readframescCs*|jdur td|j|jd|_dS)N cannot seekr)r\r^r9seekrIr;rrrrewinds  zAu_read.rewindcCrar7)rIr;rrrr[!rcz Au_read.tellcCsP|dks ||krtd|jdurtd|j|j||j||_dS)Nrzposition not in ranger)rhrr\r^r9rrRrI)r3posrrrsetpos$s   zAu_read.setposcCs*|j}|rd|_|jr|dSdSdSr7)r9r0r:r3rrrrr:,s z Au_read.closeN)rrrr5r<r>rDr1rbrdrerfrhrnrsrvrxrzr~rr[rr:rrrrr(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_writecCr))Nr*rwbTFr,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 _comptyperrrrr1Is zAu_write.initfpcC(|jrtd|dvrtd||_dS)N0cannot change parameters after starting to write)rrrz"only 1, 2, or 4 channels supported)rrrX)r3 nchannelsrrr setnchannelsV  zAu_write.setnchannelscC|jstd|jS)Nznumber of channels not set)rXrr;rrrrd]zAu_write.getnchannelscCr)Nr)rrrrzbad sample width)rrrQ)r3 sampwidthrrr setsampwidthbrzAu_write.setsampwidthcCs|jstd|jS)Nsample width not specified)rWrrQr;rrrreirzAu_write.getsampwidthcCs|jrtd||_dS)Nr)rrrW)r3 frameraterrr setframeratenrzAu_write.setframeratecCr)Nzframe rate not set)rWrr;rrrrfsrzAu_write.getframeratecCs(|jrtd|dkrtd||_dS)Nrrz# of frames cannot be negative)rrr)r3r}rrr setnframesxrzAu_write.setnframescCrar7rr;rrrrhrczAu_write.getnframescCs|dvr ||_dStd)N)rlrjzunknown compression type)rr)r3r-namerrr setcomptypes zAu_write.setcomptypecCrar7rr;rrrrnrczAu_write.getcomptypecCs |jdkrdS|jdkrdSdS)Nrjrprkrqrrrr;rrrrsrozAu_write.getcompnamecCsH|\}}}}}}|||||||||||dSr7)rrrrr)r3paramsrrrr}ZcomptypeZcompnamerrr setparamss     zAu_write.setparamscCrtr7rur;rrrrvrwzAu_write.getparamscCrar7rr;rrrr[rcz Au_write.tellcCs~t|ttfst|d}||jdkr"ddl}|||j }t ||j }|j ||j||_|jt ||_dS)NBrjr) isinstancer# bytearray memoryviewcast_ensure_header_writtenrr|Zlin2ulawrQr{rRr9r"rr)r3r$r|r}rrrwriteframesraws   zAu_write.writeframesrawcCs2|||j|jks|j|jkr|dSdSr7)rrrrr _patchheader)r3r$rrr writeframess    zAu_write.writeframescCs|jr>z+||j|jks|j|jkr||jW|j}d|_|jr-| dSdS|j}d|_|jr=| wwdSr7) r9rrrrrrflushr0r:rrrrr:s$     zAu_write.closecCs@|js|js td|jstd|jstd|dSdS)Nz# of channels not specifiedrzframe rate not specified)rrXrrQrW _write_headerr;rrrrs 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 |_Wnttfyd|_Ynwt |j |||_t |j |t |j |jt |j |j |j |j|j d |t |jd dS) Nrlrrrrzinternal errorrjr r irGr )rrQrSrRrTrUrVrrOrXr'r9rJr{rYrrLr[_form_length_posr]r^rrWr")r3encoding header_sizeZlengthrrrrsL              "zAu_write._write_headercCsH|jdur td|j|jt|j|j|j|_|jdddS)Nrrr)rr^r9rr'rrr;rrrrs zAu_write._patchheaderN)rrrr5r<r>rDr1rrdrrerrfrrhrrnrsrrvr[rrr:rrrrrrrr3s4    *rNcCsF|durt|dr |j}nd}|dvrt|S|dvrt|Std)Nmoder+)rr+)wrz$mode must be 'r', 'rb', 'w', or 'wb')hasattrrr(rr)r4rrrrr/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(rr/rrrrsD i Q