did you test it in scenarios where the ptime is mismatched, every combination of sample rate transcoding, eavesdroping on a channel in all the above situations?

It would require a full suite of testing to confirm.

switch_core_io.c:432 does use read_codec for encode

i think cases arise where it does need both but we could change the code to delay when it inits until the
first time it needs it instead so it would only take place when necessary.

it would require changing all the codec modules in the if (encoding) if (decoding) so instead they
were functions we would call the first time encode or decode was actually called.



On Mon, Apr 6, 2009 at 10:26 AM, Matteo <mbrancaleoni@voismart.it> wrote:
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@windmill.it>
A: freeswitch-users@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@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org

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



--
Anthony Minessale II

FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/

AIM: anthm
MSN:anthony_minessale@hotmail.com
GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com
IRC: irc.freenode.net #freeswitch

FreeSWITCH Developer Conference
sip:888@conference.freeswitch.org
iax:guest@conference.freeswitch.org/888
googletalk:conf+888@conference.freeswitch.org
pstn:213-799-1400