U e5d�G � @ s� d dl mZ d dlZedd�ZdZdZdZdZd Zd Z dZ dZd ZdZ dZdZdZdZeeeee egZG dd� de�Zdd� Zdd� ZG dd� d�ZG dd� d�Zd!dd�Zd"dd �ZdS )#� )� namedtupleN� _sunau_paramsz7nchannels sampwidth framerate nframes comptype compnameidns.� � � � � � � � � � � � l �� c @ s e Zd ZdS )�ErrorN)�__name__� __module__�__qualname__� r r �/usr/lib64/python3.8/sunau.pyr � s r c C s8 d}t d�D ]&}| �d�}|s"t�|d t|� }q|S )Nr r r � )�range�read�EOFError�ord)�file�x�iZbyter r r � _read_u32� s r c C sF g }t d�D ]&}t|d�\}}|�dt|�� |}q| �t|�� d S )Nr r r )r �divmod�insert�int�write�bytes)r r �datar �d�mr r r � _write_u32� s r' c @ s� e Zd Zdd� Zdd� Zdd� Zdd� Zd d � Zdd� Zd d� Z dd� Z dd� Zdd� Zdd� Z dd� Zdd� Zdd� Zdd� Zdd � Zd!d"� Zd#d$� Zd%d&� Zd'd(� Zd)S )*�Au_readc C s@ t |�t d�kr,dd l}|�|d�}d| _nd| _| �|� d S )N� r �rbTF��type�builtins�open�_opened�initfp��self�fr- r r r �__init__� s zAu_read.__init__c C s | j r| �� d S �N��_file�close�r2 r r r �__del__� s zAu_read.__del__c C s | S r5 r r9 r r r � __enter__� s zAu_read.__enter__c G s | � � d S r5 �r8 �r2 �argsr r r �__exit__� s zAu_read.__exit__c C s� || _ d| _tt|��}|tkr(td��tt|��| _| jdk rHtd��| jdkrZtd��t|�| _| jtkrzt| j�| _tt|��| _ | j t kr�td��| j ttfkr�d| _ d | _nj| j tkr�d | _| _ nR| j tkr�d | _| _ n:| j tkr�d | _| _ n"| j tk�rd | _| _ ntd��tt|��| _tt|��| _| j�sLtd ��| j| j | _| jdk�r�|�| jd �| _| j�d�\| _}}nd| _z|�� | _W n ttfk �r� d | _Y nX d S )Nr zbad magic numberr zheader size too small�d zheader size ridiculously largezencoding not (yet) supportedr r r r zunknown encodingzbad # of channels� � )r7 � _soundposr! r �AUDIO_FILE_MAGICr Z _hdr_size� _data_size�AUDIO_UNKNOWN_SIZE� _encoding�_simple_encodings�AUDIO_FILE_ENCODING_MULAW_8�AUDIO_FILE_ENCODING_ALAW_8� _sampwidth� _framesize�AUDIO_FILE_ENCODING_LINEAR_8�AUDIO_FILE_ENCODING_LINEAR_16�AUDIO_FILE_ENCODING_LINEAR_24�AUDIO_FILE_ENCODING_LINEAR_32� _framerate� _nchannelsr �_info� partition�tell� _data_pos�AttributeError�OSError)r2 r �magic�_r r r r0 � sV � zAu_read.initfpc C s | j S r5 )r7 r9 r r r �getfp� s z Au_read.getfpc C s | j S r5 )rR r9 r r r �getnchannels� s zAu_read.getnchannelsc C s | j S r5 )rK r9 r r r �getsampwidth� s zAu_read.getsampwidthc C s | j S r5 )rQ r9 r r r �getframerate� s zAu_read.getframeratec C s( | j tkrtS | jtkr$| j | j S dS �Nr )rE rF rG rH rL r9 r r r � getnframes� s zAu_read.getnframesc C s$ | j tkrdS | j tkrdS dS d S )N�ULAW�ALAW�NONE�rG rI rJ r9 r r r �getcomptype� s zAu_read.getcomptypec C s$ | j tkrdS | j tkrdS dS d S )N�CCITT G.711 u-law�CCITT G.711 A-law�not compressedrd r9 r r r �getcompname� s zAu_read.getcompnamec C s* t | �� | �� | �� | �� | �� | �� �S r5 �r r\ r] r^ r` re ri r9 r r r � getparams s �zAu_read.getparamsc C s d S r5 r r9 r r r � getmarkers s zAu_read.getmarkersc C s t d��d S )Nzno marks)r )r2 �idr r r �getmark s zAu_read.getmarkc C sp | j tkrl|tkr| j�� }n| j�|| j �}| jt|�| j 7 _| j tkrhdd l }|� || j�}|S d S r_ )rG rH rF r7 r rL rC �lenrI �audioopZulaw2linrK )r2 �nframesr$ rp r r r � readframes s zAu_read.readframesc C s* | j d krtd��| j�| j � d| _d S )N�cannot seekr )rV rX r7 �seekrC r9 r r r �rewind s zAu_read.rewindc C s | j S r5 )rC r9 r r r rU ! s zAu_read.tellc C sP |dk s|| � � krtd��| jd kr.td��| j�| j|| j � || _d S )Nr zposition not in rangers )r` r rV rX r7 rt rL rC )r2 �posr r r �setpos$ s zAu_read.setposc C s" | j }|rd | _ | jr|�� d S r5 )r7 r/ r8 �r2 r r r r r8 , s z Au_read.closeN)r r r r4 r: r; r? r0 r[ r\ r] r^ r` re ri rk rl rn rr ru rU rw r8 r r r r r( � s( . r( c @ s� e Zd Zdd� Zdd� Zdd� Zdd� Zd d � Zdd� Zd d� 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/d0� Zd1d2� Zd3S )4�Au_writec C s@ t |�t d�kr,dd l}|�|d�}d| _nd| _| �|� d S )Nr) r �wbTFr+ r1 r r r r4 5 s zAu_write.__init__c C s | j r| �� d | _ d S r5 r6 r9 r r r r: > s zAu_write.__del__c C s | S r5 r r9 r r r r; C s zAu_write.__enter__c G s | � � d S r5 r<