Add SID 16420 #6

Closed
shadowcaster3 wants to merge 31 commits from (deleted):master into master
9 changed files with 58 additions and 58 deletions
Showing only changes of commit 21efdf8414 - Show all commits

View File

@ -242,7 +242,7 @@ void g711_init(void)
g711_initialized = 1; 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; int16_t *src = (int16_t *)src_data;
uint8_t *dst; 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; *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; int16_t *src = (int16_t *)src_data;
uint8_t *dst; 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; *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; uint8_t *src = src_data;
int16_t *dst; 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; *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; uint8_t *src = src_data;
int16_t *dst; 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; *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; int16_t *src = (int16_t *)src_data;
uint8_t *dst; 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; *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; int16_t *src = (int16_t *)src_data;
uint8_t *dst; 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; *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; uint8_t *src = src_data;
int16_t *dst; 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; *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; uint8_t *src = src_data;
int16_t *dst; 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; *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; uint8_t *src = src_data, *dst;
int len = src_len, i; 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; *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; uint8_t *src = src_data, *dst;
int len = src_len, i; 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; *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; uint8_t *src = src_data, *dst;
int len = src_len, i; 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; *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; uint8_t *src = src_data, *dst;
int len = src_len, i; 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; *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; uint8_t *src = src_data, *dst;
int len = src_len, i; 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; *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; uint8_t *src = src_data, *dst;
int len = src_len, i; 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; *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; uint8_t *src = src_data, *dst;
int len = src_len, i; int len = src_len, i;

View File

@ -1,17 +1,17 @@
void g711_init(void); 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_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 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 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 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 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 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 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 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 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 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 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 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 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 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 g711_transcode_flipped(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv);

View File

@ -61,7 +61,7 @@ static int release_on_disconnect; /* release towards mobile phone, if OSMO-CC ca
osmo_cc_endpoint_t endpoint, *ep; 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; uint16_t *src = (uint16_t *)src_data, *dst;
int len = src_len / 2, i; 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; *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; uint16_t *src = (uint16_t *)src_data, *dst;
int len = src_len / 2, i; 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))); printf(" mobil-level: %s%.4f\n", debug_db(lev), (20 * log10(lev)));
#endif #endif
samples_to_int16_speech(data, samples, count); 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 */ /* 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))); printf(" mobil-level: %s%.4f\n", debug_db(lev), (20 * log10(lev)));
samples_to_int16(data, samples, 160); samples_to_int16(data, samples, 160);
#endif #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 */ /* don't destroy process here in case of an error */
} }
process = process->next; process = process->next;
@ -935,7 +935,7 @@ void call_media_handle(void)
while(process) { while(process) {
if (process->session) if (process->session)
osmo_cc_session_handle(process->session); osmo_cc_session_handle(process->session, process);
process = process->next; process = process->next;
} }
} }

View File

@ -89,8 +89,8 @@ static console_t console;
extern osmo_cc_endpoint_t *ep; extern osmo_cc_endpoint_t *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);
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);
static struct osmo_cc_helper_audio_codecs codecs[] = { static struct osmo_cc_helper_audio_codecs codecs[] = {
{ "L16", 8000, 1, encode_l16, decode_l16 }, { "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 echo test is used, send echo back to mobile */
if (console.echo_test) { 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; return;
} }
/* if no sound is used, send test tone to mobile */ /* if no sound is used, send test tone to mobile */
if (console.state == CONSOLE_CONNECT) { if (console.state == CONSOLE_CONNECT) {
get_test_patterns((int16_t *)data, count); 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; return;
} }
} }
@ -569,7 +569,7 @@ void process_console(int c)
process_ui(c); process_ui(c);
if (console.session) if (console.session)
osmo_cc_session_handle(console.session); osmo_cc_session_handle(console.session, &console);
if (!console.sound) if (!console.sound)
return; return;
@ -628,7 +628,7 @@ void process_console(int c)
if (console.callref && console.codec) { if (console.callref && console.codec) {
int16_t data[160]; int16_t data[160];
samples_to_int16_speech(data, console.tx_buffer, 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);
} }
} }
} }

View File

@ -3,8 +3,8 @@ struct osmo_cc_helper_audio_codecs {
const char *payload_name; const char *payload_name;
uint32_t payload_rate; uint32_t payload_rate;
int payload_channels; int payload_channels;
void (*encoder)(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 (*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); 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);

View File

@ -321,7 +321,7 @@ connect_error:
} }
/* send rtp data with given codec */ /* 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; uint8_t *payload = NULL;
int payload_len = 0; 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; return;
if (codec->encoder) if (codec->encoder)
codec->encoder(data, len, &payload, &payload_len); codec->encoder(data, len, &payload, &payload_len, priv);
else { else {
payload = data; payload = data;
payload_len = len; 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 */ /* 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; int rc;
uint8_t *payload = NULL; uint8_t *payload = NULL;
@ -375,7 +375,7 @@ int osmo_cc_rtp_receive(osmo_cc_session_media_t *media)
} }
if (codec->decoder) if (codec->decoder)
codec->decoder(payload, payload_len, &data, &len); codec->decoder(payload, payload_len, &data, &len, priv);
else { else {
data = payload; data = payload;
len = payload_len; len = payload_len;

View File

@ -2,7 +2,7 @@
void osmo_cc_set_rtp_ports(osmo_cc_session_config_t *conf, uint16_t from, uint16_t to); 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_open(osmo_cc_session_media_t *media);
int osmo_cc_rtp_connect(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); 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); int osmo_cc_rtp_receive(osmo_cc_session_media_t *media, void *priv);
void osmo_cc_rtp_close(osmo_cc_session_media_t *media); void osmo_cc_rtp_close(osmo_cc_session_media_t *media);

View File

@ -197,7 +197,7 @@ void osmo_cc_free_media(osmo_cc_session_media_t *media)
free(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; osmo_cc_session_codec_t *codec, **codecp;
int rc; 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->accepted = 1;
codec->encoder = encoder; 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); && 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; osmo_cc_session_media_t *media;
int w = 0, rc; int w = 0, rc;
osmo_cc_session_for_each_media(session->media_list, media) { osmo_cc_session_for_each_media(session->media_list, media) {
do { do {
rc = osmo_cc_rtp_receive(media); rc = osmo_cc_rtp_receive(media, codec_priv);
if (rc >= 0) if (rc >= 0)
w = 1; w = 1;
} while (rc >= 0); } while (rc >= 0);

View File

@ -96,8 +96,8 @@ typedef struct osmo_cc_session_codec {
const char *payload_name; const char *payload_name;
uint32_t payload_rate; uint32_t payload_rate;
int payload_channels; int payload_channels;
void (*encoder)(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 (*decoder)(uint8_t *src_data, int src_len, uint8_t **dst_data, int *dst_len, void *priv);
int accepted; int accepted;
} osmo_cc_session_codec_t; } 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); 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); 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); 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); void osmo_cc_free_codec(osmo_cc_session_codec_t *codec);
int osmo_cc_session_check(struct osmo_cc_session *session, int remote); int osmo_cc_session_check(struct osmo_cc_session *session, int remote);
const char *osmo_cc_session_send_offer(osmo_cc_session_t *session); 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); 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_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); 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); 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); 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_type2string(enum osmo_cc_session_media_type media_type);
const char *osmo_cc_session_media_proto2string(enum osmo_cc_session_media_proto media_proto); 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_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);