Packages
membrane_rtmp_plugin
0.2.1
0.29.5
0.29.4
0.29.3
0.29.2
0.29.1
0.29.0
0.28.1
0.28.0
0.27.3
0.27.2
0.27.0
0.26.0
0.25.0
0.24.0
0.23.3
0.23.2
0.23.1
0.23.0
0.22.1
0.22.0
0.21.0
0.20.2
0.20.1
0.20.0
0.19.3
0.19.2
retired
0.19.1
0.19.0
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.1
0.9.0
0.8.1
0.8.0
0.7.0
0.6.1
0.6.0
0.5.0
0.4.1
0.4.0
0.3.0
0.2.1
0.2.0
0.1.1
0.1.0
RTMP Plugin for Membrane Multimedia Framework
Current section
Files
Jump to
Current section
Files
lib/membrane_rtmp_plugin/rtmp/native.ex
defmodule Membrane.RTMP.Source.Native do
@moduledoc false
use Unifex.Loader
alias Membrane.Time
@spec create(String.t(), Time.t()) :: {:ok, reference()} | {:error, reason :: any()}
def create(url, timeout) do
with {:ok, timeout} <- get_timeout(timeout),
{:ok, native} <- native_create(url, timeout) do
{:ok, native}
else
{:error, _reason} = error -> error
end
end
@one_second Time.seconds(1)
defp get_timeout(:infinity), do: {:ok, "0"}
defp get_timeout(time) when rem(time, @one_second) != 0,
do: {:error, "Timeout must be a multiply of one second. #{Time.pretty_duration(time)} is not"}
defp get_timeout(time),
do:
Time.as_seconds(time)
|> Ratio.trunc()
|> inspect()
|> then(&{:ok, &1})
end