o
    i                      @   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                   @   sV  e Zd Zeddeeeejf de	e de
defddZe				
	
		ddeeeejf de
de
dedede	e de
deeje
f fddZe	
					ddeeeejf dejde
dede	e de	e de	e
 de
de	eejjee
f  ddfddZedeeeejf de	e defddZedeeeejf de	e defddZdS ) 
SoXBackend   uriformatbuffer_sizereturnc                 C   s<   t | dr
tddt| |}|rt| S td|  d)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   K/home/ubuntu/.local/lib/python3.10/site-packages/torchaudio/_backend/sox.pyinfo   s   
zSoXBackend.infor   TNframe_offset
num_frames	normalizechannels_firstc                 C   s@   t | dr
tddt| |||||}|std|  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   load_audio_filer   )r   r   r   r   r   r   r   retr   r   r   load   s   

zSoXBackend.loadsrcsample_rateencodingbits_per_samplecompressionc	           	   
   C   sX   t |tttd fstddt| t| drtdd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   save_audio_file)	r   r"   r#   r   r   r$   r%   r   r&   r   r   r   save1   s(   
zSoXBackend.savec                 C      t | d S )Nr   r   r   r   r   r   r   
can_decodeS      zSoXBackend.can_decodec                 C   r.   )Nr'   r/   r0   r   r   r   
can_encodeX   r2   zSoXBackend.can_encode)r
   )r   r   TTNr
   )TNNNr
   N)__name__
__module____qualname__staticmethodr   r   strosPathLiker   r*   r   r   boolr   torchTensorr!   
torchaudioioCodecConfigr)   r-   r1   r3   r   r   r   r   r	      sv    .	
!(,r	   )r9   typingr   r   r   r   r<   r>   backendr   commonr   
_extensionlazy_import_sox_extr   r	   r   r   r   r   <module>   s    
