diff options
-rw-r--r-- | apps/codecs/adx.c | 10 | ||||
-rw-r--r-- | apps/metadata/adx.c | 10 | ||||
-rw-r--r-- | manual/appendix/file_formats.tex | 2 |
3 files changed, 17 insertions, 5 deletions
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)) diff --git a/manual/appendix/file_formats.tex b/manual/appendix/file_formats.tex index a256a2a735..3c361f7996 100644 --- a/manual/appendix/file_formats.tex +++ b/manual/appendix/file_formats.tex @@ -114,7 +114,7 @@ & Supports downmixing for playback of 5.1 streams in stereo\\ ADX & \fname{.adx} - & \\ + & Encrypted ADX is not supported.\\ Advanced Audio Coding & \fname{.m4a}, \fname{.m4b}, \fname{.mp4}, \fname{.rm}, \fname{.ra}, \fname{.rmvb} \nopt{clipv1,c200v2}{ |