From 3933471e4bdcc09b57b666913c783282b3527f9e Mon Sep 17 00:00:00 2001 From: hendricks266 Date: Sat, 29 Dec 2012 10:57:24 +0000 Subject: [PATCH] All kneel, king FLAC is here. FLAC source from git commit 0920bc1ffb07f038b317e7e8056509fe0e4b680e, patched by me. Windows libFLAC.a built using i686-MinGW-w64 and x86_64-MinGW-w64. HUGE thanks to rhoenie for building the Mac fat library (ppc, i686, x86_86). git-svn-id: https://svn.eduke32.com/eduke32@3335 1a8010ca-5511-0410-912e-c29ae57300e0 --- polymer/eduke32/Makefile | 8 +- polymer/eduke32/Windows/lib/instructions.txt | 13 +- polymer/eduke32/source/game.c | 29 +- polymer/eduke32/source/jaudiolib/Makefile | 3 +- .../eduke32/source/jaudiolib/src/_multivc.h | 11 +- polymer/eduke32/source/jaudiolib/src/flac.c | 701 ++++++ polymer/eduke32/source/jaudiolib/src/fx_man.c | 15 + .../eduke32/source/jaudiolib/src/multivoc.c | 25 + .../eduke32/source/jaudiolib/src/multivoc.h | 8 + polymer/eduke32/source/jaudiolib/src/vorbis.c | 142 +- .../jaudiolib/third-party/Apple/lib/libFLAC.a | Bin 0 -> 1198276 bytes .../third-party/Windows/lib/32/libFLAC.a | Bin 0 -> 376904 bytes .../third-party/Windows/lib/64/libFLAC.a | Bin 0 -> 400730 bytes .../third-party/common/include/FLAC/all.h | 370 +++ .../third-party/common/include/FLAC/assert.h | 45 + .../common/include/FLAC/callback.h | 184 ++ .../third-party/common/include/FLAC/export.h | 96 + .../third-party/common/include/FLAC/format.h | 1022 ++++++++ .../common/include/FLAC/metadata.h | 2181 +++++++++++++++++ .../common/include/FLAC/ordinals.h | 66 + .../common/include/FLAC/stream_decoder.h | 1559 ++++++++++++ .../common/include/FLAC/stream_encoder.h | 1768 +++++++++++++ polymer/eduke32/source/premap.c | 2 + polymer/eduke32/source/sounds.c | 13 +- 24 files changed, 8167 insertions(+), 94 deletions(-) create mode 100644 polymer/eduke32/source/jaudiolib/src/flac.c create mode 100644 polymer/eduke32/source/jaudiolib/third-party/Apple/lib/libFLAC.a create mode 100644 polymer/eduke32/source/jaudiolib/third-party/Windows/lib/32/libFLAC.a create mode 100644 polymer/eduke32/source/jaudiolib/third-party/Windows/lib/64/libFLAC.a create mode 100644 polymer/eduke32/source/jaudiolib/third-party/common/include/FLAC/all.h create mode 100644 polymer/eduke32/source/jaudiolib/third-party/common/include/FLAC/assert.h create mode 100644 polymer/eduke32/source/jaudiolib/third-party/common/include/FLAC/callback.h create mode 100644 polymer/eduke32/source/jaudiolib/third-party/common/include/FLAC/export.h create mode 100644 polymer/eduke32/source/jaudiolib/third-party/common/include/FLAC/format.h create mode 100644 polymer/eduke32/source/jaudiolib/third-party/common/include/FLAC/metadata.h create mode 100644 polymer/eduke32/source/jaudiolib/third-party/common/include/FLAC/ordinals.h create mode 100644 polymer/eduke32/source/jaudiolib/third-party/common/include/FLAC/stream_decoder.h create mode 100644 polymer/eduke32/source/jaudiolib/third-party/common/include/FLAC/stream_encoder.h diff --git a/polymer/eduke32/Makefile b/polymer/eduke32/Makefile index c56c0f265..7df7f18c4 100644 --- a/polymer/eduke32/Makefile +++ b/polymer/eduke32/Makefile @@ -189,7 +189,7 @@ ifeq ($(SUBPLATFORM),LINUX) OURCOMMONFLAGS += -fno-pic endif OURASFLAGS += -f elf - LIBS += -lvorbisfile -lvorbis -logg + LIBS += -lFLAC -lvorbisfile -lvorbis -logg endif ifeq ($(PLATFORM),WII) @@ -215,7 +215,7 @@ ifeq ($(PLATFORM),DARWIN) OURCOMMONFLAGS += -I$(APPLE_FRAMEWORKS)/SDL.framework/Headers \ -I$(APPLE_FRAMEWORKS)/SDL_mixer.framework/Headers - LIBS += -lvorbisfile -lvorbis -logg -lm \ + LIBS += -lFLAC -lvorbisfile -lvorbis -logg -lm \ -Wl,-framework,SDL -Wl,-framework,SDL_mixer Apple/lib/libSDLmain.a \ -Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,OpenGL \ -Wl,-framework,CoreMidi -Wl,-framework,AudioUnit \ @@ -227,7 +227,7 @@ ifeq ($(PLATFORM),DARWIN) GAMEOBJS+=$(OBJ)/SDLMain.$o else OURCOMMONFLAGS += -I$(SDLROOT)/include -I$(SDLROOT)/include/SDL - LIBS += -lvorbisfile -lvorbis -logg -lm -lSDL_mixer \ + LIBS += -lFLAC -lvorbisfile -lvorbis -logg -lm -lSDL_mixer \ -Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,OpenGL \ -Wl,-framework,CoreMidi -Wl,-framework,AudioUnit \ -Wl,-framework,AudioToolbox -Wl,-framework,IOKit -Wl,-framework,AGL \ @@ -244,7 +244,7 @@ endif ifeq ($(PLATFORM),WINDOWS) OURCOMMONFLAGS += -fno-pic -DUNDERSCORES OURASFLAGS+= -DUNDERSCORES -f win32 - LIBS += -lvorbisfile -lvorbis -logg + LIBS += -lFLAC -lvorbisfile -lvorbis -logg LIBDIRS += -L$(abspath $(JAUDIOLIBDIR)/third-party/Windows/lib$(WINLIB)) GAMEOBJS+= $(OBJ)/gameres.$o $(OBJ)/winbits.$o $(OBJ)/startwin.game.$o EDITOROBJS+= $(OBJ)/buildres.$o diff --git a/polymer/eduke32/Windows/lib/instructions.txt b/polymer/eduke32/Windows/lib/instructions.txt index 7bb7a1617..714c4dd9b 100644 --- a/polymer/eduke32/Windows/lib/instructions.txt +++ b/polymer/eduke32/Windows/lib/instructions.txt @@ -5,6 +5,7 @@ http://wiki.eduke32.com/wiki/Building_EDuke32_on_Windows Download the latest sources from: https://www.xiph.org/downloads/ +http://git.xiph.org/?p=flac.git;a=summary http://zlib.net/ http://www.libpng.org/pub/png/libpng.html http://www.webmproject.org/code/ @@ -13,7 +14,7 @@ http://www.libsdl.org/projects/SDL_mixer/ The build output listed as "Desired Results" is what EDuke32 needs to function. -The desired results for each library in some cases may need to be installed to the compiler. "x depends on the results of y to compile" means that the build output of x must be added to the compiler in this way. Copy files listed in each category to the appropriate destinations: +The desired results for each library in some cases may need to be installed to the compiler. "x depends on the results of y to compile" means that the build output of x must be added to the compiler in this way. Copy files listed in each category to the appropriate destinations. Unless otherwise noted, do NOT copy the ".dll.a" file or else the final product may depend on external DLLs (which you may actually want). For MinGW (MinGW32): from the compiler root (ex. C:\MinGW\) @@ -47,6 +48,14 @@ Desired Results: - libraries: libvorbis.a libvorbisfile.a libvorbis depends on the results of libogg to compile. +libFLAC: +To build: +[make -f Makefile.lite libFLAC] +Desired Results: + - headers: FLAC\all.h FLAC\assert.h FLAC\callback.h FLAC\export.h FLAC\format.h FLAC\metadata.h FLAC\ordinals.h FLAC\stream_decoder.h FLAC\stream_encoder.h + - libraries: libFLAC.a +libFLAC depends on the results of libogg to compile. + zlib: You may want to change -O3 to -O2 in win32\Makefile.gcc for stability and possibly performance benefits. @@ -73,7 +82,7 @@ Desired Results: libvpx: Download the binary of yasm (http://yasm.tortall.net/) for your host system architecture. Both builds target both architectures. The build environment needs pr.exe (https://mingw-lib.googlecode.com/files/coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2). -If the configure scripts do not recognize your 64-bit compiler, you may need to apply the included patch "libvpx with MinGW-w64.patch". +If the configure scripts do not recognize your 64-bit compiler, you may need to [git apply "libvpx with MinGW-w64.patch"]. To build: [sh ./configure --disable-vp8-encoder --disable-multithread --disable-spatial-resampling --as=yasm && make] Desired Results: diff --git a/polymer/eduke32/source/game.c b/polymer/eduke32/source/game.c index 669ab1450..e2373b4aa 100644 --- a/polymer/eduke32/source/game.c +++ b/polymer/eduke32/source/game.c @@ -8193,30 +8193,37 @@ static void G_ShowDebugHelp(void) #endif } -static char *S_OggifyFilename(char *destname, char *OGGname, const char *origname) +static char *S_OggifyFilename(char *outputname, char *newname, const char *origname) { if (!origname) - return destname; + return outputname; - destname = (char *)Brealloc(destname, Bstrlen(OGGname) + Bstrlen(origname) + 1); + outputname = (char *)Brealloc(outputname, Bstrlen(newname) + Bstrlen(origname) + 1); - if (!destname) + if (!outputname) return NULL; - Bstrcpy(destname, *OGGname ? OGGname : origname); + Bstrcpy(outputname, *newname ? newname : origname); - if (*OGGname && OGGname[Bstrlen(OGGname)-1] == '/') + // a special case for specifying a prefix directory + if (*newname && newname[Bstrlen(newname)-1] == '/') { while (*origname == '/') origname++; - Bstrcat(destname, origname); + Bstrcat(outputname, origname); } - if ((OGGname = Bstrchr(destname, '.'))) - Bstrcpy(OGGname, ".ogg"); - else Bstrcat(destname, ".ogg"); +#if 0 + // XXX: I don't see why we were previously clobbering the extension regardless of what it is. + if ((newname = Bstrchr(outputname, '.'))) + Bstrcpy(newname, ".ogg"); + else Bstrcat(outputname, ".ogg"); +#endif - return destname; + if (Bstrchr(outputname, '.') == NULL) + Bstrcat(outputname, ".ogg"); + + return outputname; } static int32_t S_DefineSound(int32_t ID,char *name) diff --git a/polymer/eduke32/source/jaudiolib/Makefile b/polymer/eduke32/source/jaudiolib/Makefile index b74994329..fdf6dbcf4 100644 --- a/polymer/eduke32/source/jaudiolib/Makefile +++ b/polymer/eduke32/source/jaudiolib/Makefile @@ -9,7 +9,7 @@ INC=include # for BUILD_ECHOFLAGS: OURCOMMONFLAGS=$(BASECOMMONFLAGS) $(BUILDCOMMONFLAGS) -I$(INC) -I$(SRC) ifneq ($(PLATFORM),WII) - OURCOMMONFLAGS+= -DHAVE_VORBIS + OURCOMMONFLAGS+= -DHAVE_VORBIS -DHAVE_FLAC endif ifneq ($(RELEASE),0) # Debugging disabled @@ -43,6 +43,7 @@ OBJECTS=$(OBJ)/drivers.o \ $(OBJ)/mixst.o \ $(OBJ)/pitch.o \ $(OBJ)/vorbis.o \ + $(OBJ)/flac.o \ $(OBJ)/driver_nosound.o ifeq ($(PLATFORM),DARWIN) diff --git a/polymer/eduke32/source/jaudiolib/src/_multivc.h b/polymer/eduke32/source/jaudiolib/src/_multivc.h index c8e770c31..55a926e37 100644 --- a/polymer/eduke32/source/jaudiolib/src/_multivc.h +++ b/polymer/eduke32/source/jaudiolib/src/_multivc.h @@ -98,7 +98,8 @@ typedef enum VOC, DemandFeed, WAV, - Vorbis + Vorbis, + FLAC } wavedata; typedef enum @@ -238,6 +239,7 @@ void MV_SetVoiceMixMode( VoiceNode *voice ); void MV_SetVoiceVolume ( VoiceNode *voice, int32_t vol, int32_t left, int32_t right ); void MV_ReleaseVorbisVoice( VoiceNode * voice ); +void MV_ReleaseFLACVoice( VoiceNode * voice ); // implemented in mix.c void ClearBuffer_DW( void *ptr, unsigned data, int32_t length ); @@ -310,6 +312,13 @@ extern const int16_t *MV_RightVolume; extern int32_t MV_SampleSize; extern int32_t MV_RightChannelOffset; +#define loopStartTagCount 2 +extern const char *loopStartTags[loopStartTagCount]; +#define loopEndTagCount 2 +extern const char *loopEndTags[loopEndTagCount]; +#define loopLengthTagCount 2 +extern const char *loopLengthTags[loopLengthTagCount]; + #if defined __POWERPC__ || defined GEKKO # define BIGENDIAN #endif diff --git a/polymer/eduke32/source/jaudiolib/src/flac.c b/polymer/eduke32/source/jaudiolib/src/flac.c new file mode 100644 index 000000000..6666a6466 --- /dev/null +++ b/polymer/eduke32/source/jaudiolib/src/flac.c @@ -0,0 +1,701 @@ +/* + Copyright (C) 2009 Jonathon Fowler + + 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. + + */ + +/** + * FLAC source support for MultiVoc + */ + +#ifdef HAVE_FLAC + +#ifdef __APPLE__ +# include +#else +# include "FLAC/all.h" +#endif + +#include +#include +#include +#ifndef _MSC_VER +#include +#endif +#include +#include "pitch.h" +#include "multivoc.h" +#include "_multivc.h" + + +#ifndef min +#define min(x,y) ((x) < (y) ? (x) : (y)) +#endif +#ifndef max +#define max(x,y) ((x) > (y) ? (x) : (y)) +#endif + +# if defined(_MSC_VER) +# define strcasecmp _stricmp +# define strncasecmp _strnicmp +# elif defined(__QNX__) +# define strcasecmp stricmp +# define strncasecmp strnicmp +# endif + +typedef struct { + void * ptr; + size_t length; + size_t pos; + + FLAC__StreamDecoder* stream; + FLAC__uint64 sample_pos; + + char *block; + size_t blocksize; + + VoiceNode *owner; +} flac_data; + +// callbacks, round 1 + +static size_t read_flac(void * ptr, size_t size, size_t nmemb, FLAC__IOHandle datasource) +{ + flac_data * flac = (flac_data *) datasource; + size_t nread = 0; + size_t bytes; + + errno = 0; + + if (flac->length == flac->pos) { + return 0; + } + + for (; nmemb > 0; nmemb--, nread++) { + bytes = flac->length - flac->pos; + if (size < bytes) { + bytes = size; + } + + memcpy(ptr, (uint8_t *)flac->ptr + flac->pos, bytes); + flac->pos += bytes; + ptr = (uint8_t *)ptr + bytes; + + if (flac->length == flac->pos) { + nread++; + break; + } + } + + return nread; +} + +static size_t write_flac(const void * ptr, size_t size, size_t nmemb, FLAC__IOHandle datasource) +{ + UNREFERENCED_PARAMETER(ptr); + UNREFERENCED_PARAMETER(size); + UNREFERENCED_PARAMETER(nmemb); + UNREFERENCED_PARAMETER(datasource); + + return 0; +} + +static int32_t seek_flac(FLAC__IOHandle datasource, FLAC__int64 offset, int32_t whence) +{ + flac_data * flac = (flac_data *) datasource; + + switch (whence) { + case SEEK_SET: flac->pos = 0; break; + case SEEK_CUR: break; + case SEEK_END: flac->pos = flac->length; break; + } + + flac->pos += offset; + + if (flac->pos > flac->length) { + flac->pos = flac->length; + } + + return 0; +} + +static FLAC__int64 tell_flac(FLAC__IOHandle datasource) +{ + flac_data * flac = (flac_data *) datasource; + + return flac->pos; +} + +static FLAC__int64 length_flac(FLAC__IOHandle datasource) +{ + flac_data * flac = (flac_data *) datasource; + + return flac->length; +} + +static int32_t eof_flac(FLAC__IOHandle datasource) +{ + flac_data * flac = (flac_data *) datasource; + + return (flac->pos == flac->length); +} + +static int32_t close_flac(FLAC__IOHandle datasource) +{ + UNREFERENCED_PARAMETER(datasource); + return 0; +} + +static FLAC__IOCallbacks flac_callbacks = { + read_flac, + write_flac, + seek_flac, + tell_flac, + eof_flac, + close_flac, +}; + + +// callbacks, round 2 + +FLAC__StreamDecoderReadStatus read_flac_stream(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data) +{ + UNREFERENCED_PARAMETER(decoder); + if(*bytes > 0) { + *bytes = read_flac(buffer, sizeof(FLAC__byte), *bytes, client_data); + if(errno) + return FLAC__STREAM_DECODER_READ_STATUS_ABORT; + else if(*bytes == 0) + return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM; + else + return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE; + } + else + return FLAC__STREAM_DECODER_READ_STATUS_ABORT; +} + +FLAC__StreamDecoderSeekStatus seek_flac_stream(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) +{ + UNREFERENCED_PARAMETER(decoder); + if(seek_flac(client_data, absolute_byte_offset, SEEK_SET) < 0) + return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; + else + return FLAC__STREAM_DECODER_SEEK_STATUS_OK; +} + +FLAC__StreamDecoderTellStatus tell_flac_stream(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) +{ + UNREFERENCED_PARAMETER(decoder); + *absolute_byte_offset = tell_flac(client_data); + return FLAC__STREAM_DECODER_TELL_STATUS_OK; +} + +FLAC__StreamDecoderLengthStatus length_flac_stream(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) +{ + UNREFERENCED_PARAMETER(decoder); + *stream_length = length_flac(client_data); + return FLAC__STREAM_DECODER_LENGTH_STATUS_OK; +} + +FLAC__bool eof_flac_stream(const FLAC__StreamDecoder *decoder, void *client_data) +{ + UNREFERENCED_PARAMETER(decoder); + return eof_flac(client_data); +} + +FLAC__StreamDecoderWriteStatus write_flac_stream(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 *const ibuffer[], void *client_data) +{ + flac_data * fd = (flac_data *) client_data; + VoiceNode *voice = fd->owner; + const FLAC__uint64 samples = frame->header.blocksize; + + UNREFERENCED_PARAMETER(decoder); + + voice->channels = frame->header.channels; + voice->bits = frame->header.bits_per_sample; + voice->SamplingRate = frame->header.sample_rate; + + voice->length = ((samples * (voice->bits/8))/2)<bits; + voice->position = 0; + voice->BlockLength = 0; + voice->RateScale = ( voice->SamplingRate * voice->PitchScale ) / MV_MixRate; + voice->FixedPointBufferSize = ( voice->RateScale * MV_MIXBUFFERSIZE ) - voice->RateScale; + MV_SetVoiceMixMode( voice ); + + if (frame->header.number_type == FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER) + fd->sample_pos = frame->header.number.frame_number; + else if (frame->header.number_type == FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER) + fd->sample_pos = frame->header.number.sample_number; + + { + const size_t size = samples * voice->channels * (voice->bits/8); + if (size > fd->blocksize) + { + fd->blocksize = size; + fd->block = (char*)realloc(fd->block, sizeof(char) * size); + } + } + + if (!fd->block) + return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT; + + voice->sound = fd->block; + + { + char *obuffer = fd->block; + FLAC__uint64 sample; + uint8_t channel; + + // this loop is adapted from code in ov_read_filter() in vorbisfile.c in libvorbis + for(sample=0; sample < samples; ++sample) + for(channel=0; channel < frame->header.channels; ++channel) + { + int8_t byte; + FLAC__int32 val=ibuffer[channel][sample]; + if(val>(1<<(voice->bits-1))-1) + val=(1<<(voice->bits-1))-1; + else if(val<-(1<<(voice->bits-1))) + val=-(1<<(voice->bits-1)); +#ifdef BIGENDIAN + for (byte = voice->bits-8; byte >=0; byte -= 8) +#else + for (byte = 0; byte < voice->bits; byte += 8) +#endif + *obuffer++=((val>>byte)&0x000000FF); + } + } + + return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE; +} + +void error_flac_stream(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) +{ + // flac_data * fd = (flac_data *) client_data; + UNREFERENCED_PARAMETER(client_data); + UNREFERENCED_PARAMETER(decoder); + MV_Printf("%s\n", FLAC__StreamDecoderErrorStatusString[status]); + // FLAC__stream_decoder_flush(fd->stream); +} + +/*--------------------------------------------------------------------- +Function: MV_GetNextFLACBlock + +Controls playback of FLAC data +---------------------------------------------------------------------*/ + +static playbackstatus MV_GetNextFLACBlock +( + VoiceNode *voice + ) + +{ + flac_data * fd = (flac_data *) voice->extra; + FLAC__StreamDecoderState decode_state; + // FLAC__bool decode_status; + + voice->Playing = TRUE; + + if ((FLAC__uint64)(uintptr_t)voice->LoopEnd > 0 && fd->sample_pos >= (FLAC__uint64)(uintptr_t)voice->LoopEnd) + if (!FLAC__stream_decoder_seek_absolute(fd->stream, (FLAC__uint64)(uintptr_t)voice->LoopStart)) + MV_Printf("MV_GetNextFLACBlock FLAC__stream_decoder_seek_absolute: LOOP_START %ul, LOOP_END %ul\n", + (FLAC__uint64)(uintptr_t)voice->LoopStart, (FLAC__uint64)(uintptr_t)voice->LoopEnd); + + /*decode_status =*/ FLAC__stream_decoder_process_single(fd->stream); + decode_state = FLAC__stream_decoder_get_state(fd->stream); + +/* + if (!decode_status) + { + MV_Printf("MV_GetNextFLACBlock: %s\n", FLAC__StreamDecoderStateString[decode_state]); + voice->Playing = FALSE; + return NoMoreData; + } +*/ + + if (decode_state == FLAC__STREAM_DECODER_SEEK_ERROR) + { + FLAC__stream_decoder_flush(fd->stream); + decode_state = FLAC__stream_decoder_get_state(fd->stream); + } + + if (decode_state == FLAC__STREAM_DECODER_END_OF_STREAM) + { + if (voice->LoopSize > 0) + { + if (!FLAC__stream_decoder_seek_absolute(fd->stream, (FLAC__uint64)(uintptr_t)voice->LoopStart)) + MV_Printf("MV_GetNextFLACBlock FLAC__stream_decoder_seek_absolute: LOOP_START %ul\n", + (FLAC__uint64)(uintptr_t)voice->LoopStart); + } + else + { + voice->Playing = FALSE; + return NoMoreData; + } + } + +#if 0 + // unnecessary: duplicated in write_flac_stream() + voice->channels = FLAC__stream_decoder_get_channels(fd->stream); + voice->bits = FLAC__stream_decoder_get_bits_per_sample(fd->stream); + voice->SamplingRate = FLAC__stream_decoder_get_sample_rate(fd->stream); + voice->RateScale = ( voice->SamplingRate * voice->PitchScale ) / MV_MixRate; + voice->FixedPointBufferSize = ( voice->RateScale * MV_MIXBUFFERSIZE ) - voice->RateScale; + MV_SetVoiceMixMode( voice ); +#endif + + return( KeepPlaying ); +} + + +/*--------------------------------------------------------------------- +Function: MV_PlayFLAC3D + +Begin playback of sound data at specified angle and distance +from listener. +---------------------------------------------------------------------*/ + +int32_t MV_PlayFLAC3D +( + char *ptr, + uint32_t ptrlength, + int32_t pitchoffset, + int32_t angle, + int32_t distance, + int32_t priority, + uint32_t callbackval + ) + +{ + int32_t left; + int32_t right; + int32_t mid; + int32_t volume; + int32_t status; + + if ( !MV_Installed ) + { + MV_SetErrorCode( MV_NotInstalled ); + return( MV_Error ); + } + + if ( distance < 0 ) + { + distance = -distance; + angle += MV_NUMPANPOSITIONS / 2; + } + + volume = MIX_VOLUME( distance ); + + // Ensure angle is within 0 - 127 + angle &= MV_MAXPANPOSITION; + + left = MV_PanTable[ angle ][ volume ].left; + right = MV_PanTable[ angle ][ volume ].right; + mid = max( 0, 255 - distance ); + + status = MV_PlayFLAC( ptr, ptrlength, pitchoffset, mid, left, right, priority, + callbackval ); + + return( status ); +} + + +/*--------------------------------------------------------------------- +Function: MV_PlayFLAC + +Begin playback of sound data with the given sound levels and +priority. +---------------------------------------------------------------------*/ + +int32_t MV_PlayFLAC +( + char *ptr, + uint32_t ptrlength, + int32_t pitchoffset, + int32_t vol, + int32_t left, + int32_t right, + int32_t priority, + uint32_t callbackval + ) + +{ + int32_t status; + + status = MV_PlayLoopedFLAC( ptr, ptrlength, -1, -1, pitchoffset, vol, left, right, + priority, callbackval ); + + return( status ); +} + + +/*--------------------------------------------------------------------- +Function: MV_PlayLoopedFLAC + +Begin playback of sound data with the given sound levels and +priority. +---------------------------------------------------------------------*/ + +int32_t MV_PlayLoopedFLAC +( + char *ptr, + uint32_t ptrlength, + int32_t loopstart, + int32_t loopend, + int32_t pitchoffset, + int32_t vol, + int32_t left, + int32_t right, + int32_t priority, + uint32_t callbackval + ) + +{ + VoiceNode *voice; + flac_data * fd = 0; + FLAC__Metadata_Chain* metadata_chain; + + if ( !MV_Installed ) + { + MV_SetErrorCode( MV_NotInstalled ); + return( MV_Error ); + } + + fd = (flac_data *) malloc( sizeof(flac_data) ); + if (!fd) { + MV_SetErrorCode( MV_InvalidFLACFile ); + return MV_Error; + } + + memset(fd, 0, sizeof(flac_data)); + fd->ptr = ptr; + fd->pos = 0; + fd->blocksize = 0; + fd->length = ptrlength; + + fd->block = NULL; + + fd->stream = FLAC__stream_decoder_new(); + fd->sample_pos = 0; + + FLAC__stream_decoder_set_metadata_ignore_all(fd->stream); + + if (FLAC__stream_decoder_init_stream(fd->stream, + read_flac_stream, + seek_flac_stream, + tell_flac_stream, + length_flac_stream, + eof_flac_stream, + write_flac_stream, + /*metadata_flac_stream*/ NULL, + error_flac_stream, + (void*) fd) != FLAC__STREAM_DECODER_INIT_STATUS_OK) { + MV_Printf("MV_PlayLoopedFLAC: %s\n", FLAC__stream_decoder_get_resolved_state_string(fd->stream)); + MV_SetErrorCode( MV_InvalidFLACFile ); + return MV_Error; + } + + // Request a voice from the voice pool + voice = MV_AllocVoice( priority ); + if ( voice == NULL ) + { + FLAC__stream_decoder_finish(fd->stream); + FLAC__stream_decoder_delete(fd->stream); + free(fd); + MV_SetErrorCode( MV_NoVoices ); + return( MV_Error ); + } + + fd->owner = voice; + + voice->wavetype = FLAC; + voice->extra = (void*)fd; + voice->GetSound = MV_GetNextFLACBlock; + voice->NextBlock = fd->block; + voice->DemandFeed = NULL; + voice->LoopCount = 0; + voice->BlockLength = 0; + voice->PitchScale = PITCH_GetScale( pitchoffset ); + voice->next = NULL; + voice->prev = NULL; + voice->priority = priority; + voice->callbackval = callbackval; + + voice->Playing = TRUE; + voice->Paused = FALSE; + + voice->LoopStart = (char *) (intptr_t)(loopstart >= 0 ? loopstart : 0); + voice->LoopEnd = (char *) (intptr_t)(loopstart >= 0 && loopend > 0 ? loopend : 0); + voice->LoopSize = (loopstart >= 0 ? 1 : 0); + + // parse metadata + // loop parsing designed with multiple repetitions in mind + // In retrospect, it may be possible to MV_GetVorbisCommentLoops(voice, (vorbis_comment *) tags->data.vorbis_comment) + // but libvorbisfile may be confused by the signedness of char* vs FLAC__byte* and this code does not depend on HAVE_VORBIS. + metadata_chain = FLAC__metadata_chain_new(); + if (metadata_chain != NULL) + { + if (FLAC__metadata_chain_read_with_callbacks(metadata_chain, fd, flac_callbacks)) + { + FLAC__Metadata_Iterator* metadata_iterator = FLAC__metadata_iterator_new(); + if (metadata_iterator != NULL) + { + char *vc_loopstart = NULL; + char *vc_loopend = NULL; + char *vc_looplength = NULL; + + FLAC__metadata_iterator_init(metadata_iterator, metadata_chain); + + do + { + FLAC__StreamMetadata *tags = FLAC__metadata_iterator_get_block(metadata_iterator); + + if (tags->type == FLAC__METADATA_TYPE_STREAMINFO) + { + const FLAC__StreamMetadata_StreamInfo *info = &tags->data.stream_info; + + if (info->channels != 1 && info->channels != 2) { + FLAC__metadata_object_delete(tags); + FLAC__metadata_iterator_delete(metadata_iterator); + // FLAC__metadata_chain_delete(metadata_chain); + FLAC__stream_decoder_finish(fd->stream); + FLAC__stream_decoder_delete(fd->stream); + free(fd); + MV_SetErrorCode( MV_InvalidFLACFile ); + return MV_Error; + } + + voice->channels = info->channels; + voice->bits = info->bits_per_sample; + voice->SamplingRate = info->sample_rate; + } + + // load loop tags from metadata + if (tags->type == FLAC__METADATA_TYPE_VORBIS_COMMENT && loopstart < 1) + { + FLAC__uint32 comment; + uint8_t loopTagCount; + for (comment = 0; comment < tags->data.vorbis_comment.num_comments; ++comment) + { + const char *entry = (const char *) tags->data.vorbis_comment.comments[comment].entry; + if (entry != NULL && entry[0] != '\0') + { + const char *value = strchr(entry,'='); + const size_t field = value-entry; + value += 1; + + for (loopTagCount = 0; loopTagCount < loopStartTagCount && vc_loopstart == NULL; ++loopTagCount) + if (strncasecmp(entry, loopStartTags[loopTagCount], field) == 0) + vc_loopstart = strdup(value); + + for (loopTagCount = 0; loopTagCount < loopEndTagCount && vc_loopend == NULL; ++loopTagCount) + if (strncasecmp(entry, loopEndTags[loopTagCount], field) == 0) + vc_loopend = strdup(value); + + for (loopTagCount = 0; loopTagCount < loopLengthTagCount && vc_looplength == NULL; ++loopTagCount) + if (strncasecmp(entry, loopLengthTags[loopTagCount], field) == 0) + vc_looplength = strdup(value); + } + } + } + + FLAC__metadata_object_delete(tags); // If it wasn't for this I would assign pointers instead of strdup(). + } + while (FLAC__metadata_iterator_next(metadata_iterator)); + + if (loopstart < 1) + { + if (vc_loopstart != NULL) + { + { + const FLAC__int64 flac_loopstart = atol(vc_loopstart); + if (flac_loopstart >= 0) // a loop starting at 0 is valid + { + voice->LoopStart = (const char *) (intptr_t) flac_loopstart; + voice->LoopSize = 1; + } + } + free(vc_loopstart); + } + if (vc_loopend != NULL) + { + if (voice->LoopSize > 0) + { + const FLAC__int64 flac_loopend = atol(vc_loopend); + if (flac_loopend > 0) // a loop ending at 0 is invalid + voice->LoopEnd = (const char *) (intptr_t) flac_loopend; + } + free(vc_loopend); + } + if (vc_looplength != NULL) + { + if (voice->LoopSize > 0 && voice->LoopEnd == 0) + { + const FLAC__int64 flac_looplength = atol(vc_looplength); + if (flac_looplength > 0) // a loop of length 0 is invalid + voice->LoopEnd = (const char *) ((intptr_t) flac_looplength + (intptr_t) voice->LoopStart); + } + free(vc_looplength); + } + } + + FLAC__metadata_iterator_delete(metadata_iterator); + } + else + MV_Printf("Error allocating FLAC__Metadata_Iterator!\n"); + } + else + MV_Printf("%s\n", FLAC__Metadata_ChainStatusString[FLAC__metadata_chain_status(metadata_chain)]); + + // FLAC__metadata_chain_delete(metadata_chain); // when run with GDB, this throws SIGTRAP about freed heap memory being modified + } + else + MV_Printf("Error allocating FLAC__Metadata_Chain!\n"); + + voice->RateScale = ( voice->SamplingRate * voice->PitchScale ) / MV_MixRate; + voice->FixedPointBufferSize = ( voice->RateScale * MV_MIXBUFFERSIZE ) - + voice->RateScale; + MV_SetVoiceMixMode( voice ); + + MV_SetVoiceVolume( voice, vol, left, right ); + MV_PlayVoice( voice ); + + return( voice->handle ); +} + + +void MV_ReleaseFLACVoice( VoiceNode * voice ) +{ + flac_data * fd = (flac_data *) voice->extra; + + if (voice->wavetype != FLAC) { + return; + } + + if (fd->stream != NULL) + { + FLAC__stream_decoder_finish(fd->stream); + FLAC__stream_decoder_delete(fd->stream); + } + if (fd->block != NULL) + free(fd->block); + free(fd); + + voice->extra = 0; +} + +#endif //HAVE_FLAC diff --git a/polymer/eduke32/source/jaudiolib/src/fx_man.c b/polymer/eduke32/source/jaudiolib/src/fx_man.c index 7203ee823..39ae12917 100644 --- a/polymer/eduke32/source/jaudiolib/src/fx_man.c +++ b/polymer/eduke32/source/jaudiolib/src/fx_man.c @@ -937,6 +937,11 @@ int32_t FX_PlayAuto(char *ptr, uint32_t length, int32_t pitchoffset, int32_t vol case 'O'+('g'<<8)+('g'<<16)+('S'<<24): handle = MV_PlayVorbis(ptr, length, pitchoffset, vol, left, right, priority, callbackval); break; +#endif +#ifdef HAVE_FLAC + case 'f'+('L'<<8)+('a'<<16)+('C'<<24): + handle = MV_PlayFLAC(ptr, length, pitchoffset, vol, left, right, priority, callbackval); + break; #endif default: switch (LITTLE32(*(int32_t *)(ptr + 8))) @@ -994,6 +999,11 @@ int32_t FX_PlayLoopedAuto(char *ptr, uint32_t length, int32_t loopstart, int32_t case 'O'+('g'<<8)+('g'<<16)+('S'<<24): handle = MV_PlayLoopedVorbis(ptr, length, loopstart, loopend, pitchoffset, vol, left, right, priority, callbackval); break; +#endif +#ifdef HAVE_FLAC + case 'f'+('L'<<8)+('a'<<16)+('C'<<24): + handle = MV_PlayLoopedFLAC(ptr, length, loopstart, loopend, pitchoffset, vol, left, right, priority, callbackval); + break; #endif default: switch (LITTLE32(*(int32_t *)(ptr + 8))) @@ -1037,6 +1047,11 @@ int32_t FX_PlayAuto3D(char *ptr, uint32_t length, int32_t pitchoffset, int32_t a case 'O'+('g'<<8)+('g'<<16)+('S'<<24): // OggS handle = MV_PlayVorbis3D(ptr, length, pitchoffset, angle, distance, priority, callbackval); break; +#endif +#ifdef HAVE_FLAC + case 'f'+('L'<<8)+('a'<<16)+('C'<<24): // fLaC + handle = MV_PlayFLAC3D(ptr, length, pitchoffset, angle, distance, priority, callbackval); + break; #endif default: switch (LITTLE32(*(int32_t *)(ptr + 8))) diff --git a/polymer/eduke32/source/jaudiolib/src/multivoc.c b/polymer/eduke32/source/jaudiolib/src/multivoc.c index 29b51395a..dcb51349b 100644 --- a/polymer/eduke32/source/jaudiolib/src/multivoc.c +++ b/polymer/eduke32/source/jaudiolib/src/multivoc.c @@ -215,6 +215,9 @@ const char *MV_ErrorString(int32_t ErrorNumber) case MV_InvalidVorbisFile : return "Invalid OggVorbis file passed in to Multivoc."; + case MV_InvalidFLACFile : + return "Invalid FLAC file passed in to Multivoc."; + case MV_InvalidMixMode : return "Invalid mix mode request in Multivoc."; @@ -338,6 +341,10 @@ static void MV_StopVoice(VoiceNode *voice) if (voice->wavetype == Vorbis) MV_ReleaseVorbisVoice(voice); #endif +#ifdef HAVE_FLAC + if (voice->wavetype == FLAC) + MV_ReleaseFLACVoice(voice); +#endif voice->handle = 0; } @@ -461,6 +468,10 @@ static void MV_ServiceVoc(void) #ifdef HAVE_VORBIS if (voice->wavetype == Vorbis) MV_ReleaseVorbisVoice(voice); +#endif +#ifdef HAVE_FLAC + if (voice->wavetype == FLAC) + MV_ReleaseFLACVoice(voice); #endif voice->handle = 0; @@ -2733,4 +2744,18 @@ void MV_SetPrintf(void (*function)(const char *, ...)) } +const char *loopStartTags[loopStartTagCount] = { + "LOOP_START", + "LOOPSTART" +}; +const char *loopEndTags[loopEndTagCount] = { + "LOOP_END", + "LOOPEND" +}; +const char *loopLengthTags[loopLengthTagCount] = { + "LOOP_LENGTH", + "LOOPLENGTH" +}; + + // vim:ts=3:expandtab: diff --git a/polymer/eduke32/source/jaudiolib/src/multivoc.h b/polymer/eduke32/source/jaudiolib/src/multivoc.h index 7697b6440..984d66212 100644 --- a/polymer/eduke32/source/jaudiolib/src/multivoc.h +++ b/polymer/eduke32/source/jaudiolib/src/multivoc.h @@ -53,6 +53,7 @@ enum MV_Errors MV_InvalidVOCFile, MV_InvalidWAVFile, MV_InvalidVorbisFile, + MV_InvalidFLACFile, MV_InvalidMixMode, MV_NullRecordFunction }; @@ -109,6 +110,13 @@ int32_t MV_PlayVorbis( char *ptr, uint32_t length, int32_t pitchoffset, int32_ int32_t MV_PlayLoopedVorbis( char *ptr, uint32_t length, int32_t loopstart, int32_t loopend, int32_t pitchoffset, int32_t vol, int32_t left, int32_t right, int32_t priority, uint32_t callbackval ); +int32_t MV_PlayFLAC3D( char *ptr, uint32_t length, int32_t pitchoffset, int32_t angle, int32_t distance, + int32_t priority, uint32_t callbackval ); +int32_t MV_PlayFLAC( char *ptr, uint32_t length, int32_t pitchoffset, int32_t vol, int32_t left, int32_t right, + int32_t priority, uint32_t callbackval ); +int32_t MV_PlayLoopedFLAC( char *ptr, uint32_t length, int32_t loopstart, int32_t loopend, + int32_t pitchoffset, int32_t vol, int32_t left, int32_t right, int32_t priority, + uint32_t callbackval ); //void MV_CreateVolumeTable( int32_t index, int32_t volume, int32_t MaxVolume ); void MV_SetVolume( int32_t volume ); int32_t MV_GetVolume( void ); diff --git a/polymer/eduke32/source/jaudiolib/src/vorbis.c b/polymer/eduke32/source/jaudiolib/src/vorbis.c index 1d0fe9130..8e072b136 100644 --- a/polymer/eduke32/source/jaudiolib/src/vorbis.c +++ b/polymer/eduke32/source/jaudiolib/src/vorbis.c @@ -24,14 +24,6 @@ #ifdef HAVE_VORBIS -#define OV_EXCLUDE_STATIC_CALLBACKS - -#ifdef __APPLE__ -# include -#else -# include "vorbis/vorbisfile.h" -#endif - #include #include #include @@ -43,6 +35,14 @@ #include "multivoc.h" #include "_multivc.h" +#define OV_EXCLUDE_STATIC_CALLBACKS + +#ifdef __APPLE__ +# include +#else +# include "vorbis/vorbisfile.h" +#endif + #ifndef min #define min(x,y) ((x) < (y) ? (x) : (y)) #endif @@ -63,6 +63,65 @@ typedef struct { int32_t lastbitstream; } vorbis_data; +// designed with multiple calls in mind +static void MV_GetVorbisCommentLoops(VoiceNode *voice, vorbis_comment *vc) +{ + uint8_t loopTagCount; + + if (vc == NULL) + return; + + { + char *vc_loopstart = NULL; + + for (loopTagCount = 0; loopTagCount < loopStartTagCount && vc_loopstart == NULL; ++loopTagCount) + vc_loopstart = vorbis_comment_query(vc, loopStartTags[loopTagCount], 0); + + if (vc_loopstart != NULL) + { + const ogg_int64_t ov_loopstart = atol(vc_loopstart); + if (ov_loopstart >= 0) // a loop starting at 0 is valid + { + voice->LoopStart = (const char *) (intptr_t) ov_loopstart; + voice->LoopSize = 1; + } + } + } + + if (voice->LoopSize > 0) + { + { + char *vc_loopend = NULL; + + for (loopTagCount = 0; loopTagCount < loopEndTagCount && vc_loopend == NULL; ++loopTagCount) + vc_loopend = vorbis_comment_query(vc, loopEndTags[loopTagCount], 0); + + if (vc_loopend != NULL) + { + const ogg_int64_t ov_loopend = atol(vc_loopend); + if (ov_loopend > 0) // a loop ending at 0 is invalid + voice->LoopEnd = (const char *) (intptr_t) ov_loopend; + } + } + + if (voice->LoopEnd == 0) + { + char *vc_looplength = NULL; + + for (loopTagCount = 0; loopTagCount < loopLengthTagCount && vc_looplength == NULL; ++loopTagCount) + vc_looplength = vorbis_comment_query(vc, loopLengthTags[loopTagCount], 0); + + if (vc_looplength != NULL) + { + const ogg_int64_t ov_looplength = atol(vc_looplength); + if (ov_looplength > 0) // a loop of length 0 is invalid + voice->LoopEnd = (const char *) ((intptr_t) ov_looplength + (intptr_t) voice->LoopStart); + } + } + } +} + +// callbacks static size_t read_vorbis(void * ptr, size_t size, size_t nmemb, void * datasource) { @@ -219,7 +278,7 @@ static playbackstatus MV_GetNextVorbisBlock voice->position = 0; voice->sound = vd->block; voice->BlockLength = 0; - voice->length = bytesread << 16; + voice->length = bytesread << 16; // ???: Should the literal 16 be voice->bits? return( KeepPlaying ); } @@ -406,69 +465,7 @@ int32_t MV_PlayLoopedVorbis // load loop tags from metadata if (loopstart < 1) - { - vorbis_comment * vc = ov_comment(&vd->vf, 0); - if (vc != NULL) - { - int loopTagCount; - - static const char *loopStartTags[] = { - "LOOP_START", - "LOOPSTART" - }; - - char *vc_loopstart = NULL; - - for (loopTagCount = 0; loopTagCount < 2 && vc_loopstart == NULL; ++loopTagCount) - vc_loopstart = vorbis_comment_query(vc, loopStartTags[loopTagCount], 0); - - if (vc_loopstart != NULL) - { - ogg_int64_t ov_loopstart = atol(vc_loopstart); - if (ov_loopstart >= 0) // a loop starting at 0 is valid - { - static const char *loopEndTags[] = { - "LOOP_END", - "LOOPEND" - }; - - char *vc_loopend = NULL; - - voice->LoopStart = (char *) (intptr_t) ov_loopstart; - voice->LoopSize = 1; - - for (loopTagCount = 0; loopTagCount < 2 && vc_loopend == NULL; ++loopTagCount) - vc_loopend = vorbis_comment_query(vc, loopEndTags[loopTagCount], 0); - - if (vc_loopend != NULL) - { - ogg_int64_t ov_loopend = atol(vc_loopend); - if (ov_loopend > 0) // a loop ending at 0 is invalid - voice->LoopEnd = (char *) (intptr_t) ov_loopend; - } - else - { - static const char *loopLengthTags[] = { - "LOOP_LENGTH", - "LOOPLENGTH" - }; - - char *vc_looplength = NULL; - - for (loopTagCount = 0; loopTagCount < 2 && vc_looplength == NULL; ++loopTagCount) - vc_looplength = vorbis_comment_query(vc, loopLengthTags[loopTagCount], 0); - - if (vc_looplength != NULL) - { - ogg_int64_t ov_looplength = atol(vc_looplength); - if (ov_looplength > 0) // a loop of length 0 is invalid - voice->LoopEnd = (char *) (intptr_t) (ov_looplength + ov_loopstart); - } - } - } - } - } - } + MV_GetVorbisCommentLoops(voice, ov_comment(&vd->vf, 0)); voice->Playing = TRUE; voice->Paused = FALSE; @@ -485,7 +482,6 @@ int32_t MV_PlayLoopedVorbis return( voice->handle ); } - void MV_ReleaseVorbisVoice( VoiceNode * voice ) { vorbis_data * vd = (vorbis_data *) voice->extra; diff --git a/polymer/eduke32/source/jaudiolib/third-party/Apple/lib/libFLAC.a b/polymer/eduke32/source/jaudiolib/third-party/Apple/lib/libFLAC.a new file mode 100644 index 0000000000000000000000000000000000000000..f664e847af1c4804b91d23c7b63f5822b1064c82 GIT binary patch literal 1198276 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