<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
        {margin-top:0;
        margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Arial,Helvetica,sans-serif">
<p>I get always this cause is inside the loop until i exit after the call is answered by the other client which uses the same send and recieve functions as this</p>
<p>both clients outputs this error in the send function<br>
</p>
<p><a href="http://aka.ms/weboutlook" id="LPNoLP"></a><font face="Calibri,Arial,Helvetica,sans-serif" size="3" color="black"><span id="x_divtagdefaultwrapper" style="font-size:12pt">OXAV_ERR_SEND_FRAME_INVALID</span></font></p>
<p><font face="Calibri,Arial,Helvetica,sans-serif" size="3" color="black"><span id="x_divtagdefaultwrapper" style="font-size:12pt"><font face="Calibri,Arial,Helvetica,sans-serif" size="3" color="black"><span id="x_divtagdefaultwrapper" style="font-size:12pt">printf("Audio
 Parameteres Invalid !\n");</span></font></span></font><br>
</p>
<div id="x_Signature"></div>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> Support <support-bounces@lists.tox.chat> on behalf of Zetok Zalbavar <zetok@openmailbox.org><br>
<b>Sent:</b> Thursday, December 8, 2016 7:38:30 PM<br>
<b>To:</b> support@lists.tox.chat<br>
<b>Subject:</b> Re: [Tox Support] Tox Audio Send and Recieve Advice ?</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">On 08.12.2016 17:29, Nocs ... wrote:<br>
> Hello to all again,<br>
> <br>
> <br>
> I am trying to send audio through tox with portaudio and opus encoding, i test them both in local and has good quality<br>
> <br>
> and i try to send the appropiate variables through toxav_audio_send_frame() but it returns the TOXAV_ERR_SEND_FRAME_INVALID error all the time.<br>
> <br>
> Can anyone give a hand what variables to place inside the toxav_audio_send_frame() function ?<br>
> <br>
> <br>
> This code is portaudio and opus for local tests working good :<br>
> <br>
> // initialize opus<br>
> encr = opus_encoder_create(TestSampleRate, TestChannels, OPUS_APPLICATION_AUDIO, NULL);<br>
> decr = opus_decoder_create(TestSampleRate, TestChannels, NULL);<br>
> <br>
> while (connected){<br>
>     //// With Opus Encoding - Decoding<br>
>     Pa_ReadStream(TestStream, captured.data(), TestBufferSize);<br>
>     enc_bytes = opus_encode(encr, reinterpret_cast<opus_int16 const*>(captured.data()), TestBufferSize, reinterpret_cast<opus_uint8*>(encoded.data()), encoded.size());<br>
> <br>
>     dec_bytes = opus_decode(decr, reinterpret_cast<opus_uint8*>(encoded.data()), enc_bytes, reinterpret_cast<opus_int16*>(decoded.data()), TestBufferSize, 0);<br>
>     Pa_WriteStream(TestStream, decoded.data(), TestBufferSize);<br>
> }<br>
> <br>
> <br>
> And here in this code i try to recieve and send with the above code through Tox but cant make it cause of wrong parameters :<br>
> // initialize opus<br>
> encr = opus_encoder_create(TestSampleRate, TestChannels, OPUS_APPLICATION_AUDIO, NULL);<br>
> decr = opus_decoder_create(TestSampleRate, TestChannels, NULL);<br>
> <br>
> ////// SEND AUDIO FRAME<br>
> while (connected){<br>
>     //// With Opus Encoding<br>
>     Pa_ReadStream(TestStream, captured.data(), TestBufferSize);<br>
>     enc_bytes = opus_encode(encr, reinterpret_cast<opus_int16 const*>(captured.data()), TestBufferSize, reinterpret_cast<opus_uint8*>(encoded.data()), encoded.size());<br>
> <br>
>     size_t SampleCounter = ((TestSampleRate)* (enc_bytes) / 1000);<br>
>     TOXAV_ERR_SEND_FRAME SendAudioError;<br>
>     toxav_audio_send_frame(avtox, FriendID, reinterpret_cast<int16_t*>(encoded.data()), SampleCounter, (uint8_t)TestChannels, (uint32_t)TestSampleRate, &SendAudioError);<br>
>     switch (SendAudioError) {<br>
>         case TOXAV_ERR_SEND_FRAME_OK:<br>
>             printf("Audio Frame Sended OK \n");<br>
>             break;<br>
>         case TOXAV_ERR_SEND_FRAME_NULL:<br>
>             printf("The Audio Samples were NULL !\n");<br>
>             break;<br>
>         case TOXAV_ERR_SEND_FRAME_FRIEND_NOT_FOUND:<br>
>             printf("Audio Send Friend not Found !\n");<br>
>             break;<br>
>         case TOXAV_ERR_SEND_FRAME_FRIEND_NOT_IN_CALL:<br>
>             printf("Friend Not In Audio Call with You !\n");<br>
>             break;<br>
>         case TOXAV_ERR_SEND_FRAME_SYNC:<br>
>             printf("Audio Syncronization Failed !\n");<br>
>             break;<br>
>         case TOXAV_ERR_SEND_FRAME_INVALID:<br>
>             printf("Audio Parameteres Invalid !\n");<br>
>             break;<br>
>         case TOXAV_ERR_SEND_FRAME_PAYLOAD_TYPE_DISABLED:<br>
>             printf("Audio Disabled By Friend or You !\n");<br>
>             break;<br>
>         case TOXAV_ERR_SEND_FRAME_RTP_FAILED:<br>
>             printf("Audio Failed To Send Frame !\n");<br>
>             break;<br>
>     }<br>
>     Pa_Sleep(1000);<br>
> }<br>
> <br>
> ////// RECIEVE AUDIO FRAME<br>
> static void t_toxav_receive_audio_frame_cb(ToxAV *av, uint32_t friend_number, int16_t const *pcm, size_t sample_count, uint8_t channels, uint32_t sampling_rate, void *user_data){<br>
> <br>
>     dec_bytes = opus_decode(decr, reinterpret_cast<opus_uint8*>(&pcm), (opus_int32)sample_count, reinterpret_cast<opus_int16*>(decoded.data()), TestBufferSize, 0);<br>
>     Pa_WriteStream(TestStream, decoded.data(), TestBufferSize);<br>
> <br>
> }<br>
> <br>
> <br>
> Can anyone advice me what to enter as parameters in the toxav_audio_send_frame() and in static void t_toxav_receive_audio_frame_cb() ?<br>
> <br>
> sorry for my noobish question and thanks for your time but i really need to make it work and i almost combined many variables and couldnt make it<br>
> <br>
> someone with good knowledge on what to send i think is very easy to tell me what vars should i use in the send and recieve function<br>
> <br>
> <br>
> Thanks in advance<br>
> <br>
<br>
What is the error you're getting?<br>
<br>
-- <br>
<br>
Kind regards,<br>
Zetok Zalbavar<br>
----<br>
tox:29AE62F95C56063D833024B1CB5C2140DC4AEB94A80FF4596CACC460D7BAA062E0A92C3424A0<br>
<br>
</div>
</span></font>
</body>
</html>