From 02f91ed9b3ea340848484c88a7c74c70d1925744 Mon Sep 17 00:00:00 2001 From: Josh Coalson Date: Tue, 21 Aug 2007 08:05:10 +0000 Subject: [PATCH] *** empty log message *** --- src/flac/Makefile.lite.iffscan | 41 ++++++++ src/flac/iffscan.c | 112 ++++++++++++++++++++++ src/flac/iffscan.dsp | 108 +++++++++++++++++++++ src/flac/iffscan.vcproj | 212 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 473 insertions(+) create mode 100644 src/flac/Makefile.lite.iffscan create mode 100644 src/flac/iffscan.c create mode 100644 src/flac/iffscan.dsp create mode 100644 src/flac/iffscan.vcproj diff --git a/src/flac/Makefile.lite.iffscan b/src/flac/Makefile.lite.iffscan new file mode 100644 index 0000000..b12bb10 --- /dev/null +++ b/src/flac/Makefile.lite.iffscan @@ -0,0 +1,41 @@ +# flac - Command-line FLAC encoder/decoder +# Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007 Josh Coalson +# +# This program 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 +# of the License, or (at your option) any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# +# GNU makefile +# + +topdir = ../.. +libdir = $(topdir)/obj/$(BUILD)/lib + +PROGRAM_NAME = iffscan + +INCLUDES = -I./include -I$(topdir)/include -I$(OGG_INCLUDE_DIR) + +ifeq ($(DARWIN_BUILD),yes) +EXPLICIT_LIBS = $(libdir)/libFLAC.a $(OGG_LIB_DIR)/libogg.a -liconv -lm +else +LIBS = -lFLAC -L$(OGG_LIB_DIR) -logg -lm +endif + +SRCS_C = \ + foreign_metadata.c \ + iffscan.c + +include $(topdir)/build/exe.mk + +# DO NOT DELETE THIS LINE -- make depend depends on it. diff --git a/src/flac/iffscan.c b/src/flac/iffscan.c new file mode 100644 index 0000000..d03b65b --- /dev/null +++ b/src/flac/iffscan.c @@ -0,0 +1,112 @@ +/* iffscan - Simple AIFF/RIFF chunk scanner + * Copyright (C) 2007 Josh Coalson + * + * This program 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 + * of the License, or (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#if HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#if defined _MSC_VER || defined __MINGW32__ +#include /* for off_t */ +#if _MSC_VER <= 1600 /* @@@ [2G limit] */ +#define fseeko fseek +#define ftello ftell +#endif +#endif +#include "foreign_metadata.h" + +static FLAC__uint32 unpack32be_(const FLAC__byte *b) +{ + return ((FLAC__uint32)b[0]<<24) + ((FLAC__uint32)b[1]<<16) + ((FLAC__uint32)b[2]<<8) + (FLAC__uint32)b[3]; +} + +static FLAC__uint32 unpack32le_(const FLAC__byte *b) +{ + return (FLAC__uint32)b[0] + ((FLAC__uint32)b[1]<<8) + ((FLAC__uint32)b[2]<<16) + ((FLAC__uint32)b[3]<<24); +} + +static FLAC__uint32 unpack32_(const FLAC__byte *b, foreign_block_type_t type) +{ + if(type == FOREIGN_BLOCK_TYPE__AIFF) + return unpack32be_(b); + else + return unpack32le_(b); +} + +int main(int argc, char *argv[]) +{ + FILE *f; + char buf[12]; + foreign_metadata_t *fm; + const char *fn, *error; + size_t i; + FLAC__uint32 size; + + if(argc != 2) { + fprintf(stderr, "usage: %s { file.wav | file.aif }\n", argv[0]); + return 1; + } + fn = argv[1]; + if(0 == (f = fopen(fn, "rb")) || fread(buf, 1, 4, f) != 4) { + fprintf(stderr, "ERROR opening %s for reading\n", fn); + return 1; + } + fclose(f); + if(0 == (fm = flac__foreign_metadata_new(memcmp(buf, "RIFF", 4)? FOREIGN_BLOCK_TYPE__AIFF : FOREIGN_BLOCK_TYPE__RIFF))) { + fprintf(stderr, "ERROR: out of memory\n"); + return 1; + } + if(fm->type == FOREIGN_BLOCK_TYPE__AIFF) { + if(!flac__foreign_metadata_read_from_aiff(fm, fn, &error)) { + fprintf(stderr, "ERROR reading chunks from %s: %s\n", fn, error); + return 1; + } + } + else { + if(!flac__foreign_metadata_read_from_wave(fm, fn, &error)) { + fprintf(stderr, "ERROR reading chunks from %s: %s\n", fn, error); + return 1; + } + } + if(0 == (f = fopen(fn, "rb"))) { + fprintf(stderr, "ERROR opening %s for reading\n", fn); + return 1; + } + for(i = 0; i < fm->num_blocks; i++) { + if(fseeko(f, fm->blocks[i].offset, SEEK_SET) < 0) { + fprintf(stderr, "ERROR seeking in %s\n", fn); + return 1; + } + if(fread(buf, 1, 12, f) != 12) { + fprintf(stderr, "ERROR reading %s\n", fn); + return 1; + } + size = unpack32_((const FLAC__byte*)buf+4, fm->type); + printf("block:[%c%c%c%c] size=%08x=(%10u)", buf[0], buf[1], buf[2], buf[3], size, size); + if(i == 0) + printf(" type:[%c%c%c%c]", buf[8], buf[9], buf[10], buf[11]); + else if(fm->type == FOREIGN_BLOCK_TYPE__AIFF && i == fm->audio_block) + printf(" offset size=%08x=(%10u)", fm->ssnd_offset_size, fm->ssnd_offset_size); + printf("\n"); + } + fclose(f); + flac__foreign_metadata_delete(fm); + return 0; +} diff --git a/src/flac/iffscan.dsp b/src/flac/iffscan.dsp new file mode 100644 index 0000000..9a21ffb --- /dev/null +++ b/src/flac/iffscan.dsp @@ -0,0 +1,108 @@ +# Microsoft Developer Studio Project File - Name="iffscan" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=iffscan - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "iffscan.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "iffscan.mak" CFG="iffscan - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "iffscan - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "iffscan - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "iffscan - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "..\..\obj\release\bin" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "..\..\include" /D "NDEBUG" /D "FLAC__NO_DLL" /D "FLAC__HAS_OGG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 ..\..\obj\release\lib\libFLAC_static.lib ..\..\obj\release\lib\ogg_static.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "iffscan - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "..\..\obj\debug\bin" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I "..\..\include" /D "_DEBUG" /D "DEBUG" /D "FLAC__NO_DLL" /D "FLAC__HAS_OGG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 ..\..\obj\debug\lib\libFLAC_static.lib ..\..\obj\release\lib\ogg_static.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "iffscan - Win32 Release" +# Name "iffscan - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\iffscan.c +# End Source File +# Begin Source File + +SOURCE=.\foreign_metadata.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\foreign_metadata.h +# End Source File +# End Group +# End Target +# End Project diff --git a/src/flac/iffscan.vcproj b/src/flac/iffscan.vcproj new file mode 100644 index 0000000..926cb9d --- /dev/null +++ b/src/flac/iffscan.vcproj @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 2.7.4