mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-08-21 05:53:12 -07:00
Support Version 7 in ChiakiTakion
This commit is contained in:
parent
c957ef690e
commit
31f80592f0
4 changed files with 21 additions and 1 deletions
|
@ -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_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; }
|
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
|
typedef struct chiaki_takion_congestion_packet_t
|
||||||
{
|
{
|
||||||
|
@ -115,6 +116,7 @@ typedef struct chiaki_takion_connect_info_t
|
||||||
ChiakiTakionCallback cb;
|
ChiakiTakionCallback cb;
|
||||||
void *cb_user;
|
void *cb_user;
|
||||||
bool enable_crypt;
|
bool enable_crypt;
|
||||||
|
uint8_t protocol_version;
|
||||||
} ChiakiTakionConnectInfo;
|
} ChiakiTakionConnectInfo;
|
||||||
|
|
||||||
|
|
||||||
|
@ -165,6 +167,8 @@ typedef struct chiaki_takion_t
|
||||||
* Advertised Receiver Window Credit
|
* Advertised Receiver Window Credit
|
||||||
*/
|
*/
|
||||||
uint32_t a_rwnd;
|
uint32_t a_rwnd;
|
||||||
|
|
||||||
|
ChiakiTakionAVPacketParse av_packet_parse;
|
||||||
} ChiakiTakion;
|
} ChiakiTakion;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -125,6 +125,7 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_senkusha_run(ChiakiSenkusha *senkusha)
|
||||||
assert(err == CHIAKI_ERR_SUCCESS);
|
assert(err == CHIAKI_ERR_SUCCESS);
|
||||||
|
|
||||||
takion_info.enable_crypt = false;
|
takion_info.enable_crypt = false;
|
||||||
|
takion_info.protocol_version = 7;
|
||||||
|
|
||||||
takion_info.cb = senkusha_takion_cb;
|
takion_info.cb = senkusha_takion_cb;
|
||||||
takion_info.cb_user = senkusha;
|
takion_info.cb_user = senkusha;
|
||||||
|
|
|
@ -139,6 +139,7 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_stream_connection_run(ChiakiStreamConnectio
|
||||||
assert(err == CHIAKI_ERR_SUCCESS);
|
assert(err == CHIAKI_ERR_SUCCESS);
|
||||||
|
|
||||||
takion_info.enable_crypt = true;
|
takion_info.enable_crypt = true;
|
||||||
|
takion_info.protocol_version = 9;
|
||||||
|
|
||||||
takion_info.cb = stream_connection_takion_cb;
|
takion_info.cb = stream_connection_takion_cb;
|
||||||
takion_info.cb_user = stream_connection;
|
takion_info.cb_user = stream_connection;
|
||||||
|
|
|
@ -177,6 +177,20 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_connect(ChiakiTakion *takion, Chiaki
|
||||||
ChiakiErrorCode ret = CHIAKI_ERR_SUCCESS;
|
ChiakiErrorCode ret = CHIAKI_ERR_SUCCESS;
|
||||||
|
|
||||||
takion->log = info->log;
|
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;
|
takion->gkcrypt_local = NULL;
|
||||||
ret = chiaki_mutex_init(&takion->gkcrypt_local_mutex, true);
|
ret = chiaki_mutex_init(&takion->gkcrypt_local_mutex, true);
|
||||||
if(ret != CHIAKI_ERR_SUCCESS)
|
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_size = 0;
|
||||||
takion->postponed_packets_count = 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);
|
ChiakiErrorCode err = chiaki_stop_pipe_init(&takion->stop_pipe);
|
||||||
if(err != CHIAKI_ERR_SUCCESS)
|
if(err != CHIAKI_ERR_SUCCESS)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue