[asterisk-dev] Re: Help with 240 samples on frames readfromchan_iax

Moises Silva moises.silva at gmail.com
Mon Nov 6 17:59:44 MST 2006


  Hum, it seems to work with slinear, ulaw, alaw and gsm, but not with
iLBC, it complains about ilbc frame not being multiple of 50, so i
tried to make it happy, but still misses some translations from
slinear to iLBC and the sound is choppy. What makes iLBC so special
any way?

  I just did this to fix the app_conference issue:


    /* create the smoother if were receiving more samples than needed */
    if ( AST_CONF_BLOCK_SAMPLES < fr->samples ) {
        if ( member->inSmoother == NULL ) {
            /* calculate bytes per sample */
            ast_log(LOG_DEBUG, "%s frame has %d samples in %d
bytes\n", member->channel_name, fr->samples, fr->datalen);
            float bytes_per_sample = ( (float)fr->datalen /
(float)fr->samples );
            ast_log(LOG_DEBUG, "%s frame has %f bytes per sample\n",
member->channel_name, bytes_per_sample);
            float new_frame_len    = ( AST_CONF_BLOCK_SAMPLES *
bytes_per_sample );
            if ( fr->subclass == AST_FORMAT_ILBC ) {
                ast_log(LOG_DEBUG, "ILBC format only accepts datalen
multiple of 50, so make it happy\n");
                if ( new_frame_len < 50 ) {
                    new_frame_len = 50;
                }
            }
            ast_log(LOG_DEBUG, "%s new frame size is %f\n",
member->channel_name, new_frame_len);
            member->inSmoother   = ast_smoother_new(new_frame_len);


That is, I have fixed the samples on any frame to
AST_CONF_BLOCK_SAMPLES, that is 160 samples ( calculated from slinear
at 20ms with 8000 samples per second ), this is needed because the
mix_slinear_frames function in app_conference requires that maximum
number of samples. Any ideas, again to make it work with iLBC or any
other frame size dependant codec?

Thanks.

On 11/6/06, Moises Silva <moises.silva at gmail.com> wrote:
> On 11/6/06, Dan Austin <Dan_Austin at phoenix.com> wrote:
> > In the scenario that Moises described, it sounds
> > like he might managed the server that the SPA is registered to.  If
> > he had the ability to force the framing between the two servers to
> > 20ms, it would have helped.  It would not help if an endpoint that
> > uses a payload other than 20ms was register to the same server that
> > hosts app_conference, so making app_conference more resilient is a
> > valid goal.
>
>   Sure, I think it would be great to have that control over our
> network. By the way,  I have fixed app_conference, smoothers rules!,
> do you know if iaxclient-dev maling list the correct place to post my
> patch that fixes the framing issue?
>   I sent an email saturday without response, but may be with a patch
> included some one will get interested.
>
> Best Regards
> --
> "Su nombre es GNU/Linux, no solamente Linux, mas info en http://www.gnu.org"
>


-- 
"Su nombre es GNU/Linux, no solamente Linux, mas info en http://www.gnu.org"


More information about the asterisk-dev mailing list