Skip to content

y5gfunc.source.wobbly.timecodes.v1

v1

V1 version timecode generator.

Classes:

Name Description
TimecodesV1Generator

V1 version timecode generator

TimecodesV1Generator

TimecodesV1Generator(project: ProjectData)

Bases: TimecodeGenerator

V1 version timecode generator

Initialize timecode generator

Parameters:

Name Type Description Default

project

ProjectData

Project data

required

Methods:

Name Description
generate

Generate V1 format timecode

Attributes:

Name Type Description
project
Source code in y5gfunc/source/wobbly/timecodes/base.py
def __init__(self, project: ProjectData):
    """
    Initialize timecode generator

    Args:
        project: Project data
    """
    self.project = project
    self.decimated_by_cycle, self.ranges = get_decimation_info(project)

project instance-attribute

project = project

generate

generate() -> str

Generate V1 format timecode

Returns:

Type Description
str

V1 format timecode string

Source code in y5gfunc/source/wobbly/timecodes/v1.py
def generate(self) -> str:
    """
    Generate V1 format timecode

    Returns:
        V1 format timecode string
    """
    DEFAULT_FPS = 24000 / 1001

    tc = "# timecode format v1\n"
    tc += f"Assume {DEFAULT_FPS:.12f}\n"

    numerators = [30000, 24000, 18000, 12000, 6000]
    denominator = 1001

    for range_info in self.ranges:
        dropped = range_info.dropped

        if numerators[dropped] != 24000:
            start_frame = frame_number_after_decimation(
                range_info.start, self.decimated_by_cycle
            )
            end_frame = frame_number_after_decimation(
                range_info.end - 1, self.decimated_by_cycle
            )

            fps = numerators[dropped] / denominator
            tc += f"{start_frame},{end_frame},{fps:.12f}\n"

    return tc