
    hE"                     0   S r SSKJrJrJr  SSKr\R                  R                  5       rSSK	J
r
  \
S\\\\   4   4S j5       r\
S\4S j5       r\
S\4S	 j5       r\
S\\\4   4S
 j5       r\
S\\\4   4S j5       r\
S\\\4   4S j5       r\
S\\\4   4S j5       r\
S\\\4   4S j5       r\
S\\\4   4S j5       r\
S\\\4   4S j5       r\
S\\\4   4S j5       r\
S\\   4S j5       r\
S\\   4S j5       r\
S\4S j5       r\
S 5       rg)a  Module to change the configuration of FFmpeg libraries (such as libavformat).

It affects functionalities in :py:mod:`torio.io`.

.. warning::
    Starting with version 2.8, we are refactoring TorchAudio to transition it
    into a maintenance phase. As a result:

    - Some APIs are deprecated in 2.8 and will be removed in 2.9.
    - The decoding and encoding capabilities of PyTorch for both audio and video
      are being consolidated into TorchCodec.

    Please see https://github.com/pytorch/audio/issues/3902 for more information.
    )DictListTupleN)dropping_supportreturnc                  *    [         R                  5       $ )zGet the versions of FFmpeg libraries

Returns:
    dict: mapping from library names to version string,
        i.e. `"libavutil": (56, 22, 100)`.
)
ffmpeg_extget_versions     P/var/www/auris/envauris/lib/python3.13/site-packages/torio/utils/ffmpeg_utils.pyr
   r
      s     ""$$r   c                  *    [         R                  5       $ )zKGet the log level of FFmpeg.

See :py:func:`set_log_level` for the detail.
)r	   get_log_levelr   r   r   r   r   $   s     ##%%r   levelc                 .    [         R                  U 5        g)a  Set the log level of FFmpeg (libavformat etc)

Arguments:
    level (int): Log level. The larger, the more verbose.

        The following values are common values, the corresponding ``ffmpeg``'s
        ``-loglevel`` option value and desription.

            * ``-8`` (``quiet``):
              Print no output.
            * ``0`` (``panic``):
              Something went really wrong and we will crash now.
            * ``8`` (``fatal``):
              Something went wrong and recovery is not possible.
              For example, no header was found for a format which depends
              on headers or an illegal combination of parameters is used.
            * ``16`` (``error``):
              Something went wrong and cannot losslessly be recovered.
              However, not all future data is affected.
            * ``24`` (``warning``):
              Something somehow does not look correct.
              This may or may not lead to problems.
            * ``32`` (``info``):
              Standard information.
            * ``40`` (``verbose``):
              Detailed information.
            * ``48`` (``debug``):
              Stuff which is only useful for libav* developers.
            * ``56`` (``trace``):
              Extremely verbose debugging, useful for libav* development.

N)r	   set_log_level)r   s    r   r   r   -   s    D U#r   c                  *    [         R                  5       $ )aF  Get the available demuxers.

Returns:
    Dict[str, str]: Mapping from demuxer (format) short name to long name.

Example
    >>> for k, v in get_demuxers().items():
    >>>     print(f"{k}: {v}")
    ... aa: Audible AA format files
    ... aac: raw ADTS AAC (Advanced Audio Coding)
    ... aax: CRI AAX
    ... ac3: raw AC-3
)r	   get_demuxersr   r   r   r   r   R   s     ""$$r   c                  *    [         R                  5       $ )a[  Get the available muxers.

Returns:
    Dict[str, str]: Mapping from muxer (format) short name to long name.

Example
    >>> for k, v in get_muxers().items():
    >>>     print(f"{k}: {v}")
    ... a64: a64 - video for Commodore 64
    ... ac3: raw AC-3
    ... adts: ADTS AAC (Advanced Audio Coding)
    ... adx: CRI ADX
    ... aiff: Audio IFF
)r	   
get_muxersr   r   r   r   r   d   s        ""r   c                  *    [         R                  5       $ )ad  Get the available audio decoders.

Returns:
    Dict[str, str]: Mapping from decoder short name to long name.

Example
    >>> for k, v in get_audio_decoders().items():
    >>>     print(f"{k}: {v}")
    ... a64: a64 - video for Commodore 64
    ... ac3: raw AC-3
    ... adts: ADTS AAC (Advanced Audio Coding)
    ... adx: CRI ADX
    ... aiff: Audio IFF
)r	   get_audio_decodersr   r   r   r   r   w   s      ((**r   c                  *    [         R                  5       $ )a  Get the available audio encoders.

Returns:
    Dict[str, str]: Mapping from encoder short name to long name.

Example
    >>> for k, v in get_audio_encoders().items():
    >>>     print(f"{k}: {v}")
    ... comfortnoise: RFC 3389 comfort noise generator
    ... s302m: SMPTE 302M
    ... aac: AAC (Advanced Audio Coding)
    ... ac3: ATSC A/52A (AC-3)
    ... ac3_fixed: ATSC A/52A (AC-3)
    ... alac: ALAC (Apple Lossless Audio Codec)
)r	   get_audio_encodersr   r   r   r   r          " ((**r   c                  *    [         R                  5       $ )a  Get the available video decoders.

Returns:
    Dict[str, str]: Mapping from decoder short name to long name.

Example
    >>> for k, v in get_video_decoders().items():
    >>>     print(f"{k}: {v}")
    ... aasc: Autodesk RLE
    ... aic: Apple Intermediate Codec
    ... alias_pix: Alias/Wavefront PIX image
    ... agm: Amuse Graphics Movie
    ... amv: AMV Video
    ... anm: Deluxe Paint Animation
)r	   get_video_decodersr   r   r   r   r      r   r   c                  *    [         R                  5       $ )a  Get the available video encoders.

Returns:
    Dict[str, str]: Mapping from encoder short name to long name.

Example
    >>> for k, v in get_audio_encoders().items():
    >>>     print(f"{k}: {v}")
    ... a64multi: Multicolor charset for Commodore 64
    ... a64multi5: Multicolor charset for Commodore 64, extended with 5th color (colram)
    ... alias_pix: Alias/Wavefront PIX image
    ... amv: AMV Video
    ... apng: APNG (Animated Portable Network Graphics) image
    ... asv1: ASUS V1
    ... asv2: ASUS V2
)r	   get_video_encodersr   r   r   r   r      s    $ ((**r   c                  *    [         R                  5       $ )a%  Get the available input devices.

Returns:
    Dict[str, str]: Mapping from device short name to long name.

Example
    >>> for k, v in get_input_devices().items():
    >>>     print(f"{k}: {v}")
    ... avfoundation: AVFoundation input device
    ... lavfi: Libavfilter virtual input device
)r	   get_input_devicesr   r   r   r!   r!      s     ''))r   c                  *    [         R                  5       $ )zGet the available output devices.

Returns:
    Dict[str, str]: Mapping from device short name to long name.

Example
    >>> for k, v in get_output_devices().items():
    >>>     print(f"{k}: {v}")
    ... audiotoolbox: AudioToolbox output device
)r	   get_output_devicesr   r   r   r#   r#      s     ((**r   c                  *    [         R                  5       $ )zGet the supported input protocols.

Returns:
    List[str]: The names of supported input protocols

Example
    >>> print(get_input_protocols())
    ... ['file', 'ftp', 'hls', 'http','https', 'pipe', 'rtmp', 'tcp', 'tls', 'udp', 'unix']
)r	   get_input_protocolsr   r   r   r%   r%      s     ))++r   c                  *    [         R                  5       $ )a  Get the supported output protocols.

Returns:
    list of str: The names of supported output protocols

Example
    >>> print(get_output_protocols())
    ... ['file', 'ftp', 'http', 'https', 'md5', 'pipe', 'prompeg', 'rtmp', 'tee', 'tcp', 'tls', 'udp', 'unix']
)r	   get_output_protocolsr   r   r   r'   r'      s     **,,r   c                  *    [         R                  5       $ )a8  Get the FFmpeg build configuration

Returns:
    str: Build configuration string.

Example
    >>> print(get_build_config())
    --prefix=/Users/runner/miniforge3 --cc=arm64-apple-darwin20.0.0-clang --enable-gpl --enable-hardcoded-tables --enable-libfreetype --enable-libopenh264 --enable-neon --enable-libx264 --enable-libx265 --enable-libaom --enable-libsvtav1 --enable-libxml2 --enable-libvpx --enable-pic --enable-pthreads --enable-shared --disable-static --enable-version3 --enable-zlib --enable-libmp3lame --pkg-config=/Users/runner/miniforge3/conda-bld/ffmpeg_1646229390493/_build_env/bin/pkg-config --enable-cross-compile --arch=arm64 --target-os=darwin --cross-prefix=arm64-apple-darwin20.0.0- --host-cc=/Users/runner/miniforge3/conda-bld/ffmpeg_1646229390493/_build_env/bin/x86_64-apple-darwin13.4.0-clang  # noqa
)r	   get_build_configr   r   r   r)   r)     s     &&((r   c                  ,    [         R                  5         g)zGClear the CUDA context used by CUDA Hardware accelerated video decodingN)r	   clear_cuda_context_cacher   r   r   r+   r+     s     '')r   )__doc__typingr   r   r   torio
_extensionlazy_import_ffmpeg_extr	   !torchaudio._internal.module_utilsr   strintr
   r   r   r   r   r   r   r   r   r!   r#   r%   r'   r)   r+   r   r   r   <module>r4      s   % $ 446
 ? %d3c
?+ % % &s & & !$ !$ !$H %d38n % %" #DcN # #$ +DcN + +$ +DcN + +& +DcN + +& +DcN + +( *4S> * * +DcN + + 
,T#Y 
, 
, 
-d3i 
- 
- 
)# 
) 
) * *r   