o
    i
                     @   sj   d dl Z d dlmZ d dlmZ d dlmZmZmZ d dl	Z
d dlmZ d dlmZmZ G dd dZdS )	    N)cached_property)BytesIO)AnyIteratorOptional)standard_channel_layouts)
UINT32_MAXSecondsc                   @   s   e Zd Zddedee defddZedee fd	d
Z	edefddZ
edefddZedefddZedefddZedee fddZddedee deej fddZdS )BackendNFfile
frame_sizeforced_decodingc                 C   s(   || _ |d u r	tnt|t| _|| _d S N)r   r   minr   r   )selfr   r   r    r   S/home/ubuntu/.local/lib/python3.10/site-packages/audiolab/reader/backend/backend.py__init__   s   
zBackend.__init__returnc                 C   s6   d }| j d ur| jd ur| jdkr| j d | j }|S )Nr      )sizeduration)r   bit_rater   r   r   r       s
   
zBackend.bit_ratec                 C   s   dS NFr   r   r   r   r   	is_planar(      zBackend.is_planarc                 C   s   t | j }|d S )Nr   )r   num_channels)r   layoutsr   r   r   layout,   s   
zBackend.layoutc                 C   s   i S r   r   r   r   r   r   metadata1   r   zBackend.metadatac                 C   s   t | jtrdS | jS )Nz<none>)
isinstancer   r   r   r   r   r   name5   s   zBackend.namec                 C   sJ   t | jtrtj| jrt| jjS d S t | jtr#t	| j
 S d S r   )r!   r   strospathexistsstatst_sizer   len	getbufferr   r   r   r   r   9   s   zBackend.sizer   offsetr   c                 c   s~    |  t|| j  |d u rtnt|| j }|dkr=t|| j}| |}|d u r-d S ||jd 8 }|V  |dksd S d S )Nr      )seekintsample_rater   r   r   readshape)r   r+   r   framesr   ndarrayr   r   r   
load_audioB   s   
zBackend.load_audior   )r   N)__name__
__module____qualname__r   r   r.   boolr   r   r   r   r#   r   dictr    r"   r   r	   r   npr3   r4   r   r   r   r   r
      s    &r
   )r$   	functoolsr   ior   typingr   r   r   numpyr:   audiolab.avr   audiolab.av.typingr   r	   r
   r   r   r   r   <module>   s   