Browse Source

MT#55283 use typed GPtrArray for medias

Change-Id: Iadde52af7505b38691d41b9229cb85b252a51ee0
pull/1776/head
Richard Fuchs 2 years ago
parent
commit
5fec35e819
4 changed files with 12 additions and 9 deletions
  1. +3
    -3
      daemon/call.c
  2. +1
    -1
      daemon/call_interfaces.c
  3. +4
    -4
      daemon/redis.c
  4. +4
    -1
      include/call.h

+ 3
- 3
daemon/call.c View File

@ -637,7 +637,7 @@ static struct call_media *__get_media(struct call_monologue *ml, const struct st
// check if we have an existing media struct. resize array if needed // check if we have an existing media struct. resize array if needed
if (arr_index >= ml->medias->len) if (arr_index >= ml->medias->len)
g_ptr_array_set_size(ml->medias, want_index);
t_ptr_array_set_size(ml->medias, want_index);
if (ml->medias->pdata[arr_index]) { if (ml->medias->pdata[arr_index]) {
__C_DBG("found existing call_media for stream #%u", want_index); __C_DBG("found existing call_media for stream #%u", want_index);
@ -3867,7 +3867,7 @@ void call_media_free(struct call_media **mdp) {
} }
void __monologue_free(struct call_monologue *m) { void __monologue_free(struct call_monologue *m) {
g_ptr_array_free(m->medias, true);
t_ptr_array_free(m->medias, true);
g_hash_table_destroy(m->associated_tags); g_hash_table_destroy(m->associated_tags);
g_hash_table_destroy(m->media_ids); g_hash_table_destroy(m->media_ids);
free_ssrc_hash(&m->ssrc_hash); free_ssrc_hash(&m->ssrc_hash);
@ -4081,7 +4081,7 @@ struct call_monologue *__monologue_create(struct call *call) {
ret->call = call; ret->call = call;
ret->created = rtpe_now.tv_sec; ret->created = rtpe_now.tv_sec;
ret->associated_tags = g_hash_table_new(g_direct_hash, g_direct_equal); ret->associated_tags = g_hash_table_new(g_direct_hash, g_direct_equal);
ret->medias = g_ptr_array_new();
ret->medias = medias_arr_new();
ret->media_ids = g_hash_table_new(str_hash, str_equal); ret->media_ids = g_hash_table_new(str_hash, str_equal);
ret->ssrc_hash = create_ssrc_hash_call(); ret->ssrc_hash = create_ssrc_hash_call();


+ 1
- 1
daemon/call_interfaces.c View File

@ -71,7 +71,7 @@ static int call_stream_address_gstring(GString *o, struct packet_stream *ps, enu
return ret; return ret;
} }
static str *streams_print(GPtrArray *s, int start, int end, const char *prefix, enum stream_address_format format) {
static str *streams_print(medias_arr *s, int start, int end, const char *prefix, enum stream_address_format format) {
GString *o; GString *o;
int i, af, port; int i, af, port;
struct call_media *media; struct call_media *media;


+ 4
- 4
daemon/redis.c View File

@ -38,7 +38,7 @@
typedef union { typedef union {
GQueue *q; GQueue *q;
stream_fd_q *sfds_q; stream_fd_q *sfds_q;
GPtrArray *pa;
medias_arr *ma;
sfd_intf_list_q *siq; sfd_intf_list_q *siq;
packet_stream_q *psq; packet_stream_q *psq;
} callback_arg_t __attribute__ ((__transparent_union__)); } callback_arg_t __attribute__ ((__transparent_union__));
@ -1252,10 +1252,10 @@ static int rbl_cb_simple(str *s, callback_arg_t qp, struct redis_list *list, voi
} }
static int rbpa_cb_simple(str *s, callback_arg_t pap, struct redis_list *list, void *ptr) { static int rbpa_cb_simple(str *s, callback_arg_t pap, struct redis_list *list, void *ptr) {
GPtrArray *pa = pap.pa;
medias_arr *pa = pap.ma;
int j; int j;
j = str_to_i(s, 0); j = str_to_i(s, 0);
g_ptr_array_add(pa, redis_list_get_idx_ptr(list, (unsigned) j));
t_ptr_array_add(pa, redis_list_get_idx_ptr(list, (unsigned) j));
return 0; return 0;
} }
@ -1265,7 +1265,7 @@ static int json_build_list(callback_arg_t q, struct call *c, const char *key,
return json_build_list_cb(q, c, key, idx, list, rbl_cb_simple, NULL, root_reader); return json_build_list_cb(q, c, key, idx, list, rbl_cb_simple, NULL, root_reader);
} }
static int json_build_ptra(GPtrArray *q, struct call *c, const char *key,
static int json_build_ptra(medias_arr *q, struct call *c, const char *key,
unsigned int idx, struct redis_list *list, JsonReader *root_reader) unsigned int idx, struct redis_list *list, JsonReader *root_reader)
{ {
return json_build_list_cb(q, c, key, idx, list, rbpa_cb_simple, NULL, root_reader); return json_build_list_cb(q, c, key, idx, list, rbpa_cb_simple, NULL, root_reader);


+ 4
- 1
include/call.h View File

@ -502,6 +502,9 @@ struct call_media {
volatile unsigned int media_flags; volatile unsigned int media_flags;
}; };
TYPED_GPTRARRAY(medias_arr, struct call_media)
struct media_subscription { struct media_subscription {
struct call_media * media; /* media itself */ struct call_media * media; /* media itself */
struct call_monologue * monologue; /* whom media belongs to */ struct call_monologue * monologue; /* whom media belongs to */
@ -536,7 +539,7 @@ struct call_monologue {
const struct logical_intf *logical_intf; const struct logical_intf *logical_intf;
GHashTable *associated_tags; GHashTable *associated_tags;
GHashTable *subscribers_ht; /* for quick lookup */ GHashTable *subscribers_ht; /* for quick lookup */
GPtrArray *medias;
medias_arr *medias;
GHashTable *media_ids; GHashTable *media_ids;
struct media_player *player; struct media_player *player;
unsigned long long sdp_session_id; unsigned long long sdp_session_id;


Loading…
Cancel
Save