forked from len0rd/rockbox
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
This commit is contained in:
parent
95c117cdb8
commit
aaacb7010f
3 changed files with 51 additions and 53 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue