fix reading of caf file without chan chunk
[fdkaac.git] / src / caf_reader.c
index ede919a5fca17f386a60fd0bc49149f064b7e5dc..89a66c50242629c84173c3c2cf23310e6eb4de59 100644 (file)
@@ -193,12 +193,10 @@ int caf_parse(caf_reader_t *reader, int64_t *data_length)
         } else if (fcc == M4AF_FOURCC('d','a','t','a')) {
             TRY_IO(pcm_skip(&reader->io, 4)); /* mEditCount */
             *data_length = (chunk_size == ~0ULL) ? chunk_size : chunk_size - 4;
-            reader->data_offset += 12;
+            reader->data_offset = pcm_tell(&reader->io);
             break;
         } else
             TRY_IO(pcm_skip(&reader->io, chunk_size));
-
-        reader->data_offset += (chunk_size + 8);
     }
     ENSURE(reader->sample_format.channels_per_frame);
     ENSURE(fcc == M4AF_FOURCC('d','a','t','a'));
@@ -227,6 +225,7 @@ pcm_reader_t *caf_open(pcm_io_context_t *io,
     memcpy(&reader->io, io, sizeof(pcm_io_context_t));
     reader->tag_callback = tag_callback;
     reader->tag_ctx = tag_ctx;
+    memcpy(reader->chanmap, "\000\001\002\003\004\005\006\007", 8);
 
     if (caf_parse(reader, &data_length) < 0) {
         free(reader);
This page took 0.009497 seconds and 4 git commands to generate.