A SMPTE Timecode Library for Rust

David Heidelberger's blog

vtc-rs

A SMPTE Timecode Library for Rust

Overview

vtc-rs is inspired by years of scripting workflow solutions in a Hollywood cutting room. It aims to capture all the ways in which timecode is used throughout the industry so users can spend more time on their workflow logic, and less time handling the corner-cases of parsing and calculating timecode.

Demo

Let's take a quick high-level look at what you can do with vtc-rs:

Features

  • SMPTE Conventions:
    • NTSC
    • Drop-Frame
    • Interlaced timecode
  • Timecode Representations:
    • Timecode | '01:00:00:00'
    • Frames | 86400
    • Seconds | 3600.0
    • Runtime | '01:00:00.0'
    • Rational | 18018/5
    • Feet+Frames | '5400+00'
      • 35mm, 4-perf
      • 35mm, 3-perf
      • 35mm, 2-perf
      • 16mm
    • Premiere Ticks | 15240960000000
  • Operations:
    • Comparisons (==, <, <=, >, >=)
    • Add
    • Subtract
    • Scale (multiply and divide)
    • Div/Rem
    • Modulo
    • Negative
    • Absolute
    • Rebase (recalculate frame count at new framerate)
  • Flexible Parsing:
    • Partial timecodes | '1:12'
    • Partial runtimes | '1.5'
    • Negative string values | '-1:12', '-3+00'
    • Poorly formatted tc | '1:13:4'
  • Built-in consts for common framerates.

Goals

  • Parse and fetch all Timecode representations.
  • A clean, rustic API.
  • Support all operations that make sense for timecode.

Non-Goals

  • Real-time timecode generators.

Attributions

Drop-frame calculations adapted from David Heidelberger's blog.
Logo made by Freepik from www.flaticon.com

Information - Updated Feb 03, 2022

Stars: 5
Forks: 1
Issues: 1

Parsing Expression Grammars in Rust

rust-peg is a simple yet flexible parser generator that makes it easy to write robust parsers

Parsing Expression Grammars in Rust

A library for parsing Backus–Naur form context-free grammars

Wikipedia page on Backus-Naur form

A library for parsing Backus–Naur form context-free grammars

Rust library for parsing configuration files

The 'option' can be any string with no whitespace

Rust library for parsing configuration files

Body parsing plugins for the Iron web framework

Body parsing plugins for the core bundle

Body parsing plugins for the Iron web framework

A library for parsing and running selenium

side files used in a thirtyfour - default

A library for parsing and running selenium

rust crates for parsing stuff

Tokenizers for math expressions, splitting text, lexing lisp-like stuff, etc

rust crates for parsing stuff

Parsing, transformation and validation for feL4 manifests

The primary purpose of this library is to parse and validate fel4

Parsing, transformation and validation for feL4 manifests

Rust library for parsing COLLADA files

Notice: This library is built around files exported from Blender 2

Rust library for parsing COLLADA files

Rust JSON parsing benchmarks

This project aims to provide benchmarks to show how various JSON-parsing libraries in the Rust programming language perform at various JSON-parsing tasks

Rust JSON parsing benchmarks

Rust library for parsing English time expressions into start and end timestamps

This takes English expressions and returns a time range which ideally matches the expression

Rust library for parsing English time expressions into start and end timestamps
Facebook Instagram Twitter GitHub Dribbble
Privacy