Packages
vtc
0.16.6
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/seconds.ex
defprotocol Vtc.Source.Seconds do
@moduledoc """
Protocol which types can implement to be passed as the main value of
`Framestamp.with_seconds/3`.
## Implementations
Out of the box, this protocol is implemented for the following types:
- `Integer`
- `Float`
- `Ratio`
- `String`
- runtime ("01:00:00.0")
- decimal ("3600.0")
- `Vtc.Source.Seconds.RuntimeStr`
- `Vtc.Source.Seconds.PremiereTicks`
"""
alias Vtc.Framerate
alias Vtc.Framestamp
@typedoc """
Result type of `seconds/2`.
"""
@type result() :: {:ok, Ratio.t()} | {:error, Framestamp.ParseError.t()}
@doc """
Returns the value as a rational, real-world seconds value.
## Arguments
- **value**: The source value.
- **rate**: The framerate of the framestamp being parsed.
## Returns
A result tuple with a rational representation of the seconds value using `Ratio` on
success.
"""
@spec seconds(t(), Framerate.t()) :: result()
def seconds(value, rate)
end