refactor pcm reader framework
[fdkaac.git] / src / caf_reader.c
index ede919a5fca17f386a60fd0bc49149f064b7e5dc..71d21c92ef71221d810c6378688d0d94eb723396 100644 (file)
@@ -14,7 +14,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <stdarg.h>
-#include "caf_reader.h"
+#include "pcm_reader.h"
 #include "m4af.h"
 
 typedef struct caf_reader_t {
@@ -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.00962 seconds and 4 git commands to generate.