???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................a
    XC?h]                  	   @   s^  d dl Z d dlZd dlZddgZG dd deZdZdd Zdd	 Zd
d Z	dd Z
dd 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lmZ d d lmZ ed!d"Zd#ej_d$ej_d%ej_d&ej_d'ej_d(ej_G d)d* d*Z G d+d, d,Z!d>d-dZ"e#d.krZd dl$Z$e$j%d/d s>e$j%&d0 e$j%d/ Z'e"e'd1Z(e)d2e' e)d3e(*  e)d4e(+  e)d5e(,  e)d6e(-  e)d7e(.  e)d8e(/  e$j%d9d r:e$j%d9 Z0e)d:e0 e"e0d;@Z1e12e(3  e(4d<Z5e5sqe16e5 qW d   n1 s(0    Y  e)d= W d   n1 sP0    Y  dS )?    NErroropenc                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   )/opt/alt/python39/lib64/python3.9/aifc.pyr      s   l   @Q E c                 C   s8   zt d| dd W S  t jy2   td Y n0 d S )N>l   r   structZunpackreaderrorEOFErrorfiler   r   r   
_read_long   s    r   c                 C   s8   zt d| dd W S  t jy2   td Y n0 d S )N>Lr
   r   r   r   r   r   r   _read_ulong   s    r   c                 C   s8   zt d| dd W S  t jy2   td Y n0 d S )N>h   r   r   r   r   r   r   _read_short   s    r   c                 C   s8   zt d| dd W S  t jy2   td Y n0 d S )N>Hr   r   r   r   r   r   r   _read_ushort   s    r   c                 C   s@   t | d}|dkrd}n
| |}|d@ dkr<| d}|S )N   r       )ordr   )r   lengthdatadummyr   r   r   _read_string   s    

r    gc                 C   s   t | }d}|dk r d}|d }t| }t| }||  krN|  krNdkrXn nd} n0|dkrft} n"|d }|d | td	|d
  } ||  S )Nr   r      g          i?  l        g       @?   )r   r   	_HUGE_VALpow)fexponsignhimantlomantr   r   r   _read_float   s    "r,   c                 C   s   |  td| d S )Nr   writer   packr'   xr   r   r   _write_short   s    r2   c                 C   s   |  td| d S )Nr   r-   r0   r   r   r   _write_ushort   s    r3   c                 C   s   |  td| d S )Nr	   r-   r0   r   r   r   _write_long   s    r4   c                 C   s   |  td| d S )Nr   r-   r0   r   r   r   _write_ulong   s    r5   c                 C   sR   t |dkrtd| tdt | | | t |d@ dkrN| d d S )N   z%string exceeds maximum pstring lengthBr   r       )len
ValueErrorr.   r   r/   )r'   sr   r   r   _write_string   s    
r<   c           	      C   s   dd l }|dk rd}|d }nd}|dkr8d}d}d}n||\}}|dks^|dks^||krp|dB }d}d}nh|d }|dk r|||}d}||B }||d}||}t|}||| d}||}t|}t| | t| | t| | d S )	Nr   r"   r!   i @  r   r#   i?      )mathZfrexpZldexpZfloorintr3   r5   )	r'   r1   r>   r)   r(   r*   r+   ZfmantZfsmantr   r   r   _write_float   s8    




r@   )Chunk)
namedtuple_aifc_paramsz7nchannels sampwidth framerate nframes comptype compnamez3Number of audio channels (1 for mono, 2 for stereo)zSample width in byteszSampling frequencyzNumber of audio framesz(Compression type ("NONE" for AIFF files)zRA human-readable version of the compression type
('not compressed' for AIFF files)c                   @   s   e Zd 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d0d1 ZdS )2	Aifc_readNc                 C   s6  d| _ d | _g | _d| _|| _t|}| dkr:td|d}|dkrTd| _	n|dkrdd| _	ntdd| _
d | _d| _zt| j}W n ty   Y qY n0 | }|d	kr| | d| _
nH|d
kr|| _|d}d| _n(|dkrt|| _ n|dkr| | |  qx| j
r*| js2tdd S )Nr      FORMz file does not start with FORM idr
      AIFF   AIFCr   znot an AIFF or AIFF-C file   COMM   SSND      FVER   MARKz$COMM chunk and/or SSND chunk missing)_version_convert_markers	_soundpos_filerA   Zgetnamer   r   _aifcZ_comm_chunk_read_ssnd_chunk_ssnd_seek_neededr   _read_comm_chunkr   	_readmarkskip)selfr   chunkZformdataZ	chunknamer   r   r   r   initfp4  sH    





zAifc_read.initfpc                 C   sL   t |tr>t|d}z| | W qH   |   Y qH0 n
| | d S )Nrb)
isinstancestrbuiltinsr   rZ   closerX   r'   Zfile_objectr   r   r   __init__\  s    

zAifc_read.__init__c                 C   s   | S Nr   rX   r   r   r   	__enter__h  s    zAifc_read.__enter__c                 G   s   |    d S rb   r_   rX   argsr   r   r   __exit__k  s    zAifc_read.__exit__c                 C   s   | j S rb   )rQ   rc   r   r   r   getfpq  s    zAifc_read.getfpc                 C   s   d| _ d| _d S )Nr   r   )rT   rP   rc   r   r   r   rewindt  s    zAifc_read.rewindc                 C   s    | j }|d urd | _ |  d S rb   )rQ   r_   rX   r   r   r   r   r_   x  s    zAifc_read.closec                 C   s   | j S rb   )rP   rc   r   r   r   tell~  s    zAifc_read.tellc                 C   s   | j S rb   )
_nchannelsrc   r   r   r   getnchannels  s    zAifc_read.getnchannelsc                 C   s   | j S rb   )_nframesrc   r   r   r   
getnframes  s    zAifc_read.getnframesc                 C   s   | j S rb   )
_sampwidthrc   r   r   r   getsampwidth  s    zAifc_read.getsampwidthc                 C   s   | j S rb   )
_frameraterc   r   r   r   getframerate  s    zAifc_read.getframeratec                 C   s   | j S rb   	_comptyperc   r   r   r   getcomptype  s    zAifc_read.getcomptypec                 C   s   | j S rb   	_compnamerc   r   r   r   getcompname  s    zAifc_read.getcompnamec                 C   s*   t |  |  |  |  |  |  S rb   )rC   rn   rr   rt   rp   rw   rz   rc   r   r   r   	getparams  s    zAifc_read.getparamsc                 C   s   t | jdkrd S | jS Nr   r9   rO   rc   r   r   r   
getmarkers  s    zAifc_read.getmarkersc                 C   s2   | j D ]}||d kr|  S qtd|d S Nr   zmarker {0!r} does not existrO   r   formatrX   idmarkerr   r   r   getmark  s    

zAifc_read.getmarkc                 C   s*   |dk s|| j krtd|| _d| _d S )Nr   zposition not in ranger   )ro   r   rP   rT   )rX   posr   r   r   setpos  s    zAifc_read.setposc                 C   s   | j rD| jd | jd}| j| j }|r>| j|d  d| _ |dkrPdS | j|| j }| jrv|rv| |}| jt|| j| j	   | _|S )Nr   rJ   r   )
rT   rS   seekr   rP   
_framesizerN   r9   rm   rq   )rX   nframesr   r   r   r   r   r   
readframes  s     


zAifc_read.readframesc                 C   s   dd l }||dS Nr   r   )audioopZalaw2linrX   r   r   r   r   r   	_alaw2lin  s    zAifc_read._alaw2linc                 C   s   dd l }||dS r   )r   Zulaw2linr   r   r   r   	_ulaw2lin  s    zAifc_read._ulaw2linc                 C   s2   dd l }t| dsd | _||d| j\}| _|S Nr   _adpcmstater   )r   hasattrr   Z	adpcm2linr   r   r   r   
_adpcm2lin  s
    
zAifc_read._adpcm2linc                 C   sV  t || _t|| _t |d d | _tt|| _| jdkrFtd| jdkrXtd| j| j | _	| j
rFd}|jdkrd}td d	|_|d
| _|rt|jd}|d@ dkr|d }|j| |_|jdd t|| _| jdkrR| jdkr
| j| _n4| jdv r | j| _n| jdv r6| j| _ntdd| _nd| _d| _d S )N   rJ   r   bad sample widthbad # of channels   r   zWarning: bad COMM chunk size   r
   r!      NONE   G722   ulaw   ULAW   alaw   ALAWunsupported compression typer      not compressed)r   rm   r   ro   rq   r?   r,   rs   r   r   rR   Z	chunksizewarningswarnr   rv   r   r   r   r    ry   r   rN   r   r   )rX   rY   Zkludger   r   r   r   rU     sD    









zAifc_read._read_comm_chunkc                 C   s   t |}zDt|D ]6}t |}t|}t|}|s6|r| j|||f qW nB ty   dt| jt| jdkrvdnd|f }t	| Y n0 d S )Nz;Warning: MARK chunk contains only %s marker%s instead of %sr    r;   )
r   ranger   r    rO   appendr   r9   r   r   )rX   rY   Znmarkersir   r   namewr   r   r   rV     s    zAifc_read._readmark)r   r   r   rQ   rZ   ra   rd   rh   ri   rj   r_   rl   rn   rp   rr   rt   rw   rz   r{   r~   r   r   r   r   r   r   rU   rV   r   r   r   r   rD     s2   $(*rD   c                   @   s0  e Zd 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d0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFdG Z&dHdI Z'dS )J
Aifc_writeNc                 C   s\   t |trNt|d}z| | W n   |   Y n0 |drXd| _n
| | d S )Nwbz.aiffr   )r\   r]   r^   r   rZ   r_   endswithrR   r`   r   r   r   ra   /  s    

zAifc_write.__init__c                 C   s^   || _ t| _d| _d| _d | _d| _d| _d| _d| _	d| _
d| _d| _g | _d| _d| _d S )Nr   r   r   r   )rQ   _AIFC_versionrM   rv   ry   rN   rm   rq   rs   ro   _nframeswritten_datawritten_datalengthrO   _marklengthrR   rk   r   r   r   rZ   ?  s    zAifc_write.initfpc                 C   s   |    d S rb   re   rc   r   r   r   __del__P  s    zAifc_write.__del__c                 C   s   | S rb   r   rc   r   r   r   rd   S  s    zAifc_write.__enter__c                 G   s   |    d S rb   re   rf   r   r   r   rh   V  s    zAifc_write.__exit__c                 C   s   | j rtdd| _d S )N0cannot change parameters after starting to writer   r   r   rR   rc   r   r   r   aiff\  s    zAifc_write.aiffc                 C   s   | j rtdd| _d S )Nr   r   r   rc   r   r   r   aifca  s    zAifc_write.aifcc                 C   s(   | j rtd|dk rtd|| _d S )Nr   r   r   )r   r   rm   )rX   	nchannelsr   r   r   setnchannelsf  s
    zAifc_write.setnchannelsc                 C   s   | j std| j S )Nznumber of channels not set)rm   r   rc   r   r   r   rn   m  s    zAifc_write.getnchannelsc                 C   s0   | j rtd|dk s|dkr&td|| _d S )Nr   r   r
   r   )r   r   rq   )rX   	sampwidthr   r   r   setsampwidthr  s
    zAifc_write.setsampwidthc                 C   s   | j std| j S )Nzsample width not set)rq   r   rc   r   r   r   rr   y  s    zAifc_write.getsampwidthc                 C   s(   | j rtd|dkrtd|| _d S )Nr   r   zbad frame rate)r   r   rs   )rX   	framerater   r   r   setframerate~  s
    zAifc_write.setframeratec                 C   s   | j std| j S )Nzframe rate not set)rs   r   rc   r   r   r   rt     s    zAifc_write.getframeratec                 C   s   | j rtd|| _d S )Nr   )r   r   ro   )rX   r   r   r   r   
setnframes  s    zAifc_write.setnframesc                 C   s   | j S rb   r   rc   r   r   r   rp     s    zAifc_write.getnframesc                 C   s.   | j rtd|dvrtd|| _|| _d S Nr   )r   r   r   r   r   r   r   )r   r   rv   ry   )rX   comptypecompnamer   r   r   setcomptype  s    zAifc_write.setcomptypec                 C   s   | j S rb   ru   rc   r   r   r   rw     s    zAifc_write.getcomptypec                 C   s   | j S rb   rx   rc   r   r   r   rz     s    zAifc_write.getcompnamec                 C   sf   |\}}}}}}| j rtd|dvr.td| | | | | | | | | || d S r   )r   r   r   r   r   r   r   )rX   paramsr   r   r   r   r   r   r   r   r   	setparams  s    



zAifc_write.setparamsc                 C   s8   | j r| jr| jstdt| j | j| j| j| j| jS )Nznot all parameters set)rm   rq   rs   r   rC   ro   rv   ry   rc   r   r   r   r{     s
    zAifc_write.getparamsc                 C   s   |dkrt d|dk r t dt|ts2t dtt| jD ],}|| j| d kr@|||f| j|<  d S q@| j|||f d S )Nr   zmarker ID must be > 0zmarker position must be >= 0zmarker name must be bytes)r   r\   bytesr   r9   rO   r   )rX   r   r   r   r   r   r   r   setmark  s    
zAifc_write.setmarkc                 C   s2   | j D ]}||d kr|  S qtd|d S r   r   r   r   r   r   r     s    

zAifc_write.getmarkc                 C   s   t | jdkrd S | jS r|   r}   rc   r   r   r   r~     s    zAifc_write.getmarkersc                 C   s   | j S rb   r   rc   r   r   r   rl     s    zAifc_write.tellc                 C   sz   t |ttfst|d}| t| t|| j| j  }| j	rN| 	|}| j
| | j| | _| jt| | _d S )Nr7   )r\   r   	bytearray
memoryviewcast_ensure_header_writtenr9   rq   rm   rN   rQ   r.   r   r   )rX   r   r   r   r   r   writeframesraw  s    
zAifc_write.writeframesrawc                 C   s.   |  | | j| jks"| j| jkr*|   d S rb   )r   r   ro   r   r   _patchheader)rX   r   r   r   r   writeframes  s
    

zAifc_write.writeframesc                 C   s   | j d u rd S zx| d | jd@ r<| j d | jd | _|   | j| jksb| j| jksb| jrj| 	  W d | _
| j }d | _ |  nd | _
| j }d | _ |  0 d S )Nr   r   r8   )rQ   r   r   r.   _writemarkersr   ro   r   r   r   rN   r_   )rX   r'   r   r   r   r_     s,    





zAifc_write.closec                 C   s   dd l }||dS r   )r   Zlin2alawr   r   r   r   	_lin2alaw  s    zAifc_write._lin2alawc                 C   s   dd l }||dS r   )r   Zlin2ulawr   r   r   r   	_lin2ulaw  s    zAifc_write._lin2ulawc                 C   s2   dd l }t| dsd | _||d| j\}| _|S r   )r   r   r   Z	lin2adpcmr   r   r   r   
_lin2adpcm  s
    
zAifc_write._lin2adpcmc                 C   sf   | j sb| jdv r.| jsd| _| jdkr.td| js<td| jsJtd| jsXtd| | d S )Nr   r   r   r   r   r   zRsample width must be 2 when compressing with ulaw/ULAW, alaw/ALAW or G7.22 (ADPCM)z# channels not specifiedzsample width not specifiedzsampling rate not specified)r   rv   rq   r   rm   rs   _write_header)rX   Zdatasizer   r   r   r     s    

z!Aifc_write._ensure_header_writtenc                 C   s>   | j dkr| j| _n&| j dv r(| j| _n| j dv r:| j| _d S )Nr   r   r   )rv   r   rN   r   r   rc   r   r   r   _init_compression  s    




zAifc_write._init_compressionc              	   C   sH  | j r| jdkr|   | jd | js<|| j| j  | _| j| j | j | _| jd@ rf| jd | _| j r| jdv r| jd | _| jd@ r| jd | _n0| jdkr| jd d | _| jd@ r| jd | _z| j	 | _
W n ttfy   d | _
Y n0 | | j}| j r@| jd	 | jd
 t| jd t| j| j n| jd | jd t| j| t| j| j | j
d ur| j	 | _t| j| j | jdv rt| jd nt| j| jd  t| j| j | j r| j| j t| j| j | jd | j
d ur| j	 | _t| j| jd  t| jd t| jd d S )Nr   rE   r   )r   r   r   r   r   r      r
   rG   rK   rF   rH   r   rJ   rI   r   )rR   rv   r   rQ   r.   ro   rm   rq   r   rl   _form_length_posAttributeErrorOSError_write_form_lengthr5   rM   r2   _nframes_posr@   rs   r<   ry   _ssnd_length_pos)rX   Z
initlength
commlengthr   r   r   r   %  s^    




zAifc_write._write_headerc                 C   s\   | j r*dt| j }|d@ r$|d }d}nd}d}t| jd| | j d | d |  |S )	Nr   r      r   r   r
   rJ      )rR   r9   ry   r5   rQ   r   )rX   
datalengthr   Z
verslengthr   r   r   r   X  s"    zAifc_write._write_form_lengthc                 C   s   | j  }| jd@ r,| jd }| j d n| j}|| jkrd| j| jkrd| jdkrd| j |d d S | j | j	d | 
|}| j | jd t| j | j | j | jd t| j |d  | j |d | j| _|| _d S )Nr   r8   r   rJ   )rQ   rl   r   r.   r   ro   r   r   r   r   r   r   r5   r   )rX   Zcurposr   r   r   r   r   r   e  s*    





zAifc_write._patchheaderc                 C   s   t | jdkrd S | jd d}| jD ]:}|\}}}|t | d d }t |d@ dkr(|d }q(t| j| |d | _t| jt | j | jD ]2}|\}}}t| j| t| j| t| j| qd S )Nr   rL   r   r      rJ   )r9   rO   rQ   r.   r5   r   r2   r<   )rX   r   r   r   r   r   r   r   r   r   {  s"    





zAifc_write._writemarkers)(r   r   r   rQ   ra   rZ   r   rd   rh   r   r   r   rn   r   rr   r   rt   r   rp   r   rw   rz   r   r{   r   r   r~   rl   r   r   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r     sJ   	3r   c                 C   sJ   |d u rt | dr| j}nd}|dv r.t| S |dv r>t| S tdd S )Nmoder[   )rr[   )r   r   z$mode must be 'r', 'rb', 'w', or 'wb')r   r   rD   r   r   )r'   r   r   r   r   r     s    
__main__r   z/usr/demos/data/audio/bach.aiffr   ZReadingznchannels =znframes   =zsampwidth =zframerate =zcomptype  =zcompname  =r   ZWritingr   i   zDone.)N)7r   r^   r   __all__	Exceptionr   r   r   r   r   r   r    r%   r,   r2   r3   r4   r5   r<   r@   rY   rA   collectionsrB   rC   r   __doc__r   r   r   r   r   rD   r   r   r   sysargvr   fnr'   printrn   rp   rr   rt   rw   rz   Zgngr   r{   r   r   r   r   r   r   r   <module>   sx   
!     






.