
    Pi	                     b    d Z ddlZddlmZ ddlmZ  G d de          Z G d d	e          ZdS )
z-Decode MPEG audio files with MAD (via pymad).    N   )DecodeError)	AudioFilec                       e Zd ZdZdS )UnsupportedErrorz The file is not readable by MAD.N)__name__
__module____qualname____doc__     d/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/audioread/maddec.pyr   r      s        ****r   r   c                       e Zd ZdZd Zd ZddZed             Zed             Z	ed             Z
d	 Zd
 Zd Zd ZdS )MadAudioFilez.MPEG audio file decoder using the MAD library.c                     t          |d          | _        t          j        | j                  | _        | j                                        s'| j                                         t                      d S )Nrb)openfpmadMadFilemf
total_timecloser   )selffilenames     r   __init__zMadAudioFile.__init__   sa    x&&+dg&&w!!## 	%GMMOOO"$$$	% 	%r   c                     t          | d          r| j                                         t          | d          r| `d S d S )Nr   r   )hasattrr   r   r   r   s    r   r   zMadAudioFile.close#   sH    4 	GMMOOO4 		 	r      c              #   h   K   	 | j                             |          }|sdS t          |          V  0)zBGenerates buffers containing PCM data for the audio file.
        TN)r   readbytes)r   
block_sizeouts      r   read_blockszMadAudioFile.read_blocks)   sB      	',,z**C **		r   c                 4    | j                                         S )zSample rate in Hz.)r   
samplerater   s    r   r(   zMadAudioFile.samplerate2   s     w!!###r   c                 T    t          | j                                                  dz  S )z)Length of the audio in seconds (a float).i  )floatr   r   r   s    r   durationzMadAudioFile.duration7   s%     TW''))**T11r   c                     | j                                         t          j        k    rdS | j                                         t          j        t          j        t          j        fv rdS dS )zThe number of channels.r      )r   moder   MODE_SINGLE_CHANNELMODE_DUAL_CHANNELMODE_JOINT_STEREOMODE_STEREOr   s    r   channelszMadAudioFile.channels<   s[     7<<>>S4441W\\^^ 5 # 5 # 1 1 1 1 1r   c                 .    |                                   d S Nr   r   s    r   __del__zMadAudioFile.__del__I   s    

r   c                 *    |                                  S r5   )r&   r   s    r   __iter__zMadAudioFile.__iter__M   s    !!!r   c                     | S r5   r   r   s    r   	__enter__zMadAudioFile.__enter__Q   s    r   c                 .    |                                   dS )NFr6   )r   exc_typeexc_valexc_tbs       r   __exit__zMadAudioFile.__exit__T   s    

ur   N)r    )r   r	   r
   r   r   r   r&   propertyr(   r+   r3   r7   r9   r;   r@   r   r   r   r   r      s        88% % %      $ $ X$ 2 2 X2 
 
 X
  " " "      r   r   )r   r    r   baser   r   r   r   r   r   <module>rD      s    4 3 



            + + + + +{ + + +< < < < <9 < < < < <r   