U
    -e	                     @   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
   Q/var/www/html/Darija-Ai-Train/env/lib/python3.8/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 s4| 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 )Nr   r   )hasattrr   r   r   r   r
   r
   r   r   #   s    


zMadAudioFile.close   c                 c   s"   | j |}|sqt|V  q dS )zBGenerates buffers containing PCM data for the audio file.
        N)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   s:   | j  tjkrdS | j  tjtjtjfkr2dS dS dS )zThe number of channels.r      N)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
   