Pass on rtpmap to raop_buffer in order to add AAC support later
[deb_shairplay.git] / src / lib / raop_buffer.c
index b9b52afa2feb6929368933bd8d4a6833f6c0e129..15f588c5be0b3e9e3e2a78db381485d07ef7a52e 100644 (file)
@@ -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);
        }
 }