From 2110a0f1111bccc9005db382538643b79c917638 Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Thu, 24 Nov 2022 21:16:43 +0100 Subject: [PATCH] osmo-cc: Add private pointer to codecs --- src/libg711/g711.c | 30 +++++++++++++++--------------- src/libg711/g711.h | 30 +++++++++++++++--------------- src/libmobile/call.c | 10 +++++----- src/libmobile/console.c | 12 ++++++------ src/libosmocc/helper.h | 4 ++-- src/libosmocc/rtp.c | 8 ++++---- src/libosmocc/rtp.h | 4 ++-- src/libosmocc/session.c | 8 ++++---- src/libosmocc/session.h | 10 +++++----- 9 files changed, 58 insertions(+), 58 deletions(-) diff --git a/src/libg711/g711.c b/src/libg711/g711.c index cd195f9..bbbdde5 100644 --- a/src/libg711/g711.c +++ b/src/libg711/g711.c @@ -242,7 +242,7 @@ void g711_init(void) g711_initialized = 1; } -void g711_encode_alaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void g711_encode_alaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *priv) { int16_t *src = (int16_t *)src_data; uint8_t *dst; @@ -262,7 +262,7 @@ void g711_encode_alaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data *dst_len = len; } -void g711_encode_ulaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void g711_encode_ulaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *priv) { int16_t *src = (int16_t *)src_data; uint8_t *dst; @@ -282,7 +282,7 @@ void g711_encode_ulaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data *dst_len = len; } -void g711_decode_alaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void g711_decode_alaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *priv) { uint8_t *src = src_data; int16_t *dst; @@ -302,7 +302,7 @@ void g711_decode_alaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data *dst_len = len * 2; } -void g711_decode_ulaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void g711_decode_ulaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *priv) { uint8_t *src = src_data; int16_t *dst; @@ -322,7 +322,7 @@ void g711_decode_ulaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data *dst_len = len * 2; } -void g711_encode_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void g711_encode_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *priv) { int16_t *src = (int16_t *)src_data; uint8_t *dst; @@ -342,7 +342,7 @@ void g711_encode_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *d *dst_len = len; } -void g711_encode_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void g711_encode_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *priv) { int16_t *src = (int16_t *)src_data; uint8_t *dst; @@ -362,7 +362,7 @@ void g711_encode_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *d *dst_len = len; } -void g711_decode_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void g711_decode_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *priv) { uint8_t *src = src_data; int16_t *dst; @@ -382,7 +382,7 @@ void g711_decode_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *d *dst_len = len * 2; } -void g711_decode_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void g711_decode_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *priv) { uint8_t *src = src_data; int16_t *dst; @@ -402,7 +402,7 @@ void g711_decode_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *d *dst_len = len * 2; } -void g711_transcode_alaw_to_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void g711_transcode_alaw_to_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *priv) { uint8_t *src = src_data, *dst; int len = src_len, i; @@ -421,7 +421,7 @@ void g711_transcode_alaw_to_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_d *dst_len = len; } -void g711_transcode_alaw_flipped_to_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void g711_transcode_alaw_flipped_to_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *priv) { uint8_t *src = src_data, *dst; int len = src_len, i; @@ -440,7 +440,7 @@ void g711_transcode_alaw_flipped_to_ulaw(uint8_t *src_data, int src_len, uint8_t *dst_len = len; } -void g711_transcode_alaw_to_ulaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void g711_transcode_alaw_to_ulaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *priv) { uint8_t *src = src_data, *dst; int len = src_len, i; @@ -459,7 +459,7 @@ void g711_transcode_alaw_to_ulaw_flipped(uint8_t *src_data, int src_len, uint8_t *dst_len = len; } -void g711_transcode_ulaw_to_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void g711_transcode_ulaw_to_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *priv) { uint8_t *src = src_data, *dst; int len = src_len, i; @@ -478,7 +478,7 @@ void g711_transcode_ulaw_to_alaw(uint8_t *src_data, int src_len, uint8_t **dst_d *dst_len = len; } -void g711_transcode_ulaw_flipped_to_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void g711_transcode_ulaw_flipped_to_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *priv) { uint8_t *src = src_data, *dst; int len = src_len, i; @@ -497,7 +497,7 @@ void g711_transcode_ulaw_flipped_to_alaw(uint8_t *src_data, int src_len, uint8_t *dst_len = len; } -void g711_transcode_ulaw_to_alaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void g711_transcode_ulaw_to_alaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *priv) { uint8_t *src = src_data, *dst; int len = src_len, i; @@ -516,7 +516,7 @@ void g711_transcode_ulaw_to_alaw_flipped(uint8_t *src_data, int src_len, uint8_t *dst_len = len; } -void g711_transcode_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void g711_transcode_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *priv) { uint8_t *src = src_data, *dst; int len = src_len, i; diff --git a/src/libg711/g711.h b/src/libg711/g711.h index 795f60b..389daa9 100644 --- a/src/libg711/g711.h +++ b/src/libg711/g711.h @@ -1,17 +1,17 @@ void g711_init(void); -void g711_encode_alaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); -void g711_encode_ulaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); -void g711_decode_alaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); -void g711_decode_ulaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); -void g711_encode_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); -void g711_encode_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); -void g711_decode_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); -void g711_decode_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); -void g711_transcode_alaw_to_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); -void g711_transcode_alaw_flipped_to_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); -void g711_transcode_alaw_to_ulaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); -void g711_transcode_ulaw_to_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); -void g711_transcode_ulaw_flipped_to_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); -void g711_transcode_ulaw_to_alaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); -void g711_transcode_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); +void g711_encode_alaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); +void g711_encode_ulaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); +void g711_decode_alaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); +void g711_decode_ulaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); +void g711_encode_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); +void g711_encode_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); +void g711_decode_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); +void g711_decode_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); +void g711_transcode_alaw_to_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); +void g711_transcode_alaw_flipped_to_ulaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); +void g711_transcode_alaw_to_ulaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); +void g711_transcode_ulaw_to_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); +void g711_transcode_ulaw_flipped_to_alaw(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); +void g711_transcode_ulaw_to_alaw_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); +void g711_transcode_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); diff --git a/src/libmobile/call.c b/src/libmobile/call.c index b4054f7..a7858d4 100644 --- a/src/libmobile/call.c +++ b/src/libmobile/call.c @@ -61,7 +61,7 @@ static int release_on_disconnect; /* release towards mobile phone, if OSMO-CC ca osmo_cc_endpoint_t endpoint, *ep; -void encode_l16(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void encode_l16(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *arg) { uint16_t *src = (uint16_t *)src_data, *dst; int len = src_len / 2, i; @@ -75,7 +75,7 @@ void encode_l16(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len *dst_len = len * 2; } -void decode_l16(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len) +void decode_l16(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *arg) { uint16_t *src = (uint16_t *)src_data, *dst; int len = src_len / 2, i; @@ -622,7 +622,7 @@ void call_up_audio(int callref, sample_t *samples, int count) printf(" mobil-level: %s%.4f\n", debug_db(lev), (20 * log10(lev))); #endif samples_to_int16_speech(data, samples, count); - osmo_cc_rtp_send(process->codec, (uint8_t *)data, count * 2, 0, 1, count); + osmo_cc_rtp_send(process->codec, (uint8_t *)data, count * 2, 0, 1, count, process); /* don't destroy process here in case of an error */ } @@ -645,7 +645,7 @@ void call_clock(void) printf(" mobil-level: %s%.4f\n", debug_db(lev), (20 * log10(lev))); samples_to_int16(data, samples, 160); #endif - osmo_cc_rtp_send(process->codec, (uint8_t *)data, 160 * 2, 0, 1, 160); + osmo_cc_rtp_send(process->codec, (uint8_t *)data, 160 * 2, 0, 1, 160, process); /* don't destroy process here in case of an error */ } process = process->next; @@ -935,7 +935,7 @@ void call_media_handle(void) while(process) { if (process->session) - osmo_cc_session_handle(process->session); + osmo_cc_session_handle(process->session, process); process = process->next; } } diff --git a/src/libmobile/console.c b/src/libmobile/console.c index 64abec3..d0ca5dc 100755 --- a/src/libmobile/console.c +++ b/src/libmobile/console.c @@ -89,8 +89,8 @@ static console_t console; extern osmo_cc_endpoint_t *ep; -void encode_l16(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); -void decode_l16(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); +void encode_l16(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *arg); +void decode_l16(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void __attribute__((unused)) *arg); static struct osmo_cc_helper_audio_codecs codecs[] = { { "L16", 8000, 1, encode_l16, decode_l16 }, @@ -154,13 +154,13 @@ void up_audio(struct osmo_cc_session_codec *codec, uint8_t __attribute__((unused } /* if echo test is used, send echo back to mobile */ if (console.echo_test) { - osmo_cc_rtp_send(codec, (uint8_t *)data, count * 2, 0, 1, count); + osmo_cc_rtp_send(codec, (uint8_t *)data, count * 2, 0, 1, count, &console); return; } /* if no sound is used, send test tone to mobile */ if (console.state == CONSOLE_CONNECT) { get_test_patterns((int16_t *)data, count); - osmo_cc_rtp_send(codec, (uint8_t *)data, count * 2, 0, 1, count); + osmo_cc_rtp_send(codec, (uint8_t *)data, count * 2, 0, 1, count, &console); return; } } @@ -569,7 +569,7 @@ void process_console(int c) process_ui(c); if (console.session) - osmo_cc_session_handle(console.session); + osmo_cc_session_handle(console.session, &console); if (!console.sound) return; @@ -628,7 +628,7 @@ void process_console(int c) if (console.callref && console.codec) { int16_t data[160]; samples_to_int16_speech(data, console.tx_buffer, 160); - osmo_cc_rtp_send(console.codec, (uint8_t *)data, 160 * 2, 0, 1, 160); + osmo_cc_rtp_send(console.codec, (uint8_t *)data, 160 * 2, 0, 1, 160, &console); } } } diff --git a/src/libosmocc/helper.h b/src/libosmocc/helper.h index 0d3585e..9b18ac0 100644 --- a/src/libosmocc/helper.h +++ b/src/libosmocc/helper.h @@ -3,8 +3,8 @@ struct osmo_cc_helper_audio_codecs { const char *payload_name; uint32_t payload_rate; int payload_channels; - void (*encoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); - void (*decoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); + void (*encoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); + void (*decoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); }; osmo_cc_session_t *osmo_cc_helper_audio_offer(osmo_cc_session_config_t *conf, void *priv, struct osmo_cc_helper_audio_codecs *codecs, void (*receiver)(struct osmo_cc_session_codec *codec, uint8_t marker, uint16_t sequence_number, uint32_t timestamp, uint32_t ssrc, uint8_t *data, int len), osmo_cc_msg_t *msg, int debug); diff --git a/src/libosmocc/rtp.c b/src/libosmocc/rtp.c index b118833..fc70748 100644 --- a/src/libosmocc/rtp.c +++ b/src/libosmocc/rtp.c @@ -321,7 +321,7 @@ connect_error: } /* send rtp data with given codec */ -void osmo_cc_rtp_send(osmo_cc_session_codec_t *codec, uint8_t *data, int len, uint8_t marker, int inc_sequence, int inc_timestamp) +void osmo_cc_rtp_send(osmo_cc_session_codec_t *codec, uint8_t *data, int len, uint8_t marker, int inc_sequence, int inc_timestamp, void *priv) { uint8_t *payload = NULL; int payload_len = 0; @@ -330,7 +330,7 @@ void osmo_cc_rtp_send(osmo_cc_session_codec_t *codec, uint8_t *data, int len, ui return; if (codec->encoder) - codec->encoder(data, len, &payload, &payload_len); + codec->encoder(data, len, &payload, &payload_len, priv); else { payload = data; payload_len = len; @@ -345,7 +345,7 @@ void osmo_cc_rtp_send(osmo_cc_session_codec_t *codec, uint8_t *data, int len, ui } /* receive rtp data for given media, return < 0, if there is nothing this time */ -int osmo_cc_rtp_receive(osmo_cc_session_media_t *media) +int osmo_cc_rtp_receive(osmo_cc_session_media_t *media, void *priv) { int rc; uint8_t *payload = NULL; @@ -375,7 +375,7 @@ int osmo_cc_rtp_receive(osmo_cc_session_media_t *media) } if (codec->decoder) - codec->decoder(payload, payload_len, &data, &len); + codec->decoder(payload, payload_len, &data, &len, priv); else { data = payload; len = payload_len; diff --git a/src/libosmocc/rtp.h b/src/libosmocc/rtp.h index eb74f73..f6e5632 100644 --- a/src/libosmocc/rtp.h +++ b/src/libosmocc/rtp.h @@ -2,7 +2,7 @@ void osmo_cc_set_rtp_ports(osmo_cc_session_config_t *conf, uint16_t from, uint16_t to); int osmo_cc_rtp_open(osmo_cc_session_media_t *media); int osmo_cc_rtp_connect(osmo_cc_session_media_t *media); -void osmo_cc_rtp_send(osmo_cc_session_codec_t *codec, uint8_t *data, int len, uint8_t marker, int inc_sequence, int inc_timestamp); -int osmo_cc_rtp_receive(osmo_cc_session_media_t *media); +void osmo_cc_rtp_send(osmo_cc_session_codec_t *codec, uint8_t *data, int len, uint8_t marker, int inc_sequence, int inc_timestamp, void *priv); +int osmo_cc_rtp_receive(osmo_cc_session_media_t *media, void *priv); void osmo_cc_rtp_close(osmo_cc_session_media_t *media); diff --git a/src/libosmocc/session.c b/src/libosmocc/session.c index 8216c05..427eca7 100644 --- a/src/libosmocc/session.c +++ b/src/libosmocc/session.c @@ -197,7 +197,7 @@ void osmo_cc_free_media(osmo_cc_session_media_t *media) free(media); } -osmo_cc_session_codec_t *osmo_cc_add_codec(osmo_cc_session_media_t *media, const char *payload_name, uint32_t payload_rate, int payload_channels, void (*encoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len), void (*decoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len), int debug) +osmo_cc_session_codec_t *osmo_cc_add_codec(osmo_cc_session_media_t *media, const char *payload_name, uint32_t payload_rate, int payload_channels, void (*encoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv), void (*decoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv), int debug) { osmo_cc_session_codec_t *codec, **codecp; int rc; @@ -403,7 +403,7 @@ void osmo_cc_session_accept_media(osmo_cc_session_media_t *media, enum osmo_cc_s } -void osmo_cc_session_accept_codec(osmo_cc_session_codec_t *codec, void (*encoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len), void (*decoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len)) +void osmo_cc_session_accept_codec(osmo_cc_session_codec_t *codec, void (*encoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv), void (*decoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv)) { codec->accepted = 1; codec->encoder = encoder; @@ -622,14 +622,14 @@ int osmo_cc_session_if_codec(osmo_cc_session_codec_t *codec, const char *name, u && codec->payload_channels == channels); } -int osmo_cc_session_handle(osmo_cc_session_t *session) +int osmo_cc_session_handle(osmo_cc_session_t *session, void *codec_priv) { osmo_cc_session_media_t *media; int w = 0, rc; osmo_cc_session_for_each_media(session->media_list, media) { do { - rc = osmo_cc_rtp_receive(media); + rc = osmo_cc_rtp_receive(media, codec_priv); if (rc >= 0) w = 1; } while (rc >= 0); diff --git a/src/libosmocc/session.h b/src/libosmocc/session.h index 791bcb4..0330f51 100644 --- a/src/libosmocc/session.h +++ b/src/libosmocc/session.h @@ -96,8 +96,8 @@ typedef struct osmo_cc_session_codec { const char *payload_name; uint32_t payload_rate; int payload_channels; - void (*encoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); - void (*decoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len); + void (*encoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); + void (*decoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv); int accepted; } osmo_cc_session_codec_t; @@ -112,13 +112,13 @@ osmo_cc_session_t *osmo_cc_new_session(osmo_cc_session_config_t *conf, void *pri void osmo_cc_free_session(osmo_cc_session_t *session); osmo_cc_session_media_t *osmo_cc_add_media(osmo_cc_session_t *session, enum osmo_cc_session_nettype nettype, enum osmo_cc_session_addrtype addrtype, const char *address, enum osmo_cc_session_media_type type, uint16_t port, enum osmo_cc_session_media_proto proto, int send, int receive, void (*receiver)(struct osmo_cc_session_codec *codec, uint8_t marker, uint16_t sequence_number, uint32_t timestamp, uint32_t ssrc, uint8_t *data, int len), int debug); void osmo_cc_free_media(osmo_cc_session_media_t *media); -osmo_cc_session_codec_t *osmo_cc_add_codec(osmo_cc_session_media_t *media, const char *playload_name, uint32_t playload_rate, int playload_channels, void (*encoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len), void (*decoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len), int debug); +osmo_cc_session_codec_t *osmo_cc_add_codec(osmo_cc_session_media_t *media, const char *playload_name, uint32_t playload_rate, int playload_channels, void (*encoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv), void (*decoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv), int debug); void osmo_cc_free_codec(osmo_cc_session_codec_t *codec); int osmo_cc_session_check(struct osmo_cc_session *session, int remote); const char *osmo_cc_session_send_offer(osmo_cc_session_t *session); osmo_cc_session_t *osmo_cc_session_receive_offer(osmo_cc_session_config_t *conf, void *priv, const char *sdp); void osmo_cc_session_accept_media(osmo_cc_session_media_t *media, enum osmo_cc_session_nettype nettype, enum osmo_cc_session_addrtype addrtype, const char *address, int send, int receive, void (*receiver)(struct osmo_cc_session_codec *codec, uint8_t marker, uint16_t sequence_number, uint32_t timestamp, uint32_t ssrc, uint8_t *data, int len)); -void osmo_cc_session_accept_codec(osmo_cc_session_codec_t *codec, void (*encoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len), void (*decoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len)); +void osmo_cc_session_accept_codec(osmo_cc_session_codec_t *codec, void (*encoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv), void (*decoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv)); const char *osmo_cc_session_send_answer(osmo_cc_session_t *session); int osmo_cc_session_receive_answer(osmo_cc_session_t *session, const char *sdp); const char *osmo_cc_session_nettype2string(enum osmo_cc_session_nettype nettype); @@ -126,5 +126,5 @@ const char *osmo_cc_session_addrtype2string(enum osmo_cc_session_addrtype addrty const char *osmo_cc_session_media_type2string(enum osmo_cc_session_media_type media_type); const char *osmo_cc_session_media_proto2string(enum osmo_cc_session_media_proto media_proto); int osmo_cc_session_if_codec(osmo_cc_session_codec_t *codec, const char *name, uint32_t rate, int channels); -int osmo_cc_session_handle(osmo_cc_session_t *session); +int osmo_cc_session_handle(osmo_cc_session_t *session, void *codec_priv);