a XC?hTF�@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 �)/opt/alt/python39/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_chunkZ 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|Sr0r r2r r r � __enter__�szWave_read.__enter__cGs |��dSr0r1�r"�argsr r r �__exit__�szWave_read.__exit__cCs|jSr0)rr2r r r �getfp�szWave_read.getfpcCsd|_d|_dS)Nr r)rrr2r r r �rewind�szWave_read.rewindcCs"d|_|j}|rd|_|��dSr0)rr(r,�r"r#r r r r,�s zWave_read.closecCs|jSr0)rr2r r r �tell�szWave_read.tellcCs|jSr0)� _nchannelsr2r r r � getnchannels�szWave_read.getnchannelscCs|jSr0)r r2r r r � getnframes�szWave_read.getnframescCs|jSr0)� _sampwidthr2r r r � getsampwidth�szWave_read.getsampwidthcCs|jSr0)� _framerater2r r r � getframerate�szWave_read.getframeratecCs|jSr0�� _comptyper2r r r � getcomptype�szWave_read.getcomptypecCs|jSr0�� _compnamer2r r r � getcompname�szWave_read.getcompnamecCs*t|��|��|��|��|��|���Sr0)rr=r@rBr>rErHr2r r r � getparams�s  �zWave_read.getparamscCsdSr0r r2r 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�seekrrrr?�sys� byteorder�audioop�byteswapr�lenr<)r"�nframesrP�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@rBrErHrIrJrOrQr\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 r/-s  zWave_write.__init__cCs@||_d|_d|_d|_d|_d|_d|_d|_d|_d|_ dS)NrF) rrr<r?rAr �_nframeswritten� _datawritten� _datalength�_headerwrittenr:r r r r%9szWave_write.initfpcCs |��dSr0r1r2r r r r3EszWave_write.__del__cCs|Sr0r r2r r r r4HszWave_write.__enter__cGs |��dSr0r1r5r r r r7KszWave_write.__exit__cCs(|jrtd��|dkrtd��||_dS)N�0cannot change parameters after starting to writer rb)rjrr<)r"� nchannelsr r r � setnchannelsQs zWave_write.setnchannelscCs|jstd��|jS)Nznumber of channels not set)r<rr2r r r r=XszWave_write.getnchannelscCs0|jrtd��|dks|dkr&td��||_dS)Nrmr rra)rjrr?)r"rgr r r � setsampwidth]s zWave_write.setsampwidthcCs|jstd��|jS)Nzsample width not set)r?rr2r r r r@dszWave_write.getsampwidthcCs0|jrtd��|dkrtd��tt|��|_dS)Nrmrzbad frame rate)rjr�int�roundrA)r"� framerater r r � setframerateis zWave_write.setframeratecCs|jstd��|jS)Nzframe rate not set)rArr2r r r rBpszWave_write.getframeratecCs|jrtd��||_dS�Nrm)rjrr )r"rZr r r � setnframesuszWave_write.setnframescCs|jSr0�rir2r r r r>zszWave_write.getnframescCs.|jrtd��|dvrtd��||_||_dS)Nrm)rczunsupported compression type)rjrrDrG)r"�comptype�compnamer r r � setcomptype}s zWave_write.setcomptypecCs|jSr0rCr2r r r rE�szWave_write.getcomptypecCs|jSr0rFr2r r r rH�szWave_write.getcompnamecCsV|\}}}}}}|jrtd��|�|�|�|�|�|�|�|�|�||�dSru)rjrrorprtrvrz)r"�paramsrnrgrsrZrxryr r r � setparams�s    zWave_write.setparamscCs8|jr|jr|jstd��t|j|j|j|j|j|j�S)Nznot all parameters set)r<r?rArrr rDrGr2r r r rI�s  �zWave_write.getparamscCs td��dS)Nzsetmark() not supportedrL)r"rNrP�namer r r �setmark�szWave_write.setmarkcCs td��dSrKrLrMr r r rO�szWave_write.getmarkcCsdSr0r r2r r r rJ�szWave_write.getmarkerscCs|jSr0rwr2r 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 rS)r)�bytes� bytearray� memoryview�cast�_ensure_header_writtenrYr?r<rrUrVrWrXr�writerjri)r"r[rZr r r �writeframesraw�s  zWave_write.writeframesrawcCs"|�|�|j|jkr|��dSr0)r�rkrj� _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�rkrjr��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)rlr<rr?rA� _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) NrzrzrErHr|rIr~rOrJr;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&)�wrhz$mode must be 'r', 'rb', 'w', or 'wb')�hasattrr�rrr)r.r�r r r r�s r)N)r$r� collectionsrrWr+rdrU�__all__� ExceptionrrfZ _array_fmtsrrrrr r r r �Js"  �6d