Spade
Mini Shell
3
\�F�@s�ddlmZedd�ZdZdZdZdZdZd Zd
Z dZ
dZd
ZdZ
dZdZdZeeeeeegZGdd�de�Zdd�Zdd�ZGdd�d�ZGdd�d�Zddd�ZeZdS)
�)�
namedtuple�
_sunau_paramsz7nchannels sampwidth framerate nframes comptype
compnameidns.������������l��c@seZdZdS)�ErrorN)�__name__�
__module__�__qualname__�rr�/usr/lib64/python3.6/sunau.pyr�srcCs<d}x2td�D]&}|jd�}|s$t�|dt|�}qW|S)Nrrr�)�range�read�EOFError�ord)�file�x�iZbyterrr� _read_u32�s
rcCsJg}x2td�D]&}t|d�\}}|jdt|��|}qW|jt|��dS)Nrrr)r�divmod�insert�int�write�bytes)rr�datar�d�mrrr�
_write_u32�sr'c@s�eZdZdd�Zdd�Zdd�Zdd�Zd d
�Zdd�Zd
d�Z dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd
�Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)S)*�Au_readcCs@t|�td�kr,ddl}|j|d�}d|_nd|_|j|�dS)N�r�rbTF)�type�builtins�open�_opened�initfp)�self�fr,rrr�__init__�szAu_read.__init__cCs|jr|j�dS)N)�_file�close)r0rrr�__del__�szAu_read.__del__cCs|S)Nr)r0rrr� __enter__�szAu_read.__enter__cGs|j�dS)N)r4)r0�argsrrr�__exit__�szAu_read.__exit__cCs�||_d|_tt|��}|tkr(td��tt|��|_|jdkrHtd��|jdkrZtd��t|�|_|jtkrzt|j�|_tt|��|_ |j t
kr�td��|j ttfkr�d|_
d |_nj|j tkr�d |_|_
nR|j tkr�d|_|_
n:|j tkr�d
|_|_
n"|j tk�rd|_|_
ntd��tt|��|_tt|��|_|j|j|_|jdk�r~|j|jd�|_|jjd
�\|_}}nd|_y|j�|_Wn
ttfk
�r�d|_YnXdS)Nrzbad magic numberrzheader size too
small�dzheader size ridiculously largezencoding not (yet)
supportedrrrrzunknown
encoding��)r3� _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)r0r�magic�_rrrr/�sP
zAu_read.initfpcCs|jS)N)r3)r0rrr�getfp�sz
Au_read.getfpcCs|jS)N)rK)r0rrr�getnchannels�szAu_read.getnchannelscCs|jS)N)rD)r0rrr�getsampwidth�szAu_read.getsampwidthcCs|jS)N)rJ)r0rrr�getframerate�szAu_read.getframeratecCs(|jtkrtS|jtkr$|j|jSdS)Nr)r>r?r@rArE)r0rrr�
getnframes�s
zAu_read.getnframescCs$|jtkrdS|jtkrdSdSdS)N�ULAW�ALAW�NONE)r@rBrC)r0rrr�getcomptype�s
zAu_read.getcomptypecCs$|jtkrdS|jtkrdSdSdS)NzCCITT G.711
u-lawzCCITT G.711 A-lawznot
compressed)r@rBrC)r0rrr�getcompname�s
zAu_read.getcompnamecCs*t|j�|j�|j�|j�|j�|j��S)N)rrUrVrWrXr\r])r0rrr� getparamsszAu_read.getparamscCsdS)Nr)r0rrr�
getmarkersszAu_read.getmarkerscCstd��dS)Nzno
marks)r)r0�idrrr�getmarkszAu_read.getmarkcCsp|jtkrl|tkr|jj�}n|jj||j�}|jt|�|j7_|jtkrhddl }|j
||j�}|SdS)Nr)r@rAr?r3rrEr<�lenrB�audioopZulaw2linrD)r0�nframesr$rcrrr�
readframess
zAu_read.readframescCs*|jdkrtd��|jj|j�d|_dS)Nzcannot
seekr)rOrQr3�seekr<)r0rrr�rewinds
zAu_read.rewindcCs|jS)N)r<)r0rrrrNszAu_read.tellcCsP|dks||j�krtd��|jdkr.td��|jj|j||j�||_dS)Nrzposition
not in rangezcannot
seek)rXrrOrQr3rfrEr<)r0�posrrr�setpos!s
zAu_read.setposcCs"|j}|rd|_|jr|j�dS)N)r3r.r4)r0rrrrr4)s
z
Au_read.closeN)rrrr2r5r6r8r/rTrUrVrWrXr\r]r^r_rarergrNrir4rrrrr(�s( ,
r(c@s�eZdZdd�Zdd�Zdd�Zdd�Zd d
�Zdd�Zd
d�Z dd�Z
dd�Zdd�Zdd�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_writecCs@t|�td�kr,ddl}|j|d�}d|_nd|_|j|�dS)Nr)r�wbTF)r+r,r-r.r/)r0r1r,rrrr22szAu_write.__init__cCs|jr|j�d|_dS)N)r3r4)r0rrrr5;szAu_write.__del__cCs|S)Nr)r0rrrr6@szAu_write.__enter__cGs|j�dS)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||_ntd��dS)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� setparams�s
zAu_write.setparamscCs*t|j�|j�|j�|j�|j�|j��S)N)rrUrVrWrXr\r])r0rrrr^�szAu_write.getparamscCs|jS)N)rm)r0rrrrN�sz
Au_write.tellcCs~t|ttf�st|�jd�}|j�|jdkrDddl}|j||j �}t
|�|j}|jj
|�|j||_|jt
|�|_dS)N�BrYr)�
isinstancer#� bytearray�
memoryview�cast�_ensure_header_writtenrprcZlin2ulawrDrbrEr3r"rmrn)r0r$rcrdrrr�writeframesraw�s
zAu_write.writeframesrawcCs.|j|�|j|jks"|j|jkr*|j�dS)N)r�rmrlrorn�_patchheader)r0r$rrr�writeframes�s
zAu_write.writeframescCs^|jrZz6|j�|j|jks(|j|jkr0|j�|jj�Wd|j}d|_|jrX|j �XdS)N)
r3r�rmrlrornr��flushr.r4)r0rrrrr4�szAu_write.closecCs<|js8|jstd��|js"td��|js0td��|j�dS)Nz#
of channels not specifiedzsample width not specifiedzframe rate not
specified)rmrKrrDrJ�
_write_header)r0rrrr��szAu_write._ensure_header_writtenc
Cs�|jdkrl|jdkr
t}d|_q�|jdkr6t}d|_q�|jdkrLt}d|_q�|jdkrbt}d|_q�td��n|jdkr�t}d|_ntd��|j|j |_t
|jt�dt
|j�}|d d@}t
|j|�|jtkr�t}n|j|j}y|jj�|_Wn ttfk
�rd|_YnXt
|j|�||_t
|j|�t
|j|j�t
|j|j �|jj|j�|jjd
|t
|j�d�dS)
Nr[rrrrzinternal errorrYr
r
r:ri����)rprDrFrErGrHrIrrBrKr'r3r=rbrLrlr?rN�_form_length_posrPrQrorJr")r0�encodingZheader_sizeZlengthrrrr��sJ
zAu_write._write_headercCsH|jdkrtd��|jj|j�t|j|j�|j|_|jjdd�dS)Nzcannot
seekrr)r�rQr3rfr'rnro)r0rrrr��s
zAu_write._patchheaderN)rrrr2r5r6r8r/rrrUrtrVrvrWrwrXryr\r]rzr^rNr�r�r4r�r�r�rrrrrj0s2
*rjNcCsJ|dkrt|d�r|j}nd}|dkr.t|�S|dkr>t|�Std��dS) N�moder*�r�wrkz$mode
must be 'r', 'rb', 'w', or
'wb')r�r*)r�rk)�hasattrr�r(rjr)r1r�rrrr-s
r-)N)�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-Zopenfprrrr�<module>js> Q