simplified call to raop_buffer_enqueue: packet contains rtp_timestamp

This commit is contained in:
fduncanh
2022-06-11 02:24:44 -04:00
parent dc103af6f3
commit f0b1e3d737
3 changed files with 10 additions and 8 deletions

View File

@@ -207,14 +207,16 @@ raop_buffer_decrypt(raop_buffer_t *raop_buffer, unsigned char *data, unsigned ch
}
int
raop_buffer_enqueue(raop_buffer_t *raop_buffer, unsigned char *data, unsigned short datalen, uint32_t timestamp, int use_seqnum) {
raop_buffer_enqueue(raop_buffer_t *raop_buffer, unsigned char *data, unsigned short datalen, int use_seqnum) {
unsigned char empty_packet_marker[] = { 0x00, 0x68, 0x34, 0x00 };
assert(raop_buffer);
/* Check packet data length is valid */
if (datalen < 12 || datalen > RAOP_PACKET_LEN) {
return -1;
}
if (datalen == 16 && data[12] == 0x0 && data[13] == 0x68 && data[14] == 0x34 && data[15] == 0x0) {
/* before time is synchronized, some empty data packets are sent */
if (datalen == 16 && !memcmp(&data[12], empty_packet_marker, 4)) {
return 0;
}
int payload_size = datalen - 12;
@@ -246,7 +248,7 @@ raop_buffer_enqueue(raop_buffer_t *raop_buffer, unsigned char *data, unsigned sh
/* Update the raop_buffer entry header */
entry->seqnum = seqnum;
entry->timestamp = timestamp;
entry->timestamp = byteutils_get_int_be(data, 4);
entry->filled = 1;
entry->payload_data = malloc(payload_size);

View File

@@ -25,7 +25,7 @@ typedef int (*raop_resend_cb_t)(void *opaque, unsigned short seqno, unsigned sho
raop_buffer_t *raop_buffer_init(logger_t *logger,
const unsigned char *aeskey,
const unsigned char *aesiv);
int raop_buffer_enqueue(raop_buffer_t *raop_buffer, unsigned char *data, unsigned short datalen, uint32_t timestamp, int use_seqnum);
int raop_buffer_enqueue(raop_buffer_t *raop_buffer, unsigned char *data, unsigned short datalen, int use_seqnum);
void *raop_buffer_dequeue(raop_buffer_t *raop_buffer, unsigned int *length, uint32_t *timestamp, unsigned short *seqnum, int no_resend);
void raop_buffer_handle_resends(raop_buffer_t *raop_buffer, raop_resend_cb_t resend_cb, void *opaque);
void raop_buffer_flush(raop_buffer_t *raop_buffer, int next_seq);

View File

@@ -482,12 +482,12 @@ raop_rtp_thread_udp(void *arg)
/* Handle resent data packet */
const int offset = 4;
if (packetlen > offset + 12) {
uint32_t rtp_timestamp = byteutils_get_int_be(packet + offset, 4);
unsigned short seqnum = byteutils_get_short_be(packet + offset, 2);
if (packetlen == offset + 16 && !memcmp(&packet[offset + 12], no_data, 4)) {
/* skip packet */
} else {
logger_log(raop_rtp->logger, LOGGER_DEBUG, "raop_rtp audio resent: rtp=%u", rtp_timestamp);
int result = raop_buffer_enqueue(raop_rtp->buffer, packet + offset, packetlen - offset, rtp_timestamp, 1);
logger_log(raop_rtp->logger, LOGGER_DEBUG, "raop_rtp audio resent: seqnum=%u", seqnum);
int result = raop_buffer_enqueue(raop_rtp->buffer, packet + offset, packetlen - offset, 1);
assert(result >= 0);
}
} else {
@@ -604,7 +604,7 @@ raop_rtp_thread_udp(void *arg)
logger_log(raop_rtp->logger, LOGGER_DEBUG, "First audio packet received, have_synced = true");
}
}
int result = raop_buffer_enqueue(raop_rtp->buffer, packet, packetlen, rtp_timestamp, 1);
int result = raop_buffer_enqueue(raop_rtp->buffer, packet, packetlen, 1);
assert(result >= 0);
}
// Render continuous buffer entries