o
    i	                     @   sH   d Z ddlZddlmZ ddlmZ G dd deZG dd	 d	eZdS )
z-Decode MPEG audio files with MAD (via pymad).    N   )DecodeError)	AudioFilec                   @   s   e Zd ZdZdS )UnsupportedErrorz The file is not readable by MAD.N)__name__
__module____qualname____doc__ r
   r
   _/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/audioread/maddec.pyr      s    r   c                   @   sn   e Zd ZdZdd Zdd ZdddZed	d
 Zedd Z	edd Z
dd Zdd Zdd Zdd ZdS )MadAudioFilez.MPEG audio file decoder using the MAD library.c                 C   s8   t |d| _t| j| _| j s| j  t d S )Nrb)openfpmadZMadFilemf
total_timecloser   )selffilenamer
   r
   r   __init__   s   

zMadAudioFile.__init__c                 C   s*   t | dr
| j  t | dr| `d S d S )Nr   r   )hasattrr   r   r   r   r
   r
   r   r   #   s
   


zMadAudioFile.close   c                 c   s$    	 | j |}|sdS t|V  q)zBGenerates buffers containing PCM data for the audio file.
        TN)r   readbytes)r   
block_sizeoutr
   r
   r   read_blocks)   s   
zMadAudioFile.read_blocksc                 C   s
   | j  S )zSample rate in Hz.)r   
samplerater   r
   r
   r   r   2   s   
zMadAudioFile.sampleratec                 C   s   t | j d S )z)Length of the audio in seconds (a float).i  )floatr   r   r   r
   r
   r   duration7   s   zMadAudioFile.durationc                 C   s6   | 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   ZMODE_SINGLE_CHANNELZMODE_DUAL_CHANNELZMODE_JOINT_STEREOZMODE_STEREOr   r
   r
   r   channels<   s   zMadAudioFile.channelsc                 C   s   |    d S Nr   r   r
   r
   r   __del__I   s   zMadAudioFile.__del__c                 C   s   |   S r%   )r   r   r
   r
   r   __iter__M   s   zMadAudioFile.__iter__c                 C   s   | S r%   r
   r   r
   r
   r   	__enter__Q   s   zMadAudioFile.__enter__c                 C   s   |    dS )NFr&   )r   exc_typeexc_valexc_tbr
   r
   r   __exit__T   s   zMadAudioFile.__exit__N)r   )r   r   r   r	   r   r   r   propertyr   r!   r$   r'   r(   r)   r-   r
   r
   r
   r   r      s    
	


r   )r	   r    r   baser   r   r   r
   r
   r
   r   <module>   s   