@@ -12,28 +12,29 @@ defmodule Shinkai.Sink.WebRTC do
1212 alias Phoenix.PubSub
1313 alias RTSP.RTP.Encoder , as: RTPEncoder
1414
15- @ supported_codecs [ :h264 , :h265 , :pcma ]
15+ @ supported_codecs [ :h264 , :h265 , :av1 , : pcma]
1616 @ video_clock_rate 90_000
1717
1818 def start_link ( opts ) do
19- GenServer . start_link ( __MODULE__ , opts , name: opts [ :name ] )
19+ id = { :via , Registry , { Source.Registry , { :webrtc_sink , opts [ :id ] } } }
20+ GenServer . start_link ( __MODULE__ , opts , name: id )
2021 end
2122
22- @ spec add_new_peer ( server :: pid ( ) | atom ( ) ) :: { :ok , String . t ( ) , String . t ( ) } | { :error , any ( ) }
23+ @ spec add_new_peer ( GenServer . server ( ) ) :: { :ok , String . t ( ) , String . t ( ) } | { :error , any ( ) }
2324 def add_new_peer ( server ) do
2425 GenServer . call ( server , :add_new_peer )
2526 end
2627
2728 @ spec handle_peer_answer (
28- server :: pid ( ) | atom ( ) ,
29+ GenServer . server ( ) ,
2930 session_id :: String . t ( ) ,
3031 sdp :: String . t ( )
3132 ) :: :ok | { :error , any ( ) }
3233 def handle_peer_answer ( server , session_id , sdp ) do
3334 GenServer . call ( server , { :handle_peer_answer , session_id , sdp } )
3435 end
3536
36- @ spec remove_peer ( server :: pid ( ) | atom ( ) , session_id :: String . t ( ) ) :: :ok
37+ @ spec remove_peer ( GenServer . server ( ) , session_id :: String . t ( ) ) :: :ok
3738 def remove_peer ( server , session_id ) do
3839 GenServer . cast ( server , { :remove_peer , session_id } )
3940 end
@@ -165,7 +166,7 @@ defmodule Shinkai.Sink.WebRTC do
165166
166167 track_id = track_ctx . id
167168
168- Registry . dispatch ( Shinkai .Registry, { :webrtc , source_id } , fn peers ->
169+ Registry . dispatch ( Sink .Registry, { :webrtc , source_id } , fn peers ->
169170 for { _pid , { pc , _session_id } } <- peers do
170171 Enum . each ( packets , fn rtp_packet ->
171172 :ok = ExWebRTC.PeerConnection . send_rtp ( pc , track_id , rtp_packet )
@@ -196,6 +197,7 @@ defmodule Shinkai.Sink.WebRTC do
196197
197198 defp mime_type ( :h264 ) , do: "video/H264"
198199 defp mime_type ( :h265 ) , do: "video/H265"
200+ defp mime_type ( :av1 ) , do: "video/AV1"
199201 defp mime_type ( :pcma ) , do: "audio/PCMA"
200202
201203 defp sdp_fmtp_line ( :h264 , pt ) do
@@ -207,10 +209,10 @@ defmodule Shinkai.Sink.WebRTC do
207209 }
208210 end
209211
210- defp sdp_fmtp_line ( :h265 , _pt ) , do: nil
211212 defp sdp_fmtp_line ( _codec , _pt ) , do: nil
212213
213214 defp payloader_mod ( :h264 ) , do: RTPEncoder.H264
214215 defp payloader_mod ( :h265 ) , do: RTPEncoder.H265
216+ defp payloader_mod ( :av1 ) , do: RTPEncoder.AV1
215217 defp payloader_mod ( :pcma ) , do: RTPEncoder.G711
216218end
0 commit comments