U e5d6G�@s�ddlZdddddgZGdd�de�ZdZd ZddlZddlZddlZdd l m Z dd l m Z ddl Z e d d �ZGdd�d�ZGdd�d�Zddd�Zddd�ZdS)�N�open�openfp�Error� Wave_read� Wave_writec@s eZdZdS)rN)�__name__� __module__� __qualname__�r r �/usr/lib64/python3.8/wave.pyrNs�)N�b�hN�i)�Chunk)� namedtuple� _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 k r�Yq�YnX|��}|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|���YnXdS)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��\}|_|_}}Wntjk r@td�YnX|tkr�zt�d|�d��d}Wntjk r�td�YnX|dd|_|js�t d��nt d |f��|js�t d ��|j|j|_ d |_ d |_ dS) Nzr?rArCrFrIrJrKrPrRr]rr r r r r_s* c@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|���YnXdS)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&:szWave_write.initfpcCs |��dSr1r2r3r r r r4FszWave_write.__del__cCs|Sr1r r3r r r r5IszWave_write.__enter__cGs |��dSr1r2r6r r r r8LszWave_write.__exit__cCs(|jrtd��|dkrtd��||_dS)N�0cannot change parameters after starting to writer rc)rkrr=)r#� nchannelsr r r � setnchannelsRs zWave_write.setnchannelscCs|jstd��|jS)Nznumber of channels not set)r=rr3r r r r>YszWave_write.getnchannelscCs0|jrtd��|dks|dkr&td��||_dS)Nrnr rrb)rkrr@)r#rhr r r � setsampwidth^s zWave_write.setsampwidthcCs|jstd��|jS)Nzsample width not set)r@rr3r r r rAeszWave_write.getsampwidthcCs0|jrtd��|dkrtd��tt|��|_dS)Nrnrzbad frame rate)rkr�int�roundrB)r#� framerater r r � setframeratejs zWave_write.setframeratecCs|jstd��|jS)Nzframe rate not set)rBrr3r r r rCqszWave_write.getframeratecCs|jrtd��||_dS�Nrn)rkrr!)r#r[r r r � setnframesvszWave_write.setnframescCs|jSr1�rjr3r r r r?{szWave_write.getnframescCs.|jrtd��|dkrtd��||_||_dS)Nrn)rdzunsupported compression type)rkrrErH)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��|�|�|�|�|�|�|�|�|�||�dSrv)rkrrprqrurwr{)r#Zparamsrorhrtr[ryrzr 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|jSr1rxr3r 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�writerkrj)r#r\r[r r r �writeframesraw�s  zWave_write.writeframesrawcCs"|�|�|j|jkr|��dSr1)r�rlrk� _patchheader)r#r\r r r � writeframes�s  zWave_write.writeframescCsXz2|jr0|�d�|j|jkr&|��|j��W5d|_|j}|rRd|_|��XdS)Nr)rr)r-r�rlrkr��flushr;r r r r-�s  zWave_write.closecCs>|js:|jstd��|js"td��|js0td��|�|�dS)Nz# channels not specifiedzsample width not specifiedzsampling rate not specified)rmr=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 fk rfd|_YnX|j�t � dd|jdddt |j|j |j|j |j|j|j|jdd� �|jdk r�|j��|_|j�t � d |j��d |_dS) NrzrqrArurCrwr?r{rFrIr|rJr~rPrKr<r�r�r-r�r�r�r r r r rs8     cCsJ|dkrt|d�r|j}nd}|dkr.t|�S|dkr>t|�Std��dS)N�moder')�rr')�wriz$mode must be 'r', 'rb', 'w', or 'wb')�hasattrr�rrr�r/r�r r r r�s cCstjdtdd�t||d�S)NzBwave.openfp is deprecated since Python 3.7. Use wave.open instead.r_)� stacklevel)r�)�warnings�warn�DeprecationWarningrr�r r r rs �)N)N)r,�__all__� ExceptionrrgZ _array_fmtsrXrerVr%r� collectionsrr�rrrrrr r r r �Js&  �6d