summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/codecs/adx.c10
-rw-r--r--apps/metadata/adx.c10
-rw-r--r--manual/appendix/file_formats.tex2
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}{