From 123d12379f143faee401a8ceb9458516d264781d Mon Sep 17 00:00:00 2001 From: "feliks.pobiedzinski@swmansion.com" Date: Wed, 19 Feb 2025 12:05:58 +0100 Subject: [PATCH] Delete single-file demos --- capture_and_play_demo.exs | 220 -------------------------------------- player_demo.exs | 185 -------------------------------- 2 files changed, 405 deletions(-) delete mode 100644 capture_and_play_demo.exs delete mode 100644 player_demo.exs diff --git a/capture_and_play_demo.exs b/capture_and_play_demo.exs deleted file mode 100644 index 39e130c..0000000 --- a/capture_and_play_demo.exs +++ /dev/null @@ -1,220 +0,0 @@ -Application.put_env(:sample, Example.Endpoint, - http: [ip: {127, 0, 0, 1}, port: 5001], - server: true, - live_view: [signing_salt: "aaaaaaaa"], - secret_key_base: String.duplicate("a", 64) -) - -# Mix.install([ -# {:plug_cowboy, "~> 2.5"}, -# {:jason, "~> 1.0"}, -# {:phoenix, "~> 1.7.0"}, -# {:phoenix_live_view, "~> 0.19.0"} -# ]) - -defmodule Example.ErrorView do - def render(template, _), do: Phoenix.Controller.status_message_from_template(template) -end - -defmodule Example.HomeLive do - use Phoenix.LiveView, layout: {__MODULE__, :live} - - alias Boombox.Live.WebRTC.{Capture, Player} - - def mount(_params, _session, socket) do - socket = - if connected?(socket) do - ingress_signaling = Membrane.WebRTC.SignalingChannel.new() - egress_signaling = Membrane.WebRTC.SignalingChannel.new() - - {:ok, _boombox_pid} = - Task.start_link(fn -> - Boombox.run( - input: {:webrtc, ingress_signaling}, - output: {:webrtc, egress_signaling} - ) - end) - - socket = - socket - |> Capture.attach( - id: "mediaCapture", - signaling_channel: ingress_signaling, - audio?: false, - video?: true - ) - |> Player.attach( - id: "videoPlayer", - signaling_channel: egress_signaling - ) - - socket - |> assign( - capture: Capture.get_attached(socket, "mediaCapture"), - player: Player.get_attached(socket, "videoPlayer") - ) - else - socket - end - - {:ok, socket} - end - - defp phx_vsn, do: Application.spec(:phoenix, :vsn) - defp lv_vsn, do: Application.spec(:phoenix_live_view, :vsn) - - def render("live.html", assigns) do - ~H""" - - - - - <%= @inner_content %> - """ - end - - def render(%{capture: %Capture{}, player: %Player{}} = assigns) do - ~H""" - - - """ - end - - def render(assigns) do - ~H""" - """ - end -end - -defmodule Example.Router do - use Phoenix.Router - import Phoenix.LiveView.Router - - pipeline :browser do - plug(:accepts, ["html"]) - end - - scope "/", Example do - pipe_through(:browser) - - live("/", HomeLive, :index) - end -end - -defmodule Example.Endpoint do - use Phoenix.Endpoint, otp_app: :sample - socket("/live", Phoenix.LiveView.Socket) - plug(Example.Router) -end - -{:ok, _} = Supervisor.start_link([Example.Endpoint], strategy: :one_for_one) -Process.sleep(:infinity) diff --git a/player_demo.exs b/player_demo.exs deleted file mode 100644 index 14fd331..0000000 --- a/player_demo.exs +++ /dev/null @@ -1,185 +0,0 @@ -Application.put_env(:sample, Example.Endpoint, - http: [ip: {127, 0, 0, 1}, port: 5001], - server: true, - live_view: [signing_salt: "aaaaaaaa"], - secret_key_base: String.duplicate("a", 64) -) - -# Mix.install([ -# {:plug_cowboy, "~> 2.5"}, -# {:jason, "~> 1.0"}, -# {:phoenix, "~> 1.7.0"}, -# {:phoenix_live_view, "~> 0.19.0"} -# ]) - -defmodule Example.ErrorView do - def render(template, _), do: Phoenix.Controller.status_message_from_template(template) -end - -defmodule Debugger do - def debug(pid) do - if Process.alive?(pid) do - IO.puts("ALIVE #{inspect(pid)} #{self() |> inspect()}") - else - IO.puts("NOT ALIVE #{inspect(pid)} #{self() |> inspect()}") - end - - Process.sleep(1000) - - debug(pid) - end -end - -defmodule Example.HomeLive do - use Phoenix.LiveView, layout: {__MODULE__, :live} - - alias Boombox.Live.WebRTC.Player - - def mount(_params, _session, socket) do - socket = - if connected?(socket) do - signaling_channel = Membrane.WebRTC.SignalingChannel.new() - - {:ok, boombox_pid} = - Task.start_link(fn -> - overlay = - Req.get!("https://avatars.githubusercontent.com/u/25247695?s=200&v=4").body - |> Vix.Vips.Image.new_from_buffer() - |> then(fn {:ok, img} -> img end) - |> Image.trim!() - |> Image.thumbnail!(100) - - bg = Image.new!(640, 480, color: :light_gray) - max_x = Image.width(bg) - Image.width(overlay) - max_y = Image.height(bg) - Image.height(overlay) - - Stream.iterate({_x = 300, _y = 0, _dx = 1, _dy = 2, _pts = 0}, fn {x, y, dx, dy, pts} -> - dx = if (x + dx) in 0..max_x, do: dx, else: -dx - dy = if (y + dy) in 0..max_y, do: dy, else: -dy - pts = pts + div(Membrane.Time.seconds(1), _fps = 60) - {x + dx, y + dy, dx, dy, pts} - end) - |> Stream.map(fn {x, y, _dx, _dy, pts} -> - img = Image.compose!(bg, overlay, x: x, y: y) - %Boombox.Packet{kind: :video, payload: img, pts: pts} - end) - |> Boombox.run( - input: {:stream, video: :image, audio: false}, - output: {:webrtc, signaling_channel} - ) - end) - - _debug_task = Task.start_link(fn -> Debugger.debug(boombox_pid) end) - - socket - |> Player.attach(id: "videoPlayer", signaling_channel: signaling_channel) - |> assign(signaling_channel: signaling_channel, boombox: boombox_pid) - else - socket - end - - {:ok, socket} - end - - defp phx_vsn, do: Application.spec(:phoenix, :vsn) - defp lv_vsn, do: Application.spec(:phoenix_live_view, :vsn) - - def render("live.html", assigns) do - ~H""" - - - - - <%= @inner_content %> - """ - end - - def render(%{player: %Player{}} = assigns) do - ~H""" - - """ - end - - def render(assigns) do - ~H""" - """ - end -end - -defmodule Example.Router do - use Phoenix.Router - import Phoenix.LiveView.Router - - pipeline :browser do - plug(:accepts, ["html"]) - end - - scope "/", Example do - pipe_through(:browser) - - live("/", HomeLive, :index) - end -end - -defmodule Example.Endpoint do - use Phoenix.Endpoint, otp_app: :sample - socket("/live", Phoenix.LiveView.Socket) - plug(Example.Router) -end - -{:ok, _} = Supervisor.start_link([Example.Endpoint], strategy: :one_for_one) -Process.sleep(:infinity)