from typing import Literal

from .frame import AudioFrame
from .stream import AudioStream

# FFmpeg 8.1 encoders and the codec descriptor aliases that resolve to them.
_AudioCodecName = Literal[
    "aac",
    "aac_at",
    "aac_mf",
    "ac3",
    "ac3_fixed",
    "ac3_mf",
    "adpcm_adx",
    "adpcm_argo",
    "adpcm_g722",
    "adpcm_g726",
    "adpcm_g726le",
    "adpcm_ima_alp",
    "adpcm_ima_amv",
    "adpcm_ima_apm",
    "adpcm_ima_qt",
    "adpcm_ima_ssi",
    "adpcm_ima_wav",
    "adpcm_ima_ws",
    "adpcm_ms",
    "adpcm_swf",
    "adpcm_yamaha",
    "alac",
    "alac_at",
    "amr_nb",
    "amr_wb",
    "anull",
    "aptx",
    "aptx_hd",
    "codec2",
    "comfortnoise",
    "dca",
    "dfpwm",
    "dts",
    "eac3",
    "flac",
    "g722",
    "g723_1",
    "g726",
    "g726le",
    "gsm",
    "gsm_ms",
    "ilbc",
    "ilbc_at",
    "lc3",
    "libcodec2",
    "libfdk_aac",
    "libgsm",
    "libgsm_ms",
    "libilbc",
    "liblc3",
    "libmp3lame",
    "libopencore_amrnb",
    "libopus",
    "libshine",
    "libspeex",
    "libtwolame",
    "libvo_amrwbenc",
    "libvorbis",
    "mlp",
    "mp2",
    "mp2fixed",
    "mp3",
    "mp3_mf",
    "nellymoser",
    "opus",
    "pcm_alaw",
    "pcm_alaw_at",
    "pcm_bluray",
    "pcm_dvd",
    "pcm_f32be",
    "pcm_f32le",
    "pcm_f64be",
    "pcm_f64le",
    "pcm_mulaw",
    "pcm_mulaw_at",
    "pcm_s16be",
    "pcm_s16be_planar",
    "pcm_s16le",
    "pcm_s16le_planar",
    "pcm_s24be",
    "pcm_s24daud",
    "pcm_s24le",
    "pcm_s24le_planar",
    "pcm_s32be",
    "pcm_s32le",
    "pcm_s32le_planar",
    "pcm_s64be",
    "pcm_s64le",
    "pcm_s8",
    "pcm_s8_planar",
    "pcm_u16be",
    "pcm_u16le",
    "pcm_u24be",
    "pcm_u24le",
    "pcm_u32be",
    "pcm_u32le",
    "pcm_u8",
    "pcm_vidc",
    "ra_144",
    "real_144",
    "roq_dpcm",
    "s302m",
    "sbc",
    "sonic",
    "sonicls",
    "speex",
    "truehd",
    "tta",
    "vorbis",
    "wavpack",
    "wmav1",
    "wmav2",
]

__all__ = ("AudioFrame", "AudioStream")
