ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3
2a-E                 @   s   d dl Z dddddgZG d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G dd dZG dd dZdddZeZdS )    NopenopenfpError	Wave_read
Wave_writec               @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r
   r
   )/opt/alt/python36/lib64/python3.6/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 ),r   c             C   s  d | _ d| _t|dd| _| jj dkr0td| jjddkrHtdd| _d | _xd| _	yt| jdd}W n t
k
r   P Y nX |j }|d	kr| j| d| _n2|d
kr| jstd|| _|j| j | _d| _	P |j  qVW | j s| 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_chunkZ	chunksize
_framesize_nframesskip)selffilechunkZ	chunknamer
   r
   r   initfp}   s:    
zWave_read.initfpc          	   C   sR   d | _ t|tr"tj|d}|| _ y| j| W n   | j rF|j   Y nX d 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 r8| jjdd | j| j }|r2| jj|d d| _ |dkrDdS | jj|| j }| jdkrxtjdkrxt	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   sz   t jd|jd\}| _| _}}|tkrNt 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     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*   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d3d4 Zd5d6 Zd7d8 Zd9S ):r   c          	   C   sR   d | _ t|tr"tj|d}|| _ y| j| W n   | j rF|j   Y nX d 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)rY   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   s0   | j rtd|dk s|dkr&td|| _d S )Nz0cannot change parameters after starting to writer   r   zbad sample width)rY   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   s0   | j rtd|dkrtdtt|| _d S )Nz0cannot change parameters after starting to writer   zbad frame rate)rY   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)rY   r   r   )r   rK   r
   r
   r   
setnframesk  s    zWave_write.setnframesc             C   s   | j S )N)rX   )r   r
   r
   r   r4   p  s    zWave_write.getnframesc             C   s.   | j rtd|dkrtd|| _|| _d S )Nz0cannot change parameters after starting to writerR   zunsupported compression type)rR   )rY   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   sV   |\}}}}}}| j rtd| j| | j| | j| | j| | j|| d S )Nz0cannot change parameters after starting to write)rY   r   r]   r^   rb   rc   rf   )r   paramsr\   rV   ra   rK   rd   re   r
   r
   r   	setparams  s    



zWave_write.setparamsc             C   s>   | 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)rX   )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	rN| j	|}| jdkrpt
jdkrpt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   writerY   rX   )r   rL   rK   r
   r
   r   writeframesraw  s    
zWave_write.writeframesrawc             C   s"   | j | | j| jkr| j  d S )N)rr   rZ   rY   _patchheader)r   rL   r
   r
   r   writeframes  s    
zWave_write.writeframesc             C   sX   z2| j r0| jd | j| jkr&| j  | j j  W d d | _ | j}|rRd | _|j  X d S )Nr   )r   rp   rZ   rY   rs   flushr$   r(   )r   r    r
   r
   r   r(     s    
zWave_write.closec             C   s>   | j s:| jstd| js"td| js0t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   rp     s    z!Wave_write._ensure_header_writtenc             C   s   | j jd | js$|| j| j  | _| j| j | j | _y| j j | _W n tt	fk
rf   d | _Y n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   rq   r   r2   r5   rZ   r1   _form_length_posAttributeErrorOSErrorrS   packrU   r7   _data_length_posr[   )r   Z
initlengthr
   r
   r   rv     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<Lrw   )
rY   rZ   r   r1   rE   ry   rq   rS   r|   r}   )r   Zcurposr
   r
   r   rs     s    
zWave_write._patchheaderN)r   r   r	   r*   r"   r+   r,   r.   r]   r3   r^   r6   rb   r8   rc   r4   rf   r:   r<   rh   r=   rj   r@   r>   r1   rr   rt   r(   rp   rv   rs   r
   r
   r
   r   r   	  s8   

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#   rwrW   z$mode must be 'r', 'rb', 'w', or 'wb')r   r#   )r   rW   )hasattrr~   r   r   r   )r)   r~   r
   r
   r   r     s    
)Nr   r   Nr   )N)r'   __all__	Exceptionr   rU   Z_array_fmtsrH   rS   rF   r!   r   collectionsr   r   r   r   r   r   r
   r
   r
   r   <module>J   s"    , d
