
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aÇG  ã                   @   sº   d dl mZ d dlZeddƒZdZdZdZdZd	Zd
Z	dZ
dZdZdZdZdZdZdZeeeee	egZG dd„ deƒZdd„ Zdd„ ZG dd„ dƒZG dd„ dƒZd!dd„Zd"dd „ZdS )#é    )Ú
namedtupleNÚ_sunau_paramsz7nchannels sampwidth framerate nframes comptype compnameidns.é   é   é   é   é   é   é   é   é   é   é   é   l   ÿÿ c                   @   s   e Zd ZdS )ÚErrorN)Ú__name__Ú
__module__Ú__qualname__© r   r   ú*/opt/alt/python38/lib64/python3.8/sunau.pyr   ‰   s   r   c                 C   s8   d}t dƒD ]&}|  d¡}|s"t‚|d t|ƒ }q|S )Nr   r   r   é   )ÚrangeÚreadÚEOFErrorÚord)ÚfileÚxÚiZbyter   r   r   Ú	_read_u32Œ   s    
r   c                 C   sF   g }t dƒD ]&}t|dƒ\}}| dt|ƒ¡ |}q|  t|ƒ¡ d S )Nr   r   r   )r   ÚdivmodÚinsertÚintÚwriteÚbytes)r   r   Údatar   ÚdÚmr   r   r   Ú
_write_u32•   s    r'   c                   @   s¬   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)S )*ÚAu_readc                 C   s@   t |ƒt dƒkr,dd l}| |d¡}d| _nd| _|  |¡ d S )NÚ r   ÚrbTF©ÚtypeÚbuiltinsÚopenÚ_openedÚinitfp©ÚselfÚfr-   r   r   r   Ú__init__Ÿ   s    zAu_read.__init__c                 C   s   | j r|  ¡  d S ©N©Ú_fileÚclose©r2   r   r   r   Ú__del__¨   s    zAu_read.__del__c                 C   s   | S r5   r   r9   r   r   r   Ú	__enter__¬   s    zAu_read.__enter__c                 G   s   |   ¡  d S r5   ©r8   ©r2   Úargsr   r   r   Ú__exit__¯   s    zAu_read.__exit__c              	   C   sÈ  || _ d| _tt|ƒƒ}|tkr(tdƒ‚tt|ƒƒ| _| jdk rHtdƒ‚| jdkrZtdƒ‚t|ƒ| _| jtkrzt| jƒ| _tt|ƒƒ| _	| j	t
krštdƒ‚| j	ttfkr¶d| _d	| _nj| j	tkrÎd	 | _| _nR| j	tkræd | _| _n:| j	tkrþd
 | _| _n"| j	tk�rd | _| _ntdƒ‚tt|ƒƒ| _tt|ƒƒ| _| j�sLtdƒ‚| j| j | _| jdk�rŽ| | jd ¡| _| j d¡\| _}}nd| _z| ¡ | _W n  ttfk
�rÂ   d | _Y nX d S )Nr   zbad magic numberr   zheader size too smalléd   zheader size ridiculously largezencoding not (yet) supportedr   r   r   r   zunknown encodingzbad # of channelsó    ó    )r7   Ú	_soundposr!   r   ÚAUDIO_FILE_MAGICr   Z	_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)r2   r   ÚmagicÚ_r   r   r   r0   ²   sV    




ÿ


zAu_read.initfpc                 C   s   | j S r5   )r7   r9   r   r   r   Úgetfpà   s    zAu_read.getfpc                 C   s   | j S r5   )rR   r9   r   r   r   Úgetnchannelsã   s    zAu_read.getnchannelsc                 C   s   | j S r5   )rK   r9   r   r   r   Úgetsampwidthæ   s    zAu_read.getsampwidthc                 C   s   | j S r5   )rQ   r9   r   r   r   Úgetframerateé   s    zAu_read.getframeratec                 C   s(   | j tkrtS | jtkr$| j | j S dS ©Nr   )rE   rF   rG   rH   rL   r9   r   r   r   Ú
getnframesì   s
    

zAu_read.getnframesc                 C   s$   | j tkrdS | j tkrdS dS d S )NÚULAWÚALAWÚNONE©rG   rI   rJ   r9   r   r   r   Úgetcomptypeó   s
    

zAu_read.getcomptypec                 C   s$   | j tkrdS | j tkrdS dS d S )NúCCITT G.711 u-lawúCCITT G.711 A-lawúnot compressedrd   r9   r   r   r   Úgetcompnameû   s
    

zAu_read.getcompnamec                 C   s*   t |  ¡ |  ¡ |  ¡ |  ¡ |  ¡ |  ¡ ƒS r5   ©r   r\   r]   r^   r`   re   ri   r9   r   r   r   Ú	getparams  s      þzAu_read.getparamsc                 C   s   d S r5   r   r9   r   r   r   Ú
getmarkers  s    zAu_read.getmarkersc                 C   s   t dƒ‚d S )Nzno marks)r   )r2   Úidr   r   r   Úgetmark  s    zAu_read.getmarkc                 C   sp   | j tkrl|tkr| j ¡ }n| j || j ¡}|  jt|ƒ| j 7  _| j tkrhdd l	}| 
|| j¡}|S d S r_   )rG   rH   rF   r7   r   rL   rC   ÚlenrI   ÚaudioopZulaw2linrK   )r2   Únframesr$   rp   r   r   r   Ú
readframes  s    

zAu_read.readframesc                 C   s*   | j d krtdƒ‚| j | j ¡ d| _d S )Núcannot seekr   )rV   rX   r7   ÚseekrC   r9   r   r   r   Úrewind  s    
zAu_read.rewindc                 C   s   | j S r5   )rC   r9   r   r   r   rU   !  s    zAu_read.tellc                 C   sP   |dk s||   ¡ krtdƒ‚| jd kr.tdƒ‚| j | j|| j  ¡ || _d S )Nr   zposition not in rangers   )r`   r   rV   rX   r7   rt   rL   rC   )r2   Úposr   r   r   Úsetpos$  s    
zAu_read.setposc                 C   s"   | j }|rd | _ | jr| ¡  d S r5   )r7   r/   r8   ©r2   r   r   r   r   r8   ,  s
    zAu_read.closeN)r   r   r   r4   r:   r;   r?   r0   r[   r\   r]   r^   r`   re   ri   rk   rl   rn   rr   ru   rU   rw   r8   r   r   r   r   r(   �   s(   	.r(   c                   @   sÔ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3S )4ÚAu_writec                 C   s@   t |ƒt dƒkr,dd l}| |d¡}d| _nd| _|  |¡ d S )Nr)   r   ÚwbTFr+   r1   r   r   r   r4   5  s    zAu_write.__init__c                 C   s   | j r|  ¡  d | _ d S r5   r6   r9   r   r   r   r:   >  s    zAu_write.__del__c                 C   s   | S r5   r   r9   r   r   r   r;   C  s    zAu_write.__enter__c                 G   s   |   ¡  d S r5   r<   r=   r   r   r   r?   F  s    zAu_write.__exit__c                 C   sF   || _ d| _d| _d| _d| _t| _d| _d| _d| _	d| _
d| _d S )Nr   rB   ra   )r7   rQ   rR   rK   rL   rF   Ú_nframesÚ_nframeswrittenÚ_datawrittenÚ_datalengthrS   Ú	_comptyperx   r   r   r   r0   I  s    zAu_write.initfpc                 C   s(   | j rtdƒ‚|dkrtdƒ‚|| _d S )Nú0cannot change parameters after starting to write)r   r   r   z"only 1, 2, or 4 channels supported)r|   r   rR   )r2   Ú	nchannelsr   r   r   ÚsetnchannelsV  s
    zAu_write.setnchannelsc                 C   s   | j stdƒ‚| j S )Nznumber of channels not set)rR   r   r9   r   r   r   r\   ]  s    zAu_write.getnchannelsc                 C   s(   | j rtdƒ‚|dkrtdƒ‚|| _d S )Nr€   )r   r   r   r   zbad sample width)r|   r   rK   )r2   Ú	sampwidthr   r   r   Úsetsampwidthb  s
    zAu_write.setsampwidthc                 C   s   | j stdƒ‚| jS )Núsample width not specified)rQ   r   rK   r9   r   r   r   r]   i  s    zAu_write.getsampwidthc                 C   s   | j rtdƒ‚|| _d S )Nr€   )r|   r   rQ   )r2   Ú	framerater   r   r   Úsetframeraten  s    zAu_write.setframeratec                 C   s   | j stdƒ‚| j S )Nzframe rate not set)rQ   r   r9   r   r   r   r^   s  s    zAu_write.getframeratec                 C   s(   | j rtdƒ‚|dk rtdƒ‚|| _d S )Nr€   r   z# of frames cannot be negative)r|   r   r{   )r2   rq   r   r   r   Ú
setnframesx  s
    zAu_write.setnframesc                 C   s   | j S r5   ©r|   r9   r   r   r   r`     s    zAu_write.getnframesc                 C   s   |dkr|| _ ntdƒ‚d S )N)rc   ra   zunknown compression type)r   r   )r2   r,   Únamer   r   r   Úsetcomptype‚  s    zAu_write.setcomptypec                 C   s   | j S r5   ©r   r9   r   r   r   re   ˆ  s    zAu_write.getcomptypec                 C   s$   | j dkrdS | j dkrdS dS d S )Nra   rf   rb   rg   rh   rŒ   r9   r   r   r   ri   ‹  s
    

zAu_write.getcompnamec                 C   sH   |\}}}}}}|   |¡ |  |¡ |  |¡ |  |¡ |  ||¡ d S r5   )r‚   r„   r‡   rˆ   r‹   )r2   Zparamsr�   rƒ   r†   rq   ZcomptypeZcompnamer   r   r   Ú	setparams“  s    



zAu_write.setparamsc                 C   s*   t |  ¡ |  ¡ |  ¡ |  ¡ |  ¡ |  ¡ ƒS r5   rj   r9   r   r   r   rk   ›  s      þzAu_write.getparamsc                 C   s   | j S r5   r‰   r9   r   r   r   rU      s    zAu_write.tellc                 C   s~   t |ttfƒst|ƒ d¡}|  ¡  | jdkrDdd l}| || j	¡}t
|ƒ| j }| j |¡ | j| | _| jt
|ƒ | _d S )NÚBra   r   )Ú
isinstancer#   Ú	bytearrayÚ
memoryviewÚcastÚ_ensure_header_writtenr   rp   Zlin2ulawrK   ro   rL   r7   r"   r|   r}   )r2   r$   rp   rq   r   r   r   Úwriteframesraw£  s    
zAu_write.writeframesrawc                 C   s.   |   |¡ | j| jks"| j| jkr*|  ¡  d S r5   )r”   r|   r{   r~   r}   Ú_patchheader)r2   r$   r   r   r   Úwriteframes¯  s
    

ÿzAu_write.writeframesc                 C   s^   | j rZz6|  ¡  | j| jks(| j| jkr0|  ¡  | j  	¡  W 5 | j }d | _ | jrX| ¡  X d S r5   )
r7   r/   r8   r“   r|   r{   r~   r}   r•   Úflushrx   r   r   r   r8   µ  s    
ÿzAu_write.closec                 C   s<   | j s8| jstdƒ‚| js"tdƒ‚| js0tdƒ‚|  ¡  d S )Nz# of channels not specifiedr…   zframe rate not specified)r|   rR   r   rK   rQ   Ú_write_headerr9   r   r   r   r“   Ç  s    zAu_write._ensure_header_writtenc              	   C   s‚  | j dkrl| jdkr t}d| _qŠ| jdkr6t}d| _qŠ| jdkrLt}d| _qŠ| jdkrbt}d| _qŠtdƒ‚n| j dkr‚t}d| _ntdƒ‚| j| j	 | _t
| jtƒ dt| jƒ }|d	 d
@ }t
| j|ƒ | jtkrÚt}n| j| j }z| j ¡ | _W n  ttfk
�r   d | _Y nX t
| j|ƒ || _t
| j|ƒ t
| j| jƒ t
| j| j	ƒ | j | j¡ | j d|t| jƒ d  ¡ d S )Nrc   r   r   r   r   zinternal errorra   r   r
   iøÿÿÿrA   r   )r   rK   rM   rL   rN   rO   rP   r   rI   rR   r'   r7   rD   ro   rS   r{   rF   rU   Ú_form_length_posrW   rX   r~   rQ   r"   )r2   ÚencodingÚheader_sizeZlengthr   r   r   r˜   Ñ  sJ    







zAu_write._write_headerc                 C   sH   | j d krtdƒ‚| j | j ¡ t| j| jƒ | j| _| j dd¡ d S )Nrs   r   r   )r™   rX   r7   rt   r'   r}   r~   r9   r   r   r   r•   û  s    
zAu_write._patchheaderN)r   r   r   r4   r:   r;   r?   r0   r‚   r\   r„   r]   r‡   r^   rˆ   r`   r‹   re   ri   r�   rk   rU   r”   r–   r8   r“   r˜   r•   r   r   r   r   ry   3  s2   	
*ry   c                 C   sJ   |d krt | dƒr| j}nd}|dkr.t| ƒS |dkr>t| ƒS tdƒ‚d S )NÚmoder*   )Úrr*   )Úwrz   z$mode must be 'r', 'rb', 'w', or 'wb')Úhasattrrœ   r(   ry   r   ©r3   rœ   r   r   r   r.     s    
r.   c                 C   s   t jdtdd� t| |d�S )NzDsunau.openfp is deprecated since Python 3.7. Use sunau.open instead.r   )Ú
stacklevel)rœ   )ÚwarningsÚwarnÚDeprecationWarningr.   r    r   r   r   Úopenfp  s
     ÿr¥   )N)N)Úcollectionsr   r¢   r   rD   rI   rM   rN   rO   rP   ZAUDIO_FILE_ENCODING_FLOATZAUDIO_FILE_ENCODING_DOUBLEZAUDIO_FILE_ENCODING_ADPCM_G721ZAUDIO_FILE_ENCODING_ADPCM_G722Z AUDIO_FILE_ENCODING_ADPCM_G723_3Z AUDIO_FILE_ENCODING_ADPCM_G723_5rJ   rF   rH   Ú	Exceptionr   r   r'   r(   ry   r.   r¥   r   r   r   r   Ú<module>j   sD   ÿû	  Q
