summaryrefslogtreecommitdiffstats
path: root/apps/codecs/libm4a/m4a.h
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2007-12-01 01:01:35 +0000
committerDave Chapman <dave@dchapman.com>2007-12-01 01:01:35 +0000
commitaaacb7010fc247cfc9f16b2e3aee568f29089a22 (patch)
tree5270f80f3dbad56eba3a408bdc8b36ac7394722d /apps/codecs/libm4a/m4a.h
parent95c117cdb8b2db2e3b5520e9181443a7915463e7 (diff)
downloadrockbox-aaacb7010fc247cfc9f16b2e3aee568f29089a22.tar.gz
rockbox-aaacb7010fc247cfc9f16b2e3aee568f29089a22.zip
Remove the mallocs for the codecdata in the m4a parser and assume a maximum size of 64 bytes (see comments in source). Also clean up the alac_set_info() function a little and make it alignment-safe. We still need to remove the seektable related mallocs. Please report if any AAC or ALAC files stop playing in Rockbox after this commit - but it is not expected to cause problems.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15861 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libm4a/m4a.h')
-rw-r--r--apps/codecs/libm4a/m4a.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/apps/codecs/libm4a/m4a.h b/apps/codecs/libm4a/m4a.h
index 401cff3b7a..a4d4dc0f79 100644
--- a/apps/codecs/libm4a/m4a.h
+++ b/apps/codecs/libm4a/m4a.h
@@ -23,6 +23,19 @@
#include <codecs.h>
#include <inttypes.h>
+/* AAC codecdata appears to always be less than 8 bytes - see
+ AudioSpecificConfig2 in libfaad/mp4.c
+
+ ALAC codecdata appears to always be 44 bytes (see alac_set_info in
+ libalac/alac.c) but my test file contains 56 bytes.
+
+ So we go safe and round up to 64 bytes - if we find more than this,
+ we give an error (even though we could possibly continue), so we
+ can increase this buffer.
+*/
+
+#define MAX_CODECDATA_SIZE 64
+
typedef struct {
struct codec_api* ci;
int eof;
@@ -57,7 +70,7 @@ typedef struct
uint32_t num_sample_byte_sizes;
uint32_t codecdata_len;
- void *codecdata;
+ uint8_t codecdata[MAX_CODECDATA_SIZE];
int mdat_offset;
uint32_t mdat_len;