feat: 修复启动bash路径、将丢失连接时的视频稍微不堆积
This commit is contained in:
@@ -566,6 +566,32 @@ static int video_sender_init(video_sender_t *sender, const video_pipeline_config
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int video_sender_drain_pending_messages(video_sender_t *sender) {
|
||||
if (sender == NULL || sender->client == NULL) {
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
message_t msg;
|
||||
int rc;
|
||||
|
||||
protocol_message_init(&msg);
|
||||
rc = kcp_client_receive_timed(sender->client, &msg, 1);
|
||||
if (rc == 1) {
|
||||
protocol_message_clear(&msg);
|
||||
return 0;
|
||||
}
|
||||
if (rc != 0) {
|
||||
protocol_message_clear(&msg);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Drain unread server errors so an offline receiver cannot back up the reverse KCP stream.
|
||||
protocol_message_clear(&msg);
|
||||
}
|
||||
}
|
||||
|
||||
static int video_sender_send_packet(video_sender_t *sender, const AVPacket *encoded_pkt, uint64_t timestamp) {
|
||||
uint8_t *payload;
|
||||
size_t payload_len;
|
||||
@@ -585,6 +611,10 @@ static int video_sender_send_packet(video_sender_t *sender, const AVPacket *enco
|
||||
memcpy(payload, encoded_pkt->data, (size_t) encoded_pkt->size);
|
||||
memcpy(payload + encoded_pkt->size, ×tamp, sizeof(timestamp));
|
||||
rc = kcp_client_send_binary(sender->client, sender->target_peer, payload, payload_len);
|
||||
if (rc != 0) {
|
||||
return rc;
|
||||
}
|
||||
rc = video_sender_drain_pending_messages(sender);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user