Packages
membrane_h264_ffmpeg_plugin
0.12.0
0.32.7
0.32.6
0.32.5
0.32.4
0.32.3
0.32.2
0.32.1
0.32.0
0.31.8
0.31.7
0.31.6
0.31.5
0.31.4
0.31.3
0.31.2
0.31.1
0.31.0
0.30.1
0.30.0
0.29.0
0.28.2
0.28.1
0.28.0
0.27.0
0.26.2
0.26.1
0.26.0
0.25.4
0.25.3
0.25.2
0.25.1
0.25.0
0.24.0
0.23.0
0.22.1
0.22.0
0.21.6
0.21.5
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.1
0.20.0
0.19.0
0.18.0
0.17.0
0.16.3
0.16.2
0.16.1
0.16.0
0.15.0
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.2
0.12.1
0.12.0
0.11.0
0.10.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
Membrane H264 decoder and encoder based on FFmpeg and x264
Current section
Files
Jump to
Current section
Files
lib/membrane_h264_ffmpeg/common.ex
defmodule Membrane.H264.FFmpeg.Common do
@moduledoc false
use Ratio
@h264_time_base 90_000
@doc """
Decoder and encoder requires timestamps in h264 time base, that is 1/90_000 [s]
timestamps produced by this function are passed to the decoder so
they must be integers.
"""
@spec to_h264_time_base(number | Ratio.t()) :: integer
def to_h264_time_base(timestamp) do
(timestamp * @h264_time_base / Membrane.Time.second()) |> Ratio.trunc()
end
@doc """
All timestamps in membrane should be represented in the internal units, that is 1 [ns]
this function can return rational number.
"""
@spec to_membrane_time_base(number | Ratio.t()) :: number | Ratio.t()
def to_membrane_time_base(timestamp) do
timestamp * Membrane.Time.second() / @h264_time_base
end
end