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