o
0i] @ sr d dl Z d dlZd dlZddgZG dd deZdZdd 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-dZ"e#d.kr7d dl$Z$e$j%d/d se$j%&d0 e$j%d/ Z'e"e'd1Z(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;Z1e12e(3 e(4d<Z5e5sne16e5 qW d n 1 sw Y e)d= W d dS W d dS 1 s0w Y dS dS )? NErroropenc @ s e Zd ZdS )r N)__name__
__module____qualname__ r r +/opt/alt/python310/lib64/python3.10/aifc.pyr s l @Q E c C 0 zt d| dd W S t jy td w )N>l r structZunpackreaderrorEOFErrorfiler r r
_read_long
r c C r )N>Lr r r r r r r _read_ulong r r c C r )N>h r r r r r r _read_short r r c C r )N>Hr r r r r r r _read_ushort r r c C s@ t | d}|dkrd}n| |}|d@ dkr| d}|S )N r )ordr )r lengthdatadummyr r r _read_string s
r" gc C s t | }d}|dk rd}|d }t| }t| }|| kr'| kr'dkr/n nd} || S |dkr9t} || S |d }|d | td |d
} || S )Nr r g i? l g @? )r r _HUGE_VALpow)fexponsignhimantlomantr r r _read_float s "r. c C | td| d S )Nr writer
packr) xr r r _write_short r5 c C r/ )Nr r0 r3 r r r
_write_ushort r6 r7 c C r/ )Nr
r0 r3 r r r _write_long r6 r8 c C r/ )Nr r0 r3 r r r _write_ulong r6 r9 c C sV t |dkr
td| tdt | | | t |d@ dkr)| d d S d S )N z%string exceeds maximum pstring lengthBr r )len
ValueErrorr1 r
r2 )r) sr r r
_write_string s
r@ c C s dd l }|dk rd}|d }nd}|dkrd}d}d}nP||\}}|dks/|dks/||kr8|dB }d}d}n4|d }|dk rH|||}d}||B }||d}||}t|}||| d}||}t|}t| | t| | t| | d S ) Nr r$ r# i @ r r% i? )mathZfrexpZldexpZfloorintr7 r9 ) r) r4 rB 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 s, d| _ d | _g | _d| _|| _t|}| dkrtd|d}|dkr*d| _ n|dkr2d| _ ntdd| _
d | _ d| _zt| j}W n t
yP Y n:w | }|d krb| | d| _
n#|d
krr|| _|d}d| _n|dkr|t|| _ n |d
kr| | | q=| j
r| jstdd 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 _readmarkskip)selfr chunkZformdataZ chunknamer! r r r initfp4 sP
zAifc_read.initfpc C sF t |trt|d}z| | W d S | | | d S )Nrb)
isinstancestrbuiltinsr r^ closer\ r) Zfile_objectr r r __init__\ s
zAifc_read.__init__c C | S Nr r\ r r r __enter__h zAifc_read.__enter__c G | d S rg rc r\ argsr r r __exit__k zAifc_read.__exit__c C | j S rg )rU rh r r r getfpq zAifc_read.getfpc C s d| _ d| _d S )Nr r )rX rT rh r r r rewindt s
zAifc_read.rewindc C s$ | j }|d urd | _ | d S d S rg )rU rc r\ r r r r rc x s
zAifc_read.closec C rq rg )rT rh r r r tell~ rs zAifc_read.tellc C rq rg )
_nchannelsrh r r r getnchannels rs zAifc_read.getnchannelsc C rq rg )_nframesrh r r r
getnframes rs zAifc_read.getnframesc C rq rg )
_sampwidthrh r r r getsampwidth rs zAifc_read.getsampwidthc C rq rg )
_frameraterh r r r getframerate rs zAifc_read.getframeratec C rq rg _comptyperh r r r getcomptype rs zAifc_read.getcomptypec C rq rg _compnamerh r r r getcompname rs zAifc_read.getcompnamec C s* t | | | | | | S rg )rG rx r| r~ rz r r rh r r r getparams s zAifc_read.getparamsc C t | jdkr d S | jS Nr r= rS rh r r r
getmarkers zAifc_read.getmarkersc C . | j D ]}||d kr| S qtd|Nr zmarker {0!r} does not existrS r formatr\ idmarkerr r r getmark
zAifc_read.getmarkc C s* |dk s || j kr
td|| _d| _d S )Nr zposition not in ranger )ry r rT rX )r\ posr r r setpos s
zAifc_read.setposc C s | j r"| jd | jd}| j| j }|r| j|d d| _ |dkr(dS | j|| j }| jr;|r;| |}| jt|| j| j | _|S )Nr rN r )
rX rW seekr rT
_framesizerR r= rw r{ )r\ nframesr! r r r r r
readframes s
zAifc_read.readframesc C dd l }||dS Nr r )audioopZalaw2linr\ r r r r r _alaw2lin zAifc_read._alaw2linc C r r )r Zulaw2linr r r r _ulaw2lin r zAifc_read._ulaw2linc C 2 dd l }t| dsd | _||d| j\}| _|S Nr _adpcmstater )r hasattrr Z adpcm2linr r r r
_adpcm2lin s
zAifc_read._adpcm2linc C sR t || _t|| _t |d d | _tt|| _| jdkr#td| jdkr,td| j| j | _ | j
rd}|jdkrGd}t
d d |_|d
| _|rnt|jd}|d@ dkra|d }|j| |_|jdd t|| _| jdkr| jd
kr| j| _n| jdv r| j| _n| jdv r| j| _ntdd| _d S d S d| _d| _d S )N rN r bad sample widthbad # of channels r zWarning: bad COMM chunk size r r# NONE G722 ulaw ULAW alaw ALAWunsupported compression typer not compressed)r rw r ry r{ rC r. r} r r rV Z chunksizewarningswarnr r r r r r" r r rR r r )r\ r] Zkludger r r r rY sF
zAifc_read._read_comm_chunkc C s t |}z#t|D ]}t |}t|}t|}|s|r$| j|||f q W d S tyI dt| jt| jdkr