Skip to content
This repository has been archived by the owner on Sep 19, 2024. It is now read-only.

Commit

Permalink
Merge pull request #245 from jellyfish-dev/refactor-hls-tests
Browse files Browse the repository at this point in the history
Refactor hls tests (remove sleep())
  • Loading branch information
Karolk99 authored Feb 27, 2023
2 parents 1620023 + d823a31 commit 2a08dee
Show file tree
Hide file tree
Showing 26 changed files with 185 additions and 121 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ defmodule Membrane.RTC.Engine.Endpoint.HLS.StreamFormatUpdater do
end

@impl true
def handle_end_of_stream(_pad, _ctx, %{update__queue: 0} = state),
def handle_end_of_stream(_pad, _ctx, %{update_queue: 0} = state),
do: {[end_of_stream: :output], state}

@impl true
Expand All @@ -52,7 +52,7 @@ defmodule Membrane.RTC.Engine.Endpoint.HLS.StreamFormatUpdater do
{actions, %{state | update_queue: state.update_queue - 1}}
end

defp maybe_notify_end_of_stream(%{end_of_stream: true, update_queue: 0}),
defp maybe_notify_end_of_stream(%{end_of_stream: true, update_queue: 1}),
do: [end_of_stream: :output]

defp maybe_notify_end_of_stream(_state), do: []
Expand Down
74 changes: 47 additions & 27 deletions lib/membrane_rtc_engine/endpoints/hls_endpoint.ex
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ if Enum.all?(
:compositor,
:encoder,
:video_parser_out,
:hls_sink_bin
{:hls_sink_bin, :muxed}
]

def_input_pad :input,
Expand All @@ -121,6 +121,14 @@ if Enum.all?(
description: "Path to directory under which HLS output will be saved",
default: "hls_output"
],
synchronize_tracks?: [
spec: boolean(),
default: true,
description: """
Set to false if source is different than webrtc.
If set to true HLS Endpoint will calculate track offset based on `handle_pad_added` call.
"""
],
mixer_config: [
spec: MixerConfig.t() | nil,
default: nil,
Expand Down Expand Up @@ -162,7 +170,7 @@ if Enum.all?(
spec =
generate_audio_mixer(state, context) ++
generate_compositor(state, context) ++
get_hls_sink_spec(state, %{stream_id: nil}, state.output_directory)
get_hls_sink_spec(state)

{[spec: spec], state}
end
Expand Down Expand Up @@ -214,22 +222,31 @@ if Enum.all?(
@impl true
def handle_pad_added(Pad.ref(:input, track_id) = pad, ctx, state) do
{offset, state} = get_track_offset(state)
track = Map.get(state.tracks, track_id)
directory = get_hls_stream_directory(state, track)

track = Map.get(state.tracks, track_id)
track_spec = get_track_spec(offset, bin_input(pad), track, state, ctx)

{spec, state} =
if hls_sink_bin_exists?(track, ctx, state) do
{track_spec, state}
else
hls_sink_spec = get_hls_sink_spec(state, track, directory)
hls_sink_spec = get_hls_sink_spec(state, track.stream_id)
{track_spec ++ hls_sink_spec, state}
end

{[spec: spec], state}
end

@impl true
def handle_child_notification(
:end_of_stream,
{:hls_sink_bin, stream},
_ctx,
state
) do
{[notify_parent: {:forward_to_parent, {:end_of_stream, stream}}], state}
end

@impl true
def handle_child_notification(
{:update_layout, stream_format},
Expand All @@ -251,22 +268,19 @@ if Enum.all?(
end

def handle_child_notification(
{:track_playable, content_type},
:hls_sink_bin,
_ctx,
state
) do
send(state.owner, {:playlist_playable, content_type, ""})
{[], state}
end

def handle_child_notification(
{:track_playable, {content_type, _track_id}},
{:track_playable, data},
{:hls_sink_bin, stream_id},
_ctx,
state
) do
send(state.owner, {:playlist_playable, content_type, stream_id})
content_type =
case data do
{content_type, _track_id} -> content_type
content_type -> content_type
end

output_dir = get_hls_stream_directory(state, stream_id)
send(state.owner, {:playlist_playable, content_type, output_dir})
{[], state}
end

Expand Down Expand Up @@ -308,7 +322,9 @@ if Enum.all?(
{[], state}
end

defp get_hls_sink_spec(state, track, directory) do
defp get_hls_sink_spec(state, stream_id \\ nil) do
directory = get_hls_stream_directory(state, stream_id)

File.rm_rf(directory)
File.mkdir_p!(directory)

Expand All @@ -320,7 +336,9 @@ if Enum.all?(
hls_sink = struct(Membrane.HTTPAdaptiveStream.SinkBin, Map.from_struct(config))

child_name =
if is_nil(state.mixer_config), do: {:hls_sink_bin, track.stream_id}, else: :hls_sink_bin
if is_nil(state.mixer_config),
do: {:hls_sink_bin, stream_id},
else: {:hls_sink_bin, :muxed}

[child(child_name, hls_sink)]
end
Expand Down Expand Up @@ -489,8 +507,7 @@ if Enum.all?(

defp generate_compositor(state, _ctx) do
compositor = %Membrane.VideoCompositor{
stream_format: state.mixer_config.video.stream_format,
real_time: false
stream_format: state.mixer_config.video.stream_format
}

video_parser_out = %Membrane.H264.FFmpeg.Parser{
Expand All @@ -515,7 +532,7 @@ if Enum.all?(
partial_segment_duration: state.hls_config.partial_segment_duration
]
)
|> get_child(:hls_sink_bin)
|> get_child({:hls_sink_bin, :muxed})
]
end
else
Expand Down Expand Up @@ -544,13 +561,15 @@ if Enum.all?(
partial_segment_duration: state.hls_config.partial_segment_duration
]
)
|> get_child(:hls_sink_bin)
|> get_child({:hls_sink_bin, :muxed})
]
end
else
defp generate_audio_mixer(_state, _ctx), do: raise_missing_deps(:audio, @audio_mixer_deps)
end

defp get_track_offset(%{synchronize_tracks?: false} = state), do: {0, state}

defp get_track_offset(%{stream_beginning: nil} = state),
do: {0, %{state | stream_beginning: System.monotonic_time()}}

Expand All @@ -559,18 +578,19 @@ if Enum.all?(
defp hls_sink_bin_exists?(track, ctx, %{mixer_config: nil}),
do: Map.has_key?(ctx.children, {:hls_sink_bin, track.stream_id})

defp hls_sink_bin_exists?(_track, ctx, _state), do: Map.has_key?(ctx.children, :hls_sink_bin)
defp hls_sink_bin_exists?(_track, ctx, _state),
do: Map.has_key?(ctx.children, {:hls_sink_bin, :muxed})

defp get_depayloader(track) do
track
|> Track.get_depayloader()
|> tap(&unless &1, do: raise("Couldn't find depayloader for track #{inspect(track)}"))
end

defp get_hls_stream_directory(%{mixer_config: nil} = state, track),
do: Path.join(state.output_directory, track.stream_id)
defp get_hls_stream_directory(%{mixer_config: nil} = state, stream_id),
do: Path.join(state.output_directory, stream_id)

defp get_hls_stream_directory(state, _track), do: state.output_directory
defp get_hls_stream_directory(state, _stream_id), do: state.output_directory

defp compositor_update_layout(_action, _track, _state, _stream_format \\ nil)

Expand Down
2 changes: 1 addition & 1 deletion lib/membrane_rtc_engine/engine.ex
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ defmodule Membrane.RTC.Engine do
@typedoc """
Membrane action that will cause RTC Engine to forward supplied message to the business logic.
"""
@type forward_to_parent_action_t() :: {:notify, {:forward_to_parent, message :: any()}}
@type forward_to_parent_action_t() :: {:notify_parent, {:forward_to_parent, message :: any()}}

@typedoc """
Membrane action that will inform RTC Engine about track readiness.
Expand Down
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ defmodule Membrane.RTC.Engine.MixProject do
{:membrane_raw_audio_format, "~> 0.10.0", optional: true},
{:membrane_h264_ffmpeg_plugin, "~> 0.25.2", optional: true},
{:membrane_audio_filler_plugin, "~> 0.1.0", optional: true},
{:membrane_video_compositor_plugin, "~> 0.1.0", optional: true},
{:membrane_video_compositor_plugin, "~> 0.2.0", optional: true},
{:membrane_http_adaptive_stream_plugin, "~> 0.11.0", optional: true},

# Test deps
Expand Down
8 changes: 4 additions & 4 deletions mix.lock
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
"fake_turn": {:hex, :fake_turn, "0.3.0", "4d89f472c71a554436327a5cc0a8a1f0766bf350a5b0353d781b630e3c6001d9", [:rebar3], [{:fast_tls, "1.1.13", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.23", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "4a22ccfcc1beda954afffeded4349ca84fd22f541996b006162e7bfa9f09c5dd"},
"fast_tls": {:hex, :fast_tls, "1.1.13", "828cdc75e1e8fce8158846d2b971d8b4fe2b2ddcc75b759e88d751079bf78afd", [:rebar3], [{:p1_utils, "1.0.23", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "d1f422af40c7777fe534496f508ee86515cb929ad10f7d1d56aa94ce899b44a0"},
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
"hackney": {:hex, :hackney, "1.18.1", "f48bf88f521f2a229fc7bae88cf4f85adc9cd9bcf23b5dc8eb6a1788c662c4f6", [:rebar3], [{:certifi, "~> 2.9.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~> 6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~> 1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~> 1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a4ecdaff44297e9b5894ae499e9a070ea1888c84afdd1fd9b7b2bc384950128e"},
"hackney": {:hex, :hackney, "1.18.1", "f48bf88f521f2a229fc7bae88cf4f85adc9cd9bcf23b5dc8eb6a1788c662c4f6", [:rebar3], [{:certifi, "~>2.9.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a4ecdaff44297e9b5894ae499e9a070ea1888c84afdd1fd9b7b2bc384950128e"},
"heap": {:hex, :heap, "2.0.2", "d98cb178286cfeb5edbcf17785e2d20af73ca57b5a2cf4af584118afbcf917eb", [:mix], [], "hexpm", "ba9ea2fe99eb4bcbd9a8a28eaf71cbcac449ca1d8e71731596aace9028c9d429"},
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
"jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"},
"makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"},
"makeup_elixir": {:hex, :makeup_elixir, "0.16.0", "f8c570a0d33f8039513fbccaf7108c5d750f47d8defd44088371191b76492b0b", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "28b2cbdc13960a46ae9a8858c4bebdec3c9a6d7b4b9e7f4ed1502f8159f338e7"},
Expand All @@ -34,7 +34,7 @@
"membrane_audio_mix_plugin": {:hex, :membrane_audio_mix_plugin, "0.12.0", "985f8eb718b2f07f8b82f703324cacaf16499db3514d7d38d4ddb16559c9fb31", [:mix], [{:bunch, "~> 1.3", [hex: :bunch, repo: "hexpm", optional: false]}, {:membrane_common_c, "~> 0.14.0", [hex: :membrane_common_c, repo: "hexpm", optional: false]}, {:membrane_core, "~> 0.11.2", [hex: :membrane_core, repo: "hexpm", optional: false]}, {:membrane_raw_audio_format, "~> 0.10.0", [hex: :membrane_raw_audio_format, repo: "hexpm", optional: false]}, {:unifex, "~> 1.0", [hex: :unifex, repo: "hexpm", optional: false]}], "hexpm", "efe5ddc8b51f0226088965019f91263b2cd34c10fd942cef1590a1be85989369"},
"membrane_cmaf_format": {:hex, :membrane_cmaf_format, "0.6.1", "89d130b5f8786d4285d395697b0f7763a2c82a02de1658cdeb4f8e37e6a6c85c", [:mix], [], "hexpm", "e916e3c8216f3bf999b069ffda94da48c9bdbe3181ce7155a458d1ccf1a97b3d"},
"membrane_common_c": {:hex, :membrane_common_c, "0.14.0", "35621d9736829bf675062dc0af66e931b0d82ff8361c2088576d63d4d002692e", [:mix], [{:membrane_core, "~> 0.11.0", [hex: :membrane_core, repo: "hexpm", optional: false]}, {:shmex, "~> 0.5.0", [hex: :shmex, repo: "hexpm", optional: false]}, {:unifex, "~> 1.0", [hex: :unifex, repo: "hexpm", optional: false]}], "hexpm", "262b06e93fe3f1be57a111fa19f5cba4f26000a442ac32a59f3678e83cbb001f"},
"membrane_core": {:hex, :membrane_core, "0.11.2", "c8a257bea90c53e0fe99453630a07e4711e4d8ba25e647b3ba346b994aa4f7ab", [:mix], [{:bunch, "~> 1.5", [hex: :bunch, repo: "hexpm", optional: false]}, {:qex, "~> 0.3", [hex: :qex, repo: "hexpm", optional: false]}, {:ratio, "~> 2.0", [hex: :ratio, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7e2566c9b6d1c22fbb832c22e5f9dbbf7c6cba1c72eeea53bd2f2b73efed58b3"},
"membrane_core": {:hex, :membrane_core, "0.11.3", "c7cedbbc5af216ce00f173b1e30cbb2ed686b0a86cac9d90bc9cff3c02f938fd", [:mix], [{:bunch, "~> 1.5", [hex: :bunch, repo: "hexpm", optional: false]}, {:qex, "~> 0.3", [hex: :qex, repo: "hexpm", optional: false]}, {:ratio, "~> 2.0", [hex: :ratio, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "de878caa5c5043ccd244f716a31afc9496f626013728881756cacaede72b4649"},
"membrane_file_plugin": {:hex, :membrane_file_plugin, "0.13.2", "220aa341b8d707b65c93cf8d42700a4c67340717ee4fbce3f8fc6503d182b0f8", [:mix], [{:membrane_core, "~> 0.11", [hex: :membrane_core, repo: "hexpm", optional: false]}], "hexpm", "d04159943f4f07fa45156487d9e7c19b9975678c1cda7957a6b0cca59442fae3"},
"membrane_framerate_converter_plugin": {:hex, :membrane_framerate_converter_plugin, "0.6.0", "5a8c66afbfa4dbf917f70b112a18324a4a84fa1d4f117834ed320d7a35ca7eae", [:mix], [{:bunch, "~> 1.3", [hex: :bunch, repo: "hexpm", optional: false]}, {:membrane_core, "~> 0.11.2", [hex: :membrane_core, repo: "hexpm", optional: false]}, {:membrane_raw_video_format, "~> 0.2.0", [hex: :membrane_raw_video_format, repo: "hexpm", optional: false]}, {:ratio, "~> 2.4.2", [hex: :ratio, repo: "hexpm", optional: false]}], "hexpm", "c97cfcf314cc27b6d6793874f712b385ee37283ec1a564c1591a492f2f4cb60e"},
"membrane_funnel_plugin": {:hex, :membrane_funnel_plugin, "0.7.0", "f633a32a7549923a5b15f9afe8aede111b51f1ff9a03e8bb134f5cd54a6a2237", [:mix], [{:membrane_core, "~> 0.11.0", [hex: :membrane_core, repo: "hexpm", optional: false]}], "hexpm", "8f08686cef36ea71cd2bf820163db729a821d5c10f6441c02b24476d6ed639d4"},
Expand All @@ -58,7 +58,7 @@
"membrane_rtp_vp8_plugin": {:hex, :membrane_rtp_vp8_plugin, "0.7.1", "8a9d41eb53e2af8595fa87994a88030d0eb299cd7976f7b3273a6118553c58d2", [:mix], [{:membrane_core, "~> 0.11.2", [hex: :membrane_core, repo: "hexpm", optional: false]}, {:membrane_rtp_format, "~> 0.6.0", [hex: :membrane_rtp_format, repo: "hexpm", optional: false]}, {:membrane_vp8_format, "~> 0.4.0", [hex: :membrane_vp8_format, repo: "hexpm", optional: false]}], "hexpm", "e5fdca517aac0520636c6ce3c709d1eb190d1d266a58c1768cc0c8e1e806a197"},
"membrane_tee_plugin": {:hex, :membrane_tee_plugin, "0.10.1", "a78aef5f04894495f845f4fdeac855320ae0fe21466ff7cb3f00446bcd2a9d0d", [:mix], [{:bunch, "~> 1.0", [hex: :bunch, repo: "hexpm", optional: false]}, {:membrane_core, "~> 0.11.0", [hex: :membrane_core, repo: "hexpm", optional: false]}], "hexpm", "6b97a7c3f67c467f0f6c02a048947aa7f579387f438a50fd06a6e1cbf5a5371d"},
"membrane_telemetry_metrics": {:hex, :membrane_telemetry_metrics, "0.1.0", "cb93d28356b436b0597736c3e4153738d82d2a14ff547f831df7e9051e54fc06", [:mix], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6.1", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "aba28dc8311f70ced95d984509be930fac55857d2d18bffcf768815e627be3f0"},
"membrane_video_compositor_plugin": {:hex, :membrane_video_compositor_plugin, "0.1.0", "f8b192bd3ed7e22653a578c054897125f6c6180653ea60222c3eaac30ad4978c", [:mix], [{:membrane_core, "~> 0.11.2", [hex: :membrane_core, repo: "hexpm", optional: false]}, {:membrane_framerate_converter_plugin, "~> 0.6.0", [hex: :membrane_framerate_converter_plugin, repo: "hexpm", optional: false]}, {:membrane_raw_video_format, "~> 0.2.0", [hex: :membrane_raw_video_format, repo: "hexpm", optional: false]}, {:qex, "~> 0.5.1", [hex: :qex, repo: "hexpm", optional: false]}, {:rustler, "~> 0.26.0", [hex: :rustler, repo: "hexpm", optional: false]}, {:unifex, "~> 1.0", [hex: :unifex, repo: "hexpm", optional: false]}], "hexpm", "853a30170356097a1c25c046dff7c3a3b5d1f09fc29c364b20c56f6fb603409b"},
"membrane_video_compositor_plugin": {:hex, :membrane_video_compositor_plugin, "0.2.0", "b85a06fc856fb814b5d0b8ae7314a5fcd3035a79e47d98eab69f726b9bf6b09c", [:mix], [{:membrane_core, "~> 0.11.2", [hex: :membrane_core, repo: "hexpm", optional: false]}, {:membrane_framerate_converter_plugin, "~> 0.6.0", [hex: :membrane_framerate_converter_plugin, repo: "hexpm", optional: false]}, {:membrane_raw_video_format, "~> 0.2.0", [hex: :membrane_raw_video_format, repo: "hexpm", optional: false]}, {:qex, "~> 0.5.1", [hex: :qex, repo: "hexpm", optional: false]}, {:rustler, "~> 0.26.0", [hex: :rustler, repo: "hexpm", optional: false]}, {:unifex, "~> 1.0", [hex: :unifex, repo: "hexpm", optional: false]}], "hexpm", "f34727b2b0f4d6bd5f4ccaa4991fdc82d77bdf56cee53f4e9ad1ba6dccff6b11"},
"membrane_vp8_format": {:hex, :membrane_vp8_format, "0.4.0", "6c29ec67479edfbab27b11266dc92f18f3baf4421262c5c31af348c33e5b92c7", [:mix], [], "hexpm", "8bb005ede61db8fcb3535a883f32168b251c2dfd1109197c8c3b39ce28ed08e2"},
"membrane_webrtc_plugin": {:hex, :membrane_webrtc_plugin, "0.12.0", "ca3d724f7e1ec53085b3a735921c0f028a8c2c55d97cc57af2c0fcaeebb5fe9f", [:mix], [{:bunch, "~> 1.5", [hex: :bunch, repo: "hexpm", optional: false]}, {:ex_libsrtp, ">= 0.0.0", [hex: :ex_libsrtp, repo: "hexpm", optional: false]}, {:ex_sdp, "~> 0.9.0", [hex: :ex_sdp, repo: "hexpm", optional: false]}, {:membrane_core, "~> 0.11.2", [hex: :membrane_core, repo: "hexpm", optional: false]}, {:membrane_funnel_plugin, "~> 0.7.0", [hex: :membrane_funnel_plugin, repo: "hexpm", optional: false]}, {:membrane_h264_ffmpeg_plugin, "~> 0.25.0", [hex: :membrane_h264_ffmpeg_plugin, repo: "hexpm", optional: false]}, {:membrane_ice_plugin, "~> 0.14.0", [hex: :membrane_ice_plugin, repo: "hexpm", optional: false]}, {:membrane_opentelemetry, "~> 0.1.0", [hex: :membrane_opentelemetry, repo: "hexpm", optional: false]}, {:membrane_rtp_format, "~> 0.6.0", [hex: :membrane_rtp_format, repo: "hexpm", optional: false]}, {:membrane_rtp_h264_plugin, "~> 0.14.0", [hex: :membrane_rtp_h264_plugin, repo: "hexpm", optional: false]}, {:membrane_rtp_opus_plugin, "~> 0.7.0", [hex: :membrane_rtp_opus_plugin, repo: "hexpm", optional: false]}, {:membrane_rtp_plugin, "~> 0.20.0", [hex: :membrane_rtp_plugin, repo: "hexpm", optional: false]}, {:membrane_rtp_vp8_plugin, "~> 0.7.1", [hex: :membrane_rtp_vp8_plugin, repo: "hexpm", optional: false]}, {:opentelemetry, "~> 1.0.4", [hex: :opentelemetry, repo: "hexpm", optional: false]}, {:opentelemetry_api, "~> 1.0", [hex: :opentelemetry_api, repo: "hexpm", optional: false]}, {:qex, "~> 0.5.0", [hex: :qex, repo: "hexpm", optional: false]}], "hexpm", "492dd12d4461cd5ebc40b67fb9efdc7e7616f1381bfedeb4d1b884fd010245a3"},
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
Expand Down
Binary file modified test/hls_reference/audio_mixer/audio_segment_0_g2QABWF1ZGlv.m4s
Binary file not shown.
Binary file modified test/hls_reference/audio_mixer/audio_segment_1_g2QABWF1ZGlv.m4s
Binary file not shown.
Binary file modified test/hls_reference/audio_mixer/audio_segment_2_g2QABWF1ZGlv.m4s
Binary file not shown.
Binary file modified test/hls_reference/audio_mixer/audio_segment_3_g2QABWF1ZGlv.m4s
Binary file not shown.
Loading

0 comments on commit 2a08dee

Please sign in to comment.