Lines Matching refs:buffer
64 #include "raop-packet-buffer.h"
226 * Function to write bits into a buffer.
227 * @param buffer Handle to the buffer. It will be incremented if new data requires it.
228 * @param bit_pos A pointer to a position buffer to keep track the current write location (0 for MSB, 7 for LSB)
229 * @param size A pointer to the byte size currently written. This allows the calling function to do simple buffer overflow checks
233 static inline void bit_writer(uint8_t **buffer, uint8_t *bit_pos, size_t *size, uint8_t data, uint8_t data_bit_len) {
244 /* Calc the number of bits left in the current byte of buffer. */
253 **buffer |= bit_data;
255 **buffer = bit_data;
259 *buffer += 1;
265 /* bit_overflow is negative, there for we will need a new byte from our buffer
268 **buffer |= bit_data;
269 /* Increment our buffer pointer and size counter. */
270 *buffer += 1;
272 **buffer = data << (8 + bit_overflow);
317 uint32_t *buffer = NULL;
322 buffer = pa_memblock_acquire(packet->memblock);
323 buffer += packet->index / sizeof(uint32_t);
332 memcpy(buffer, tcp_audio_header, sizeof(tcp_audio_header));
333 buffer[1] |= htonl((uint32_t) c->seq);
334 buffer[2] = htonl(c->rtptime);
335 buffer[3] = htonl(c->ssrc);
340 size += write_ALAC_data(((uint8_t *) buffer + head), packet->length - head, raw, &length, false);
343 pa_memzero(((uint8_t *) buffer + head), packet->length - head);
351 buffer[0] |= htonl((uint32_t) size - 4);
353 pa_raop_aes_encrypt(c->secret, (uint8_t *) buffer + head, size - head);
365 uint8_t *buffer = NULL;
384 buffer = pa_memblock_acquire(packet->memblock);
386 pa_assert(buffer);
388 buffer += packet->index;
389 if (buffer && packet->length > 0)
390 written = pa_write(c->tcp_sfd, buffer, packet->length, &write_type);
408 uint32_t *buffer = NULL;
413 buffer = pa_memblock_acquire(packet->memblock);
414 buffer += packet->index / sizeof(uint32_t);
417 memcpy(buffer, udp_audio_header, sizeof(udp_audio_header));
419 buffer[0] |= htonl((uint32_t) 0x80 << 16);
420 buffer[0] |= htonl((uint32_t) c->seq);
421 buffer[1] = htonl(c->rtptime);
422 buffer[2] = htonl(c->ssrc);
427 size += write_ALAC_data(((uint8_t *) buffer + head), packet->length - head, raw, &length, false);
430 pa_memzero(((uint8_t *) buffer + head), packet->length - head);
445 pa_raop_aes_encrypt(c->secret, (uint8_t *) buffer + head, size - head);
456 uint8_t *buffer = NULL;
470 buffer = pa_memblock_acquire(packet->memblock);
472 pa_assert(buffer);
474 buffer += packet->index;
475 if (buffer && packet->length > 0)
476 written = pa_write(c->udp_sfd, buffer, packet->length, NULL);
492 uint32_t *buffer = NULL;
494 buffer = pa_memblock_acquire(packet->memblock);
496 memcpy(buffer, udp_audio_retrans_header, sizeof(udp_audio_retrans_header));
497 buffer[0] |= htonl((uint32_t) seq);
513 uint8_t *buffer = NULL;
526 buffer = pa_memblock_acquire(packet->memblock);
528 pa_assert(buffer);
530 if (buffer && packet->length > 0)
531 written = pa_write(c->udp_cfd, buffer, packet->length, NULL);
549 uint32_t *buffer = NULL;
554 if (!(buffer = pa_xmalloc0(size)))
557 memcpy(buffer, udp_sync_header, sizeof(udp_sync_header));
559 buffer[0] |= 0x10;
561 buffer[1] = htonl(stamp);
564 buffer[2] = htonl(transmitted >> 32);
565 buffer[3] = htonl(transmitted & 0xffffffff);
567 buffer[4] = htonl(stamp);
569 *packet = buffer;
620 uint32_t *buffer = NULL;
625 if (!(buffer = pa_xmalloc0(size)))
628 memcpy(buffer, udp_timing_header, sizeof(udp_timing_header));
630 buffer[2] = data[4];
631 buffer[3] = data[5];
633 buffer[4] = htonl(received >> 32);
634 buffer[5] = htonl(received & 0xffffffff);
637 buffer[6] = htonl(transmitted >> 32);
638 buffer[7] = htonl(transmitted & 0xffffffff);
640 *packet = buffer;