/** * @brief Answer incomming call. * * @param av Handler. * @param call_type Answer with... * @return int * @retval 0 Success. * @retval ToxAvError On error. */ int toxav_answer ( ToxAv *av, int32_t call_index, const ToxAvCSettings *csettings ) { if ( cii(call_index, av->msi_session) || !av->msi_session->calls[call_index] ) { return ErrorNoCall; } if ( av->msi_session->calls[call_index]->state != call_starting ) { return ErrorInvalidState; } return msi_answer(av->msi_session, call_index, msicsettings_cast(csettings)); }
/** * @brief Answer incomming call. * * @param av Handler. * @param call_type Answer with... * @return int * @retval 0 Success. * @retval ToxAvError On error. */ int toxav_answer ( ToxAv *av, int32_t call_index, ToxAvCallType call_type ) { if ( cii(call_index, av->msi_session) || !av->msi_session->calls[call_index] ) { return ErrorNoCall; } if ( av->msi_session->calls[call_index]->state != call_starting ) { return ErrorInvalidState; } return msi_answer(av->msi_session, call_index, call_type); }
/** * @brief Answer incomming call. * * @param av Handler. * @param call_type Answer with... * @return int * @retval 0 Success. * @retval ToxAvError On error. */ int toxav_answer ( ToxAv *av, ToxAvCallType call_type ) { if ( !av->msi_session->call ) { return ErrorNoCall; } if ( av->msi_session->call->state != call_starting ) { return ErrorInvalidState; } return msi_answer(av->msi_session, call_type); }
bool toxav_answer(ToxAV *av, uint32_t friend_number, uint32_t audio_bit_rate, uint32_t video_bit_rate, TOXAV_ERR_ANSWER *error) { pthread_mutex_lock(av->mutex); TOXAV_ERR_ANSWER rc = TOXAV_ERR_ANSWER_OK; if (m_friend_exists(av->m, friend_number) == 0) { rc = TOXAV_ERR_ANSWER_FRIEND_NOT_FOUND; goto END; } if ((audio_bit_rate && audio_bit_rate_invalid(audio_bit_rate)) || (video_bit_rate && video_bit_rate_invalid(video_bit_rate)) ) { rc = TOXAV_ERR_ANSWER_INVALID_BIT_RATE; goto END; } ToxAVCall *call = call_get(av, friend_number); if (call == NULL) { rc = TOXAV_ERR_ANSWER_FRIEND_NOT_CALLING; goto END; } if (!call_prepare_transmission(call)) { rc = TOXAV_ERR_ANSWER_CODEC_INITIALIZATION; goto END; } call->audio_bit_rate = audio_bit_rate; call->video_bit_rate = video_bit_rate; call->previous_self_capabilities = msi_CapRAudio | msi_CapRVideo; call->previous_self_capabilities |= audio_bit_rate > 0 ? msi_CapSAudio : 0; call->previous_self_capabilities |= video_bit_rate > 0 ? msi_CapSVideo : 0; if (msi_answer(call->msi_call, call->previous_self_capabilities) != 0) rc = TOXAV_ERR_ANSWER_SYNC; END: pthread_mutex_unlock(av->mutex); if (error) *error = rc; return rc == TOXAV_ERR_ANSWER_OK; }