X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fraop_buffer.c;h=866134604264c9c95b290c2f97014783a0fe94fb;hb=590c2b20db01a0568d8f6dab2e25037a069faab5;hp=b9b52afa2feb6929368933bd8d4a6833f6c0e129;hpb=23e7e3ae2b2adfa49635495c0950b76e17987c93;p=deb_shairplay.git diff --git a/src/lib/raop_buffer.c b/src/lib/raop_buffer.c index b9b52af..8661346 100644 --- a/src/lib/raop_buffer.c +++ b/src/lib/raop_buffer.c @@ -25,7 +25,7 @@ #include "crypto/crypto.h" #include "alac/alac.h" -#define RAOP_BUFFER_LENGTH 16 +#define RAOP_BUFFER_LENGTH 32 typedef struct { /* Packet available */ @@ -72,20 +72,21 @@ static int get_fmtp_info(ALACSpecificConfig *config, const char *fmtp) { int intarr[12]; + char *original; char *strptr; int i; /* Parse fmtp string to integers */ - strptr = strdup(fmtp); + original = strptr = strdup(fmtp); for (i=0; i<12; i++) { if (strptr == NULL) { - free(strptr); + free(original); return -1; } intarr[i] = atoi(utils_strsep(&strptr, " ")); } - free(strptr); - strptr = NULL; + free(original); + original = strptr = NULL; /* Fill the config struct */ config->frameLength = intarr[1]; @@ -145,7 +146,8 @@ set_decoder_info(alac_file *alac, ALACSpecificConfig *config) } raop_buffer_t * -raop_buffer_init(const char *fmtp, +raop_buffer_init(const char *rtpmap, + const char *fmtp, const unsigned char *aeskey, const unsigned char *aesiv) { @@ -154,6 +156,7 @@ raop_buffer_init(const char *fmtp, ALACSpecificConfig *alacConfig; int i; + assert(rtpmap); assert(fmtp); assert(aeskey); assert(aesiv); @@ -185,7 +188,7 @@ raop_buffer_init(const char *fmtp, raop_buffer_entry_t *entry = &raop_buffer->entries[i]; entry->audio_buffer_size = audio_buffer_size; entry->audio_buffer_len = 0; - entry->audio_buffer = raop_buffer->buffer+i*audio_buffer_size; + entry->audio_buffer = (char *)raop_buffer->buffer+i*audio_buffer_size; } /* Initialize ALAC decoder */ @@ -211,8 +214,8 @@ void raop_buffer_destroy(raop_buffer_t *raop_buffer) { if (raop_buffer) { + destroy_alac(raop_buffer->alac); free(raop_buffer->buffer); - free(raop_buffer->alac); free(raop_buffer); } }