[Tox Support] Tox Audio Send and Recieve Advice ?

Nocs ... NoCos30 at hotmail.com
Thu Dec 8 17:29:06 UTC 2016


Hello to all again,


I am trying to send audio through tox with portaudio and opus encoding, i test them both in local and has good quality

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.

Can anyone give a hand what variables to place inside the toxav_audio_send_frame() function ?


This code is portaudio and opus for local tests working good :

// initialize opus
encr = opus_encoder_create(TestSampleRate, TestChannels, OPUS_APPLICATION_AUDIO, NULL);
decr = opus_decoder_create(TestSampleRate, TestChannels, NULL);

while (connected){
    //// With Opus Encoding - Decoding
    Pa_ReadStream(TestStream, captured.data(), TestBufferSize);
    enc_bytes = opus_encode(encr, reinterpret_cast<opus_int16 const*>(captured.data()), TestBufferSize, reinterpret_cast<opus_uint8*>(encoded.data()), encoded.size());

    dec_bytes = opus_decode(decr, reinterpret_cast<opus_uint8*>(encoded.data()), enc_bytes, reinterpret_cast<opus_int16*>(decoded.data()), TestBufferSize, 0);
    Pa_WriteStream(TestStream, decoded.data(), TestBufferSize);
}


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 :
// initialize opus
encr = opus_encoder_create(TestSampleRate, TestChannels, OPUS_APPLICATION_AUDIO, NULL);
decr = opus_decoder_create(TestSampleRate, TestChannels, NULL);

////// SEND AUDIO FRAME
while (connected){
    //// With Opus Encoding
    Pa_ReadStream(TestStream, captured.data(), TestBufferSize);
    enc_bytes = opus_encode(encr, reinterpret_cast<opus_int16 const*>(captured.data()), TestBufferSize, reinterpret_cast<opus_uint8*>(encoded.data()), encoded.size());

    size_t SampleCounter = ((TestSampleRate)* (enc_bytes) / 1000);
    TOXAV_ERR_SEND_FRAME SendAudioError;
    toxav_audio_send_frame(avtox, FriendID, reinterpret_cast<int16_t*>(encoded.data()), SampleCounter, (uint8_t)TestChannels, (uint32_t)TestSampleRate, &SendAudioError);
    switch (SendAudioError) {
        case TOXAV_ERR_SEND_FRAME_OK:
            printf("Audio Frame Sended OK \n");
            break;
        case TOXAV_ERR_SEND_FRAME_NULL:
            printf("The Audio Samples were NULL !\n");
            break;
        case TOXAV_ERR_SEND_FRAME_FRIEND_NOT_FOUND:
            printf("Audio Send Friend not Found !\n");
            break;
        case TOXAV_ERR_SEND_FRAME_FRIEND_NOT_IN_CALL:
            printf("Friend Not In Audio Call with You !\n");
            break;
        case TOXAV_ERR_SEND_FRAME_SYNC:
            printf("Audio Syncronization Failed !\n");
            break;
        case TOXAV_ERR_SEND_FRAME_INVALID:
            printf("Audio Parameteres Invalid !\n");
            break;
        case TOXAV_ERR_SEND_FRAME_PAYLOAD_TYPE_DISABLED:
            printf("Audio Disabled By Friend or You !\n");
            break;
        case TOXAV_ERR_SEND_FRAME_RTP_FAILED:
            printf("Audio Failed To Send Frame !\n");
            break;
    }
    Pa_Sleep(1000);
}

////// RECIEVE AUDIO FRAME
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){

    dec_bytes = opus_decode(decr, reinterpret_cast<opus_uint8*>(&pcm), (opus_int32)sample_count, reinterpret_cast<opus_int16*>(decoded.data()), TestBufferSize, 0);
    Pa_WriteStream(TestStream, decoded.data(), TestBufferSize);

}


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() ?

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

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


Thanks in advance


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.tox.chat/pipermail/support/attachments/20161208/529c744d/attachment.html>


More information about the Support mailing list