G729

NI
Nanang Izzuddin
Mon, Sep 8, 2008 2:18 PM

Hi,

Glad to hear that :)

The underflow messages tell that mic clock rate < speaker clock rate.
However, it normally does not happen that frequent (+/- 5 times per
second). If it possible, please run the snd_test in folder samples,
and see the clock drift result.

Sometime I got that when CPU load is high (in Symbian using Speex +
log level 5) so the sound device may get disturbed by producing clock
drift as above, as long as the voice is not breaking it is fine. If
you get the voice breaking try to reduce the log level or generally
optimize the performance as described in
https://trac.pjsip.org/repos/wiki/FAQ#cpu

Regards,
nanang

On Mon, Sep 8, 2008 at 4:14 PM, Sebastian Groosman
Sebastian.Groosman@indicia.nl wrote:

Hi Nanang,

Thanks a lot for your input!!

I've handled the items and the sound is crystal clear now J.

There is only one thing I see in the logs… a massive amount of underflow
errors.

Any suggestions on that?

Greets,

Sebastian

11:02:34.000  strm002F4254  JB shrinking 1 frame(s), size=11

11:02:34.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:34.000  strm002F4254  JB shrinking 1 frame(s), size=12

11:02:34.000  strm002F4254  jb updated(1), prefetch=9, size=14

11:02:34.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:35.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:35.000  strm002F4254  JB shrinking 1 frame(s), size=11

11:02:35.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:35.000  strm002F4254  JB shrinking 1 frame(s), size=10

11:02:35.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:35.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:35.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:35.000  strm002F4254  JB shrinking 1 frame(s), size=11

11:02:36.000  strm002F4254  JB shrinking 1 frame(s), size=10

11:02:36.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:36.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:36.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:36.000  strm002F4254  JB shrinking 1 frame(s), size=11

11:02:36.000  strm002F4254  jb updated(2), prefetch=12, size=13

11:02:37.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:37.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:37.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:37.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:37.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:37.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:38.000  strm002F4254  JB shrinking 1 frame(s), size=14

11:02:38.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:38.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:38.000  strm002F4254  JB shrinking 1 frame(s), size=13

11:02:38.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:38.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:38.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:39.000  strm002F4254  JB shrinking 1 frame(s), size=14

11:02:39.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:39.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:39.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:39.000  strm002F4254  JB shrinking 1 frame(s), size=13

11:02:40.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:40.000  strm002F4254  JB shrinking 1 frame(s), size=14

11:02:40.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:40.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:40.000  strm002F4254  JB shrinking 1 frame(s), size=13

11:02:40.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:40.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:41.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:41.000  strm002F4254  JB shrinking 1 frame(s), size=14

11:02:41.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:41.000  strm002F4254  JB shrinking 1 frame(s), size=13

11:02:41.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:41.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:42.000  strm002F4254  JB shrinking 1 frame(s), size=14

11:02:42.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:42.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:42.000  strm002F4254  JB shrinking 1 frame(s), size=13

11:02:42.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:42.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:42.000  strm002F4254  JB shrinking 1 frame(s), size=14

11:02:42.000  strm002F4254  jb updated(1), prefetch=10, size=16

11:02:42.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

11:02:42.000  Master/sound  Underflow, buf_cnt=0, will generate 1 frame

From: pjsip-bounces@lists.pjsip.org [mailto:pjsip-bounces@lists.pjsip.org]
On Behalf Of Nanang Izzuddin
Sent: Friday, September 05, 2008 6:06 PM
To: pjsip list
Subject: Re: [pjsip] G729

Hi,

Please try with the following setting first:

  • frm_per_pkt = 1

  • VAD disabled

make sure everything ok with this setting, then move on with frm_per_pkt =
2, if everything ok then deal with VAD enabled.

Some notes about the code:

  • in encode(), it seems you ignore the first byte output of VoiceAge G729
    encoder. If that first byte contains frame type info, it shouldn't be
    ignored, especially when VAD is enabled, since the encoder may return SID
    (silence frame) or DTX (discontinuous transmission) or speech frame. If you
    treat SID and DTX frame as speech frame, decoder may fail or produce noise.

  • silence detector is unnecessary since G729 already has built-in VAD.

  • in encode(), the pcm_in += 2*SAMPLES_PER_FRAME, shouldn't it be just
    pcm_in += SAMPLES_PER_FRAME?

  • in decode(), it doesn't seem that SID frame is handled very well: if
    (input->size < L_PACKED_G729A) return PJMEDIA_CODEC_EFRMTOOSHORT;

Again, if the first byte actually specifies the frame type, instead of
returning non-PJ_SUCCESS it should be decoded normally (e.g: with first
byte/frame type = SID)

Regards,

nanang

On Fri, Sep 5, 2008 at 7:30 PM, Sebastian Groosman
Sebastian.Groosman@indicia.nl wrote:

Hi,

I've had the problem that no sound was heard at all with the VoiceAge
G729 libs.
It appeared that for the decoding part I needed a local buffer and
prepend it with a "2".
For the encoding the output buffer and size were the problem.
Both these problems are mostly solved now. (I've included the files)

The only problem I have left, is that the encoded sound sounds metallic.

I followed most of the rules concerning CPU load on windows mobile
(see post on "how to reduce CPU load and improve voice quality on mobile
device FR" and http://trac.pjsip.org/repos/wiki/FAQ#cpu)
Now my G711 and other codes' sound quality is a lot better but the
encoded sound is still metallic.

Any suggestions?

Sebastian

-----Original Message-----
From: pjsip-bounces@lists.pjsip.org

[mailto:pjsip-bounces@lists.pjsip.org] On Behalf Of Nanang Izzuddin
Sent: Wednesday, September 03, 2008 4:15 PM
To: pjsip list
Subject: Re: [pjsip] G729

Hi,

Could you specify more detail about the problem?

Regards,
nanang

On 03/09/2008, Sebastian Groosman Sebastian.Groosman@indicia.nl wrote:

Hi,

I'm trying to get VoiceAge g729 working on a windows mobile

smartphone,

without success...

Since Intel IPP has no libraries for that platform, I'm using the

VoiceAge

libraries for this platform.

Has anybody figured out how to get this working?

I've included my files... maybe I'm just missing something here.

Thanks in advance,

Sebastian

From: pjsip-bounces@lists.pjsip.org
[mailto:pjsip-bounces@lists.pjsip.org] On Behalf Of Archie
Rosenblum
Sent: Friday, August 15, 2008 1:18 AM
To: pjsip list
Subject: Re: [pjsip] G729

Thank you for the heads-up, Benny.  This product really is terrific.


From: pjsip-bounces@lists.pjsip.org
[mailto:pjsip-bounces@lists.pjsip.org] On Behalf Of Benny
Prijono
Sent: Thursday, August 14, 2008 6:03 PM
To: pjsip list
Subject: Re: [pjsip] G729

On Thu, Aug 14, 2008 at 10:23 PM, Archie Rosenblum archie@bbsti.com

wrote:

Hi Everyone,

By any chance has anyone successfully implemented G729 using the

VoiceAge or

Intel's IPP libraries (or others) for win32?  I just can't figure it

out.  I

am willing to pay for a correct working header/source and

instructions.

It's just beyond my ability.

We're currently integrating Intel IPP codecs for the next release.

It's in

--
Regards,
nanang

Hi, Glad to hear that :) The underflow messages tell that mic clock rate < speaker clock rate. However, it normally does not happen that frequent (+/- 5 times per second). If it possible, please run the snd_test in folder samples, and see the clock drift result. Sometime I got that when CPU load is high (in Symbian using Speex + log level 5) so the sound device may get disturbed by producing clock drift as above, as long as the voice is not breaking it is fine. If you get the voice breaking try to reduce the log level or generally optimize the performance as described in https://trac.pjsip.org/repos/wiki/FAQ#cpu Regards, nanang On Mon, Sep 8, 2008 at 4:14 PM, Sebastian Groosman <Sebastian.Groosman@indicia.nl> wrote: > Hi Nanang, > > > > Thanks a lot for your input!! > > I've handled the items and the sound is crystal clear now J. > > > > There is only one thing I see in the logs… a massive amount of underflow > errors. > > Any suggestions on that? > > > > Greets, > > Sebastian > > > > > > 11:02:34.000 strm002F4254 JB shrinking 1 frame(s), size=11 > > 11:02:34.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:34.000 strm002F4254 JB shrinking 1 frame(s), size=12 > > 11:02:34.000 strm002F4254 jb updated(1), prefetch=9, size=14 > > 11:02:34.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:35.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:35.000 strm002F4254 JB shrinking 1 frame(s), size=11 > > 11:02:35.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:35.000 strm002F4254 JB shrinking 1 frame(s), size=10 > > 11:02:35.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:35.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:35.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:35.000 strm002F4254 JB shrinking 1 frame(s), size=11 > > 11:02:36.000 strm002F4254 JB shrinking 1 frame(s), size=10 > > 11:02:36.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:36.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:36.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:36.000 strm002F4254 JB shrinking 1 frame(s), size=11 > > 11:02:36.000 strm002F4254 jb updated(2), prefetch=12, size=13 > > 11:02:37.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:37.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:37.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:37.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:37.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:37.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:38.000 strm002F4254 JB shrinking 1 frame(s), size=14 > > 11:02:38.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:38.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:38.000 strm002F4254 JB shrinking 1 frame(s), size=13 > > 11:02:38.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:38.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:38.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:39.000 strm002F4254 JB shrinking 1 frame(s), size=14 > > 11:02:39.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:39.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:39.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:39.000 strm002F4254 JB shrinking 1 frame(s), size=13 > > 11:02:40.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:40.000 strm002F4254 JB shrinking 1 frame(s), size=14 > > 11:02:40.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:40.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:40.000 strm002F4254 JB shrinking 1 frame(s), size=13 > > 11:02:40.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:40.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:41.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:41.000 strm002F4254 JB shrinking 1 frame(s), size=14 > > 11:02:41.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:41.000 strm002F4254 JB shrinking 1 frame(s), size=13 > > 11:02:41.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:41.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:42.000 strm002F4254 JB shrinking 1 frame(s), size=14 > > 11:02:42.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:42.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:42.000 strm002F4254 JB shrinking 1 frame(s), size=13 > > 11:02:42.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:42.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:42.000 strm002F4254 JB shrinking 1 frame(s), size=14 > > 11:02:42.000 strm002F4254 jb updated(1), prefetch=10, size=16 > > 11:02:42.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > 11:02:42.000 Master/sound Underflow, buf_cnt=0, will generate 1 frame > > > > From: pjsip-bounces@lists.pjsip.org [mailto:pjsip-bounces@lists.pjsip.org] > On Behalf Of Nanang Izzuddin > Sent: Friday, September 05, 2008 6:06 PM > To: pjsip list > Subject: Re: [pjsip] G729 > > > > Hi, > > > > Please try with the following setting first: > > - frm_per_pkt = 1 > > - VAD disabled > > make sure everything ok with this setting, then move on with frm_per_pkt = > 2, if everything ok then deal with VAD enabled. > > > > Some notes about the code: > > - in encode(), it seems you ignore the first byte output of VoiceAge G729 > encoder. If that first byte contains frame type info, it shouldn't be > ignored, especially when VAD is enabled, since the encoder may return SID > (silence frame) or DTX (discontinuous transmission) or speech frame. If you > treat SID and DTX frame as speech frame, decoder may fail or produce noise. > - silence detector is unnecessary since G729 already has built-in VAD. > > - in encode(), the pcm_in += 2*SAMPLES_PER_FRAME, shouldn't it be just > pcm_in += SAMPLES_PER_FRAME? > > - in decode(), it doesn't seem that SID frame is handled very well: if > (input->size < L_PACKED_G729A) return PJMEDIA_CODEC_EFRMTOOSHORT; > > Again, if the first byte actually specifies the frame type, instead of > returning non-PJ_SUCCESS it should be decoded normally (e.g: with first > byte/frame type = SID) > > > > Regards, > > nanang > > > > > > > > On Fri, Sep 5, 2008 at 7:30 PM, Sebastian Groosman > <Sebastian.Groosman@indicia.nl> wrote: > > Hi, > > I've had the problem that no sound was heard at all with the VoiceAge > G729 libs. > It appeared that for the decoding part I needed a local buffer and > prepend it with a "2". > For the encoding the output buffer and size were the problem. > Both these problems are mostly solved now. (I've included the files) > > The only problem I have left, is that the encoded sound sounds metallic. > > I followed most of the rules concerning CPU load on windows mobile > (see post on "how to reduce CPU load and improve voice quality on mobile > device FR" and http://trac.pjsip.org/repos/wiki/FAQ#cpu) > Now my G711 and other codes' sound quality is a lot better but the > encoded sound is still metallic. > > Any suggestions? > > Sebastian > > > -----Original Message----- > From: pjsip-bounces@lists.pjsip.org > > [mailto:pjsip-bounces@lists.pjsip.org] On Behalf Of Nanang Izzuddin > Sent: Wednesday, September 03, 2008 4:15 PM > To: pjsip list > Subject: Re: [pjsip] G729 > > Hi, > > Could you specify more detail about the problem? > > Regards, > nanang > > > On 03/09/2008, Sebastian Groosman <Sebastian.Groosman@indicia.nl> wrote: >> >> >> >> Hi, >> >> >> >> I'm trying to get VoiceAge g729 working on a windows mobile > smartphone, >> without success... >> >> Since Intel IPP has no libraries for that platform, I'm using the > VoiceAge >> libraries for this platform. >> >> >> >> Has anybody figured out how to get this working? >> >> I've included my files... maybe I'm just missing something here. >> >> >> >> Thanks in advance, >> >> Sebastian >> >> >> >> >> >> >> From: pjsip-bounces@lists.pjsip.org >> [mailto:pjsip-bounces@lists.pjsip.org] On Behalf Of Archie >> Rosenblum >> Sent: Friday, August 15, 2008 1:18 AM >> To: pjsip list >> Subject: Re: [pjsip] G729 >> >> >> >> Thank you for the heads-up, Benny. This product really is terrific. >> >> >> ________________________________ >> >> >> From: pjsip-bounces@lists.pjsip.org >> [mailto:pjsip-bounces@lists.pjsip.org] On Behalf Of Benny >> Prijono >> Sent: Thursday, August 14, 2008 6:03 PM >> To: pjsip list >> Subject: Re: [pjsip] G729 >> >> >> >> >> On Thu, Aug 14, 2008 at 10:23 PM, Archie Rosenblum <archie@bbsti.com> > wrote: >> >> >> >> Hi Everyone, >> >> >> >> By any chance has anyone successfully implemented G729 using the > VoiceAge or >> Intel's IPP libraries (or others) for win32? I just can't figure it > out. I >> am willing to pay for a correct working header/source and > instructions. >> It's just beyond my ability. >> >> >> >> We're currently integrating Intel IPP codecs for the next release. > It's in >> the roadmap (http://trac.pjsip.org/repos/roadmap). >> >> >> Cheers >> Benny >> _______________________________________________ >> Visit our blog: http://blog.pjsip.org >> >> pjsip mailing list >> pjsip@lists.pjsip.org >> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> >> >> > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip@lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip@lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org > > > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip@lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org > > -- Regards, nanang