feat: 修复启动bash路径、将丢失连接时的视频稍微不堆积

This commit is contained in:
Mock
2026-04-10 11:49:38 +08:00
parent f443934ee4
commit 40cd68db3d
8 changed files with 93 additions and 6 deletions

View File

@@ -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, &timestamp, 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;
}