Packages
vtc
0.5.3
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.9
0.16.8
0.16.7
0.16.6
0.16.5
0.16.4
0.16.2
0.16.1
0.16.0
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.15
0.13.14
0.13.13
0.13.12
0.13.11
0.13.10
0.13.9
0.13.8
0.13.7
0.13.6
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.10
0.10.9
0.10.8
0.10.7
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.2
0.9.1
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.3
0.5.2
0.5.1
0.4.0
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
A SMPTE timecode library for Elixir
Current section
Files
Jump to
Current section
Files
lib/sources/premiere_ticks.ex
defmodule Vtc.Source.PremiereTicks do
@moduledoc """
Implements `Seconds` protocol for Premiere ticks. See `Timecode.premiere_ticks/1`
for more information on this unit.
Thus struct is used as an input wrapper only, not as the general-purpose Premiere
ticks unit.
"""
@enforce_keys [:in]
defstruct [:in]
@typedoc """
Contains only a single field for wrapping the underlying integer.
"""
@type t() :: %__MODULE__{in: integer()}
end
defimpl Vtc.Source.Seconds, for: Vtc.Source.PremiereTicks do
@moduledoc """
Implements `Seconds` protocol for Premiere ticks.
"""
alias Vtc.Framerate
alias Vtc.Source.PremiereTicks
alias Vtc.Source.Seconds
alias Vtc.Utils.Consts
@spec seconds(PremiereTicks.t(), Framerate.t()) :: Seconds.result()
def seconds(ticks, _), do: {:ok, Ratio.new(ticks.in, Consts.ppro_tick_per_second())}
end