from typing import Literal

from .frame import VideoFrame
from .stream import VideoStream

# FFmpeg 8.1 encoders and the codec descriptor aliases that resolve to them.
_VideoCodecName = Literal[
    "a64_multi",
    "a64_multi5",
    "a64multi",
    "a64multi5",
    "alias_pix",
    "amv",
    "apng",
    "apv",
    "asv1",
    "asv2",
    "av1",
    "av1_amf",
    "av1_d3d12va",
    "av1_mediacodec",
    "av1_mf",
    "av1_nvenc",
    "av1_qsv",
    "av1_vaapi",
    "av1_vulkan",
    "avrp",
    "avs2",
    "avui",
    "bitpacked",
    "bmp",
    "cavs",
    "cfhd",
    "cinepak",
    "cljr",
    "dirac",
    "dnxhd",
    "dpx",
    "dvvideo",
    "dxv",
    "evc",
    "exr",
    "ffv1",
    "ffv1_vulkan",
    "ffvhuff",
    "fits",
    "flashsv",
    "flashsv2",
    "flv",
    "flv1",
    "gif",
    "h261",
    "h263",
    "h263_v4l2m2m",
    "h263p",
    "h264",
    "h264_amf",
    "h264_d3d12va",
    "h264_mediacodec",
    "h264_mf",
    "h264_nvenc",
    "h264_oh",
    "h264_omx",
    "h264_qsv",
    "h264_rkmpp",
    "h264_v4l2m2m",
    "h264_vaapi",
    "h264_videotoolbox",
    "h264_vulkan",
    "hap",
    "hdr",
    "hevc",
    "hevc_amf",
    "hevc_d3d12va",
    "hevc_mediacodec",
    "hevc_mf",
    "hevc_nvenc",
    "hevc_oh",
    "hevc_qsv",
    "hevc_rkmpp",
    "hevc_v4l2m2m",
    "hevc_vaapi",
    "hevc_videotoolbox",
    "hevc_vulkan",
    "huffyuv",
    "jpeg2000",
    "jpegls",
    "jpegxl",
    "jpegxl_anim",
    "jpegxs",
    "libaom-av1",
    "libjxl",
    "libjxl_anim",
    "libkvazaar",
    "liboapv",
    "libopenh264",
    "libopenjpeg",
    "librav1e",
    "libsvtav1",
    "libsvtjpegxs",
    "libtheora",
    "libvpx",
    "libvpx-vp9",
    "libvvenc",
    "libwebp",
    "libwebp_anim",
    "libx262",
    "libx264",
    "libx264rgb",
    "libx265",
    "libxavs",
    "libxavs2",
    "libxeve",
    "libxvid",
    "ljpeg",
    "magicyuv",
    "mjpeg",
    "mjpeg_qsv",
    "mjpeg_vaapi",
    "mpeg1video",
    "mpeg2_qsv",
    "mpeg2_vaapi",
    "mpeg2video",
    "mpeg4",
    "mpeg4_mediacodec",
    "mpeg4_omx",
    "mpeg4_v4l2m2m",
    "msmpeg4",
    "msmpeg4v2",
    "msmpeg4v3",
    "msrle",
    "msvideo1",
    "pam",
    "pbm",
    "pcx",
    "pfm",
    "pgm",
    "pgmyuv",
    "phm",
    "png",
    "ppm",
    "prores",
    "prores_aw",
    "prores_ks",
    "prores_ks_vulkan",
    "prores_videotoolbox",
    "qoi",
    "qtrle",
    "r10k",
    "r210",
    "rawvideo",
    "roq",
    "roqvideo",
    "rpza",
    "rv10",
    "rv20",
    "sgi",
    "smc",
    "snow",
    "speedhq",
    "sunrast",
    "svq1",
    "targa",
    "theora",
    "tiff",
    "utvideo",
    "v210",
    "v308",
    "v408",
    "v410",
    "vbn",
    "vc2",
    "vnull",
    "vp8",
    "vp8_mediacodec",
    "vp8_v4l2m2m",
    "vp8_vaapi",
    "vp9",
    "vp9_mediacodec",
    "vp9_qsv",
    "vp9_vaapi",
    "vvc",
    "wbmp",
    "webp",
    "wmv1",
    "wmv2",
    "wrapped_avframe",
    "xbm",
    "xface",
    "xwd",
    "y41p",
    "yuv4",
    "zlib",
    "zmbv",
]

__all__ = ("VideoFrame", "VideoStream")
