[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r9809 - Extractor/src/plugins
From: |
gnunet |
Subject: |
[GNUnet-SVN] r9809 - Extractor/src/plugins |
Date: |
Sat, 19 Dec 2009 13:58:07 +0100 |
Author: grothoff
Date: 2009-12-19 13:58:07 +0100 (Sat, 19 Dec 2009)
New Revision: 9809
Added:
Extractor/src/plugins/nsf_extractor.c
Extractor/src/plugins/nsfe_extractor.c
Removed:
Extractor/src/plugins/nsfeextractor.c
Extractor/src/plugins/nsfextractor.c
Modified:
Extractor/src/plugins/Makefile.am
Log:
nsf
Modified: Extractor/src/plugins/Makefile.am
===================================================================
--- Extractor/src/plugins/Makefile.am 2009-12-19 12:37:09 UTC (rev 9808)
+++ Extractor/src/plugins/Makefile.am 2009-12-19 12:58:07 UTC (rev 9809)
@@ -92,6 +92,8 @@
libextractor_mime.la \
libextractor_mp3.la \
$(mpeg) \
+ libextractor_nsf.la \
+ libextractor_nsfe.la \
libextractor_odf.la \
$(ogg) \
$(ole2) \
@@ -218,6 +220,16 @@
libextractor_mpeg_la_LIBADD = \
-lmpeg2
+libextractor_nsf_la_SOURCES = \
+ nsf_extractor.c
+libextractor_nsf_la_LDFLAGS = \
+ $(PLUGINFLAGS)
+
+libextractor_nsfe_la_SOURCES = \
+ nsfe_extractor.c
+libextractor_nsfe_la_LDFLAGS = \
+ $(PLUGINFLAGS)
+
libextractor_odf_la_SOURCES = \
odf_extractor.c
libextractor_odf_la_LDFLAGS = \
@@ -353,12 +365,7 @@
libextractor_id3v24.la \
libextractor_id3v23.la \
$(extrampeg) \
- libextractor_nsf.la \
- libextractor_nsfe.la \
- libextractor_tar.la \
- $(thumbqt) \
- libextractor_xm.la \
- libextractor_zip.la
+ $(thumbqt)
libextractor_id3v2_la_SOURCES = \
@@ -383,20 +390,6 @@
$(top_builddir)/src/common/libextractor_common.la
-libextractor_nsf_la_SOURCES = \
- nsfextractor.c
-libextractor_nsf_la_LDFLAGS = \
- $(PLUGINFLAGS)
-libextractor_nsf_la_LIBADD = \
- $(top_builddir)/src/main/libextractor.la
-
-libextractor_nsfe_la_SOURCES = \
- nsfeextractor.c
-libextractor_nsfe_la_LDFLAGS = \
- $(PLUGINFLAGS)
-libextractor_nsfe_la_LIBADD = \
- $(top_builddir)/src/main/libextractor.la
-
libextractor_thumbnailqt_la_SOURCES = \
thumbnailextractorqt.cc
libextractor_thumbnailqt_la_LDFLAGS = \
@@ -409,7 +402,7 @@
$(QT_CFLAGS) $(QT_SVG_CFLAGS)
-# Fixme: is this still working ok? Doubtful!
+# FIXME: is this still working ok? Doubtful!
install-exec-hook:
mkdir -p $(DESTDIR)$(plugindir) &> /dev/null || true
Copied: Extractor/src/plugins/nsf_extractor.c (from rev 9803,
Extractor/src/plugins/nsfextractor.c)
===================================================================
--- Extractor/src/plugins/nsf_extractor.c (rev 0)
+++ Extractor/src/plugins/nsf_extractor.c 2009-12-19 12:58:07 UTC (rev
9809)
@@ -0,0 +1,149 @@
+/*
+ * This file is part of libextractor.
+ * (C) 2006, 2009 Toni Ruottu
+ *
+ * libextractor is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2, or (at your
+ * option) any later version.
+ *
+ * libextractor is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with libextractor; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ */
+
+#include "platform.h"
+#include "extractor.h"
+#include "convert.h"
+
+
+#define HEADER_SIZE 0x80
+
+/* television system flags */
+
+#define PAL_FLAG 0x01
+#define DUAL_FLAG 0x02
+
+/* sound chip flags */
+
+#define VRCVI_FLAG 0x01
+#define VRCVII_FLAG 0x02
+#define FDS_FLAG 0x04
+#define MMC5_FLAG 0x08
+#define NAMCO_FLAG 0x10
+#define SUNSOFT_FLAG 0x20
+
+#define UINT16 unsigned short
+
+struct header
+{
+ char magicid[5];
+ char nsfversion;
+ char songs;
+ char firstsong;
+ UINT16 loadaddr;
+ UINT16 initaddr;
+ UINT16 playaddr;
+ char title[32];
+ char artist[32];
+ char copyright[32];
+ UINT16 ntscspeed;
+ char bankswitch[8];
+ UINT16 palspeed;
+ char tvflags;
+ char chipflags;
+};
+
+#define ADD(s,t) do { if (0 != proc (proc_cls, "nsf", t,
EXTRACTOR_METAFORMAT_UTF8, "text/plain", s, strlen(s)+1)) return 1; } while (0)
+
+
+/* "extract" keyword from a Nes Sound Format file
+ *
+ * NSF specification version 1.61 was used,
+ * while this piece of software was originally
+ * written.
+ *
+ */
+int
+EXTRACTOR_nsf_extract (const unsigned char *data,
+ size_t size,
+ EXTRACTOR_MetaDataProcessor proc,
+ void *proc_cls,
+ const char *options)
+{
+ char album[33];
+ char artist[33];
+ char copyright[33];
+ char songs[32];
+ char startingsong[32];
+ char nsfversion[32];
+ const struct header *head;
+
+ if (size < HEADER_SIZE)
+ return 0;
+ head = (const struct header *) data;
+ if (memcmp (head->magicid, "NESM\x1a", 5))
+ return 0;
+ ADD ("audio/x-nsf", EXTRACTOR_METATYPE_MIMETYPE);
+ snprintf (nsfversion,
+ sizeof(nsfversion),
+ "%d",
+ head->nsfversion);
+ ADD (nsfversion, EXTRACTOR_METATYPE_FORMAT_VERSION);
+ snprintf (songs,
+ sizeof(songs),
+ "%d",
+ head->songs);
+ ADD (songs, EXTRACTOR_METATYPE_SONG_COUNT);
+ snprintf (startingsong,
+ sizeof(startingsong),
+ "%d",
+ head->firstsong);
+ ADD (startingsong, EXTRACTOR_METATYPE_STARTING_SONG);
+
+ memcpy (&album, head->title, 32);
+ album[32] = '\0';
+ ADD (album, EXTRACTOR_METATYPE_ALBUM);
+
+ memcpy (&artist, head->artist, 32);
+ artist[32] = '\0';
+ ADD (artist, EXTRACTOR_METATYPE_ARTIST);
+
+ memcpy (©right, head->copyright, 32);
+ copyright[32] = '\0';
+ ADD (copyright, EXTRACTOR_METATYPE_COPYRIGHT);
+
+ if (head->tvflags & DUAL_FLAG)
+ {
+ ADD ("PAL/NTSC", EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM);
+ }
+ else
+ {
+ if (head->tvflags & PAL_FLAG)
+ ADD ("PAL", EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM);
+ else
+ ADD ("NTSC", EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM);
+ }
+
+ /* Detect Extra Sound Chips needed to play the files */
+ if (head->chipflags & VRCVI_FLAG)
+ ADD ("VRCVI", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+ if (head->chipflags & VRCVII_FLAG)
+ ADD ("VRCVII", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+ if (head->chipflags & FDS_FLAG)
+ ADD ("FDS Sound", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+ if (head->chipflags & MMC5_FLAG)
+ ADD ("MMC5 audio", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+ if (head->chipflags & NAMCO_FLAG)
+ ADD ("Namco 106", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+ if (head->chipflags & SUNSOFT_FLAG)
+ ADD ("Sunsoft FME-07", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+ return 0;
+}
Copied: Extractor/src/plugins/nsfe_extractor.c (from rev 9803,
Extractor/src/plugins/nsfeextractor.c)
===================================================================
--- Extractor/src/plugins/nsfe_extractor.c (rev 0)
+++ Extractor/src/plugins/nsfe_extractor.c 2009-12-19 12:58:07 UTC (rev
9809)
@@ -0,0 +1,251 @@
+/*
+ * This file is part of libextractor.
+ * (C) 2007, 2009 Toni Ruottu
+ *
+ * libextractor is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2, or (at your
+ * option) any later version.
+ *
+ * libextractor is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with libextractor; see the file COPYING. If not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ */
+
+#include "platform.h"
+#include "extractor.h"
+#include "convert.h"
+
+#define HEADER_SIZE 0x04
+
+/* television system flags */
+
+#define PAL_FLAG 0x01
+#define DUAL_FLAG 0x02
+
+/* sound chip flags */
+
+#define VRCVI_FLAG 0x01
+#define VRCVII_FLAG 0x02
+#define FDS_FLAG 0x04
+#define MMC5_FLAG 0x08
+#define NAMCO_FLAG 0x10
+#define SUNSOFT_FLAG 0x20
+
+#define UINT16 unsigned short
+
+struct header
+{
+ char magicid[4];
+};
+
+struct infochunk
+{
+ UINT16 loadaddr;
+ UINT16 initaddr;
+ UINT16 playaddr;
+ char tvflags;
+ char chipflags;
+ char songs;
+ char firstsong;
+};
+
+static int
+nsfeuint (const char *data)
+{
+ int i;
+ int value = 0;
+
+ for (i = 3; i > 0; i--)
+ {
+ value += (unsigned char) data[i];
+ value *= 0x100;
+ }
+ value += (unsigned char) data[0];
+ return value;
+}
+
+
+static char *
+nsfestring (const char *data, size_t size)
+{
+ char *s;
+ size_t length;
+
+ length = 0;
+ while ( (length < size) &&
+ (data[length] != '\0') )
+ length++;
+ s = malloc (length + 1);
+ strncpy (s, data, length);
+ s[strlen (data)] = '\0';
+ return s;
+}
+
+#define ADD(s,t) do { if (0 != proc (proc_cls, "nsfe", t,
EXTRACTOR_METAFORMAT_UTF8, "text/plain", s, strlen(s)+1)) return 1; } while (0)
+
+#define ADDF(s,t) do { if (0 != proc (proc_cls, "nsfe", t,
EXTRACTOR_METAFORMAT_UTF8, "text/plain", s, strlen(s)+1)) { free(s); return 1;
} free (s); } while (0)
+
+static int
+libextractor_nsfe_info_extract(const char *data,
+ size_t size,
+ EXTRACTOR_MetaDataProcessor proc,
+ void *proc_cls)
+{
+ const struct infochunk *ichunk;
+ char songs[32];
+
+ if (size < 8)
+ return 0;
+ ichunk = (const struct infochunk *) data;
+ if (ichunk->tvflags & DUAL_FLAG)
+ {
+ ADD ("PAL/NTSC", EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM);
+ }
+ else
+ {
+ if (ichunk->tvflags & PAL_FLAG)
+ ADD ("PAL", EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM);
+ else
+ ADD ("NTSC", EXTRACTOR_METATYPE_BROADCAST_TELEVISION_SYSTEM);
+ }
+
+ if (ichunk->chipflags & VRCVI_FLAG)
+ ADD ("VRCVI", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+ if (ichunk->chipflags & VRCVII_FLAG)
+ ADD ("VRCVII", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+ if (ichunk->chipflags & FDS_FLAG)
+ ADD ("FDS Sound", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+ if (ichunk->chipflags & MMC5_FLAG)
+ ADD ("MMC5 audio", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+ if (ichunk->chipflags & NAMCO_FLAG)
+ ADD ("Namco 106", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+ if (ichunk->chipflags & SUNSOFT_FLAG)
+ ADD ("Sunsoft FME-07", EXTRACTOR_METATYPE_TARGET_ARCHITECTURE);
+ if (size < 9)
+ {
+ ADD ("1", EXTRACTOR_METATYPE_SONG_COUNT);
+ return 0;
+ }
+ snprintf (songs,
+ sizeof(songs),
+ "%d",
+ ichunk->songs);
+ ADD (songs, EXTRACTOR_METATYPE_SONG_COUNT);
+ return 0;
+}
+
+
+static int
+libextractor_nsfe_tlbl_extract(const char *data,
+ size_t size,
+ EXTRACTOR_MetaDataProcessor proc,
+ void *proc_cls)
+
+{
+ char *title;
+ ssize_t left;
+ size_t length;
+
+ for (left = size; left > 0; left -= length)
+ {
+ title = nsfestring (&data[size - left], left);
+ length = strlen (title) + 1;
+ ADDF (title, EXTRACTOR_METATYPE_TITLE);
+ }
+ return 0;
+}
+
+static int
+libextractor_nsfe_auth_extract (const char *data, size_t size,
+ EXTRACTOR_MetaDataProcessor proc,
+ void *proc_cls)
+{
+ char *album;
+ char *artist;
+ char *copyright;
+ char *ripper;
+ int left = size;
+
+ if (left < 1)
+ return 0;
+ album = nsfestring (&data[size - left], left);
+ left -= (strlen (album) + 1);
+ ADDF (album, EXTRACTOR_METATYPE_ALBUM);
+ if (left < 1)
+ return 0;
+
+ artist = nsfestring (&data[size - left], left);
+ left -= (strlen (artist) + 1);
+ ADDF (artist, EXTRACTOR_METATYPE_ARTIST);
+ if (left < 1)
+ return 0;
+
+ copyright = nsfestring (&data[size - left], left);
+ left -= (strlen (copyright) + 1);
+ ADDF (copyright, EXTRACTOR_METATYPE_COPYRIGHT);
+ if (left < 1)
+ return 0;
+
+ ripper = nsfestring (&data[size - left], left);
+ ADDF (ripper, EXTRACTOR_METATYPE_RIPPER);
+ return 0;
+}
+
+
+/* "extract" keyword from an Extended Nintendo Sound Format file
+ *
+ * NSFE specification revision 2 (Sep. 3, 2003)
+ * was used, while this piece of software was
+ * originally written.
+ *
+ */
+int
+EXTRACTOR_nsfe_extract (const char *data,
+ size_t size,
+ EXTRACTOR_MetaDataProcessor proc,
+ void *proc_cls,
+ const char *options)
+{
+ const struct header *head;
+ int i;
+ char chunkid[5] = " ";
+ int ret;
+
+ if (size < HEADER_SIZE)
+ return 0;
+ head = (const struct header *) data;
+ if (memcmp (head->magicid, "NSFE", 4))
+ return 0;
+ ADD ("audio/x-nsfe", EXTRACTOR_METATYPE_MIMETYPE);
+ i = 4; /* Jump over magic id */
+ ret = 0;
+ while (i + 7 < size && strncmp (chunkid, "NEND", 4)) /* CHECK */
+ {
+ unsigned int chunksize = nsfeuint (&data[i]);
+
+ i += 4; /* Jump over chunk size */
+ memcpy (&chunkid, data + i, 4);
+ chunkid[4] = '\0';
+
+ i += 4; /* Jump over chunk id */
+ if (!strncmp (chunkid, "INFO", 4))
+ ret = libextractor_nsfe_info_extract (data + i, chunksize, proc,
proc_cls);
+ else if (!strncmp (chunkid, "auth", 4))
+ ret = libextractor_nsfe_auth_extract (data + i, chunksize, proc,
proc_cls);
+ else if (!strncmp (chunkid, "tlbl", 4))
+ ret = libextractor_nsfe_tlbl_extract (data + i, chunksize, proc,
proc_cls);
+ /* Ignored chunks: DATA, NEND, plst, time, fade, BANK */
+ i += chunksize;
+ if (ret != 0)
+ break;
+ }
+ return ret;
+}
Deleted: Extractor/src/plugins/nsfeextractor.c
===================================================================
--- Extractor/src/plugins/nsfeextractor.c 2009-12-19 12:37:09 UTC (rev
9808)
+++ Extractor/src/plugins/nsfeextractor.c 2009-12-19 12:58:07 UTC (rev
9809)
@@ -1,334 +0,0 @@
-/*
- * This file is part of libextractor.
- * (C) 2007 Toni Ruottu
- *
- * libextractor is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your
- * option) any later version.
- *
- * libextractor is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with libextractor; see the file COPYING. If not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- */
-
-#include "platform.h"
-#include "extractor.h"
-#include "convert.h"
-
-#define HEADER_SIZE 0x04
-
-/* television system flags */
-
-#define PAL_FLAG 0x01
-#define DUAL_FLAG 0x02
-
-/* sound chip flags */
-
-#define VRCVI_FLAG 0x01
-#define VRCVII_FLAG 0x02
-#define FDS_FLAG 0x04
-#define MMC5_FLAG 0x08
-#define NAMCO_FLAG 0x10
-#define SUNSOFT_FLAG 0x20
-
-#define UINT16 unsigned short
-
-struct header
-{
- char magicid[4];
-};
-
-struct infochunk
-{
- UINT16 loadaddr;
- UINT16 initaddr;
- UINT16 playaddr;
- char tvflags;
- char chipflags;
- char songs;
- char firstsong;
-};
-
-static int
-nsfeuint (const char *data)
-{
- int i, value = 0;
-
- for (i = 3; i > 0; i--)
- {
- value += (unsigned char) data[i];
- value *= 0x100;
- }
-
- value += (unsigned char) data[0];
-
- return (value);
-}
-
-static char *
-nsfestring (const char *data, int size)
-{
- char *s;
- int length;
-
- if (size < strlen (data))
- {
- length = size;
- }
- else
- {
- length = strlen (data);
- }
-
- s = malloc (length + 1);
-
- strncpy (s, data, length);
-
- s[strlen (data)] = '\0';
-
- return (s);
-}
-
-static struct EXTRACTOR_Keywords *addkword
- (EXTRACTOR_KeywordList * oldhead,
- const char *phrase, EXTRACTOR_KeywordType type)
-{
- EXTRACTOR_KeywordList *keyword;
-
- keyword = malloc (sizeof (EXTRACTOR_KeywordList));
- keyword->next = oldhead;
- keyword->keyword = strdup (phrase);
- keyword->keywordType = type;
- return (keyword);
-}
-
-static struct EXTRACTOR_Keywords *libextractor_nsfe_info_extract
- (const char *data, size_t size, struct EXTRACTOR_Keywords *prev)
-{
- const struct infochunk *ichunk;
- char songs[32];
-
- ichunk = (const struct infochunk *) data;
-
- if (size < 8)
- {
- return (prev);
- }
-
-
- /* PAL or NTSC */
-
- if (ichunk->tvflags & DUAL_FLAG)
- {
- prev = addkword (prev, "PAL/NTSC", EXTRACTOR_TELEVISION_SYSTEM);
- }
- else
- {
- if (ichunk->tvflags & PAL_FLAG)
- {
- prev = addkword (prev, "PAL", EXTRACTOR_TELEVISION_SYSTEM);
- }
- else
- {
- prev = addkword (prev, "NTSC", EXTRACTOR_TELEVISION_SYSTEM);
- }
- }
-
-
- /* Detect Extra Sound Chips needed to play the files */
-
- if (ichunk->chipflags & VRCVI_FLAG)
- {
- prev = addkword (prev, "VRCVI", EXTRACTOR_HARDWARE_DEPENDENCY);
- }
- if (ichunk->chipflags & VRCVII_FLAG)
- {
- prev = addkword (prev, "VRCVII", EXTRACTOR_HARDWARE_DEPENDENCY);
- }
- if (ichunk->chipflags & FDS_FLAG)
- {
- prev = addkword (prev, "FDS Sound", EXTRACTOR_HARDWARE_DEPENDENCY);
- }
- if (ichunk->chipflags & MMC5_FLAG)
- {
- prev = addkword (prev, "MMC5 audio", EXTRACTOR_HARDWARE_DEPENDENCY);
- }
- if (ichunk->chipflags & NAMCO_FLAG)
- {
- prev = addkword (prev, "Namco 106", EXTRACTOR_HARDWARE_DEPENDENCY);
- }
- if (ichunk->chipflags & SUNSOFT_FLAG)
- {
- prev = addkword (prev, "Sunsoft FME-07", EXTRACTOR_HARDWARE_DEPENDENCY);
- }
-
- if (size < 9)
- {
- prev = addkword (prev, "1", EXTRACTOR_SONG_COUNT);
- return (prev);
- }
-
- sprintf (songs, "%d", ichunk->songs);
- prev = addkword (prev, songs, EXTRACTOR_SONG_COUNT);
-
-
- return (prev);
-}
-
-
-static struct EXTRACTOR_Keywords *libextractor_nsfe_tlbl_extract
- (const char *data, size_t size, struct EXTRACTOR_Keywords *prev)
-{
- char *title;
- int left, length;
-
-
- for (left = size; left > 0; left -= length)
- {
- title = nsfestring (&data[size - left], left);
- prev = addkword (prev, title, EXTRACTOR_TITLE);
- length = strlen (title) + 1;
-
- free (title);
- }
-
- return (prev);
-}
-
-static struct EXTRACTOR_Keywords *libextractor_nsfe_auth_extract
- (const char *data, size_t size, struct EXTRACTOR_Keywords *prev)
-{
- char *album;
- char *artist;
- char *copyright;
- char *ripper;
- int left = size;
-
- if (left < 1)
- {
- return (prev);
- }
-
- album = nsfestring (&data[size - left], left);
- prev = addkword (prev, album, EXTRACTOR_ALBUM);
-
- left -= (strlen (album) + 1);
- free (album);
-
- if (left < 1)
- {
- return (prev);
- }
-
- artist = nsfestring (&data[size - left], left);
- prev = addkword (prev, artist, EXTRACTOR_ARTIST);
-
- left -= (strlen (artist) + 1);
- free (artist);
-
- if (left < 1)
- {
- return (prev);
- }
-
- copyright = nsfestring (&data[size - left], left);
- prev = addkword (prev, copyright, EXTRACTOR_COPYRIGHT);
-
- left -= (strlen (copyright) + 1);
- free (copyright);
-
- if (left < 1)
- {
- return (prev);
- }
-
- ripper = nsfestring (&data[size - left], left);
- prev = addkword (prev, ripper, EXTRACTOR_RIPPER);
- free (ripper);
-
- return (prev);
-}
-
-
-/* "extract" keyword from an Extended Nintendo Sound Format file
- *
- * NSFE specification revision 2 (Sep. 3, 2003)
- * was used, while this piece of software was
- * originally written.
- *
- */
-struct EXTRACTOR_Keywords *libextractor_nsfe_extract
- (const char *filename,
- const char *data, size_t size, struct EXTRACTOR_Keywords *prev)
-{
- const struct header *head;
- int i;
- char chunkid[5] = " ";
-
- /* Check header size */
-
- if (size < HEADER_SIZE)
- {
- return (prev);
- }
-
- head = (const struct header *) data;
-
- /* Check "magic" id bytes */
-
- if (memcmp (head->magicid, "NSFE", 4))
- {
- return (prev);
- }
-
-
- /* Mime-type */
-
- prev = addkword (prev, "audio/x-nsfe", EXTRACTOR_MIMETYPE);
-
- i = 4; /* Jump over magic id */
-
- while (i + 7 < size && strncmp (chunkid, "NEND", 4)) /* CHECK */
- {
-
- unsigned int chunksize = nsfeuint (&data[i]);
-
- i += 4; /* Jump over chunk size */
-
- memcpy (&chunkid, data + i, 4);
- chunkid[4] = '\0';
-
- i += 4; /* Jump over chunk id */
-
- if (!strncmp (chunkid, "INFO", 4))
- {
- prev = libextractor_nsfe_info_extract (data + i, chunksize, prev);
- }
-
- if (!strncmp (chunkid, "auth", 4))
- {
- prev = libextractor_nsfe_auth_extract (data + i, chunksize, prev);
- }
-
- if (!strncmp (chunkid, "tlbl", 4))
- {
- prev = libextractor_nsfe_tlbl_extract (data + i, chunksize, prev);
- }
-
- /* Ignored chunks: DATA, NEND, plst, time, fade, BANK */
-
- i += chunksize;
-
- }
-
- return (prev);
-
-}
Deleted: Extractor/src/plugins/nsfextractor.c
===================================================================
--- Extractor/src/plugins/nsfextractor.c 2009-12-19 12:37:09 UTC (rev
9808)
+++ Extractor/src/plugins/nsfextractor.c 2009-12-19 12:58:07 UTC (rev
9809)
@@ -1,201 +0,0 @@
-/*
- * This file is part of libextractor.
- * (C) 2006 Toni Ruottu
- *
- * libextractor is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2, or (at your
- * option) any later version.
- *
- * libextractor is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with libextractor; see the file COPYING. If not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- */
-
-#include "platform.h"
-#include "extractor.h"
-#include "convert.h"
-
-
-#define HEADER_SIZE 0x80
-
-/* television system flags */
-
-#define PAL_FLAG 0x01
-#define DUAL_FLAG 0x02
-
-/* sound chip flags */
-
-#define VRCVI_FLAG 0x01
-#define VRCVII_FLAG 0x02
-#define FDS_FLAG 0x04
-#define MMC5_FLAG 0x08
-#define NAMCO_FLAG 0x10
-#define SUNSOFT_FLAG 0x20
-
-#define UINT16 unsigned short
-
-struct header
-{
- char magicid[5];
- char nsfversion;
- char songs;
- char firstsong;
- UINT16 loadaddr;
- UINT16 initaddr;
- UINT16 playaddr;
- char title[32];
- char artist[32];
- char copyright[32];
- UINT16 ntscspeed;
- char bankswitch[8];
- UINT16 palspeed;
- char tvflags;
- char chipflags;
-};
-
-
-static struct EXTRACTOR_Keywords *addkword
- (EXTRACTOR_KeywordList * oldhead,
- const char *phrase, EXTRACTOR_KeywordType type)
-{
- EXTRACTOR_KeywordList *keyword;
-
- keyword = malloc (sizeof (EXTRACTOR_KeywordList));
- keyword->next = oldhead;
- keyword->keyword = strdup (phrase);
- keyword->keywordType = type;
- return (keyword);
-}
-
-
-/* "extract" keyword from a Nes Sound Format file
- *
- * NSF specification version 1.61 was used,
- * while this piece of software was originally
- * written.
- *
- */
-struct EXTRACTOR_Keywords *libextractor_nsf_extract
- (const char *filename,
- char *data, size_t size, struct EXTRACTOR_Keywords *prev)
-{
- char album[33];
- char artist[33];
- char copyright[33];
- char songs[32];
- char startingsong[32];
- char nsfversion[32];
- struct header *head;
-
- /* Check header size */
-
- if (size < HEADER_SIZE)
- {
- return (prev);
- }
-
- head = (struct header *) data;
-
- /* Check "magic" id bytes */
-
- if (memcmp (head->magicid, "NESM\x1a", 5))
- {
- return (prev);
- }
-
-
- /* Mime-type */
-
- prev = addkword (prev, "audio/x-nsf", EXTRACTOR_MIMETYPE);
-
-
- /* Version of NSF format */
-
- sprintf (nsfversion, "%d", head->nsfversion);
- prev = addkword (prev, nsfversion, EXTRACTOR_FORMAT_VERSION);
-
-
- /* Get song count */
-
- sprintf (songs, "%d", head->songs);
- prev = addkword (prev, songs, EXTRACTOR_SONG_COUNT);
-
-
- /* Get number of the first song to be played */
-
- sprintf (startingsong, "%d", head->firstsong);
- prev = addkword (prev, startingsong, EXTRACTOR_STARTING_SONG);
-
-
- /* name, artist, copyright fields */
-
- memcpy (&album, head->title, 32);
- memcpy (&artist, head->artist, 32);
- memcpy (©right, head->copyright, 32);
-
- album[32] = '\0';
- artist[32] = '\0';
- copyright[32] = '\0';
-
- prev = addkword (prev, album, EXTRACTOR_ALBUM);
- prev = addkword (prev, artist, EXTRACTOR_ARTIST);
- prev = addkword (prev, copyright, EXTRACTOR_COPYRIGHT);
-
-
- /* PAL or NTSC */
-
- if (head->tvflags & DUAL_FLAG)
- {
- prev = addkword (prev, "PAL/NTSC", EXTRACTOR_TELEVISION_SYSTEM);
- }
- else
- {
- if (head->tvflags & PAL_FLAG)
- {
- prev = addkword (prev, "PAL", EXTRACTOR_TELEVISION_SYSTEM);
- }
- else
- {
- prev = addkword (prev, "NTSC", EXTRACTOR_TELEVISION_SYSTEM);
- }
- }
-
-
- /* Detect Extra Sound Chips needed to play the files */
-
- if (head->chipflags & VRCVI_FLAG)
- {
- prev = addkword (prev, "VRCVI", EXTRACTOR_HARDWARE_DEPENDENCY);
- }
- if (head->chipflags & VRCVII_FLAG)
- {
- prev = addkword (prev, "VRCVII", EXTRACTOR_HARDWARE_DEPENDENCY);
- }
- if (head->chipflags & FDS_FLAG)
- {
- prev = addkword (prev, "FDS Sound", EXTRACTOR_HARDWARE_DEPENDENCY);
- }
- if (head->chipflags & MMC5_FLAG)
- {
- prev = addkword (prev, "MMC5 audio", EXTRACTOR_HARDWARE_DEPENDENCY);
- }
- if (head->chipflags & NAMCO_FLAG)
- {
- prev = addkword (prev, "Namco 106", EXTRACTOR_HARDWARE_DEPENDENCY);
- }
- if (head->chipflags & SUNSOFT_FLAG)
- {
- prev = addkword (prev, "Sunsoft FME-07", EXTRACTOR_HARDWARE_DEPENDENCY);
- }
-
- return (prev);
-
-}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r9809 - Extractor/src/plugins,
gnunet <=