a
    h*                     @   sf   d dl Z d dlmZmZmZmZ d dlZd dlZddlm	Z	 ddl
mZ ej 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
e	eejjee
f  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   sB   t | drtddn(t| |}|r.t| 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sox_extget_infor   RuntimeError)r   r   r   sinfo r   E/var/www/auris/lib/python3.9/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t| |||||}|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   Zload_audio_filestrr   )r   r   r   r   r   r   r   retr   r   r   load   s    

zSoXBackend.load)
r   srcsample_rater   r   encodingbits_per_sampler   compressionr   c	           	   
   C   s^   t |tttd fs(tddt| t| dr>tddntt| ||||||| d S )NzISoX backend expects non-`None` value for argument `compression` to be of z2type `float` or `int`, but received value of type 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.)	
isinstancefloatinttyper   r   r   Zsave_audio_filer   )	r   r"   r#   r   r   r$   r%   r   r&   r   r   r   save1   s(    
zSoXBackend.save)r   r   r   c                 C   s   t | d S )Nr   r   r   r   r   r   r   
can_decodeS   s    zSoXBackend.can_decodec                 C   s   t | d S )Nr'   r-   r.   r   r   r   
can_encodeX   s    zSoXBackend.can_encode)r
   )r   r   TTNr
   )TNNNr
   N)__name__
__module____qualname__staticmethodr   r   r   osPathLiker   r*   r   r   boolr   torchZTensorr!   
torchaudioioZCodecConfigr)   r,   r/   r0   r   r   r   r   r	      sT   (            !$r	   )r5   typingr   r   r   r   r8   r9   backendr   commonr   Z
_extensionZlazy_import_sox_extr   r	   r   r   r   r   <module>   s   
