enable speaker for two way audio

This commit is contained in:
seydx
2025-01-24 17:37:50 +01:00
parent 17bba4d4a2
commit bceb024588
+23 -17
View File
@@ -16,9 +16,9 @@ import (
) )
type Client struct { type Client struct {
conn *webrtc.Conn
ws *websocket.Conn
api *RingRestClient api *RingRestClient
ws *websocket.Conn
prod *webrtc.Conn
camera *CameraData camera *CameraData
dialogID string dialogID string
sessionID string sessionID string
@@ -162,7 +162,7 @@ func Dial(rawURL string) (*Client, error) {
println("WebSocket URL: ", wsURL) println("WebSocket URL: ", wsURL)
conn, _, err := websocket.DefaultDialer.Dial(wsURL, map[string][]string{ ws, _, err := websocket.DefaultDialer.Dial(wsURL, map[string][]string{
"User-Agent": {"android:com.ringapp"}, "User-Agent": {"android:com.ringapp"},
}) })
if err != nil { if err != nil {
@@ -194,14 +194,14 @@ func Dial(rawURL string) (*Client, error) {
api, err := webrtc.NewAPI() api, err := webrtc.NewAPI()
if err != nil { if err != nil {
println("Failed to create WebRTC API") println("Failed to create WebRTC API")
conn.Close() ws.Close()
return nil, err return nil, err
} }
pc, err := api.NewPeerConnection(conf) pc, err := api.NewPeerConnection(conf)
if err != nil { if err != nil {
println("Failed to create Peer Connection") println("Failed to create Peer Connection")
conn.Close() ws.Close()
return nil, err return nil, err
} }
@@ -223,11 +223,11 @@ func Dial(rawURL string) (*Client, error) {
prod.URL = rawURL prod.URL = rawURL
client := &Client{ client := &Client{
ws: conn,
api: ringAPI, api: ringAPI,
ws: ws,
prod: prod,
camera: camera, camera: camera,
dialogID: uuid.NewString(), dialogID: uuid.NewString(),
conn: prod,
done: make(chan struct{}), done: make(chan struct{}),
} }
@@ -351,7 +351,7 @@ func Dial(rawURL string) (*Client, error) {
return return
default: default:
var res BaseMessage var res BaseMessage
if err = conn.ReadJSON(&res); err != nil { if err = ws.ReadJSON(&res); err != nil {
select { select {
case <-client.done: case <-client.done:
return return
@@ -509,22 +509,28 @@ func (c *Client) sendSessionMessage(method string, body map[string]interface{})
func (c *Client) GetMedias() []*core.Media { func (c *Client) GetMedias() []*core.Media {
println("Getting medias") println("Getting medias")
return c.conn.GetMedias() return c.prod.GetMedias()
} }
func (c *Client) GetTrack(media *core.Media, codec *core.Codec) (*core.Receiver, error) { func (c *Client) GetTrack(media *core.Media, codec *core.Codec) (*core.Receiver, error) {
println("Getting track") println("Getting track")
return c.conn.GetTrack(media, codec) return c.prod.GetTrack(media, codec)
} }
func (c *Client) AddTrack(media *core.Media, codec *core.Codec, track *core.Receiver) error { func (c *Client) AddTrack(media *core.Media, codec *core.Codec, track *core.Receiver) error {
println("Adding track") // Enable speaker
return c.conn.AddTrack(media, codec, track) speakerPayload := map[string]interface{}{
"stealth_mode": false,
}
_ = c.sendSessionMessage("camera_options", speakerPayload);
return c.prod.AddTrack(media, codec, track)
} }
func (c *Client) Start() error { func (c *Client) Start() error {
println("Starting client") println("Starting client")
return c.conn.Start() return c.prod.Start()
} }
func (c *Client) Stop() error { func (c *Client) Stop() error {
@@ -536,9 +542,9 @@ func (c *Client) Stop() error {
close(c.done) close(c.done)
} }
if c.conn != nil { if c.prod != nil {
_ = c.conn.Stop() _ = c.prod.Stop()
c.conn = nil c.prod = nil
} }
if c.ws != nil { if c.ws != nil {
@@ -558,5 +564,5 @@ func (c *Client) Stop() error {
} }
func (c *Client) MarshalJSON() ([]byte, error) { func (c *Client) MarshalJSON() ([]byte, error) {
return c.conn.MarshalJSON() return c.prod.MarshalJSON()
} }