U
    ,:%e                     @   sT   d dl Z d dlmZmZmZmZ d dlZddlmZ ddl	m
Z
 G dd deZdS )    N)BinaryIOOptionalTupleUnion   )Backend)AudioMetaDatac                   @   s   e Zd Zedeeeejf e	e e
edddZedeeeejf e
e
eee	e e
eeje
f d	d
dZedeeeejf eje
ee	e e	e e	e
 e
dd	ddZeeeeejf e	e edddZeeeeejf e	e edddZdS )
SoXBackend   )uriformatbuffer_sizereturnc                 C   sF   t | drtddn,tjj| |}|r2t| S td|  dd S )Nreadz=SoX backend does not support reading from file-like objects. z`Please use an alternative backend that does support reading from file-like objects, e.g. FFmpeg.zFailed to fetch metadata for .)hasattr
ValueErrortorchops
torchaudioZsox_io_get_infor   RuntimeError)r   r   r   sinfo r   V/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/torchaudio/_backend/sox.pyinfo   s    
zSoXBackend.infor   TN)r   frame_offset
num_frames	normalizechannels_firstr   r   r   c                 C   sJ   t | drtddn0tjj| |||||}|sBtd|  d|S d S )Nr   z=SoX backend does not support loading from file-like objects. z`Please use an alternative backend that does support loading from file-like objects, e.g. FFmpeg.zFailed to load audio from r   )r   r   r   r   r   Zsox_io_load_audio_filer   )r   r   r   r   r   r   r   retr   r   r   load   s     

     zSoXBackend.load)	r   srcsample_rater   r   encodingbits_per_sampler   r   c              
   C   s6   t | drtddntjj| |||d ||| d S )Nwritez;SoX backend does not support writing to file-like objects. z^Please use an alternative backend that does support writing to file-like objects, e.g. FFmpeg.)r   r   r   r   r   Zsox_io_save_audio_file)r   r"   r#   r   r   r$   r%   r   r   r   r   save0   s    
zSoXBackend.save)r   r   r   c                 C   s   t | d S )Nr   r   r   r   r   r   r   
can_decodeL   s    zSoXBackend.can_decodec                 C   s   t | d S )Nr&   r(   r)   r   r   r   
can_encodeQ   s    zSoXBackend.can_encode)r
   )r   r   TTNr
   )TNNNr
   )__name__
__module____qualname__staticmethodr   r   strosPathLiker   intr   r   boolr   r   ZTensorr!   r'   r*   r+   r   r   r   r   r	   
   sP   (           $r	   )r1   typingr   r   r   r   r   backendr   commonr   r	   r   r   r   r   <module>   s
   