| from enum import Flag, IntEnum |
| from fractions import Fraction |
| from typing import ClassVar, Literal, Sequence, cast, overload |
|
|
| from av.audio.codeccontext import AudioCodecContext |
| from av.audio.format import AudioFormat |
| from av.descriptor import Descriptor |
| from av.subtitles.codeccontext import SubtitleCodecContext |
| from av.video.codeccontext import VideoCodecContext |
| from av.video.format import VideoFormat |
|
|
| from .context import CodecContext |
| |
| class Properties(Flag): |
| NONE = cast(ClassVar[Properties], ...) |
| INTRA_ONLY = cast(ClassVar[Properties], ...) |
| LOSSY = cast(ClassVar[Properties], ...) |
| LOSSLESS = cast(ClassVar[Properties], ...) |
| REORDER = cast(ClassVar[Properties], ...) |
| BITMAP_SUB = cast(ClassVar[Properties], ...) |
| TEXT_SUB = cast(ClassVar[Properties], ...) |
| |
| class Capabilities(IntEnum): |
| none = cast(int, ...) |
| draw_horiz_band = cast(int, ...) |
| dr1 = cast(int, ...) |
| hwaccel = cast(int, ...) |
| delay = cast(int, ...) |
| small_last_frame = cast(int, ...) |
| hwaccel_vdpau = cast(int, ...) |
| subframes = cast(int, ...) |
| experimental = cast(int, ...) |
| channel_conf = cast(int, ...) |
| neg_linesizes = cast(int, ...) |
| frame_threads = cast(int, ...) |
| slice_threads = cast(int, ...) |
| param_change = cast(int, ...) |
| auto_threads = cast(int, ...) |
| variable_frame_size = cast(int, ...) |
| avoid_probing = cast(int, ...) |
| hardware = cast(int, ...) |
| hybrid = cast(int, ...) |
| encoder_reordered_opaque = cast(int, ...) |
| encoder_flush = cast(int, ...) |
| encoder_recon_frame = cast(int, ...) |
| |
| class UnknownCodecError(ValueError): ... |
| |
| class Codec: |
| @property |
| def is_encoder(self) -> bool: ... |
| @property |
| def is_decoder(self) -> bool: ... |
| @property |
| def mode(self) -> Literal["r", "w"]: ... |
| descriptor: Descriptor |
| @property |
| def name(self) -> str: ... |
| @property |
| def canonical_name(self) -> str: ... |
| @property |
| def long_name(self) -> str: ... |
| @property |
| def type(self) -> Literal["video", "audio", "data", "subtitle", "attachment"]: ... |
| @property |
| def id(self) -> int: ... |
| frame_rates: list[Fraction] | None |
| audio_rates: list[int] | None |
| video_formats: list[VideoFormat] | None |
| audio_formats: list[AudioFormat] | None |
| |
| @property |
| def properties(self) -> int: ... |
| @property |
| def intra_only(self) -> bool: ... |
| @property |
| def lossy(self) -> bool: ... |
| @property |
| def lossless(self) -> bool: ... |
| @property |
| def reorder(self) -> bool: ... |
| @property |
| def bitmap_sub(self) -> bool: ... |
| @property |
| def text_sub(self) -> bool: ... |
| @property |
| def capabilities(self) -> int: ... |
| @property |
| def experimental(self) -> bool: ... |
| @property |
| def delay(self) -> bool: ... |
| def __init__(self, name: str, mode: Literal["r", "w"] = "r") -> None: ... |
| @overload |
| def create(self, kind: Literal["video"]) -> VideoCodecContext: ... |
| @overload |
| def create(self, kind: Literal["audio"]) -> AudioCodecContext: ... |
| @overload |
| def create(self, kind: Literal["subtitle"]) -> SubtitleCodecContext: ... |
| @overload |
| def create(self, kind: None = None) -> CodecContext: ... |
| @overload |
| def create( |
| self, kind: Literal["video", "audio", "subtitle"] | None = None |
| ) -> ( |
| VideoCodecContext | AudioCodecContext | SubtitleCodecContext | CodecContext |
| ): ... |
| |
| class codec_descriptor: |
| name: str |
| options: tuple[int, ...] |
| |
| codecs_available: set[str] |
| |
| def dump_codecs() -> None: ... |
| def dump_hwconfigs() -> None: ... |
| |
| PixFmtLike = str | VideoFormat |
| |
| def find_best_pix_fmt_of_list( |
| pix_fmts: Sequence[PixFmtLike], |
| src_pix_fmt: PixFmtLike, |
| has_alpha: bool = False, |
| ) -> tuple[VideoFormat | None, int]: |
| """ |
| Find the best pixel format to convert to given a source format. |
| |
| Wraps :ffmpeg:`avcodec_find_best_pix_fmt_of_list`. |
| |
| :param pix_fmts: Iterable of pixel formats to choose from (str or VideoFormat). |
| :param src_pix_fmt: Source pixel format (str or VideoFormat). |
| :param bool has_alpha: Whether the source alpha channel is used. |
| :return: (best_format, loss): best_format is the best matching pixel format from |
| the list, or None if no suitable format was found; loss is Combination of flags informing you what kind of losses will occur. |
| :rtype: (VideoFormat | None, int) |
| |
| Note on loss: it is a bitmask of FFmpeg loss flags describing what kinds of information would be lost converting from src_pix_fmt to best_format (e.g. loss of alpha, chroma, colorspace, resolution, bit depth, etc.). Multiple losses can be present at once, so the value is meant to be interpreted with bitwise & against FFmpeg's FF_LOSS_* constants. |
| For exact behavior see: libavutil/pixdesc.c/get_pix_fmt_score() in ffmpeg source code. |
| """ |
| ... |
| |