Possible bug in ipp_codec.c and solution

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi guys,

I noticed that VAD/DTX functionality was not working with Intel IPP's AMR
codec. When VAD is turned ON, even though SID and SID_UPDATE frames are
sent properly, ALL frames are still transmitted, including NO_DATA frames.
As per standards, NO_DATA frames (frame type 15) should not be transmitted
at all.

I inserted a print as described below. But the logs never showed such a
print.

[from ipp_codec.c]
..

/* Check if we don't need to transmit the frame (DTX) */

if (tx == 0){

*PJ_LOG(1,(THIS_FILE, "FRAME NOT TRANSMITTED"));*

output->buf = NULL;

output->size = 0;

output->timestamp.u64 = input->timestamp.u64;

output->type = PJMEDIA_FRAME_TYPE_NONE;

return PJ_SUCCESS;
    }

..

I tried a solution and it seems to work ok. I initialised a boolean
variable *DONT_TRANSMIT *in the function and set it to true here:

[from ipp_codec.c]
...

} else {

/* Untransmited */

*info = 15;

out.nbytes = 2;

*DONT_TRANSMIT == PJ_TRUE;*

}

..

Then I modified the first piece of code like this

[from ipp_codec.c]
..

/* Check if we don't need to transmit the frame (DTX) */

if (tx == 0 || DONT_TRANSMIT ){

PJ_LOG(1,(THIS_FILE, "FRAME NOT TRANSMITTED"));

output->buf = NULL;

output->size = 0;

output->timestamp.u64 = input->timestamp.u64;

output->type = PJMEDIA_FRAME_TYPE_NONE;

return PJ_SUCCESS;
    }

..

The prints are now visible and the timestamps through wireshark look okay
as well.

Could someone please have a look and tell me if I am wrong.

Thanks,
Arjun
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20121110/a1b70f5f/attachment-0001.html>


[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux