a �DOgTF�@s�ddlmZddlmZddlZddlZddlZddlZgd�ZGdd�de �Z dZ dZ ed d �Z Gd d �d �ZGd d�d�Zddd�ZdS)�)�Chunk)� namedtupleN)�open�Error� Wave_read� Wave_writec@s eZdZdS)rN)�__name__� __module__� __qualname__�r r �/usr/lib64/python3.9/wave.pyrTsr�)N�b�hN�i� _wave_paramsz7nchannels sampwidth framerate nframes comptype compnamec@s�eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd d�Z dd�Z dd�Z dd�Z dd�Z dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+S),rcCs�d|_d|_t|dd�|_|j��dkr0td��|j�d�dkrHtd��d|_d|_d|_ zt|jdd�}Wnt y�Yq�Yn0|��}|d kr�|� |�d|_n2|d kr�|js�td ��||_|j |j |_d|_ q�|��qT|jr�|js�td ��dS) Nr)Z bigendian�RIFFz file does not start with RIFF id��WAVEznot a WAVE filer �fmt �datazdata chunk before fmt chunkz#fmt chunk and/or data chunk missing)�_convert� _soundposr�_fileZgetnamer�readZ_fmt_chunk_read� _data_chunk�_data_seek_needed�EOFError�_read_fmt_chunk� chunksize� _framesize�_nframes�skip)�self�file�chunkZ chunknamer r r �initfp}s8     zWave_read.initfpcCsRd|_t|t�r"t�|d�}||_z|�|�Wn|jrF|���Yn0dS)N�rb��_i_opened_the_file� isinstance�str�builtinsrr&�close�r#�fr r r �__init__�s  zWave_read.__init__cCs |��dS�N�r-�r#r r r �__del__�szWave_read.__del__cCs|Sr1r r3r r r � __enter__�szWave_read.__enter__cGs |��dSr1r2�r#�argsr r r �__exit__�szWave_read.__exit__cCs|jSr1)rr3r r r �getfp�szWave_read.getfpcCsd|_d|_dS)Nr r)rrr3r r r �rewind�szWave_read.rewindcCs"d|_|j}|rd|_|��dSr1)rr)r-�r#r$r r r r-�s zWave_read.closecCs|jSr1)rr3r r r �tell�szWave_read.tellcCs|jSr1)� _nchannelsr3r r r � getnchannels�szWave_read.getnchannelscCs|jSr1)r!r3r r r � getnframes�szWave_read.getnframescCs|jSr1)� _sampwidthr3r r r � getsampwidth�szWave_read.getsampwidthcCs|jSr1)� _framerater3r r r � getframerate�szWave_read.getframeratecCs|jSr1�� _comptyper3r r r � getcomptype�szWave_read.getcomptypecCs|jSr1�� _compnamer3r r r � getcompname�szWave_read.getcompnamecCs*t|��|��|��|��|��|���Sr1)rr>rArCr?rFrIr3r r r � getparams�s  �zWave_read.getparamscCsdSr1r r3r r r � getmarkers�szWave_read.getmarkerscCs td��dS�Nzno marks�r�r#�idr r r �getmark�szWave_read.getmarkcCs*|dks||jkrtd��||_d|_dS)Nrzposition not in ranger )r!rrr)r#�posr r r �setpos�szWave_read.setposcCs�|jr8|j�dd�|j|j}|r2|j�|d�d|_|dkrDdS|j�||j�}|jdkrxtjdkrxt � ||j�}|j r�|r�|� |�}|jt |�|j |j|_|S)Nr�r �big)rr�seekrr rr@�sys� byteorder�audioop�byteswapr�lenr=)r#�nframesrQ�datar r r � readframes�s   zWave_read.readframescCs�z$t�d|�d��\}|_|_}}Wntjy>td�Yn0|tkr�zt�d|�d��d}Wntjy|td�Yn0|dd|_|js�t d��nt d |f��|js�t d ��|j|j|_ d |_ d |_ dS) Nzr?rArCrFrIrJrKrPrRr]rr r r r r^s* rc@s�eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd d�Z dd�Z dd�Z dd�Z dd�Z dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9S):rcCsRd|_t|t�r"t�|d�}||_z|�|�Wn|jrF|���Yn0dS)N�wbr(r.r r r r0-s  zWave_write.__init__cCs@||_d|_d|_d|_d|_d|_d|_d|_d|_d|_ dS)NrF) rrr=r@rBr!�_nframeswritten� _datawritten� _datalength�_headerwrittenr;r r r r&9szWave_write.initfpcCs |��dSr1r2r3r r r r4EszWave_write.__del__cCs|Sr1r r3r r r r5HszWave_write.__enter__cGs |��dSr1r2r6r r r r8KszWave_write.__exit__cCs(|jrtd��|dkrtd��||_dS)N�0cannot change parameters after starting to writer rc)rlrr=)r#� nchannelsr r r � setnchannelsQs zWave_write.setnchannelscCs|jstd��|jS)Nznumber of channels not set)r=rr3r r r r>XszWave_write.getnchannelscCs0|jrtd��|dks|dkr&td��||_dS)Nror rrb)rlrr@)r#rir r r � setsampwidth]s zWave_write.setsampwidthcCs|jstd��|jS)Nzsample width not set)r@rr3r r r rAdszWave_write.getsampwidthcCs0|jrtd��|dkrtd��tt|��|_dS)Nrorzbad frame rate)rlr�int�roundrB)r#� framerater r r � setframerateis zWave_write.setframeratecCs|jstd��|jS)Nzframe rate not set)rBrr3r r r rCpszWave_write.getframeratecCs|jrtd��||_dS�Nro)rlrr!)r#r[r r r � setnframesuszWave_write.setnframescCs|jSr1�rkr3r r r r?zszWave_write.getnframescCs.|jrtd��|dvrtd��||_||_dS)Nro)rdzunsupported compression type)rlrrErH)r#�comptype�compnamer r r � setcomptype}s zWave_write.setcomptypecCs|jSr1rDr3r r r rF�szWave_write.getcomptypecCs|jSr1rGr3r r r rI�szWave_write.getcompnamecCsV|\}}}}}}|jrtd��|�|�|�|�|�|�|�|�|�||�dSrw)rlrrqrrrvrxr|)r#�paramsrprirur[rzr{r r r � setparams�s    zWave_write.setparamscCs8|jr|jr|jstd��t|j|j|j|j|j|j�S)Nznot all parameters set)r=r@rBrrr!rErHr3r r r rJ�s  �zWave_write.getparamscCs td��dS)Nzsetmark() not supportedrM)r#rOrQ�namer r r �setmark�szWave_write.setmarkcCs td��dSrLrMrNr r r rP�szWave_write.getmarkcCsdSr1r r3r r r rK�szWave_write.getmarkerscCs|jSr1ryr3r r r r<�szWave_write.tellcCs�t|ttf�st|��d�}|�t|��t|�|j|j}|j rN|� |�}|jdkrpt j dkrpt � ||j�}|j�|�|jt|�7_|j||_dS)N�Br rT)r*�bytes� bytearray� memoryview�cast�_ensure_header_writtenrZr@r=rrVrWrXrYr�writerlrk)r#r\r[r r r �writeframesraw�s  zWave_write.writeframesrawcCs"|�|�|j|jkr|��dSr1)r�rmrl� _patchheader)r#r\r r r � writeframes�s  zWave_write.writeframescCsvzP|jr0|�d�|j|jkr&|��|j��Wd|_|j}|rrd|_|��n d|_|j}|rpd|_|��0dS)Nr)rr�rmrlr��flushr)r-r;r r r r-�s     �zWave_write.closecCs>|js:|jstd��|js"td��|js0td��|�|�dS)Nz# channels not specifiedzsample width not specifiedzsampling rate not specified)rnr=rr@rB� _write_header)r#Zdatasizer r r r��sz!Wave_write._ensure_header_writtencCs�|j�d�|js$||j|j|_|j|j|j|_z|j��|_Wntt fydd|_Yn0|j�t � dd|jdddt |j|j |j|j |j|j|j|jdd� �|jdur�|j��|_|j�t � d |j��d |_dS) NrzrrrArvrCrxr?r|rFrIr~rJr�rPrKr<r�r�r-r�r�r�r r r r rs8     rcCsJ|durt|d�r|j}nd}|dvr.t|�S|dvr>t|�Std��dS)N�moder')�rr')�wrjz$mode must be 'r', 'rb', 'w', or 'wb')�hasattrr�rrr)r/r�r r r r�s r)N)r%r� collectionsrrXr,rerV�__all__� ExceptionrrhZ _array_fmtsrrrrr r r r �Js"  �6d