eaiovnaovbqoebvqoeavibavo B YI~dG@sddlmZddlZeddZdZdZdZdZd Zd Z d Z d Z d Z dZ dZdZdZdZeeeee egZGdddeZddZddZGdddZGdddZd!ddZd"dd ZdS)#) namedtupleN _sunau_paramsz7nchannels sampwidth framerate nframes comptype compnameidns.lc@s eZdZdS)ErrorN)__name__ __module__ __qualname__rr*/opt/alt/python37/lib64/python3.7/sunau.pyrsrcCs<d}x2tdD]&}|d}|s$t|dt|}qW|S)Nrrr)rangereadEOFErrorord)filexiZbyterrr _read_u32s rcCsJg}x2tdD]&}t|d\}}|dt||}qW|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_readcCs@t|tdkr,ddl}||d}d|_nd|_||dS)NrrbTF)typebuiltinsopen_openedinitfp)selffr,rrr__init__s  zAu_read.__init__cCs|jr|dS)N)_fileclose)r0rrr__del__szAu_read.__del__cCs|S)Nr)r0rrr __enter__szAu_read.__enter__cGs |dS)N)r4)r0argsrrr__exit__szAu_read.__exit__c Cs||_d|_tt|}|tkr(tdtt||_|jdkrHtd|jdkrZtdt||_|jtkrzt|j|_tt||_ |j t krtd|j t t fkrd|_ d |_nj|j tkrd |_|_ nR|j tkrd|_|_ n:|j tkrd |_|_ n"|j tkrd |_|_ ntd tt||_tt||_|jsLtd |j|j|_|jdkr||jd|_|jd\|_}}nd|_y||_Wn ttfk rd|_YnXdS)Nrzbad magic numberr zheader size too smalldzheader size ridiculously largezencoding not (yet) supportedrrrrzunknown encodingzbad # of channels)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/sT            zAu_read.initfpcCs|jS)N)r3)r0rrrgetfpsz Au_read.getfpcCs|jS)N)rK)r0rrr getnchannelsszAu_read.getnchannelscCs|jS)N)rD)r0rrr getsampwidthszAu_read.getsampwidthcCs|jS)N)rJ)r0rrr getframerateszAu_read.getframeratecCs(|jtkrtS|jtkr$|j|jSdS)Nr)r>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||||||S)N)rrUrVrWrXr\r])r0rrr getparamss zAu_read.getparamscCsdS)Nr)r0rrr getmarkersszAu_read.getmarkerscCs tddS)Nzno marks)r)r0idrrrgetmark szAu_read.getmarkcCsp|jtkrl|tkr|j}n|j||j}|jt||j7_|jtkrhddl }| ||j }|SdS)Nr) r@rAr?r3rrEr<lenrBaudioopZulaw2linrD)r0nframesr$rcrrr readframess   zAu_read.readframescCs*|jdkrtd|j|jd|_dS)Nz cannot seekr)rOrQr3seekr<)r0rrrrewinds zAu_read.rewindcCs|jS)N)r<)r0rrrrN!sz Au_read.tellcCsP|dks||krtd|jdkr.td|j|j||j||_dS)Nrzposition not in rangez cannot seek)rXrrOrQr3rfrEr<)r0posrrrsetpos$s  zAu_read.setposcCs"|j}|rd|_|jr|dS)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}||d}d|_nd|_||dS)Nr)rwbTF)r+r,r-r.r/)r0r1r,rrrr25s  zAu_write.__init__cCs|jr|d|_dS)N)r3r4)r0rrrr5>szAu_write.__del__cCs|S)Nr)r0rrrr6CszAu_write.__enter__cGs |dS)N)r4)r0r7rrrr8FszAu_write.__exit__cCsF||_d|_d|_d|_d|_t|_d|_d|_d|_ d|_ d|_ dS)Nrr;rY) r3rJrKrDrEr?_nframes_nframeswritten _datawritten _datalengthrL _comptype)r0rrrrr/IszAu_write.initfpcCs(|jrtd|dkrtd||_dS)Nz0cannot change parameters after starting to write)rrrz"only 1, 2, or 4 channels supported)rmrrK)r0 nchannelsrrr setnchannelsVs zAu_write.setnchannelscCs|jstd|jS)Nznumber of channels not set)rKr)r0rrrrU]szAu_write.getnchannelscCs(|jrtd|dkrtd||_dS)Nz0cannot change parameters after starting to write)rrrrzbad sample width)rmrrD)r0 sampwidthrrr setsampwidthbs zAu_write.setsampwidthcCs|jstd|jS)Nzsample width not specified)rJrrD)r0rrrrViszAu_write.getsampwidthcCs|jrtd||_dS)Nz0cannot change parameters after starting to write)rmrrJ)r0 frameraterrr setframeratenszAu_write.setframeratecCs|jstd|jS)Nzframe rate not set)rJr)r0rrrrWsszAu_write.getframeratecCs(|jrtd|dkrtd||_dS)Nz0cannot change parameters after starting to writerz# of frames cannot be negative)rmrrl)r0rdrrr setnframesxs zAu_write.setnframescCs|jS)N)rm)r0rrrrXszAu_write.getnframescCs|dkr||_ntddS)N)r[rYzunknown compression type)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|\}}}}}}|||||||||||dS)N)rrrtrvrwry)r0paramsrqrsrurdZcomptypeZcompnamerrr setparamss     zAu_write.setparamscCs*t||||||S)N)rrUrVrWrXr\r])r0rrrr^s zAu_write.getparamscCs|jS)N)rm)r0rrrrNsz Au_write.tellcCs~t|ttfst|d}||jdkrDddl}|||j }t ||j }|j ||j||_|jt ||_dS)NBrYr) isinstancer# bytearray memoryviewcast_ensure_header_writtenrprcZlin2ulawrDrbrEr3r"rmrn)r0r$rcrdrrrwriteframesraws   zAu_write.writeframesrawcCs.|||j|jks"|j|jkr*|dS)N)rrmrlrorn _patchheader)r0r$rrr writeframess   zAu_write.writeframescCs^|jrZz6||j|jks(|j|jkr0||jWd|j}d|_|jrX| XdS)N) r3rrmrlrornrflushr.r4)r0rrrrr4s  zAu_write.closecCs<|js8|jstd|js"td|js0td|dS)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 |_Wn ttfk rd|_YnXt |j |||_t |j |t |j |jt |j |j |j |j|j d |t |jd dS) Nr[rrrrzinternal errorrYr r ir:r )rprDrFrErGrHrIrrBrKr'r3r=rbrLrlr?rN_form_length_posrPrQrorJr")r0encodingZ header_sizelengthrrrrsJ               zAu_write._write_headercCsH|jdkrtd|j|jt|j|j|j|_|jdddS)Nz cannot seekrr)rrQr3rfr'rnro)r0rrrrs  zAu_write._patchheaderN)rrrr2r5r6r8r/rrrUrtrVrvrWrwrXryr\r]r{r^rNrrr4rrrrrrrrj3s2    *rjcCsJ|dkrt|dr|j}nd}|dkr.t|S|dkr>t|StddS)Nmoder*)rr*)wrkz$mode must be 'r', 'rb', 'w', or 'wb')hasattrrr(rjr)r1rrrrr-s r-cCstjdtddt||dS)NzDsunau.openfp is deprecated since Python 3.7. Use sunau.open instead.r) stacklevel)r)warningswarnDeprecationWarningr-)r1rrrropenfps r)N)N) collectionsrrrr=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-rrrrrjs@  Q