a
´i] ã @ s^ d dl Z d dlZd dlZddgZG dd„ deƒZdZdd„ Zdd „ Zd
d„ Z dd
„ Z
dd„ ZdZdd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd dlmZ d d lmZ ed!d"ƒZd#ej_d$ej_d%ej_d&ej_d'ej_d(ej_G d)d*„ d*ƒZ G d+d,„ d,ƒZ!d>d-d„Z"e#d.k�rZd dl$Z$e$j%d/d… �s>e$j% &d0¡ e$j%d/ Z'e"e'd1ƒ�öZ(e)d2e'ƒ e)d3e( *¡ ƒ e)d4e( +¡ ƒ e)d5e( ,¡ ƒ e)d6e( -¡ ƒ e)d7e( .¡ ƒ e)d8e( /¡ ƒ e$j%d9d… �r:e$j%d9 Z0e)d:e0ƒ e"e0d;ƒ�@Z1e1 2e( 3¡ ¡ e( 4d<¡Z5e5�s�qe1 6e5¡ �qðW d ƒ n1 �s(0 Y e)d=ƒ W d ƒ n1 �sP0 Y dS )?é NÚErrorÚopenc @ s e Zd ZdS )r N)Ú__name__Ú
__module__Ú__qualname__© r r ú/usr/lib64/python3.9/aifc.pyr � s l @Q E c C s8 zt d| d¡¡d W S t jy2 td ‚Y n0 d S )Nú>lé r ©ÚstructÚunpackÚreadÚerrorÚEOFError©Úfiler r r Ú
_read_long” s r c C s8 zt d| d¡¡d W S t jy2 td ‚Y n0 d S )Nú>Lr
r r r r r r Ú_read_ulongš s r c C s8 zt d| d¡¡d W S t jy2 td ‚Y n0 d S )Nú>hé r r r r r r Ú_read_short s r c C s8 zt d| d¡¡d W S t jy2 td ‚Y n0 d S )Nú>Hr r r r r r r Ú_read_ushort¦ s r c C s@ t | d¡ƒ}|dkrd}n
| |¡}|d@ dkr<| d¡}|S )Né r ó )Úordr )r ÚlengthÚdataÚdummyr r r Ú_read_string¬ s
r! gâÿÿÿÿÿïc C s� t | ƒ}d}|dk r d}|d }t| ƒ}t| ƒ}|| krN| krNdkrXn nd} n0|dkrft} n"|d }|d | td |d
ƒ } || S )Nr r éÿÿÿÿé € g éÿ iÿ? l g @é? )r r Ú _HUGE_VALÚpow)ÚfÚexponÚsignÚhimantÚlomantr r r Ú_read_float¸ s "r- c C s | t d|¡¡ d S )Nr ©Úwriter Úpack©r( Úxr r r Ú_write_shortÉ s r3 c C s | t d|¡¡ d S )Nr r. r1 r r r Ú
_write_ushortÌ s r4 c C s | t d|¡¡ d S )Nr r. r1 r r r Ú_write_longÏ s r5 c C s | t d|¡¡ d S )Nr r. r1 r r r Ú_write_ulongÒ s r6 c C sR t |ƒdkrtdƒ‚| t dt |ƒ¡¡ | |¡ t |ƒd@ dkrN| d¡ d S )Néÿ z%string exceeds maximum pstring lengthÚBr r ó )ÚlenÚ
ValueErrorr/ r r0 )r( Úsr r r Ú
_write_stringÕ s
r= c C sú dd l }|dk rd}|d }nd}|dkr8d}d}d}n | |¡\}}|dks^|dks^||krp|dB }d}d}nh|d }|dk r�| ||¡}d}||B }| |d¡}| |¡}t|ƒ}| || d¡}| |¡}t|ƒ}t| |ƒ t| |ƒ t| |ƒ d S ) Nr r# r" i @ r r$ iþ? é )ÚmathÚfrexpÚldexpÚfloorÚintr4 r6 ) r( r2 r? r* r) r+ r, ZfmantZfsmantr r r Ú_write_floatÝ s8
rD )ÚChunk)Ú
namedtupleÚ_aifc_paramsz7nchannels sampwidth framerate nframes comptype compnamez3Number of audio channels (1 for mono, 2 for stereo)zSample width in byteszSampling frequencyzNumber of audio framesz(Compression type ("NONE" for AIFF files)zRA human-readable version of the compression type
('not compressed' for AIFF files)c @ sÐ e Zd ZdZdd„ Zdd„ Zdd„ Zdd „ Zd
d„ Zdd
„ Z dd„ Z
dd„ Zdd„ Zdd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ ZdS )2Ú Aifc_readNc C s6 d| _ d | _g | _d| _|| _t|ƒ}| ¡ dkr:tdƒ‚| d¡}|dkrTd| _ n|dkrdd| _ ntdƒ‚d| _
d | _d| _zt| jƒ}W n t
y¤ Y �qY n0 | ¡ }|d krÈ| |¡ d| _
nH|d
krè|| _| d¡}d| _n(|dkrüt|ƒ| _ n|d
k�r| |¡ | ¡ qx| j
�r*| j�s2tdƒ‚d S )Nr ó FORMz file does not start with FORM idr
ó AIFFó AIFCr znot an AIFF or AIFF-C fileó COMMó SSNDé ó FVERó MARKz$COMM chunk and/or SSND chunk missing)Ú_versionÚ_convertÚ_markersÚ _soundposÚ_filerE Zgetnamer r Ú_aifcZ_comm_chunk_readÚ_ssnd_chunkÚ_ssnd_seek_neededr Ú_read_comm_chunkr Ú _readmarkÚskip)Úselfr ÚchunkZformdataZ chunknamer r r r Úinitfp4 sH
zAifc_read.initfpc C sL t |tƒr>t |d¡}z| |¡ W qH | ¡ ‚ Y qH0 n
| |¡ d S )NÚrb)Ú
isinstanceÚstrÚbuiltinsr r^ Úclose©r\ r( Zfile_objectr r r Ú__init__\ s
zAifc_read.__init__c C s | S ©Nr ©r\ r r r Ú __enter__h s zAifc_read.__enter__c G s | ¡ d S rf ©rc ©r\ Úargsr r r Ú__exit__k s zAifc_read.__exit__c C s | j S rf )rU rg r r r Úgetfpq s zAifc_read.getfpc C s d| _ d| _d S )Nr r )rX rT rg r r r Úrewindt s zAifc_read.rewindc C s | j }|d urd | _ | ¡ d S rf )rU rc ©r\ r r r r rc x s zAifc_read.closec C s | j S rf )rT rg r r r Útell~ s zAifc_read.tellc C s | j S rf )Ú
_nchannelsrg r r r Úgetnchannels� s zAifc_read.getnchannelsc C s | j S rf )Ú_nframesrg r r r Ú
getnframes„ s zAifc_read.getnframesc C s | j S rf )Ú
_sampwidthrg r r r Úgetsampwidth‡ s zAifc_read.getsampwidthc C s | j S rf )Ú
_frameraterg r r r ÚgetframerateŠ s zAifc_read.getframeratec C s | j S rf ©Ú _comptyperg r r r Úgetcomptype� s zAifc_read.getcomptypec C s | j S rf ©Ú _compnamerg r r r Úgetcompname� s zAifc_read.getcompnamec C s* t | ¡ | ¡ | ¡ | ¡ | ¡ | ¡ ƒS rf )rG rr rv rx rt r{ r~ rg r r r Ú getparams– s þzAifc_read.getparamsc C s t | jƒdkrd S | jS ©Nr ©r: rS rg r r r Ú
getmarkers› s zAifc_read.getmarkersc C s2 | j D ]}||d kr| S qtd |¡ƒ‚d S ©Nr zmarker {0!r} does not exist©rS r Úformat©r\ ÚidÚmarkerr r r Úgetmark s
zAifc_read.getmarkc C s* |dk s|| j krtdƒ‚|| _d| _d S )Nr zposition not in ranger )rs r rT rX )r\ Úposr r r Úsetpos¦ s zAifc_read.setposc C s– | j rD| j d¡ | j d¡}| j| j }|r>| j |d ¡ d| _ |dkrPdS | j || j ¡}| jrv|rv| |¡}| jt|ƒ| j| j | _|S )Nr rN r )
rX rW Úseekr rT Ú
_framesizerR r: rq ru )r\ Únframesr rŠ r r r r Ú
readframes¬ s
ÿ
zAifc_read.readframesc C s dd l }| |d¡S ©Nr r )ÚaudioopZalaw2lin©r\ r r‘ r r r Ú _alaw2linÁ s zAifc_read._alaw2linc C s dd l }| |d¡S r� )r‘ Zulaw2linr’ r r r Ú _ulaw2linÅ s zAifc_read._ulaw2linc C s2 dd l }t| dƒsd | _| |d| j¡\}| _|S ©Nr Ú_adpcmstater )r‘ Úhasattrr– Z adpcm2linr’ r r r Ú
_adpcm2linÉ s
zAifc_read._adpcm2linc C sV t |ƒ| _t|ƒ| _t |ƒd d | _tt|ƒƒ| _| jdkrFtdƒ‚| jdkrXtdƒ‚| j| j | _ | j
�rFd}|jdkr�d}t
d¡ d |_| d
¡| _|rÞt|j d¡ƒ}|d@ dkrÄ|d }|j| |_|j dd¡ t|ƒ| _| jdk�rR| jd
k�r
| j| _n4| jdv �r | j| _n| jdv �r6| j| _ntdƒ‚d| _nd| _d| _d S )Né rN r úbad sample widthúbad # of channelsé r zWarning: bad COMM chunk sizeé r
r" ó NONEó G722©ó ulawó ULAW©ó alawó ALAWúunsupported compression typer ó not compressed)r rq r rs ru rC r- rw r r� rV Ú chunksizeÚwarningsÚwarnr rz r r rŒ r! r} r˜ rR r” r“ )r\ r] Zkludger r r r rY Ñ sD
zAifc_read._read_comm_chunkc C s” t |ƒ}zDt|ƒD ]6}t |ƒ}t|ƒ}t|ƒ}|s6|r| j |||f¡ qW nB tyŽ dt| jƒt| jƒdkrvdnd|f }t |¡ Y n0 d S )Nz;Warning: MARK chunk contains only %s marker%s instead of %sr Ú r<