o
    U)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   c/home/app/PaddleOCR-VL-test/.venv_paddleocr/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   Z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   Z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-   r.   r   r   r   
can_encodeX   r0   zSoXBackend.can_encode)r
   )r   r   TTNr
   )TNNNr
   N)__name__
__module____qualname__staticmethodr   r   strosPathLiker   r)   r   r   boolr   torchZTensorr    
torchaudioioZCodecConfigr(   r+   r/   r1   r   r   r   r   r	      sv    .	
!(,r	   )r7   typingr   r   r   r   r:   r;   backendr   commonr   
_extensionZlazy_import_sox_extr   r	   r   r   r   r   <module>   s    
