o
    *i
                     @   s   d Z ddlZddlmZmZ ddlZddlmZ ddlm	Z
 ddlmZmZ g dZd	ee fd
dZdee fddZdd Zd	ee fddZdS )z.Defines utilities for switching audio backends    N)ListOptional)soundfile_backend)module_utils   )_no_backend_sox_io_backend)list_audio_backendsget_audio_backendset_audio_backendreturnc                  C   s.   g } t dr| d tjjr| d | S )z]List available backends

    Returns:
        List[str]: The list of available backends.
    	soundfilesox_io)
_mod_utilsZis_module_availableappend
torchaudio
_extensionZ_SOX_INITIALIZEDbackends r   g/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/torchaudio/backend/utils.pyr	      s   


r	   backendc                 C   s   | dur| t  vrtd|  dt   d| du rt}n| dkr#t}n| dkr*t}ntd|  dd	D ]}tt|t|| q4dS )
a  Set the backend for I/O operation

    Args:
        backend (str or None): Name of the backend.
            One of ``"sox_io"`` or ``"soundfile"`` based on availability
            of the system. If ``None`` is provided the  current backend is unassigned.
    Nz	Backend "z$" is not one of available backends: .r   r   zUnexpected backend "")saveloadinfo)	r	   RuntimeError
no_backendsox_io_backendr   NotImplementedErrorsetattrr   getattr)r   modulefuncr   r   r   r       s   r   c                  C   sH   t jddd t } d| v rtd d S d| v rtd d S td  d S )NzTorchAudio's global backend is now deprecated. Please enable distpatcher by setting `TORCHAUDIO_USE_BACKEND_DISPATCHER=1`, and specify backend when calling load/info/save function.   )
stacklevelr   r   )warningswarnr	   r   r   r   r   r   _init_backend8   s   r)   c                   C   s8   t jtjkrdS t jtjkrdS t jtjkrdS td)zGet the name of the current backend

    Returns:
        Optional[str]: The name of the current backend or ``None`` if no backend is assigned.
    Nr   r   zUnknown backend.)r   r   r   r   r   
ValueErrorr   r   r   r   r
   H   s   r
   )__doc__r'   typingr   r   r   Ztorchaudio._backendr   Ztorchaudio._internalr   r    r   r   r   r   __all__strr	   r   r)   r
   r   r   r   r   <module>   s    