From bdaac8ba0415bbbbad8c381b6e26742cba886c65 Mon Sep 17 00:00:00 2001 From: Andree Buschmann Date: Tue, 29 Nov 2011 20:36:11 +0000 Subject: Rockbox does not support encrypted ADX. Clearly state this in the manual and the debug messages. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31094 a1c6a512-1295-4272-9138-f99709370657 --- apps/codecs/adx.c | 10 ++++++++-- apps/metadata/adx.c | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) (limited to 'apps') diff --git a/apps/codecs/adx.c b/apps/codecs/adx.c index cc7f0320be..0c67fc8d6e 100644 --- a/apps/codecs/adx.c +++ b/apps/codecs/adx.c @@ -149,7 +149,7 @@ enum codec_status codec_run(void) /* Get loop data */ looping = 0; start_adr = 0; end_adr = 0; - if (!memcmp(buf+0x10,"\x01\xF4\x03\x00",4)) { + if (!memcmp(buf+0x10,"\x01\xF4\x03",3)) { /* Soul Calibur 2 style (type 03) */ DEBUGF("ADX: type 03 found\n"); /* check if header is too small for loop data */ @@ -171,7 +171,7 @@ enum codec_status codec_run(void) (buf[0x1f]) )/32*channels*18+chanstart; } - } else if (!memcmp(buf+0x10,"\x01\xF4\x04\x00",4)) { + } else if (!memcmp(buf+0x10,"\x01\xF4\x04",3)) { /* Standard (type 04) */ DEBUGF("ADX: type 04 found\n"); /* check if header is too small for loop data */ @@ -196,6 +196,12 @@ enum codec_status codec_run(void) DEBUGF("ADX: error, couldn't determine ADX type\n"); return CODEC_ERROR; } + + /* is file using encryption */ + if (buf[0x13]==0x08) { + DEBUGF("ADX: error, encrypted ADX not supported\n"); + return false; + } if (looping) { DEBUGF("ADX: looped, start: %lx end: %lx\n",start_adr,end_adr); diff --git a/apps/metadata/adx.c b/apps/metadata/adx.c index 4e18254d79..7c341b4835 100644 --- a/apps/metadata/adx.c +++ b/apps/metadata/adx.c @@ -73,7 +73,7 @@ bool get_adx_metadata(int fd, struct mp3entry* id3) id3->filesize = filesize(fd); /* get loop info */ - if (!memcmp(buf+0x10,"\x01\xF4\x03\x00",4)) { + if (!memcmp(buf+0x10,"\x01\xF4\x03",3)) { /* Soul Calibur 2 style (type 03) */ DEBUGF("get_adx_metadata: type 03 found\n"); /* check if header is too small for loop data */ @@ -83,7 +83,7 @@ bool get_adx_metadata(int fd, struct mp3entry* id3) end_adr = get_long_be(&buf[0x28]); start_adr = get_long_be(&buf[0x1c])/32*channels*18+chanstart; } - } else if (!memcmp(buf+0x10,"\x01\xF4\x04\x00",4)) { + } else if (!memcmp(buf+0x10,"\x01\xF4\x04",3)) { /* Standard (type 04) */ DEBUGF("get_adx_metadata: type 04 found\n"); /* check if header is too small for loop data */ @@ -98,6 +98,12 @@ bool get_adx_metadata(int fd, struct mp3entry* id3) return false; } + /* is file using encryption */ + if (buf[0x13]==0x08) { + DEBUGF("get_adx_metadata: error, encrypted ADX not supported\n"); + return false; + } + if (looping) { /* 2 loops, 10 second fade */ id3->length = (start_adr-chanstart + 2*(end_adr-start_adr)) -- cgit v1.2.3