Files
yovision/Brain/src/yovision_brain/decode/models.py
T

36 lines
795 B
Python

"""Decode-layer ports and frame model."""
from __future__ import annotations
from dataclasses import dataclass
from typing import Iterable, Iterator, Protocol
from yovision_brain.input import CancellationToken, InputPacket
class DecoderError(RuntimeError):
"""A safe and actionable decode failure."""
@dataclass(frozen=True, slots=True)
class DecodedFrame:
sequence: int
timestamp_ns: int
logical_device_id: str
profile_id: str
width: int
height: int
pixel_format: str
payload: bytes
dimensions_changed: bool = False
class DecoderBackend(Protocol):
media_formats: frozenset[str]
def decode(
self,
packets: Iterable[InputPacket],
cancellation: CancellationToken | None = None,
) -> Iterator[DecodedFrame]: ...