WASAPI implementation in PJSip

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

 



*@Bill,*

But the record is not made in the thread that gets the frame (my WASAPI
thread), right? Or do I need to implement my capture engine in order for
the render buffer to be correct?

*@Abdelrahman*,

I think that the only problem will be the WinSocks. However, I'm not
targeting for ARM devices, where WinSocks does not exist. In x86 and x64
processors there is WinSocks. But, however, I'm already prepared to be
rejected a lot of times :(


On 26 March 2014 16:40, Abdelrahman Salah <abdelrahman.salah.cs at gmail.com>wrote:

> Dear nuno,
>
> This is a side hint, please bay attention to the dependencies required,
> because most of the dependencies required are not allowed in windows store
> and more than likely it will fail the certificate test.
> So take that into consideration before spending time and effort.
>
> Abdelrahman Salah
> Sent From My Note II
> On 26 Mar 2014 18:25, "Nuno Centeio" <nuno.r.centeio at gmail.com> wrote:
>
>> Hi guys,
>>
>> I'm trying to implement the Windows Audio Session API (WASAPI) in order
>> to make PJSip compliant with Windows Store apps.
>>
>> I think that I'm almost done but I can get the sound correctly (it's just
>> that!).
>>
>> Here is what I have:
>>
>> (pb_client is a IAudioRenderClient)
>> hr = strm->pb_client->GetBuffer(frame_to_render, &cur_pb_buf);
>>
>> pjmedia_frame frame;
>> void* destBuffer =
>> (void*)malloc(strm->bytes_per_frame*frame_to_render*sizeof(pj_uint16_t));
>> /* PCM mode */
>> frame.type = PJMEDIA_FRAME_TYPE_AUDIO;
>> frame.size = strm->bytes_per_frame;
>> frame.timestamp.u64 = strm->pb_timestamp.u64;
>> frame.bit_info = 0;
>> frame.buf = destBuffer;
>>
>> status = (*strm->pb_cb)(strm->user_data, &frame);
>>
>> /* Because PJSip will give me PCM 16 bits, 2 channels and WASAPI needs
>>    IEEE Floating point 32-bits, 2 channels
>> */
>> CAudioConverter* conv = new CAudioConverter();
>> conv->ConvI16ToF32((BYTE*)destBuffer, cur_pb_buf, frame_to_render);
>>
>> /* Write to the device. */
>> hr = strm->pb_client->ReleaseBuffer(frame_to_render, 0);
>>
>> While running I have the following prints:
>> 3/26/2014 4:00:01 PM V SIP          - Underflow, buf_cnt=0, will generate
>> 1 frame
>> 3/26/2014 4:00:01 PM V SIP          - Underflow, buf_cnt=0, will generate
>> 1 frame
>> 3/26/2014 4:00:01 PM V SIP          - 698 samples reduced, buf_cnt=6092
>> 3/26/2014 4:00:01 PM V SIP          - Buffer size adjusted from 6790 to
>> 6092 (eff_cnt=5760)
>> 3/26/2014 4:00:01 PM V SIP          - Underflow, buf_cnt=0, will generate
>> 1 frame
>> 3/26/2014 4:00:02 PM V SIP          - 320 samples reduced, buf_cnt=6412
>> 3/26/2014 4:00:02 PM V SIP          - Buffer size adjusted from 6732 to
>> 6412 (eff_cnt=5760)
>>
>> Any hints on what I might be doing wrong?
>>
>> Thanks
>>
>> _______________________________________________
>> Visit our blog: http://blog.pjsip.org
>>
>> pjsip mailing list
>> pjsip at lists.pjsip.org
>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>
>>
> _______________________________________________
> Visit our blog: http://blog.pjsip.org
>
> pjsip mailing list
> pjsip at lists.pjsip.org
> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20140326/ef877fbb/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