diff --git a/lib/agora/agora_sink.ex b/lib/agora/agora_sink.ex index c66bb87..79fb641 100644 --- a/lib/agora/agora_sink.ex +++ b/lib/agora/agora_sink.ex @@ -5,6 +5,7 @@ defmodule Membrane.Agora.Sink do """ use Membrane.Sink + require Membrane.Logger require Membrane.Pad, as: Pad alias Membrane.Agora.Sink.Native @@ -62,9 +63,25 @@ defmodule Membrane.Agora.Sink do @impl true def handle_setup(_ctx, state) do - {:ok, native_state} = + native_state = try do - Native.create(state.app_id, state.token, state.channel_name, state.user_id) + start_time = Membrane.Time.os_time() + + {:ok, native_state} = + Native.create(state.app_id, state.token, state.channel_name, state.user_id) + + duration = Membrane.Time.os_time() - start_time + duration_ms = Membrane.Time.as_milliseconds(duration, :round) + Membrane.Logger.info("Agora SDK initialization took: #{duration_ms} ms") + + if duration_ms > 500 do + Membrane.Logger.warning(""" + Agora SDK initialization took #{duration_ms} ms which is longer than expected. + The initial demand made by this sink might be delayed. + """) + end + + native_state rescue _e in UndefinedFunctionError -> reraise( diff --git a/lib/agora/agora_source.ex b/lib/agora/agora_source.ex index 8d59f10..36c5d5f 100644 --- a/lib/agora/agora_source.ex +++ b/lib/agora/agora_source.ex @@ -5,6 +5,8 @@ defmodule Membrane.Agora.Source do """ use Membrane.Source + require Membrane.Logger + alias Membrane.Agora.Source.Native alias Membrane.Buffer @@ -62,9 +64,25 @@ defmodule Membrane.Agora.Source do @impl true def handle_playing(_ctx, state) do - {:ok, native_state} = + native_state = try do - Native.create(state.app_id, state.token, state.channel_name, state.user_id, self()) + start_time = Membrane.Time.os_time() + + {:ok, native_state} = + Native.create(state.app_id, state.token, state.channel_name, state.user_id) + + duration = Membrane.Time.os_time() - start_time + duration_ms = Membrane.Time.as_milliseconds(duration, :round) + Membrane.Logger.info("Agora SDK initialization took: #{duration_ms} ms") + + if duration_ms > 500 do + Membrane.Logger.warning(""" + Agora SDK initialization took #{duration_ms} ms which is longer than expected. + The initial demand made by this sink might be delayed. + """) + end + + native_state rescue _e in UndefinedFunctionError -> reraise(