Support Version 7 in ChiakiTakion

This commit is contained in:
Florian Märkl 2019-08-10 12:06:27 +02:00
commit 31f80592f0
No known key found for this signature in database
GPG key ID: 125BC8A5A6A1E857
4 changed files with 21 additions and 1 deletions

View file

@ -67,6 +67,7 @@ static inline uint8_t chiaki_takion_av_packet_audio_unit_size(ChiakiTakionAVPack
static inline uint8_t chiaki_takion_av_packet_audio_source_units_count(ChiakiTakionAVPacket *packet) { return packet->units_in_frame_fec & 0xf; }
static inline uint8_t chiaki_takion_av_packet_audio_fec_units_count(ChiakiTakionAVPacket *packet) { return (packet->units_in_frame_fec >> 4) & 0xf; }
typedef ChiakiErrorCode (*ChiakiTakionAVPacketParse)(ChiakiTakionAVPacket *packet, uint8_t *buf, size_t buf_size);
typedef struct chiaki_takion_congestion_packet_t
{
@ -115,6 +116,7 @@ typedef struct chiaki_takion_connect_info_t
ChiakiTakionCallback cb;
void *cb_user;
bool enable_crypt;
uint8_t protocol_version;
} ChiakiTakionConnectInfo;
@ -165,6 +167,8 @@ typedef struct chiaki_takion_t
* Advertised Receiver Window Credit
*/
uint32_t a_rwnd;
ChiakiTakionAVPacketParse av_packet_parse;
} ChiakiTakion;

View file

@ -125,6 +125,7 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_senkusha_run(ChiakiSenkusha *senkusha)
assert(err == CHIAKI_ERR_SUCCESS);
takion_info.enable_crypt = false;
takion_info.protocol_version = 7;
takion_info.cb = senkusha_takion_cb;
takion_info.cb_user = senkusha;

View file

@ -139,6 +139,7 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_stream_connection_run(ChiakiStreamConnectio
assert(err == CHIAKI_ERR_SUCCESS);
takion_info.enable_crypt = true;
takion_info.protocol_version = 9;
takion_info.cb = stream_connection_takion_cb;
takion_info.cb_user = stream_connection;

View file

@ -177,6 +177,20 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_connect(ChiakiTakion *takion, Chiaki
ChiakiErrorCode ret = CHIAKI_ERR_SUCCESS;
takion->log = info->log;
switch(info->protocol_version)
{
case 7:
takion->av_packet_parse = chiaki_takion_v7_av_packet_parse;
break;
case 9:
takion->av_packet_parse = chiaki_takion_v9_av_packet_parse;
break;
default:
CHIAKI_LOGE(takion->log, "Unknown Takion Protocol Version %u", (unsigned int)info->protocol_version);
return CHIAKI_ERR_INVALID_DATA;
}
takion->gkcrypt_local = NULL;
ret = chiaki_mutex_init(&takion->gkcrypt_local_mutex, true);
if(ret != CHIAKI_ERR_SUCCESS)
@ -199,7 +213,7 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_connect(ChiakiTakion *takion, Chiaki
takion->postponed_packets_size = 0;
takion->postponed_packets_count = 0;
CHIAKI_LOGI(takion->log, "Takion connecting");
CHIAKI_LOGI(takion->log, "Takion connecting (version %u)", (unsigned int)info->protocol_version);
ChiakiErrorCode err = chiaki_stop_pipe_init(&takion->stop_pipe);
if(err != CHIAKI_ERR_SUCCESS)