[Freeswitch-users] codecs initialization flags in endpoint modules
Lele Forzani
lele at windmill.it
Fri Apr 3 06:20:13 PDT 2009
Hello,
I've been experimenting with the use of mod_dahdi_codec and other ways
to perform external transcoding for codecs, and came up with noticing
that transcoding resources seemed to be used up twice what I expected.
That is and 2x the number of call legs, ending up to two encoder and two
decoder instances per leg.
So, I looked at the code and noticed almost every endpoint module does
something like this (excerpt from mod_sofia, sofia_glue.c:~1800):
if (switch_core_codec_init(&tech_pvt->read_codec,
tech_pvt->iananame,
tech_pvt->rm_fmtp,
tech_pvt->rm_rate,
tech_pvt->codec_ms,
1,
SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE | tech_pvt->profile->codec_flags,
NULL, switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't load codec?\n");
switch_goto_status(SWITCH_STATUS_FALSE, end);
}
if (switch_core_codec_init(&tech_pvt->write_codec,
tech_pvt->iananame,
tech_pvt->rm_fmtp,
tech_pvt->rm_rate,
tech_pvt->codec_ms,
1,
SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE | tech_pvt->profile->codec_flags,
NULL, switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't load codec?\n");
switch_goto_status(SWITCH_STATUS_FALSE, end);
}
The flags being SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE
seems to be causing the apparent 'double' allocation of transcoding
resources, and I fail to understand the need for both, in both cases.
Could someone please spend a minute to explain?
thanks
lele
More information about the Freeswitch-users
mailing list