???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
]E                 @   s   d  d l  Z  d d d g Z Gd d   d e  Z d Z d Z d  d l Z d  d l Z d  d l Z d  d
 l	 m
 Z
 d  d l m Z e d d  Z Gd d   d  Z Gd d   d  Z d d d  Z e Z d S)    NopenopenfpErrorc               @   s   e  Z d  Z d S)r   N)__name__
__module____qualname__ r   r   )/opt/alt/python35/lib64/python3.5/wave.pyr   N   s      bhi)Chunk)
namedtuple_wave_paramsz7nchannels sampwidth framerate nframes comptype compnamec               @   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+ S),	Wave_readc             C   sc  d  |  _  d |  _ t | d d |  _ |  j j   d k rH t d   |  j j d  d k rl t d   d |  _ d  |  _ x d |  _	 y t |  j d d } Wn t
 k
 r PYn X| j   } | d	 k r |  j |  d |  _ nG | d
 k r1|  j st d   | |  _ | j |  j |  _ d |  _	 P| j   q W|  j sS|  j r_t d   d  S)Nr   Z	bigendians   RIFFz file does not start with RIFF id   s   WAVEznot a WAVE filer
   s   fmt s   datazdata chunk before fmt chunkz#fmt chunk and/or data chunk missing)_convert	_soundposr   _fileZgetnamer   readZ_fmt_chunk_read_data_chunk_data_seek_neededEOFError_read_fmt_chunk	chunksize
_framesize_nframesskip)selffilechunkZ	chunknamer   r   r	   initfp}   s:    								zWave_read.initfpc          	   C   si   d  |  _  t | t  r3 t j | d  } | |  _  y |  j |  Wn |  j  r] | j     Yn Xd  S)Nrb)_i_opened_the_file
isinstancestrbuiltinsr   r"   close)r   fr   r   r	   __init__   s    			
zWave_read.__init__c             C   s   |  j    d  S)N)r(   )r   r   r   r	   __del__   s    zWave_read.__del__c             C   s   |  S)Nr   )r   r   r   r	   	__enter__   s    zWave_read.__enter__c             G   s   |  j    d  S)N)r(   )r   argsr   r   r	   __exit__   s    zWave_read.__exit__c             C   s   |  j  S)N)r   )r   r   r   r	   getfp   s    zWave_read.getfpc             C   s   d |  _  d |  _ d  S)Nr
   r   )r   r   )r   r   r   r	   rewind   s    	zWave_read.rewindc             C   s/   d  |  _  |  j } | r+ d  |  _ | j   d  S)N)r   r$   r(   )r   r    r   r   r	   r(      s
    			zWave_read.closec             C   s   |  j  S)N)r   )r   r   r   r	   tell   s    zWave_read.tellc             C   s   |  j  S)N)
_nchannels)r   r   r   r	   getnchannels   s    zWave_read.getnchannelsc             C   s   |  j  S)N)r   )r   r   r   r	   
getnframes   s    zWave_read.getnframesc             C   s   |  j  S)N)
_sampwidth)r   r   r   r	   getsampwidth   s    zWave_read.getsampwidthc             C   s   |  j  S)N)
_framerate)r   r   r   r	   getframerate   s    zWave_read.getframeratec             C   s   |  j  S)N)	_comptype)r   r   r   r	   getcomptype   s    zWave_read.getcomptypec             C   s   |  j  S)N)	_compname)r   r   r   r	   getcompname   s    zWave_read.getcompnamec             C   s=   t  |  j   |  j   |  j   |  j   |  j   |  j    S)N)r   r3   r6   r8   r4   r:   r<   )r   r   r   r	   	getparams   s    zWave_read.getparamsc             C   s   d  S)Nr   )r   r   r   r	   
getmarkers   s    zWave_read.getmarkersc             C   s   t  d   d  S)Nzno marks)r   )r   idr   r   r	   getmark   s    zWave_read.getmarkc             C   s=   | d k  s | |  j  k r' t d   | |  _ d |  _ d  S)Nr   zposition not in ranger
   )r   r   r   r   )r   posr   r   r	   setpos   s    	zWave_read.setposc             C   s   |  j  rN |  j j d d  |  j |  j } | rE |  j j | d  d |  _  | d k r^ d S|  j j | |  j  } |  j d k r t j d k r t	 j
 | |  j  } |  j r | r |  j |  } |  j t |  |  j |  j |  _ | S)Nr       r
   big)r   r   seekr   r   r   r5   sys	byteorderaudioopbyteswapr   lenr2   )r   nframesrA   datar   r   r	   
readframes   s    		$zWave_read.readframesc             C   s   t  j d | j d   \ } |  _ |  _ } } | t k ro t  j d | j d   d } | d d |  _ n t d | f   |  j |  j |  _ d	 |  _	 d
 |  _
 d  S)Nz<HHLLH   z<H   r         zunknown format: %rNONEznot compressed)structunpack_fromr   r2   r7   WAVE_FORMAT_PCMr5   r   r   r9   r;   )r   r!   Z
wFormatTagZdwAvgBytesPerSecZwBlockAlign	sampwidthr   r   r	   r      s    0	zWave_read._read_fmt_chunkN)r   r   r   r"   r*   r+   r,   r.   r/   r0   r(   r1   r3   r4   r6   r8   r:   r<   r=   r>   r@   rB   rM   r   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 d1 d2   Z d3 d4   Z d5 d6   Z d7 d8   Z d9 S):
Wave_writec          	   C   si   d  |  _  t | t  r3 t j | d  } | |  _  y |  j |  Wn |  j  r] | j     Yn Xd  S)Nwb)r$   r%   r&   r'   r   r"   r(   )r   r)   r   r   r	   r*   #  s    			
zWave_write.__init__c             C   s^   | |  _  d  |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _	 d  S)Nr   F)
r   r   r2   r5   r7   r   _nframeswritten_datawritten_datalength_headerwritten)r   r    r   r   r	   r"   /  s    									zWave_write.initfpc             C   s   |  j    d  S)N)r(   )r   r   r   r	   r+   ;  s    zWave_write.__del__c             C   s   |  S)Nr   )r   r   r   r	   r,   >  s    zWave_write.__enter__c             G   s   |  j    d  S)N)r(   )r   r-   r   r   r	   r.   A  s    zWave_write.__exit__c             C   s:   |  j  r t d   | d k  r- t d   | |  _ d  S)Nz0cannot change parameters after starting to writer
   zbad # of channels)rZ   r   r2   )r   	nchannelsr   r   r	   setnchannelsG  s
    	zWave_write.setnchannelsc             C   s   |  j  s t d   |  j  S)Nznumber of channels not set)r2   r   )r   r   r   r	   r3   N  s    	zWave_write.getnchannelsc             C   sF   |  j  r t d   | d k  s- | d k r9 t d   | |  _ d  S)Nz0cannot change parameters after starting to writer
   r   zbad sample width)rZ   r   r5   )r   rV   r   r   r	   setsampwidthS  s
    	zWave_write.setsampwidthc             C   s   |  j  s t d   |  j  S)Nzsample width not set)r5   r   )r   r   r   r	   r6   Z  s    	zWave_write.getsampwidthc             C   sF   |  j  r t d   | d k r- t d   t t |   |  _ d  S)Nz0cannot change parameters after starting to writer   zbad frame rate)rZ   r   introundr7   )r   	framerater   r   r	   setframerate_  s
    	zWave_write.setframeratec             C   s   |  j  s t d   |  j  S)Nzframe rate not set)r7   r   )r   r   r   r	   r8   f  s    	zWave_write.getframeratec             C   s"   |  j  r t d   | |  _ d  S)Nz0cannot change parameters after starting to write)rZ   r   r   )r   rK   r   r   r	   
setnframesk  s    	zWave_write.setnframesc             C   s   |  j  S)N)rY   )r   r   r   r	   r4   p  s    zWave_write.getnframesc             C   sC   |  j  r t d   | d k r- t d   | |  _ | |  _ d  S)Nz0cannot change parameters after starting to writerR   zunsupported compression type)rR   )rZ   r   r9   r;   )r   comptypecompnamer   r   r	   setcomptypes  s    		zWave_write.setcomptypec             C   s   |  j  S)N)r9   )r   r   r   r	   r:   {  s    zWave_write.getcomptypec             C   s   |  j  S)N)r;   )r   r   r   r	   r<   ~  s    zWave_write.getcompnamec             C   su   | \ } } } } } } |  j  r- t d   |  j |  |  j |  |  j |  |  j |  |  j | |  d  S)Nz0cannot change parameters after starting to write)rZ   r   r^   r_   rc   rd   rg   )r   paramsr]   rV   rb   rK   re   rf   r   r   r	   	setparams  s    	zWave_write.setparamsc             C   sU   |  j  s |  j s |  j r* t d   t |  j  |  j |  j |  j |  j |  j  S)Nznot all parameters set)r2   r5   r7   r   r   r   r9   r;   )r   r   r   r	   r=     s    zWave_write.getparamsc             C   s   t  d   d  S)Nzsetmark() not supported)r   )r   r?   rA   namer   r   r	   setmark  s    zWave_write.setmarkc             C   s   t  d   d  S)Nzno marks)r   )r   r?   r   r   r	   r@     s    zWave_write.getmarkc             C   s   d  S)Nr   )r   r   r   r	   r>     s    zWave_write.getmarkersc             C   s   |  j  S)N)rY   )r   r   r   r	   r1     s    zWave_write.tellc             C   s   t  | t t f  s* t |  j d  } |  j t |   t |  |  j |  j } |  j	 ro |  j	 |  } |  j d k r t
 j d k r t j | |  j  } |  j j |  |  j t |  7_ |  j | |  _ d  S)NBr
   rD   )r%   bytes	bytearray
memoryviewcast_ensure_header_writtenrJ   r5   r2   r   rF   rG   rH   rI   r   writerZ   rY   )r   rL   rK   r   r   r	   writeframesraw  s    	zWave_write.writeframesrawc             C   s-   |  j  |  |  j |  j k r) |  j   d  S)N)rs   r[   rZ   _patchheader)r   rL   r   r   r	   writeframes  s    zWave_write.writeframesc             C   sv   zC |  j  rB |  j d  |  j |  j k r5 |  j   |  j  j   Wd  d  |  _  |  j } | rq d  |  _ | j   Xd  S)Nr   )r   rq   r[   rZ   rt   flushr$   r(   )r   r    r   r   r	   r(     s    	
			zWave_write.closec             C   sY   |  j  sU |  j s t d   |  j s3 t d   |  j sH t d   |  j |  d  S)Nz# channels not specifiedzsample width not specifiedzsampling rate not specified)r\   r2   r   r5   r7   _write_header)r   Zdatasizer   r   r	   rq     s    				z!Wave_write._ensure_header_writtenc             C   s:  |  j  j d  |  j s0 | |  j |  j |  _ |  j |  j |  j |  _ y |  j  j   |  _ Wn! t t	 f k
 r d  |  _ Yn X|  j  j t
 j d d |  j d d d t |  j |  j |  j |  j |  j |  j |  j |  j d d   |  j d  k	 r|  j  j   |  _ |  j  j t
 j d	 |  j   d
 |  _ d  S)Ns   RIFFz<L4s4sLHHLLHH4s$   s   WAVEs   fmt    rQ   s   dataz<LT)r   rr   r   r2   r5   r[   r1   _form_length_posAttributeErrorOSErrorrS   packrU   r7   _data_length_posr\   )r   Z
initlengthr   r   r	   rw     s$    	zWave_write._write_headerc             C   s   |  j  |  j k r d  S|  j j   } |  j j |  j d  |  j j t j d d |  j    |  j j |  j	 d  |  j j t j d |  j    |  j j | d  |  j  |  _ d  S)Nr   z<Lrx   )
rZ   r[   r   r1   rE   rz   rr   rS   r}   r~   )r   Zcurposr   r   r	   rt     s    #zWave_write._patchheaderN)r   r   r   r*   r"   r+   r,   r.   r^   r3   r_   r6   rc   r8   rd   r4   rg   r:   r<   ri   r=   rk   r@   r>   r1   rs   ru   r(   rq   rw   rt   r   r   r   r	   rW   	  s8   

rW   c             C   si   | d  k r- t  |  d  r' |  j } n d } | d k rC t |   S| d k rY t |   St d   d  S)	Nmoder#   rwrX   z$mode must be 'r', 'rb', 'w', or 'wb')r   r#   )r   rX   )hasattrr   r   rW   r   )r)   r   r   r   r	   r     s    

)Nr   r   Nr   )r'   __all__	Exceptionr   rU   Z_array_fmtsrH   rS   rF   r!   r   collectionsr   r   r   rW   r   r   r   r   r   r	   <module>J   s   	