
    tKg	                     T    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y)
z-Decode MPEG audio files with MAD (via pymad).    N   )DecodeError)	AudioFilec                       e Zd ZdZy)UnsupportedErrorz The file is not readable by MAD.N)__name__
__module____qualname____doc__     T/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/audioread/maddec.pyr   r      s    *r   r   c                   l    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y)MadAudioFilez.MPEG audio file decoder using the MAD library.c                     t        |d      | _        t        j                  | j                        | _        | j                  j                         s$| j                  j                          t               y )Nrb)openfpmadMadFilemf
total_timecloser   )selffilenames     r   __init__zMadAudioFile.__init__   sO    x&++dgg&ww!!#GGMMO"$$ $r   c                 n    t        | d      r| j                  j                          t        | d      r| `y y )Nr   r   )hasattrr   r   r   r   s    r   r   zMadAudioFile.close#   s-    4GGMMO4 r   c              #   d   K   	 | j                   j                  |      }|syt        |       ,w)zBGenerates buffers containing PCM data for the audio file.
        N)r   readbytes)r   
block_sizeouts      r   read_blockszMadAudioFile.read_blocks)   s2      '',,z*C*	 s   .0c                 6    | j                   j                         S )zSample rate in Hz.)r   
samplerater   s    r   r'   zMadAudioFile.samplerate2   s     ww!!##r   c                 N    t        | j                  j                               dz  S )z)Length of the audio in seconds (a float).i  )floatr   r   r   s    r   durationzMadAudioFile.duration7   s!     TWW'')*T11r   c                     | j                   j                         t        j                  k(  ry| j                   j                         t        j                  t        j
                  t        j                  fv ryy)zThe number of channels.r      )r   moder   MODE_SINGLE_CHANNELMODE_DUAL_CHANNELMODE_JOINT_STEREOMODE_STEREOr   s    r   channelszMadAudioFile.channels<   sX     77<<>S444WW\\^ 5 5 # 5 5 # 1 1  r   c                 $    | j                          y Nr   r   s    r   __del__zMadAudioFile.__del__I   s    

r   c                 "    | j                         S r4   )r%   r   s    r   __iter__zMadAudioFile.__iter__M   s    !!r   c                     | S r4   r   r   s    r   	__enter__zMadAudioFile.__enter__Q   s    r   c                 $    | j                          y)NFr5   )r   exc_typeexc_valexc_tbs       r   __exit__zMadAudioFile.__exit__T   s    

r   N)i   )r   r	   r
   r   r   r   r%   propertyr'   r*   r2   r6   r8   r:   r?   r   r   r   r   r      sd    8% $ $ 2 2 
 
"r   r   )r   r    r   baser   r   r   r   r   r   <module>rC      s+    4 
  +{ +<9 <r   