transmit vid.: comp last pkt sz in get_packet_sizes

Correctly set last packet size from get_packet_sizes() so that it doesn't
need to be adjusted later.
This commit is contained in:
Martin Pulec
2024-01-17 14:53:49 +01:00
parent e22c97bd54
commit cf6f7cbe9d

View File

@@ -548,6 +548,11 @@ static vector<int> get_packet_sizes(struct video_frame *frame, int substream, in
pos += len;
ret.push_back(len);
} while (pos < frame->tiles[substream].data_len);
if (pos > frame->tiles[substream].data_len) {
ret[ret.size() - 1] -=
(int) (pos - frame->tiles[substream].data_len);
}
return ret;
}
@@ -637,9 +642,7 @@ tx_send_base(struct tx *tx, struct video_frame *frame, struct rtp *rtp_session,
struct tile *tile = &frame->tiles[substream];
int data_len;
// see definition in rtp_callback.h
uint32_t rtp_hdr[100];
int rtp_hdr_len;
int pt = fec_pt_from_fec_type(TX_MEDIA_VIDEO, frame->fec_params.type, tx->encryption); /* A value specified in our packet format */
@@ -717,14 +720,12 @@ tx_send_base(struct tx *tx, struct video_frame *frame, struct rtp *rtp_session,
rtp_hdr_packet[1] = htonl(offset);
char *data = tile->data + pos;
data_len = packet_sizes.at(packet_idx);
if (pos + data_len >= (unsigned int) tile->data_len) {
if (send_m) {
m = 1;
}
data_len = tile->data_len - pos;
}
int data_len = packet_sizes.at(packet_idx);
pos += data_len;
if (pos == tile->data_len && send_m != 0) {
m = 1;
}
if(data_len) { /* check needed for FEC_MULT */
char encrypted_data[data_len + MAX_CRYPTO_EXCEED];