Current section

Files

Jump to
membrane_abr_transcoder_plugin lib membrane_abr_transcoder backends nvidia.ex
Raw

lib/membrane_abr_transcoder/backends/nvidia.ex

defmodule Membrane.ABRTranscoder.Backends.Nvidia do
@moduledoc """
Membrane.ABRTranscoder backend implementation utilizing Nvidia T4 GPU card.
To use it, set `MIX_TARGET` to `nvidia`.
"""
use TypedStruct
typedstruct enforce: true do
end
if Mix.target() == :nvidia do
@behaviour Membrane.ABRTranscoder.Backend
use Unifex.Loader
@impl true
def initialize_transcoder(
%__MODULE__{},
original_stream,
target_streams
) do
create(
original_stream,
target_streams
)
end
@spec initialize() :: :ok | {:error, reason :: String.t()}
def initialize() do
if probe = System.find_executable("nvidia-modprobe") do
case System.cmd(probe, []) do
{_reusult, 0} -> :ok
{_result, _code} -> {:error, "failed to run nvidia-modprobe"}
end
else
{:error, "nvidia-modprobe not found"}
end
end
end
end