@@ -21,6 +21,7 @@ struct sl_track {
2121 char name [64 ];
2222 char error [128 ];
2323 enum sl_track_status status ;
24+ bool muted ;
2425 union
2526 {
2627 struct local local ;
@@ -90,6 +91,7 @@ int sl_tracks_json(struct re_printf *pf, void *arg)
9091 odict_entry_add (o_track , "name" , ODICT_STRING , track -> name );
9192 odict_entry_add (o_track , "status" , ODICT_INT , track -> status );
9293 odict_entry_add (o_track , "error" , ODICT_STRING , track -> error );
94+ odict_entry_add (o_track , "muted" , ODICT_BOOL , track -> muted );
9395 odict_entry_add (o_tracks , str_itoa (track -> id , id , 10 ),
9496 ODICT_OBJECT , o_track );
9597 o_track = mem_deref (o_track );
@@ -170,6 +172,7 @@ int sl_track_add(struct sl_track **trackp, enum sl_track_type type)
170172 track -> id = sl_track_next_id ();
171173 track -> type = type ;
172174 track -> status = SL_TRACK_IDLE ;
175+ track -> muted = false;
173176
174177 list_append (& tracks , & track -> le , track );
175178 list_sort (& tracks , sort_handler , NULL );
@@ -302,6 +305,18 @@ void sl_track_hangup(struct sl_track *track)
302305}
303306
304307
308+ void sl_track_toggle_mute (struct sl_track * track )
309+ {
310+ /* only allowed for local track currently */
311+ if (!track || track -> id != 1 )
312+ return ;
313+
314+ local_track -> muted = !local_track -> muted ;
315+ sl_audio_mute (local_track -> u .local .slaudio , local_track -> muted );
316+ sl_track_ws_send ();
317+ }
318+
319+
305320void sl_track_ws_send (void )
306321{
307322 char * json_str = mem_zalloc (SL_MAX_JSON + 1 , NULL );
0 commit comments