
    ujh                          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                  j                         Z G d de	      Zy)    N)BinaryIOOptionalTupleUnion   )Backend)AudioMetaDatac                   *   e Zd Zeddeeeej                  f   de	e   de
def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       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       Zedeeeej                  f   de	e   defd       Zedeeeej                  f   de	e   defd       Zy)
SoXBackenduriformatbuffer_sizereturnc                     t        | d      rt        dd      t        j                  | |      }|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   sinfos       U/var/www/html/dev/engine/venv/lib/python3.12/site-packages/torchaudio/_backend/sox.pyinfozSoXBackend.info   sV    3Or 
 $$S&1E$e,,"%B3%q#IJJ    Nframe_offset
num_frames	normalizechannels_firstc                     t        | d      rt        dd      t        j                  | |||||      }|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   rets           r   loadzSoXBackend.load   s\     3Or 
 ))#|ZTbdjkC"%?uA#FGGJr   srcsample_rateencodingbits_per_samplecompressionc	           
          t        |t        t        t        d       f      st	        ddt        |             t        | d      rt	        dd      t        j                  | |||||||       y )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(   s	            r   savezSoXBackend.save1   s     +sDJ'?@[DT+EVDWX  3 Mp 
 ##	r   c                     t        | d       S )Nr   r   r   r   s     r   
can_decodezSoXBackend.can_decodeS   s     3'''r   c                     t        | d       S )Nr*   r2   r3   s     r   
can_encodezSoXBackend.can_encodeX   s     3(((r   )   )r   TTNr7   )TNNNr7   N)__name__
__module____qualname__staticmethodr   r   strosPathLiker   r-   r	   r   boolr   torchTensorr#   
torchaudioioCodecConfigr,   r0   r4   r6    r   r   r   r      s"   K%#r{{23 KXc] KY\ Khu K K  # $8S"++-.  	
    
u||S 	! ( 
  $ $"&)-NR8S"++-.\\  	
  3- "#  eJMM$=$=uc$IJK 
 B (hR[[89 (8C= (UY ( ( )hR[[89 )8C= )UY ) )r   r   )r>   typingr   r   r   r   rA   rC   backendr   commonr	   
_extensionlazy_import_sox_extr   r   rF   r   r   <module>rL      s<    	 3 3    !



3
3
5N) N)r   