Skip to content

generic

Classes:

  • ChromaLocation

    Chroma sample position in YUV formats.

  • FieldBased

    Whether the frame is composed of two independent fields (interlaced) and their order if so.

Attributes:

ChromaLocationT module-attribute

ChromaLocationT: TypeAlias = Union[int, ChromaLocation, ChromaLocation]

Type alias for values that can be used to initialize a :py:attr:ChromaLocation.

FieldBasedT module-attribute

FieldBasedT: TypeAlias = Union[int, FieldBased, FieldBased]

Type alias for values that can be used to initialize a :py:attr:FieldBased.

ChromaLocation

Bases: _ChromaLocationMeta

Chroma sample position in YUV formats.

Methods:

  • apply

    Applies the property to the VideoNode.

  • ensure_presence

    Ensure the presence of the property in the VideoNode.

  • ensure_presences

    Ensure the presence of multiple PropEnums at once.

  • from_param

    Determine the ChromaLocation through a parameter.

  • from_param_or_video
  • from_res

    Guess the chroma location based on the clip's resolution.

  • from_video

    Obtain the chroma location of a clip from the frame properties.

  • get_offsets

    Get (left,top) shift for chroma relative to luma.

  • is_unknown

    Whether the value represents an unknown value.

  • is_valid

    Check if the given value is a valid int value of this enum.

  • prop_key

    The key used in props to store the enum.

Attributes:

BOTTOM class-attribute instance-attribute

BOTTOM = 5

BOTTOM_LEFT class-attribute instance-attribute

BOTTOM_LEFT = 4

CENTER class-attribute instance-attribute

CENTER = 1

LEFT class-attribute instance-attribute

LEFT = 0

TOP class-attribute instance-attribute

TOP = 3

TOP_LEFT class-attribute instance-attribute

TOP_LEFT = 2

pretty_string property

pretty_string: str

Get a pretty, displayable string of the enum member.

string property

string: str

Get the string representation used in resize plugin/encoders.

apply

apply(clip: VideoNodeT) -> VideoNodeT

Applies the property to the VideoNode.

Source code
127
128
129
130
def apply(self, clip: VideoNodeT) -> VideoNodeT:
    """Applies the property to the VideoNode."""

    return vs.core.std.SetFrameProp(clip, self.prop_key, self.value)

ensure_presence classmethod

ensure_presence(
    clip: VideoNodeT, value: int | Self | None, func: FuncExceptT | None = None
) -> VideoNodeT

Ensure the presence of the property in the VideoNode.

Source code
117
118
119
120
121
122
123
124
125
@classmethod
def ensure_presence(
    cls, clip: VideoNodeT, value: int | Self | None, func: FuncExceptT | None = None
) -> VideoNodeT:
    """Ensure the presence of the property in the VideoNode."""

    enum_value = cls.from_param_or_video(value, clip, True, func)

    return vs.core.std.SetFrameProp(clip, enum_value.prop_key, enum_value.value)

ensure_presences staticmethod

ensure_presences(
    clip: VideoNodeT,
    prop_enums: Iterable[type[PropEnumT] | PropEnumT],
    func: FuncExceptT | None = None,
) -> VideoNodeT

Ensure the presence of multiple PropEnums at once.

Source code
132
133
134
135
136
137
138
139
140
141
142
143
144
@staticmethod
def ensure_presences(
    clip: VideoNodeT, prop_enums: Iterable[type[PropEnumT] | PropEnumT], func: FuncExceptT | None = None
) -> VideoNodeT:
    """Ensure the presence of multiple PropEnums at once."""

    return vs.core.std.SetFrameProps(clip, **{
        value.prop_key: value.value
        for value in [
            cls if isinstance(cls, PropEnum) else cls.from_video(clip, True, func)
            for cls in prop_enums
        ]
    })

from_param classmethod

from_param(value: None, func_except: FuncExceptT | None = None) -> None
from_param(
    value: int | ChromaLocation | ChromaLocationT,
    func_except: FuncExceptT | None = None,
) -> Self
from_param(
    value: int | ChromaLocation | ChromaLocationT | None,
    func_except: FuncExceptT | None = None,
) -> Self | None
from_param(value: Any, func_except: Any = None) -> Self | None

Determine the ChromaLocation through a parameter.

Parameters:

  • value

    (Any) –

    Value or ChromaLocation object.

  • func_except

    (Any, default: None ) –

    Function returned for custom error handling. This should only be set by VS package developers.

Returns:

  • Self | None

    ChromaLocation object or None.

Source code
402
403
404
405
406
407
408
409
410
411
412
@classmethod
def from_param(cls, value: Any, func_except: Any = None) -> Self | None:
    """
    Determine the ChromaLocation through a parameter.

    :param value:           Value or ChromaLocation object.
    :param func_except:     Function returned for custom error handling.
                            This should only be set by VS package developers.

    :return:                ChromaLocation object or None.
    """

from_param_or_video classmethod

from_param_or_video(
    value: int | ChromaLocation | ChromaLocationT | None,
    src: VideoNode | VideoFrame | FrameProps,
    strict: bool = False,
    func_except: FuncExceptT | None = None,
) -> ChromaLocation
Source code
414
415
416
417
418
419
420
@classmethod
def from_param_or_video(
    cls, value: int | ChromaLocation | ChromaLocationT | None,
    src: vs.VideoNode | vs.VideoFrame | vs.FrameProps,
    strict: bool = False, func_except: FuncExceptT | None = None
) -> ChromaLocation:
    ...

from_res classmethod

from_res(frame: VideoNode | VideoFrame) -> ChromaLocation

Guess the chroma location based on the clip's resolution.

Parameters:

  • frame

    (VideoNode | VideoFrame) –

    Input clip or frame.

Returns:

Source code
43
44
45
46
47
48
49
50
51
52
53
@classmethod
def from_res(cls, frame: vs.VideoNode | vs.VideoFrame) -> ChromaLocation:
    """
    Guess the chroma location based on the clip's resolution.

    :param frame:       Input clip or frame.

    :return:            ChromaLocation object.
    """

    return ChromaLocation.LEFT

from_video classmethod

from_video(
    src: VideoNode | VideoFrame | FrameProps,
    strict: bool = False,
    func: FuncExceptT | None = None,
) -> ChromaLocation

Obtain the chroma location of a clip from the frame properties.

Parameters:

  • src

    (VideoNode | VideoFrame | FrameProps) –

    Input clip, frame, or props.

  • strict

    (bool, default: False ) –

    Be strict about the properties. The result may NOT be an unknown value.

Returns:

Raises:

  • UndefinedChromaLocationError

    Chroma location is undefined.

  • UndefinedChromaLocationError

    Chroma location can not be determined from the frame properties.

Source code
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
@classmethod
def from_video(
    cls, src: vs.VideoNode | vs.VideoFrame | vs.FrameProps, strict: bool = False, func: FuncExceptT | None = None
) -> ChromaLocation:
    """
    Obtain the chroma location of a clip from the frame properties.

    :param src:                             Input clip, frame, or props.
    :param strict:                          Be strict about the properties.
                                            The result may NOT be an unknown value.

    :return:                                ChromaLocation object.

    :raises UndefinedChromaLocationError:   Chroma location is undefined.
    :raises UndefinedChromaLocationError:   Chroma location can not be determined from the frame properties.
    """

    return _base_from_video(cls, src, UndefinedChromaLocationError, strict, func)

get_offsets classmethod

get_offsets(chroma_loc: ChromaLocation | VideoNode) -> tuple[float, float]

Get (left,top) shift for chroma relative to luma.

This is only useful if you MUST use a pre-specified chroma location and shift the chroma yourself.

Source code
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
@classmethod
def get_offsets(
    cls, chroma_loc: ChromaLocation | vs.VideoNode
) -> tuple[float, float]:
    """
    Get (left,top) shift for chroma relative to luma.

    This is only useful if you MUST use a pre-specified chroma location and shift the chroma yourself.
    """

    if isinstance(chroma_loc, vs.VideoNode):
        assert chroma_loc.format
        subsampling = (chroma_loc.format.subsampling_w, chroma_loc.format.subsampling_h)

        if subsampling in [(1, 0), (1, 1)]:
            offsets = (0.5, 0)
        elif subsampling == (0, 1):
            offsets = (0, 0)
        elif subsampling == (2, 0):
            offsets = (2.5, 0)
        elif subsampling == (2, 2):
            offsets = (2.5, 1)
        elif subsampling == (0, 0):
            offsets = (0, 0)
        else:
            raise UnsupportedSubsamplingError('Unknown subsampling.', cls)

        return offsets

    off_left = off_top = 0.0

    if chroma_loc in {ChromaLocation.LEFT, ChromaLocation.TOP_LEFT, ChromaLocation.BOTTOM_LEFT}:
        off_left += -0.5

    if chroma_loc in {ChromaLocation.TOP, ChromaLocation.TOP_LEFT}:
        off_top += -0.5
    elif chroma_loc in {ChromaLocation.BOTTOM, ChromaLocation.BOTTOM_LEFT}:
        off_top += +0.5

    return off_left, off_top

is_unknown classmethod

is_unknown(value: int | Self) -> bool

Whether the value represents an unknown value.

Source code
29
30
31
32
33
@classmethod
def is_unknown(cls, value: int | Self) -> bool:
    """Whether the value represents an unknown value."""

    return False

is_valid classmethod

is_valid(value: int) -> bool

Check if the given value is a valid int value of this enum.

Source code
160
161
162
163
@classmethod
def is_valid(cls, value: int) -> bool:
    """Check if the given value is a valid int value of this enum."""
    return int(value) in map(int, cls.__members__.values())

prop_key

prop_key() -> str

The key used in props to store the enum.

Source code
35
36
37
38
39
@classproperty
def prop_key(cls) -> str:
    """The key used in props to store the enum."""

    return f'_{cls.__name__}'

FieldBased

Bases: _FieldBasedMeta

Whether the frame is composed of two independent fields (interlaced) and their order if so.

Methods:

  • apply

    Applies the property to the VideoNode.

  • ensure_presence
  • ensure_presences

    Ensure the presence of multiple PropEnums at once.

  • from_param
  • from_param_or_video

    Get the enum member from a value that can be casted to this prop value

  • from_res

    Guess the Field order from the frame resolution.

  • from_video

    Obtain the Field order of a clip from the frame properties.

  • is_unknown

    Whether the value represents an unknown value.

  • is_valid

    Check if the given value is a valid int value of this enum.

  • prop_key

    The key used in props to store the enum.

Attributes:

  • BFF

    The frame is interlaced and the field order is bottom field first.

  • PROGRESSIVE

    The frame is progressive.

  • TFF

    The frame is interlaced and the field order is top field first.

  • field (int) –

    Check what field the enum signifies.

  • inverted_field (FieldBased) –

    Get the inverted field order.

  • is_inter (bool) –

    Check whether the value belongs to an interlaced value.

  • is_tff (bool) –

    Check whether the value is Top-Field-First.

  • pretty_string (str) –
  • string (str) –

    Get the string representation used in resize plugin/encoders.

BFF class-attribute instance-attribute

BFF = 1

The frame is interlaced and the field order is bottom field first.

PROGRESSIVE class-attribute instance-attribute

PROGRESSIVE = 0

The frame is progressive.

TFF class-attribute instance-attribute

TFF = 2

The frame is interlaced and the field order is top field first.

field property

field: int

Check what field the enum signifies.

Raises:

  • UnsupportedFieldBasedError

    PROGRESSIVE value is passed.

inverted_field property

inverted_field: FieldBased

Get the inverted field order.

Raises:

  • UnsupportedFieldBasedError

    PROGRESSIVE value is passed.

is_inter property

is_inter: bool

Check whether the value belongs to an interlaced value.

is_tff property

is_tff: bool

Check whether the value is Top-Field-First.

pretty_string property

pretty_string: str

string property

string: str

Get the string representation used in resize plugin/encoders.

apply

apply(clip: VideoNodeT) -> VideoNodeT

Applies the property to the VideoNode.

Source code
127
128
129
130
def apply(self, clip: VideoNodeT) -> VideoNodeT:
    """Applies the property to the VideoNode."""

    return vs.core.std.SetFrameProp(clip, self.prop_key, self.value)

ensure_presence classmethod

ensure_presence(
    clip: VideoNodeT,
    tff: int | FieldBasedT | bool | None,
    func: FuncExceptT | None = None,
) -> VideoNodeT
Source code
477
478
479
480
481
482
483
@classmethod
def ensure_presence(
    cls, clip: VideoNodeT, tff: int | FieldBasedT | bool | None, func: FuncExceptT | None = None
) -> VideoNodeT:
    field_based = cls.from_param_or_video(tff, clip, True, func)

    return vs.core.std.SetFieldBased(clip, field_based.value)

ensure_presences staticmethod

ensure_presences(
    clip: VideoNodeT,
    prop_enums: Iterable[type[PropEnumT] | PropEnumT],
    func: FuncExceptT | None = None,
) -> VideoNodeT

Ensure the presence of multiple PropEnums at once.

Source code
132
133
134
135
136
137
138
139
140
141
142
143
144
@staticmethod
def ensure_presences(
    clip: VideoNodeT, prop_enums: Iterable[type[PropEnumT] | PropEnumT], func: FuncExceptT | None = None
) -> VideoNodeT:
    """Ensure the presence of multiple PropEnums at once."""

    return vs.core.std.SetFrameProps(clip, **{
        value.prop_key: value.value
        for value in [
            cls if isinstance(cls, PropEnum) else cls.from_video(clip, True, func)
            for cls in prop_enums
        ]
    })

from_param classmethod

from_param(value_or_tff: Any, func_except: Any = None) -> FieldBased | None
Source code
143
144
145
146
147
148
@classmethod
def from_param(cls: Any, value_or_tff: Any, func_except: Any = None) -> FieldBased | None:
    if isinstance(value_or_tff, bool):
        return FieldBased(1 + value_or_tff)

    return super().from_param(value_or_tff)

from_param_or_video classmethod

from_param_or_video(
    value: Any,
    src: VideoNode | VideoFrame | FrameProps,
    strict: bool = False,
    func_except: FuncExceptT | None = None,
) -> Self

Get the enum member from a value that can be casted to this prop value or grab it from frame properties.

If strict=False, gather the heuristics using the clip's size or format.

Parameters:

  • value

    (Any) –

    Value to cast.

  • src

    (VideoNode | VideoFrame | FrameProps) –

    Clip to get prop from.

  • strict

    (bool, default: False ) –

    Be strict about the frame properties. Default: False.

  • func_except

    (FuncExceptT | None, default: None ) –

    Function returned for custom error handling.

Source code
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
@classmethod
def from_param_or_video(
    cls, value: Any,
    src: vs.VideoNode | vs.VideoFrame | vs.FrameProps,
    strict: bool = False, func_except: FuncExceptT | None = None
) -> Self:
    """
    Get the enum member from a value that can be casted to this prop value
    or grab it from frame properties.

    If `strict=False`, gather the heuristics using the clip's size or format.

    :param value:           Value to cast.
    :param src:             Clip to get prop from.
    :param strict:          Be strict about the frame properties. Default: False.
    :param func_except:     Function returned for custom error handling.
    """
    value = cls.from_param(value, func_except)

    if value is not None:
        return value

    return cls.from_video(src, strict, func_except)

from_res classmethod

from_res(frame: VideoNode | VideoFrame) -> FieldBased

Guess the Field order from the frame resolution.

Source code
150
151
152
153
154
@classmethod
def from_res(cls, frame: vs.VideoNode | vs.VideoFrame) -> FieldBased:
    """Guess the Field order from the frame resolution."""

    return cls.PROGRESSIVE

from_video classmethod

from_video(
    src: VideoNode | VideoFrame | FrameProps,
    strict: bool = False,
    func: FuncExceptT | None = None,
) -> FieldBased

Obtain the Field order of a clip from the frame properties.

Parameters:

  • src

    (VideoNode | VideoFrame | FrameProps) –

    Input clip, frame, or props.

  • strict

    (bool, default: False ) –

    Be strict about the properties. Will ALWAYS error if the FieldBased is missing.

Returns:

Raises:

  • UndefinedFieldBasedError

    Field order is undefined.

  • UndefinedFieldBasedError

    Field order can not be determined from the frame properties.

Source code
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
@classmethod
def from_video(
    cls, src: vs.VideoNode | vs.VideoFrame | vs.FrameProps, strict: bool = False, func: FuncExceptT | None = None
) -> FieldBased:
    """
    Obtain the Field order of a clip from the frame properties.

    :param src:                             Input clip, frame, or props.
    :param strict:                          Be strict about the properties.
                                            Will ALWAYS error if the FieldBased is missing.

    :return:                                FieldBased object.

    :raises UndefinedFieldBasedError:       Field order is undefined.
    :raises UndefinedFieldBasedError:       Field order can not be determined from the frame properties.
    """

    return _base_from_video(cls, src, UndefinedFieldBasedError, strict, func)

is_unknown classmethod

is_unknown(value: int | Self) -> bool

Whether the value represents an unknown value.

Source code
29
30
31
32
33
@classmethod
def is_unknown(cls, value: int | Self) -> bool:
    """Whether the value represents an unknown value."""

    return False

is_valid classmethod

is_valid(value: int) -> bool

Check if the given value is a valid int value of this enum.

Source code
160
161
162
163
@classmethod
def is_valid(cls, value: int) -> bool:
    """Check if the given value is a valid int value of this enum."""
    return int(value) in map(int, cls.__members__.values())

prop_key

prop_key() -> str

The key used in props to store the enum.

Source code
35
36
37
38
39
@classproperty
def prop_key(cls) -> str:
    """The key used in props to store the enum."""

    return f'_{cls.__name__}'