[Freeswitch-dev] Fwd: [Freeswitch-users] codecs initialization flags in endpoint modules

Matteo mbrancaleoni at voismart.it
Mon Apr 6 08:26:34 PDT 2009


Hello,

I'm forwarding the message from my friend since is better suited
for -dev ML.

In addition, we changed the codec_init to ask only for DECODE on read
and for ENCODE on write in sofia and skypiax and everything seems to
work...

there's a reason for that?

are we going to break up things?

regards,
Matteo.

----- Messaggio inoltrato -----
Da: "Lele Forzani" <lele at windmill.it>
A: freeswitch-users at lists.freeswitch.org
Inviato: Venerdì, 3 aprile 2009 15:20:13 GMT +01:00 Amsterdam/Berlino/Berna/Roma/Stoccolma/Vienna
Oggetto: [Freeswitch-users] codecs initialization flags in endpoint modules


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





_______________________________________________
Freeswitch-users mailing list
Freeswitch-users at lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org



More information about the Freeswitch-dev mailing list