Added SupportLibs
13
.gitignore
vendored
|
@ -30,22 +30,11 @@ $RECYCLE.BIN/
|
||||||
*.class
|
*.class
|
||||||
drbeef-release-key.keystore
|
drbeef-release-key.keystore
|
||||||
projects/Android/build/*
|
projects/Android/build/*
|
||||||
projects/Android/jni/SupportLibs/*
|
|
||||||
Projects/Android/.cxx/*
|
Projects/Android/.cxx/*
|
||||||
*.json
|
*.json
|
||||||
Projects/Android/.externalNativeBuild/ndkBuild/debug/arm64-v8a/ndkBuild_build_command.txt
|
Projects/Android/.externalNativeBuild/*
|
||||||
Projects/Android/.externalNativeBuild/ndkBuild/debug/arm64-v8a/ndkBuild_build_output.txt
|
|
||||||
Projects/Android/.externalNativeBuild/ndkBuild/release/arm64-v8a/ndkBuild_build_command.txt
|
|
||||||
Projects/Android/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_output.txt
|
|
||||||
*.bin
|
*.bin
|
||||||
Projects/Android/.gradle/4.4/fileHashes/fileHashes.lock
|
|
||||||
*.ser
|
*.ser
|
||||||
Projects/Android/.idea/*
|
Projects/Android/.idea/*
|
||||||
Projects/Android/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_command.txt
|
|
||||||
Projects/Android/.externalNativeBuild/ndkBuild/release/armeabi-v7a/ndkBuild_build_command.txt
|
|
||||||
Projects/Android/.externalNativeBuild/ndkBuild/debug/armeabi-v7a/ndkBuild_build_output.txt
|
|
||||||
Projects/Android/.externalNativeBuild/ndkBuild/release/arm64-v8a/ndkBuild_build_output.txt
|
|
||||||
Projects/Android/.gradle/4.6/fileHashes/fileHashes.lock
|
|
||||||
Projects/Android/Android.iml
|
|
||||||
Projects/Android/.gradle/*
|
Projects/Android/.gradle/*
|
||||||
Projects/Android/Android.iml
|
Projects/Android/Android.iml
|
||||||
|
|
1
Projects/Android/jni/SupportLibs/Android.mk
Normal file
|
@ -0,0 +1 @@
|
||||||
|
include $(call all-subdir-makefiles)
|
14
Projects/Android/jni/SupportLibs/FMOD_studio/Android.mk
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
LOCAL_PATH := $(call my-dir)
|
||||||
|
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := fmod
|
||||||
|
LOCAL_SRC_FILES := api/lowlevel/lib/$(TARGET_ARCH_ABI)/libfmod.so
|
||||||
|
|
||||||
|
include $(PREBUILT_SHARED_LIBRARY)
|
||||||
|
|
||||||
|
#Logging version
|
||||||
|
#include $(CLEAR_VARS)
|
||||||
|
#LOCAL_MODULE := fmodL
|
||||||
|
#LOCAL_SRC_FILES := api/lowlevel/lib/$(TARGET_ARCH_ABI)/libfmodL.so
|
||||||
|
#include $(PREBUILT_SHARED_LIBRARY)
|
|
@ -0,0 +1,331 @@
|
||||||
|
#ifndef _FSBANK_H
|
||||||
|
#define _FSBANK_H
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
#define FB_API __declspec(dllexport) _stdcall
|
||||||
|
#define FSBANK_CALLBACK _stdcall
|
||||||
|
#elif defined(__linux__) || defined(__MACH__)
|
||||||
|
#define FB_API __attribute__ ((visibility("default")))
|
||||||
|
#define FSBANK_CALLBACK
|
||||||
|
#else
|
||||||
|
#define FB_API
|
||||||
|
#define FSBANK_CALLBACK
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
FSBank types
|
||||||
|
*/
|
||||||
|
typedef unsigned int FSBANK_INITFLAGS;
|
||||||
|
typedef unsigned int FSBANK_BUILDFLAGS;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
[DEFINE]
|
||||||
|
[
|
||||||
|
[NAME]
|
||||||
|
FSBANK_INITFLAGS
|
||||||
|
|
||||||
|
[DESCRIPTION]
|
||||||
|
Bit fields to use with FSBank_Init to control the general operation of the library.
|
||||||
|
|
||||||
|
[REMARKS]
|
||||||
|
|
||||||
|
[SEE_ALSO]
|
||||||
|
FSBank_Init
|
||||||
|
]
|
||||||
|
*/
|
||||||
|
#define FSBANK_INIT_NORMAL 0x00000000 /* Initialize normally. */
|
||||||
|
#define FSBANK_INIT_IGNOREERRORS 0x00000001 /* Ignore individual subsound build errors, continue building for as long as possible. */
|
||||||
|
#define FSBANK_INIT_WARNINGSASERRORS 0x00000002 /* Treat any warnings issued as errors. */
|
||||||
|
#define FSBANK_INIT_CREATEINCLUDEHEADER 0x00000004 /* Create C header files with #defines defining indices for each member of the FSB. */
|
||||||
|
#define FSBANK_INIT_DONTLOADCACHEFILES 0x00000008 /* Ignore existing cache files. */
|
||||||
|
#define FSBANK_INIT_GENERATEPROGRESSITEMS 0x00000010 /* Generate status items that can be queried by another thread to monitor the build progress and give detailed error messages. */
|
||||||
|
/* [DEFINE_END] */
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
[DEFINE]
|
||||||
|
[
|
||||||
|
[NAME]
|
||||||
|
FSBANK_BUILDFLAGS
|
||||||
|
|
||||||
|
[DESCRIPTION]
|
||||||
|
Bit fields to use with FSBank_Build and in FSBANK_SUBSOUND to control how subsounds are encoded.
|
||||||
|
|
||||||
|
[REMARKS]
|
||||||
|
|
||||||
|
[SEE_ALSO]
|
||||||
|
FSBank_Init
|
||||||
|
FSBANK_SUBSOUND
|
||||||
|
]
|
||||||
|
*/
|
||||||
|
#define FSBANK_BUILD_DEFAULT 0x00000000 /* Build with default settings. */
|
||||||
|
#define FSBANK_BUILD_DISABLESYNCPOINTS 0x00000001 /* Disable the storing of syncpoints in the output */
|
||||||
|
#define FSBANK_BUILD_DONTLOOP 0x00000002 /* Disable perfect loop encoding and sound stretching. Removes chirps from the start of oneshot MP2, MP3 and IMAADPCM sounds. */
|
||||||
|
#define FSBANK_BUILD_FILTERHIGHFREQ 0x00000004 /* XMA only. Enable high frequency filtering. */
|
||||||
|
#define FSBANK_BUILD_DISABLESEEKING 0x00000008 /* XMA only. Disable seek tables to save memory. */
|
||||||
|
#define FSBANK_BUILD_OPTIMIZESAMPLERATE 0x00000010 /* Attempt to optimize the sample rate down. Ignored if format is MP2, MP3 or CELT or if FSB4 basic headers flag is used. */
|
||||||
|
#define FSBANK_BUILD_DONTINTERLEAVE 0x00000020 /* VAG and GCADPCM only. Don't interleave the data as LRLRLRLR... instead use LLLLRRRR type encoding. Speeds up loading for samples (not streams, streams must remained interleaved), allows FMOD_OPENMEMORY_POINT. */
|
||||||
|
#define FSBANK_BUILD_FSB4_USEBASICHEADERS 0x00000040 /* FSB4 format only. Generate FSBs with small sample header data. They only contain basic information such as sample length, and everything else has its attributes inherited from the first sample (for example the default frequency). */
|
||||||
|
#define FSBANK_BUILD_FSB5_DONTWRITENAMES 0x00000080 /* FSB5 format only. Do not write out a names chunk to the FSB to reduce file size. */
|
||||||
|
#define FSBANK_BUILD_NOGUID 0x00000100 /* FSB5 format only. Write out a null GUID for the FSB header. The runtime will not use header caching for these FSB files. */
|
||||||
|
#define FSBANK_BUILD_WRITEPEAKVOLUME 0x00000200 /* FSB5 format only. Write peak volume for all subsounds. */
|
||||||
|
|
||||||
|
#define FSBANK_BUILD_OVERRIDE_MASK (FSBANK_BUILD_DISABLESYNCPOINTS | FSBANK_BUILD_DONTLOOP | FSBANK_BUILD_FILTERHIGHFREQ | FSBANK_BUILD_DISABLESEEKING | FSBANK_BUILD_OPTIMIZESAMPLERATE | FSBANK_BUILD_DONTINTERLEAVE | FSBANK_BUILD_WRITEPEAKVOLUME) /* Build flag mask that specifies which settings can be overridden per subsound. */
|
||||||
|
#define FSBANK_BUILD_CACHE_VALIDATION_MASK (FSBANK_BUILD_DONTLOOP | FSBANK_BUILD_FILTERHIGHFREQ | FSBANK_BUILD_OPTIMIZESAMPLERATE | FSBANK_BUILD_DONTINTERLEAVE) /* Build flag mask that specifies which settings (when changed) invalidate a cache file. */
|
||||||
|
/* [DEFINE_END] */
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
[ENUM]
|
||||||
|
[
|
||||||
|
[DESCRIPTION]
|
||||||
|
Error codes returned from every function.
|
||||||
|
|
||||||
|
[REMARKS]
|
||||||
|
|
||||||
|
[SEE_ALSO]
|
||||||
|
]
|
||||||
|
*/
|
||||||
|
typedef enum FSBANK_RESULT
|
||||||
|
{
|
||||||
|
FSBANK_OK, /* No errors. */
|
||||||
|
FSBANK_ERR_CACHE_CHUNKNOTFOUND, /* An expected chunk is missing from the cache, perhaps try deleting cache files. */
|
||||||
|
FSBANK_ERR_CANCELLED, /* The build process was cancelled during compilation by the user. */
|
||||||
|
FSBANK_ERR_CANNOT_CONTINUE, /* The build process cannot continue due to previously ignored errors. */
|
||||||
|
FSBANK_ERR_ENCODER, /* Encoder for chosen format has encountered an unexpected error. */
|
||||||
|
FSBANK_ERR_ENCODER_INIT, /* Encoder initialization failed. */
|
||||||
|
FSBANK_ERR_ENCODER_NOTSUPPORTED, /* Encoder for chosen format is not supported on this platform. */
|
||||||
|
FSBANK_ERR_FILE_OS, /* An operating system based file error was encountered. */
|
||||||
|
FSBANK_ERR_FILE_NOTFOUND, /* A specified file could not be found. */
|
||||||
|
FSBANK_ERR_FMOD, /* Internal error from FMOD sub-system. */
|
||||||
|
FSBANK_ERR_INITIALIZED, /* Already initialized. */
|
||||||
|
FSBANK_ERR_INVALID_FORMAT, /* The format of the source file is invalid, see output for details. */
|
||||||
|
FSBANK_ERR_INVALID_FORMAT_PCMBITS, /* The format of the source file is invalid, the source bit formats (i.e. PCM8, PCM16, etc) must match for all sub-sounds */
|
||||||
|
FSBANK_ERR_INVALID_PARAM, /* An invalid parameter has been passed to this function. */
|
||||||
|
FSBANK_ERR_MEMORY, /* Ran out of memory. */
|
||||||
|
FSBANK_ERR_UNINITIALIZED, /* Not initialized yet. */
|
||||||
|
FSBANK_ERR_WRITER_FORMAT, /* Chosen encode format is not supported by this FSB version. */
|
||||||
|
FSBANK_WARN_CANNOTLOOP, /* Source file is too short for seamless looping. Looping disabled. */
|
||||||
|
FSBANK_WARN_IGNORED_OPTIMIZESAMPLERATE, /* FSBANK_BUILD_OPTIMIZESAMPLERATE flag ignored: MP2, MP3 and CELT formats, and the USEBASICHEADERS flag make this option irrelevant. */
|
||||||
|
FSBANK_WARN_IGNORED_FILTERHIGHFREQ, /* FSBANK_BUILD_FILTERHIGHFREQ flag ignored: feature only supported by XMA format. */
|
||||||
|
FSBANK_WARN_IGNORED_DISABLESEEKING, /* FSBANK_BUILD_DISABLESEEKING flag ignored: feature only supported by XMA format. */
|
||||||
|
FSBANK_WARN_IGNORED_DONTINTERLEAVE, /* FSBANK_BUILD_DONTINTERLEAVE flag ignored: feature only supported by VAG and GCADPCM formats. */
|
||||||
|
FSBANK_ERR_ENCODER_FILE_NOTFOUND, /* External encoder dynamic library not found */
|
||||||
|
FSBANK_ERR_ENCODER_FILE_BAD, /* External encoder dynamic library could not be loaded, possibly incorrect binary format, incorrect architecture, file corruption */
|
||||||
|
} FSBANK_RESULT;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
[ENUM]
|
||||||
|
[
|
||||||
|
[DESCRIPTION]
|
||||||
|
Compression formats available for encoding
|
||||||
|
|
||||||
|
[REMARKS]
|
||||||
|
|
||||||
|
[SEE_ALSO]
|
||||||
|
FSBank_Build
|
||||||
|
]
|
||||||
|
*/
|
||||||
|
typedef enum FSBANK_FORMAT
|
||||||
|
{
|
||||||
|
FSBANK_FORMAT_PCM, /* PCM (1:1) All platforms. */
|
||||||
|
FSBANK_FORMAT_PCM_BIGENDIAN, /* PCM Big Endian (1:1) Xbox360 and PS3 only. */
|
||||||
|
FSBANK_FORMAT_IMAADPCM, /* IMA ADPCM (3.5:1) All platforms. */
|
||||||
|
FSBANK_FORMAT_MP2, /* MPEG Layer 2 (CBR) All platforms except PS3. Depends on toolame. */
|
||||||
|
FSBANK_FORMAT_MP3, /* MPEG Layer 3 (CBR) All platforms. Depends on libmp3lame. */
|
||||||
|
FSBANK_FORMAT_XMA, /* XMA (VBR) Xbox360 / XboxOne only (hardware). Depends on xmaencoder. */
|
||||||
|
FSBANK_FORMAT_CELT, /* Constrained Energy Lapped Transform (CBR) All platforms. Depends on celt_encoder. */
|
||||||
|
FSBANK_FORMAT_AT9_PSVITA, /* ATRAC9 (CBR) PSVita only (hardware). Depends on libatrac9. */
|
||||||
|
FSBANK_FORMAT_AT9_PS4, /* ATRAC9 (CBR) PS4 only (hardware). Depends on libatrac9. */
|
||||||
|
FSBANK_FORMAT_XWMA, /* XWMA (VBR) Xbox360 only. Depends on xwmaencoder. */
|
||||||
|
FSBANK_FORMAT_VORBIS, /* Vorbis (VBR) All platforms. Depends on libvorbis. */
|
||||||
|
|
||||||
|
FSBANK_FORMAT_MAX /* Upper bound for this enumeration, for use with validation. */
|
||||||
|
} FSBANK_FORMAT;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
[ENUM]
|
||||||
|
[
|
||||||
|
[DESCRIPTION]
|
||||||
|
Version of FSB to write out.
|
||||||
|
|
||||||
|
[REMARKS]
|
||||||
|
|
||||||
|
[SEE_ALSO]
|
||||||
|
FSBank_Init
|
||||||
|
]
|
||||||
|
*/
|
||||||
|
typedef enum FSBANK_FSBVERSION
|
||||||
|
{
|
||||||
|
FSBANK_FSBVERSION_FSB5, /* Produce FSB version 5 files. */
|
||||||
|
|
||||||
|
FSBANK_FSBVERSION_MAX /* Upper bound for this enumeration, for use with validation. */
|
||||||
|
} FSBANK_FSBVERSION;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
[ENUM]
|
||||||
|
[
|
||||||
|
[DESCRIPTION]
|
||||||
|
Speaker maps to define the layout of multichannel subsounds.
|
||||||
|
|
||||||
|
[REMARKS]
|
||||||
|
|
||||||
|
[SEE_ALSO]
|
||||||
|
FSBANK_SUBSOUND
|
||||||
|
]
|
||||||
|
*/
|
||||||
|
typedef enum FSBANK_SPEAKERMAP
|
||||||
|
{
|
||||||
|
FSBANK_SPEAKERMAP_DEFAULT, /* Sample uses default FMOD speaker mapping. */
|
||||||
|
FSBANK_SPEAKERMAP_ALLMONO, /* Sample is a collection of mono channels. */
|
||||||
|
FSBANK_SPEAKERMAP_ALLSTEREO, /* Sample is a collection of stereo channel pairs. */
|
||||||
|
FSBANK_SPEAKERMAP_PROTOOLS, /* Sample is 6ch and uses L C R LS RS LFE standard. */
|
||||||
|
|
||||||
|
FSBANK_SPEAKERMAP_MAX /* Upper bound for this enumeration, for use with validation. */
|
||||||
|
} FSBANK_SPEAKERMAP;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
[ENUM]
|
||||||
|
[
|
||||||
|
[DESCRIPTION]
|
||||||
|
Current state during the build process.
|
||||||
|
|
||||||
|
[REMARKS]
|
||||||
|
|
||||||
|
[SEE_ALSO]
|
||||||
|
FSBANK_PROGRESSITEM
|
||||||
|
]
|
||||||
|
*/
|
||||||
|
typedef enum FSBANK_STATE
|
||||||
|
{
|
||||||
|
FSBANK_STATE_DECODING, /* Decode a file to usable raw sample data. */
|
||||||
|
FSBANK_STATE_ANALYSING, /* Scan sound data for details (such as optimized sample rate). */
|
||||||
|
FSBANK_STATE_PREPROCESSING, /* Prepares sound data for encoder. */
|
||||||
|
FSBANK_STATE_ENCODING, /* Pass the sample data to the chosen encoder. */
|
||||||
|
FSBANK_STATE_WRITING, /* Write encoded data into an FSB. */
|
||||||
|
FSBANK_STATE_FINISHED, /* Process complete. */
|
||||||
|
FSBANK_STATE_FAILED, /* An error has occurred, check data (as FSBANK_STATEDATA_FAILED) for details. */
|
||||||
|
FSBANK_STATE_WARNING, /* A warning has been issued, check data (as FSBANK_STATEDATA_WARNING) for details. */
|
||||||
|
} FSBANK_STATE;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
[STRUCTURE]
|
||||||
|
[
|
||||||
|
[DESCRIPTION]
|
||||||
|
Representation of how to encode a single subsound in the final FSB.
|
||||||
|
|
||||||
|
[REMARKS]
|
||||||
|
|
||||||
|
[SEE_ALSO]
|
||||||
|
FSBank_Build
|
||||||
|
FSBANK_BUILD_OPTIMIZESAMPLERATE
|
||||||
|
FSBANK_SPEAKERMAP
|
||||||
|
FSBANK_BUILDFLAGS
|
||||||
|
]
|
||||||
|
*/
|
||||||
|
typedef struct FSBANK_SUBSOUND
|
||||||
|
{
|
||||||
|
const char* const *fileNames; /* List of file names used to produce an interleaved sound. */
|
||||||
|
unsigned int numFileNames; /* Number of files in above file name list, up to 16. */
|
||||||
|
FSBANK_SPEAKERMAP speakerMap; /* Setting to define the mapping and order of channels. */
|
||||||
|
FSBANK_BUILDFLAGS overrideFlags; /* Flags that will reverse the equivalent flags passed to FSBank_Build. */
|
||||||
|
unsigned int overrideQuality; /* Override the quality setting passed to FSBank_Build. */
|
||||||
|
float desiredSampleRate; /* Resample to this sample rate (ignores optimize sample rate setting), up to 192000Hz. */
|
||||||
|
float percentOptimizedRate; /* If using FSBANK_BUILD_OPTIMIZESAMPLERATE, this is the percentage of that rate to be used, up to 100.0%. */
|
||||||
|
} FSBANK_SUBSOUND;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
[STRUCTURE]
|
||||||
|
[
|
||||||
|
[DESCRIPTION]
|
||||||
|
Status information describing the progress of a build.
|
||||||
|
|
||||||
|
[REMARKS]
|
||||||
|
|
||||||
|
[SEE_ALSO]
|
||||||
|
FSBank_Build
|
||||||
|
FSBank_FetchNextProgressItem
|
||||||
|
FSBank_ReleaseProgressItem
|
||||||
|
FSBANK_STATE
|
||||||
|
]
|
||||||
|
*/
|
||||||
|
typedef struct FSBANK_PROGRESSITEM
|
||||||
|
{
|
||||||
|
int subSoundIndex; /* Index into the subsound list passed to FSBank_Build that this update relates to (-1 indicates no specific subsound). */
|
||||||
|
int threadIndex; /* Which thread index is serving this update (-1 indicates FSBank_Build / main thread). */
|
||||||
|
FSBANK_STATE state; /* Progress through the encoding process. */
|
||||||
|
const void *stateData; /* Cast to state specific data structure for extra information. */
|
||||||
|
} FSBANK_PROGRESSITEM;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
[STRUCTURE]
|
||||||
|
[
|
||||||
|
[DESCRIPTION]
|
||||||
|
Extra state data for FSBANK_STATE_FAILED
|
||||||
|
|
||||||
|
[REMARKS]
|
||||||
|
Cast stateData in FSBANK_PROGRESSITEM to this struct if the state is FSBANK_STATE_FAILED
|
||||||
|
|
||||||
|
[SEE_ALSO]
|
||||||
|
FSBANK_STATE_FAILED
|
||||||
|
FSBANK_PROGRESSITEM
|
||||||
|
]
|
||||||
|
*/
|
||||||
|
typedef struct FSBANK_STATEDATA_FAILED
|
||||||
|
{
|
||||||
|
FSBANK_RESULT errorCode; /* Error result code. */
|
||||||
|
char errorString[256]; /* Description for error code. */
|
||||||
|
} FSBANK_STATEDATA_FAILED;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
[STRUCTURE]
|
||||||
|
[
|
||||||
|
[DESCRIPTION]
|
||||||
|
Extra state data for FSBANK_STATEDATA_WARNING
|
||||||
|
|
||||||
|
[REMARKS]
|
||||||
|
Cast stateData in FSBANK_PROGRESSITEM to this struct if the state is FSBANK_STATE_WARNING
|
||||||
|
|
||||||
|
[SEE_ALSO]
|
||||||
|
FSBANK_STATE_WARNING
|
||||||
|
FSBANK_PROGRESSITEM
|
||||||
|
]
|
||||||
|
*/
|
||||||
|
typedef struct FSBANK_STATEDATA_WARNING
|
||||||
|
{
|
||||||
|
FSBANK_RESULT warnCode; /* Warning result code. */
|
||||||
|
char warningString[256]; /* Description for warning code. */
|
||||||
|
} FSBANK_STATEDATA_WARNING;
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef void* (FSBANK_CALLBACK *FSBANK_MEMORY_ALLOC_CALLBACK)(unsigned int size, unsigned int, const char *sourceStr);
|
||||||
|
typedef void* (FSBANK_CALLBACK *FSBANK_MEMORY_REALLOC_CALLBACK)(void *ptr, unsigned int size, unsigned int, const char *sourceStr);
|
||||||
|
typedef void (FSBANK_CALLBACK *FSBANK_MEMORY_FREE_CALLBACK)(void *ptr, unsigned int, const char *sourceStr);
|
||||||
|
|
||||||
|
FSBANK_RESULT FB_API FSBank_MemoryInit(FSBANK_MEMORY_ALLOC_CALLBACK userAlloc, FSBANK_MEMORY_REALLOC_CALLBACK userRealloc, FSBANK_MEMORY_FREE_CALLBACK userFree);
|
||||||
|
FSBANK_RESULT FB_API FSBank_Init(FSBANK_FSBVERSION version, FSBANK_INITFLAGS flags, unsigned int numSimultaneousJobs, const char *cacheDirectory);
|
||||||
|
FSBANK_RESULT FB_API FSBank_Release();
|
||||||
|
FSBANK_RESULT FB_API FSBank_Build(const FSBANK_SUBSOUND *subSounds, unsigned int numSubSounds, FSBANK_FORMAT encodeFormat, FSBANK_BUILDFLAGS buildFlags, unsigned int quality, const char *encryptKey, const char *outputFileName);
|
||||||
|
FSBANK_RESULT FB_API FSBank_BuildCancel();
|
||||||
|
FSBANK_RESULT FB_API FSBank_FetchNextProgressItem(const FSBANK_PROGRESSITEM **progressItem);
|
||||||
|
FSBANK_RESULT FB_API FSBank_ReleaseProgressItem(const FSBANK_PROGRESSITEM *progressItem);
|
||||||
|
FSBANK_RESULT FB_API FSBank_MemoryGetStats(unsigned int *currentAllocated, unsigned int *maximumAllocated);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // _FSBANK_H
|
|
@ -0,0 +1,38 @@
|
||||||
|
#ifndef _FSBANK_ERRORS_H
|
||||||
|
#define _FSBANK_ERRORS_H
|
||||||
|
|
||||||
|
#include "fsbank.h"
|
||||||
|
|
||||||
|
static const char *FSBank_ErrorString(FSBANK_RESULT result)
|
||||||
|
{
|
||||||
|
switch (result)
|
||||||
|
{
|
||||||
|
case FSBANK_OK: return "No errors.";
|
||||||
|
case FSBANK_ERR_CACHE_CHUNKNOTFOUND: return "An expected chunk is missing from the cache, perhaps try deleting cache files.";
|
||||||
|
case FSBANK_ERR_CANCELLED: return "The build process was cancelled during compilation by the user.";
|
||||||
|
case FSBANK_ERR_CANNOT_CONTINUE: return "The build process cannot continue due to previously ignored errors.";
|
||||||
|
case FSBANK_ERR_ENCODER: return "Encoder for chosen format has encountered an unexpected error.";
|
||||||
|
case FSBANK_ERR_ENCODER_INIT: return "Encoder initialization failed.";
|
||||||
|
case FSBANK_ERR_ENCODER_NOTSUPPORTED: return "Encoder for chosen format is not supported on this platform.";
|
||||||
|
case FSBANK_ERR_FILE_OS: return "An operating system based file error was encountered.";
|
||||||
|
case FSBANK_ERR_FILE_NOTFOUND: return "A specified file could not be found.";
|
||||||
|
case FSBANK_ERR_FMOD: return "Internal error from FMOD sub-system.";
|
||||||
|
case FSBANK_ERR_INITIALIZED: return "Already initialized.";
|
||||||
|
case FSBANK_ERR_INVALID_FORMAT: return "The format of the source file is invalid, see output for details.";
|
||||||
|
case FSBANK_ERR_INVALID_FORMAT_PCMBITS: return "The format of the source file is invalid, the source bit formats (i.e. PCM8, PCM16, etc) must match for all sub-sounds";
|
||||||
|
case FSBANK_ERR_INVALID_PARAM: return "An invalid parameter has been passed to this function.";
|
||||||
|
case FSBANK_ERR_MEMORY: return "Run out of memory.";
|
||||||
|
case FSBANK_ERR_UNINITIALIZED: return "Not initialized yet.";
|
||||||
|
case FSBANK_ERR_WRITER_FORMAT: return "Chosen encode format is not supported by this FSB version.";
|
||||||
|
case FSBANK_WARN_CANNOTLOOP: return "Source file is too short for seamless looping. Looping disabled.";
|
||||||
|
case FSBANK_WARN_IGNORED_OPTIMIZESAMPLERATE: return "FSBANK_BUILD_OPTIMIZESAMPLERATE flag ignored: MP2, MP3 and CELT formats, and the USEBASICHEADERS flag make this option irrelevant.";
|
||||||
|
case FSBANK_WARN_IGNORED_FILTERHIGHFREQ: return "FSBANK_BUILD_FILTERHIGHFREQ flag ignored: feature only supported by XMA format.";
|
||||||
|
case FSBANK_WARN_IGNORED_DISABLESEEKING: return "FSBANK_BUILD_DISABLESEEKING flag ignored: feature only supported by XMA format.";
|
||||||
|
case FSBANK_WARN_IGNORED_DONTINTERLEAVE: return "FSBANK_BUILD_DONTINTERLEAVE flag ignored: feature only supported by VAG and GCADPCM formats.";
|
||||||
|
case FSBANK_ERR_ENCODER_FILE_NOTFOUND: return "External encoder dynamic library not found";
|
||||||
|
case FSBANK_ERR_ENCODER_FILE_BAD: return "External encoder dynamic library could not be loaded, possibly incorrect binary format, incorrect architecture, or file corruption";
|
||||||
|
default: return "Unknown error.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // _FSBANK_ERRORS_H
|
|
@ -0,0 +1,221 @@
|
||||||
|
/*==============================================================================
|
||||||
|
3D Example
|
||||||
|
Copyright (c), Firelight Technologies Pty, Ltd 2004-2015.
|
||||||
|
|
||||||
|
This example shows how to basic 3D positioning of sounds.
|
||||||
|
==============================================================================*/
|
||||||
|
#include "fmod.hpp"
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
const int INTERFACE_UPDATETIME = 50; // 50ms update for interface
|
||||||
|
const float DISTANCEFACTOR = 1.0f; // Units per meter. I.e feet would = 3.28. centimeters would = 100.
|
||||||
|
|
||||||
|
int FMOD_Main()
|
||||||
|
{
|
||||||
|
FMOD::System *system;
|
||||||
|
FMOD::Sound *sound1, *sound2, *sound3;
|
||||||
|
FMOD::Channel *channel1 = 0, *channel2 = 0, *channel3 = 0;
|
||||||
|
FMOD_RESULT result;
|
||||||
|
bool listenerflag = true;
|
||||||
|
FMOD_VECTOR listenerpos = { 0.0f, 0.0f, -1.0f * DISTANCEFACTOR };
|
||||||
|
unsigned int version;
|
||||||
|
void *extradriverdata = 0;
|
||||||
|
|
||||||
|
Common_Init(&extradriverdata);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create a System object and initialize.
|
||||||
|
*/
|
||||||
|
result = FMOD::System_Create(&system);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->getVersion(&version);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
if (version < FMOD_VERSION)
|
||||||
|
{
|
||||||
|
Common_Fatal("FMOD lib version %08x doesn't match header version %08x", version, FMOD_VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = system->init(100, FMOD_INIT_NORMAL, extradriverdata);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Set the distance units. (meters/feet etc).
|
||||||
|
*/
|
||||||
|
result = system->set3DSettings(1.0, DISTANCEFACTOR, 1.0f);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Load some sounds
|
||||||
|
*/
|
||||||
|
result = system->createSound(Common_MediaPath("drumloop.wav"), FMOD_3D, 0, &sound1);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = sound1->set3DMinMaxDistance(0.5f * DISTANCEFACTOR, 5000.0f * DISTANCEFACTOR);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = sound1->setMode(FMOD_LOOP_NORMAL);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->createSound(Common_MediaPath("jaguar.wav"), FMOD_3D, 0, &sound2);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = sound2->set3DMinMaxDistance(0.5f * DISTANCEFACTOR, 5000.0f * DISTANCEFACTOR);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = sound2->setMode(FMOD_LOOP_NORMAL);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->createSound(Common_MediaPath("swish.wav"), FMOD_2D, 0, &sound3);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Play sounds at certain positions
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
FMOD_VECTOR pos = { -10.0f * DISTANCEFACTOR, 0.0f, 0.0f };
|
||||||
|
FMOD_VECTOR vel = { 0.0f, 0.0f, 0.0f };
|
||||||
|
|
||||||
|
result = system->playSound(sound1, 0, true, &channel1);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = channel1->set3DAttributes(&pos, &vel);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = channel1->setPaused(false);
|
||||||
|
ERRCHECK(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
FMOD_VECTOR pos = { 15.0f * DISTANCEFACTOR, 0.0f, 0.0f };
|
||||||
|
FMOD_VECTOR vel = { 0.0f, 0.0f, 0.0f };
|
||||||
|
|
||||||
|
result = system->playSound(sound2, 0, true, &channel2);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = channel2->set3DAttributes(&pos, &vel);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = channel2->setPaused(false);
|
||||||
|
ERRCHECK(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Main loop
|
||||||
|
*/
|
||||||
|
do
|
||||||
|
{
|
||||||
|
Common_Update();
|
||||||
|
|
||||||
|
if (Common_BtnPress(BTN_ACTION1))
|
||||||
|
{
|
||||||
|
bool paused;
|
||||||
|
channel1->getPaused(&paused);
|
||||||
|
channel1->setPaused(!paused);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common_BtnPress(BTN_ACTION2))
|
||||||
|
{
|
||||||
|
bool paused;
|
||||||
|
channel2->getPaused(&paused);
|
||||||
|
channel2->setPaused(!paused);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common_BtnPress(BTN_ACTION3))
|
||||||
|
{
|
||||||
|
result = system->playSound(sound3, 0, false, &channel3);
|
||||||
|
ERRCHECK(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common_BtnPress(BTN_MORE))
|
||||||
|
{
|
||||||
|
listenerflag = !listenerflag;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!listenerflag)
|
||||||
|
{
|
||||||
|
if (Common_BtnDown(BTN_LEFT))
|
||||||
|
{
|
||||||
|
listenerpos.x -= 1.0f * DISTANCEFACTOR;
|
||||||
|
if (listenerpos.x < -24 * DISTANCEFACTOR)
|
||||||
|
{
|
||||||
|
listenerpos.x = -24 * DISTANCEFACTOR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common_BtnDown(BTN_RIGHT))
|
||||||
|
{
|
||||||
|
listenerpos.x += 1.0f * DISTANCEFACTOR;
|
||||||
|
if (listenerpos.x > 23 * DISTANCEFACTOR)
|
||||||
|
{
|
||||||
|
listenerpos.x = 23 * DISTANCEFACTOR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==========================================================================================
|
||||||
|
// UPDATE THE LISTENER
|
||||||
|
// ==========================================================================================
|
||||||
|
{
|
||||||
|
static float t = 0;
|
||||||
|
static FMOD_VECTOR lastpos = { 0.0f, 0.0f, 0.0f };
|
||||||
|
FMOD_VECTOR forward = { 0.0f, 0.0f, 1.0f };
|
||||||
|
FMOD_VECTOR up = { 0.0f, 1.0f, 0.0f };
|
||||||
|
FMOD_VECTOR vel;
|
||||||
|
|
||||||
|
if (listenerflag)
|
||||||
|
{
|
||||||
|
listenerpos.x = (float)sin(t * 0.05f) * 24.0f * DISTANCEFACTOR; // left right pingpong
|
||||||
|
}
|
||||||
|
|
||||||
|
// ********* NOTE ******* READ NEXT COMMENT!!!!!
|
||||||
|
// vel = how far we moved last FRAME (m/f), then time compensate it to SECONDS (m/s).
|
||||||
|
vel.x = (listenerpos.x - lastpos.x) * (1000 / INTERFACE_UPDATETIME);
|
||||||
|
vel.y = (listenerpos.y - lastpos.y) * (1000 / INTERFACE_UPDATETIME);
|
||||||
|
vel.z = (listenerpos.z - lastpos.z) * (1000 / INTERFACE_UPDATETIME);
|
||||||
|
|
||||||
|
// store pos for next time
|
||||||
|
lastpos = listenerpos;
|
||||||
|
|
||||||
|
result = system->set3DListenerAttributes(0, &listenerpos, &vel, &forward, &up);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
t += (30 * (1.0f / (float)INTERFACE_UPDATETIME)); // t is just a time value .. it increments in 30m/s steps in this example
|
||||||
|
}
|
||||||
|
|
||||||
|
result = system->update();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
// Create small visual display.
|
||||||
|
char s[80] = "|.............<1>......................<2>.......|";
|
||||||
|
s[(int)(listenerpos.x / DISTANCEFACTOR) + 25] = 'L';
|
||||||
|
|
||||||
|
Common_Draw("==================================================");
|
||||||
|
Common_Draw("3D Example.");
|
||||||
|
Common_Draw("Copyright (c) Firelight Technologies 2004-2015.");
|
||||||
|
Common_Draw("==================================================");
|
||||||
|
Common_Draw("");
|
||||||
|
Common_Draw("Press %s to toggle sound 1 (16bit Mono 3D)", Common_BtnStr(BTN_ACTION1));
|
||||||
|
Common_Draw("Press %s to toggle sound 2 (8bit Mono 3D)", Common_BtnStr(BTN_ACTION2));
|
||||||
|
Common_Draw("Press %s to play a sound (16bit Stereo 2D)", Common_BtnStr(BTN_ACTION3));
|
||||||
|
Common_Draw("Press %s or %s to move listener in still mode", Common_BtnStr(BTN_LEFT), Common_BtnStr(BTN_RIGHT));
|
||||||
|
Common_Draw("Press %s to toggle listener auto movement", Common_BtnStr(BTN_MORE));
|
||||||
|
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
|
||||||
|
Common_Draw("");
|
||||||
|
Common_Draw(s);
|
||||||
|
|
||||||
|
Common_Sleep(INTERFACE_UPDATETIME - 1);
|
||||||
|
} while (!Common_BtnPress(BTN_QUIT));
|
||||||
|
|
||||||
|
/*
|
||||||
|
Shut down
|
||||||
|
*/
|
||||||
|
result = sound1->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = sound2->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = sound3->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->close();
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = system->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
Common_Close();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,195 @@
|
||||||
|
/*==============================================================================
|
||||||
|
Channel Groups Example
|
||||||
|
Copyright (c), Firelight Technologies Pty, Ltd 2004-2015.
|
||||||
|
|
||||||
|
This example shows how to put channels into channel groups, so that you can
|
||||||
|
affect a group of channels at a time instead of just one.
|
||||||
|
==============================================================================*/
|
||||||
|
#include "fmod.hpp"
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
int FMOD_Main()
|
||||||
|
{
|
||||||
|
FMOD::System *system;
|
||||||
|
FMOD::Sound *sound[6];
|
||||||
|
FMOD::Channel *channel[6];
|
||||||
|
FMOD::ChannelGroup *groupA, *groupB, *masterGroup;
|
||||||
|
FMOD_RESULT result;
|
||||||
|
int count;
|
||||||
|
unsigned int version;
|
||||||
|
void *extradriverdata = 0;
|
||||||
|
|
||||||
|
Common_Init(&extradriverdata);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create a System object and initialize.
|
||||||
|
*/
|
||||||
|
result = FMOD::System_Create(&system);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->getVersion(&version);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
if (version < FMOD_VERSION)
|
||||||
|
{
|
||||||
|
Common_Fatal("FMOD lib version %08x doesn't match header version %08x", version, FMOD_VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = system->init(32, FMOD_INIT_NORMAL, extradriverdata);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->createSound(Common_MediaPath("drumloop.wav"), FMOD_LOOP_NORMAL, 0, &sound[0]);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = system->createSound(Common_MediaPath("jaguar.wav"), FMOD_LOOP_NORMAL, 0, &sound[1]);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = system->createSound(Common_MediaPath("swish.wav"), FMOD_LOOP_NORMAL, 0, &sound[2]);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = system->createSound(Common_MediaPath("c.ogg"), FMOD_LOOP_NORMAL, 0, &sound[3]);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = system->createSound(Common_MediaPath("d.ogg"), FMOD_LOOP_NORMAL, 0, &sound[4]);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = system->createSound(Common_MediaPath("e.ogg"), FMOD_LOOP_NORMAL, 0, &sound[5]);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->createChannelGroup("Group A", &groupA);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = system->createChannelGroup("Group B", &groupB);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->getMasterChannelGroup(&masterGroup);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Instead of being independent, set the group A and B to be children of the master group.
|
||||||
|
*/
|
||||||
|
result = masterGroup->addGroup(groupA);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = masterGroup->addGroup(groupB);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Start all the sounds.
|
||||||
|
*/
|
||||||
|
for (count = 0; count < 6; count++)
|
||||||
|
{
|
||||||
|
result = system->playSound(sound[count], 0, true, &channel[count]);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = channel[count]->setChannelGroup((count < 3) ? groupA : groupB);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = channel[count]->setPaused(false);
|
||||||
|
ERRCHECK(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Change the volume of each group, just because we can! (reduce overall noise).
|
||||||
|
*/
|
||||||
|
result = groupA->setVolume(0.5f);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = groupB->setVolume(0.5f);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Main loop.
|
||||||
|
*/
|
||||||
|
do
|
||||||
|
{
|
||||||
|
Common_Update();
|
||||||
|
|
||||||
|
if (Common_BtnPress(BTN_ACTION1))
|
||||||
|
{
|
||||||
|
bool mute = true;
|
||||||
|
groupA->getMute(&mute);
|
||||||
|
groupA->setMute(!mute);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common_BtnPress(BTN_ACTION2))
|
||||||
|
{
|
||||||
|
bool mute = true;
|
||||||
|
groupB->getMute(&mute);
|
||||||
|
groupB->setMute(!mute);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common_BtnPress(BTN_ACTION3))
|
||||||
|
{
|
||||||
|
bool mute = true;
|
||||||
|
masterGroup->getMute(&mute);
|
||||||
|
masterGroup->setMute(!mute);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = system->update();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
{
|
||||||
|
int channelsplaying = 0;
|
||||||
|
|
||||||
|
result = system->getChannelsPlaying(&channelsplaying);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
Common_Draw("==================================================");
|
||||||
|
Common_Draw("Channel Groups Example.");
|
||||||
|
Common_Draw("Copyright (c) Firelight Technologies 2004-2015.");
|
||||||
|
Common_Draw("==================================================");
|
||||||
|
Common_Draw("");
|
||||||
|
Common_Draw("Group A : drumloop.wav, jaguar.wav, swish.wav");
|
||||||
|
Common_Draw("Group B : c.ogg, d.ogg, e.ogg");
|
||||||
|
Common_Draw("");
|
||||||
|
Common_Draw("Press %s to mute/unmute group A", Common_BtnStr(BTN_ACTION1));
|
||||||
|
Common_Draw("Press %s to mute/unmute group B", Common_BtnStr(BTN_ACTION2));
|
||||||
|
Common_Draw("Press %s to mute/unmute master group", Common_BtnStr(BTN_ACTION3));
|
||||||
|
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
|
||||||
|
Common_Draw("");
|
||||||
|
Common_Draw("Channels playing %d", channelsplaying);
|
||||||
|
}
|
||||||
|
|
||||||
|
Common_Sleep(50);
|
||||||
|
} while (!Common_BtnPress(BTN_QUIT));
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
A little fade out over 2 seconds.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
float pitch = 1.0f;
|
||||||
|
float vol = 1.0f;
|
||||||
|
|
||||||
|
for (count = 0; count < 200; count++)
|
||||||
|
{
|
||||||
|
masterGroup->setPitch(pitch);
|
||||||
|
masterGroup->setVolume(vol);
|
||||||
|
|
||||||
|
vol -= (1.0f / 200.0f);
|
||||||
|
pitch -= (0.5f / 200.0f);
|
||||||
|
|
||||||
|
result = system->update();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
Common_Sleep(10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Shut down.
|
||||||
|
*/
|
||||||
|
for (count = 0; count < 6; count++)
|
||||||
|
{
|
||||||
|
result = sound[count]->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = groupA->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = groupB->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->close();
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = system->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
Common_Close();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,105 @@
|
||||||
|
#include "common.h"
|
||||||
|
#include "fmod_errors.h"
|
||||||
|
|
||||||
|
void (*Common_Private_Error)(FMOD_RESULT, const char *, int);
|
||||||
|
|
||||||
|
void ERRCHECK_fn(FMOD_RESULT result, const char *file, int line)
|
||||||
|
{
|
||||||
|
if (result != FMOD_OK)
|
||||||
|
{
|
||||||
|
if (Common_Private_Error)
|
||||||
|
{
|
||||||
|
Common_Private_Error(result, file, line);
|
||||||
|
}
|
||||||
|
Common_Fatal("%s(%d): FMOD error %d - %s", file, line, result, FMOD_ErrorString(result));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Common_Format(char *buffer, int bufferSize, const char *formatString...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start(args, formatString);
|
||||||
|
Common_vsnprintf(buffer, bufferSize, formatString, args);
|
||||||
|
va_end(args);
|
||||||
|
buffer[bufferSize-1] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
void Common_Fatal(const char *format, ...)
|
||||||
|
{
|
||||||
|
char error[1024];
|
||||||
|
|
||||||
|
va_list args;
|
||||||
|
va_start(args, format);
|
||||||
|
Common_vsnprintf(error, 1024, format, args);
|
||||||
|
va_end(args);
|
||||||
|
error[1023] = '\0';
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
Common_Draw("A fatal error has occurred...");
|
||||||
|
Common_Draw("");
|
||||||
|
Common_Draw("%s", error);
|
||||||
|
Common_Draw("");
|
||||||
|
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
|
||||||
|
|
||||||
|
Common_Update();
|
||||||
|
Common_Sleep(50);
|
||||||
|
} while (!Common_BtnPress(BTN_QUIT));
|
||||||
|
|
||||||
|
Common_Exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Common_Draw(const char *format, ...)
|
||||||
|
{
|
||||||
|
char string[1024];
|
||||||
|
char *stringPtr = string;
|
||||||
|
|
||||||
|
va_list args;
|
||||||
|
va_start(args, format);
|
||||||
|
Common_vsnprintf(string, 1024, format, args);
|
||||||
|
va_end(args);
|
||||||
|
string[1023] = '\0';
|
||||||
|
|
||||||
|
unsigned int length = (unsigned int)strlen(string);
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
bool consumeNewLine = false;
|
||||||
|
unsigned int copyLength = length;
|
||||||
|
|
||||||
|
// Search for new line characters
|
||||||
|
char *newLinePtr = strchr(stringPtr, '\n');
|
||||||
|
if (newLinePtr)
|
||||||
|
{
|
||||||
|
consumeNewLine = true;
|
||||||
|
copyLength = (unsigned int)(newLinePtr - stringPtr);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (copyLength > NUM_COLUMNS)
|
||||||
|
{
|
||||||
|
// Hard wrap by default
|
||||||
|
copyLength = NUM_COLUMNS;
|
||||||
|
|
||||||
|
// Loop for a soft wrap
|
||||||
|
for (int i = NUM_COLUMNS - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
if (stringPtr[i] == ' ')
|
||||||
|
{
|
||||||
|
copyLength = i + 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Null terminate the sub string temporarily by swapping out a char
|
||||||
|
char tempChar = stringPtr[copyLength];
|
||||||
|
stringPtr[copyLength] = 0;
|
||||||
|
Common_DrawText(stringPtr);
|
||||||
|
stringPtr[copyLength] = tempChar;
|
||||||
|
|
||||||
|
copyLength += (consumeNewLine ? 1 : 0);
|
||||||
|
length -= copyLength;
|
||||||
|
stringPtr += copyLength;
|
||||||
|
} while (length > 0);
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
#ifndef FMOD_EXAMPLES_COMMON_H
|
||||||
|
#define FMOD_EXAMPLES_COMMON_H
|
||||||
|
|
||||||
|
#include "common_platform.h"
|
||||||
|
#include "fmod.h"
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
#define NUM_COLUMNS 50
|
||||||
|
#define NUM_ROWS 25
|
||||||
|
|
||||||
|
#ifndef Common_Sin
|
||||||
|
#define Common_Sin sin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef Common_snprintf
|
||||||
|
#define Common_snprintf snprintf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef Common_vsnprintf
|
||||||
|
#define Common_vsnprintf vsnprintf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
enum Common_Button
|
||||||
|
{
|
||||||
|
BTN_ACTION1,
|
||||||
|
BTN_ACTION2,
|
||||||
|
BTN_ACTION3,
|
||||||
|
BTN_ACTION4,
|
||||||
|
BTN_LEFT,
|
||||||
|
BTN_RIGHT,
|
||||||
|
BTN_UP,
|
||||||
|
BTN_DOWN,
|
||||||
|
BTN_MORE,
|
||||||
|
BTN_QUIT
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Cross platform functions (common) */
|
||||||
|
void Common_Fatal(const char *format, ...);
|
||||||
|
void Common_Draw(const char *format, ...);
|
||||||
|
|
||||||
|
void ERRCHECK_fn(FMOD_RESULT result, const char *file, int line);
|
||||||
|
#define ERRCHECK(_result) ERRCHECK_fn(_result, __FILE__, __LINE__)
|
||||||
|
#define Common_Max(_a, _b) ((_a) > (_b) ? (_a) : (_b))
|
||||||
|
#define Common_Min(_a, _b) ((_a) < (_b) ? (_a) : (_b))
|
||||||
|
#define Common_Clamp(_min, _val, _max) ((_val) < (_min) ? (_min) : ((_val) > (_max) ? (_max) : (_val)))
|
||||||
|
|
||||||
|
/* Functions with platform specific implementation (common_platform) */
|
||||||
|
void Common_Init(void **extraDriverData);
|
||||||
|
void Common_Close();
|
||||||
|
void Common_Update();
|
||||||
|
void Common_Sleep(unsigned int ms);
|
||||||
|
void Common_Exit(int returnCode);
|
||||||
|
void Common_DrawText(const char *text);
|
||||||
|
void Common_LoadFileMemory(const char *name, void **buff, int *length);
|
||||||
|
void Common_UnloadFileMemory(void *buff);
|
||||||
|
void Common_Format(char *buffer, int bufferSize, const char *formatString...);
|
||||||
|
bool Common_BtnPress(Common_Button btn);
|
||||||
|
bool Common_BtnDown(Common_Button btn);
|
||||||
|
const char *Common_BtnStr(Common_Button btn);
|
||||||
|
const char *Common_MediaPath(const char *fileName);
|
||||||
|
const char *Common_WritePath(const char *fileName);
|
||||||
|
void Common_Mutex_Create(Common_Mutex *mutex);
|
||||||
|
void Common_Mutex_Destroy(Common_Mutex *mutex);
|
||||||
|
void Common_Mutex_Enter(Common_Mutex *mutex);
|
||||||
|
void Common_Mutex_Leave(Common_Mutex *mutex);
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,196 @@
|
||||||
|
#include "common.h"
|
||||||
|
#include <string.h>
|
||||||
|
#include <jni.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
JNIEnv *gJNIEnv;
|
||||||
|
jobject gMainActivityObject;
|
||||||
|
int gDownButtons;
|
||||||
|
int gLastDownButtons;
|
||||||
|
int gPressedButtons;
|
||||||
|
bool gSuspendState;
|
||||||
|
bool gQuitState;
|
||||||
|
std::string gUIString;
|
||||||
|
std::vector<char *> gPathList;
|
||||||
|
|
||||||
|
int FMOD_Main(); // Defined in example
|
||||||
|
|
||||||
|
void Common_Init(void **extraDriverData)
|
||||||
|
{
|
||||||
|
gDownButtons = 0;
|
||||||
|
gLastDownButtons = 0;
|
||||||
|
gPressedButtons = 0;
|
||||||
|
gSuspendState = false;
|
||||||
|
gQuitState = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Common_Close()
|
||||||
|
{
|
||||||
|
for (std::vector<char *>::iterator item = gPathList.begin(); item != gPathList.end(); ++item)
|
||||||
|
{
|
||||||
|
free(*item);
|
||||||
|
}
|
||||||
|
|
||||||
|
gPathList.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Common_Update()
|
||||||
|
{
|
||||||
|
jstring text = gJNIEnv->NewStringUTF(gUIString.c_str());
|
||||||
|
jclass mainActivityClass = gJNIEnv->GetObjectClass(gMainActivityObject);
|
||||||
|
jmethodID updateScreenMethodID = gJNIEnv->GetMethodID(mainActivityClass, "updateScreen", "(Ljava/lang/String;)V");
|
||||||
|
|
||||||
|
gJNIEnv->CallVoidMethod(gMainActivityObject, updateScreenMethodID, text);
|
||||||
|
|
||||||
|
gJNIEnv->DeleteLocalRef(text);
|
||||||
|
gJNIEnv->DeleteLocalRef(mainActivityClass);
|
||||||
|
|
||||||
|
gUIString.clear();
|
||||||
|
|
||||||
|
gPressedButtons = (gLastDownButtons ^ gDownButtons) & gDownButtons;
|
||||||
|
gLastDownButtons = gDownButtons;
|
||||||
|
|
||||||
|
if (gQuitState)
|
||||||
|
{
|
||||||
|
gPressedButtons |= (1 << BTN_QUIT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Common_Sleep(unsigned int ms)
|
||||||
|
{
|
||||||
|
usleep(ms * 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Common_Exit(int returnCode)
|
||||||
|
{
|
||||||
|
exit(returnCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Common_DrawText(const char *text)
|
||||||
|
{
|
||||||
|
char s[256];
|
||||||
|
snprintf(s, sizeof(s), "%s\n", text);
|
||||||
|
|
||||||
|
gUIString.append(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Common_LoadFileMemory(const char *name, void **buff, int *length)
|
||||||
|
{
|
||||||
|
FILE *file = fopen(name, "rb");
|
||||||
|
|
||||||
|
fseek(file, 0, SEEK_END);
|
||||||
|
long len = ftell(file);
|
||||||
|
fseek(file, 0, SEEK_SET);
|
||||||
|
|
||||||
|
void *mem = malloc(len);
|
||||||
|
fread(mem, 1, len, file);
|
||||||
|
|
||||||
|
fclose(file);
|
||||||
|
|
||||||
|
*buff = mem;
|
||||||
|
*length = len;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Common_UnloadFileMemory(void *buff)
|
||||||
|
{
|
||||||
|
free(buff);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Common_BtnPress(Common_Button btn)
|
||||||
|
{
|
||||||
|
return ((gPressedButtons & (1 << btn)) != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Common_BtnDown(Common_Button btn)
|
||||||
|
{
|
||||||
|
return ((gDownButtons & (1 << btn)) != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *Common_BtnStr(Common_Button btn)
|
||||||
|
{
|
||||||
|
switch (btn)
|
||||||
|
{
|
||||||
|
case BTN_ACTION1: return "A";
|
||||||
|
case BTN_ACTION2: return "B";
|
||||||
|
case BTN_ACTION3: return "C";
|
||||||
|
case BTN_ACTION4: return "D";
|
||||||
|
case BTN_UP: return "Up";
|
||||||
|
case BTN_DOWN: return "Down";
|
||||||
|
case BTN_LEFT: return "Left";
|
||||||
|
case BTN_RIGHT: return "Right";
|
||||||
|
case BTN_MORE: return "E";
|
||||||
|
case BTN_QUIT: return "Back";
|
||||||
|
default: return "Unknown";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *Common_MediaPath(const char *fileName)
|
||||||
|
{
|
||||||
|
char *filePath = (char *)calloc(256, sizeof(char));
|
||||||
|
|
||||||
|
strcat(filePath, "file:///android_asset/");
|
||||||
|
strcat(filePath, fileName);
|
||||||
|
gPathList.push_back(filePath);
|
||||||
|
|
||||||
|
return filePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *Common_WritePath(const char *fileName)
|
||||||
|
{
|
||||||
|
return Common_MediaPath(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Common_SuspendState()
|
||||||
|
{
|
||||||
|
return gSuspendState;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
|
||||||
|
jstring Java_org_fmod_example_MainActivity_getButtonLabel(JNIEnv *env, jobject thiz, jint index)
|
||||||
|
{
|
||||||
|
return env->NewStringUTF(Common_BtnStr((Common_Button)index));
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_org_fmod_example_MainActivity_buttonDown(JNIEnv *env, jobject thiz, jint index)
|
||||||
|
{
|
||||||
|
gDownButtons |= (1 << index);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_org_fmod_example_MainActivity_buttonUp(JNIEnv *env, jobject thiz, jint index)
|
||||||
|
{
|
||||||
|
gDownButtons &= ~(1 << index);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_org_fmod_example_MainActivity_setStateCreate(JNIEnv *env, jobject thiz)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_org_fmod_example_MainActivity_setStateStart(JNIEnv *env, jobject thiz)
|
||||||
|
{
|
||||||
|
gSuspendState = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_org_fmod_example_MainActivity_setStateStop(JNIEnv *env, jobject thiz)
|
||||||
|
{
|
||||||
|
gSuspendState = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_org_fmod_example_MainActivity_setStateDestroy(JNIEnv *env, jobject thiz)
|
||||||
|
{
|
||||||
|
gQuitState = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_org_fmod_example_MainActivity_main(JNIEnv *env, jobject thiz)
|
||||||
|
{
|
||||||
|
gJNIEnv = env;
|
||||||
|
gMainActivityObject = thiz;
|
||||||
|
|
||||||
|
FMOD_Main();
|
||||||
|
}
|
||||||
|
|
||||||
|
} /* extern "C" */
|
|
@ -0,0 +1,35 @@
|
||||||
|
#include <pthread.h>
|
||||||
|
#include <assert.h>
|
||||||
|
bool Common_SuspendState();
|
||||||
|
|
||||||
|
typedef pthread_mutex_t Common_Mutex;
|
||||||
|
|
||||||
|
inline void Common_Mutex_Create(Common_Mutex *mutex)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
pthread_mutexattr_t mutexattr;
|
||||||
|
pthread_mutexattr_init(&mutexattr);
|
||||||
|
|
||||||
|
err = pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_RECURSIVE_NP);
|
||||||
|
assert(err == 0);
|
||||||
|
|
||||||
|
err = pthread_mutex_init(mutex, &mutexattr);
|
||||||
|
assert(err == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void Common_Mutex_Destroy(Common_Mutex *mutex)
|
||||||
|
{
|
||||||
|
pthread_mutex_destroy(mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void Common_Mutex_Enter(Common_Mutex *mutex)
|
||||||
|
{
|
||||||
|
int err = pthread_mutex_lock(mutex);
|
||||||
|
assert(err == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void Common_Mutex_Leave(Common_Mutex *mutex)
|
||||||
|
{
|
||||||
|
int err = pthread_mutex_unlock(mutex);
|
||||||
|
assert(err == 0);
|
||||||
|
}
|
|
@ -0,0 +1,245 @@
|
||||||
|
/*==============================================================================
|
||||||
|
Convolution Reverb Example
|
||||||
|
Copyright (c), Firelight Technologies Pty, Ltd 2004-2015.
|
||||||
|
|
||||||
|
This example shows how to set up a convolution reverb DSP as a global
|
||||||
|
DSP unit that can be routed into by multiple seperate channels.
|
||||||
|
|
||||||
|
Convolution reverb uses data from a real world locations called an
|
||||||
|
"Impulse Response" to model the reflection of audio waves back
|
||||||
|
to a listener.
|
||||||
|
|
||||||
|
Impulse Response is based on "St Andrew's Church" by
|
||||||
|
|
||||||
|
www.openairlib.net
|
||||||
|
Audiolab, University of York
|
||||||
|
Damian T. Murphy
|
||||||
|
http://www.openairlib.net/auralizationdb/content/st-andrews-church
|
||||||
|
|
||||||
|
licensed under Attribution Share Alike Creative Commons license
|
||||||
|
http://creativecommons.org/licenses/by-sa/3.0/
|
||||||
|
|
||||||
|
|
||||||
|
Anechoic sample "Operatic Voice" by
|
||||||
|
|
||||||
|
www.openairlib.net
|
||||||
|
http://www.openairlib.net/anechoicdb/content/operatic-voice
|
||||||
|
|
||||||
|
licensed under Attribution Share Alike Creative Commons license
|
||||||
|
http://creativecommons.org/licenses/by-sa/3.0/
|
||||||
|
|
||||||
|
|
||||||
|
### Features Demonstrated ###
|
||||||
|
+ FMOD_DSP_CONVOLUTION_REVERB
|
||||||
|
+ DSP::addInput
|
||||||
|
|
||||||
|
==============================================================================*/
|
||||||
|
#include "fmod.hpp"
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
int FMOD_Main()
|
||||||
|
{
|
||||||
|
void *extradriverdata = 0;
|
||||||
|
Common_Init(&extradriverdata);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create a System object and initialize
|
||||||
|
*/
|
||||||
|
FMOD_RESULT result;
|
||||||
|
FMOD::System* system;
|
||||||
|
result = FMOD::System_Create(&system);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
unsigned int version;
|
||||||
|
result = system->getVersion(&version);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
if (version < FMOD_VERSION)
|
||||||
|
{
|
||||||
|
Common_Fatal("FMOD lib version %08x doesn't match header version %08x", version, FMOD_VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = system->init(32, FMOD_INIT_NORMAL, extradriverdata);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create a new channel group to hold the convolution DSP unit
|
||||||
|
*/
|
||||||
|
FMOD::ChannelGroup* reverbGroup;
|
||||||
|
result = system->createChannelGroup("reverb", &reverbGroup);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create a new channel group to hold all the channels and process the dry path
|
||||||
|
*/
|
||||||
|
FMOD::ChannelGroup* mainGroup;
|
||||||
|
result = system->createChannelGroup("main", &mainGroup);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create the convultion DSP unit and set it as the tail of the channel group
|
||||||
|
*/
|
||||||
|
FMOD::DSP* reverbUnit;
|
||||||
|
result = system->createDSPByType(FMOD_DSP_TYPE_CONVOLUTIONREVERB, &reverbUnit);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = reverbGroup->addDSP(FMOD_CHANNELCONTROL_DSP_TAIL, reverbUnit);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Open the impulse response wav file, but use FMOD_OPENONLY as we want
|
||||||
|
to read the data into a seperate buffer
|
||||||
|
*/
|
||||||
|
FMOD::Sound* irSound;
|
||||||
|
result = system->createSound(Common_MediaPath("standrews.wav"), FMOD_DEFAULT | FMOD_OPENONLY, NULL, &irSound);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Retrieve the sound information for the Impulse Response input file
|
||||||
|
*/
|
||||||
|
FMOD_SOUND_FORMAT irSoundFormat;
|
||||||
|
FMOD_SOUND_TYPE irSoundType;
|
||||||
|
int irSoundBits, irSoundChannels;
|
||||||
|
result = irSound->getFormat(&irSoundType, &irSoundFormat, &irSoundChannels, &irSoundBits);
|
||||||
|
ERRCHECK(result);
|
||||||
|
unsigned int irSoundLength;
|
||||||
|
result = irSound->getLength(&irSoundLength, FMOD_TIMEUNIT_PCM);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
|
||||||
|
if (irSoundFormat != FMOD_SOUND_FORMAT_PCM16)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
For simplicity of the example, if the impulse response is the wrong format just display an error
|
||||||
|
*/
|
||||||
|
Common_Fatal("Impulse Response file is the wrong audio format");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
The reverb unit expects a block of data containing a single 16 bit int containing
|
||||||
|
the number of channels in the impulse response, followed by PCM 16 data
|
||||||
|
*/
|
||||||
|
unsigned int irDataLength = sizeof(short) * (irSoundLength * irSoundChannels + 1);
|
||||||
|
short* irData = (short*)malloc(irDataLength);
|
||||||
|
irData[0] = irSoundChannels;
|
||||||
|
unsigned int irDataRead;
|
||||||
|
result = irSound->readData(&irData[1], irDataLength - sizeof(short), &irDataRead);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = reverbUnit->setParameterData(FMOD_DSP_CONVOLUTION_REVERB_PARAM_IR, irData, irDataLength);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Don't pass any dry signal from the reverb unit, instead take the dry part
|
||||||
|
of the mix from the main signal path
|
||||||
|
*/
|
||||||
|
result = reverbUnit->setParameterFloat(FMOD_DSP_CONVOLUTION_REVERB_PARAM_DRY, -80.0f);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
We can now free our copy of the IR data and release the sound object, the reverb unit
|
||||||
|
has created it's internal data
|
||||||
|
*/
|
||||||
|
free(irData);
|
||||||
|
result = irSound->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Load up and play a sample clip recorded in an anechoic chamber
|
||||||
|
*/
|
||||||
|
FMOD::Sound* sound;
|
||||||
|
system->createSound(Common_MediaPath("singing.wav"), FMOD_3D | FMOD_LOOP_NORMAL, NULL, &sound);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
FMOD::Channel* channel;
|
||||||
|
system->playSound(sound, mainGroup, true, &channel);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create a send connection between the channel head and the reverb unit
|
||||||
|
*/
|
||||||
|
FMOD::DSP* channelHead;
|
||||||
|
channel->getDSP(FMOD_CHANNELCONTROL_DSP_HEAD, &channelHead);
|
||||||
|
ERRCHECK(result);
|
||||||
|
FMOD::DSPConnection* reverbConnection;
|
||||||
|
result = reverbUnit->addInput(channelHead, &reverbConnection, FMOD_DSPCONNECTION_TYPE_SEND);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = channel->setPaused(false);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
|
||||||
|
float wetVolume = 1.0;
|
||||||
|
float dryVolume = 1.0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Main loop
|
||||||
|
*/
|
||||||
|
do
|
||||||
|
{
|
||||||
|
Common_Update();
|
||||||
|
|
||||||
|
if (Common_BtnPress(BTN_LEFT))
|
||||||
|
{
|
||||||
|
wetVolume = (wetVolume <= 0.0f) ? wetVolume : wetVolume - 0.05;
|
||||||
|
}
|
||||||
|
if (Common_BtnPress(BTN_RIGHT))
|
||||||
|
{
|
||||||
|
wetVolume = (wetVolume >= 1.0f) ? wetVolume : wetVolume + 0.05f;
|
||||||
|
}
|
||||||
|
if (Common_BtnPress(BTN_DOWN))
|
||||||
|
{
|
||||||
|
dryVolume = (dryVolume <= 0.0f) ? dryVolume : dryVolume - 0.05f;
|
||||||
|
}
|
||||||
|
if (Common_BtnPress(BTN_UP))
|
||||||
|
{
|
||||||
|
dryVolume = (dryVolume >= 1.0f) ? dryVolume : dryVolume + 0.05f;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
result = system->update();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = reverbConnection->setMix(wetVolume);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = mainGroup->setVolume(dryVolume);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
|
||||||
|
Common_Draw("==================================================");
|
||||||
|
Common_Draw("Convolution Example.");
|
||||||
|
Common_Draw("Copyright (c) Firelight Technologies 2004-2015.");
|
||||||
|
Common_Draw("==================================================");
|
||||||
|
Common_Draw("Press %s and %s to change dry mix", Common_BtnStr(BTN_UP), Common_BtnStr(BTN_DOWN));
|
||||||
|
Common_Draw("Press %s and %s to change wet mix", Common_BtnStr(BTN_LEFT), Common_BtnStr(BTN_RIGHT));
|
||||||
|
Common_Draw("wet mix [%.2f] dry mix [%.2f]", wetVolume, dryVolume);
|
||||||
|
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
|
||||||
|
Common_Draw("");
|
||||||
|
|
||||||
|
Common_Sleep(50);
|
||||||
|
} while (!Common_BtnPress(BTN_QUIT));
|
||||||
|
|
||||||
|
/*
|
||||||
|
Shut down
|
||||||
|
*/
|
||||||
|
result = sound->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = mainGroup->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = reverbGroup->removeDSP(reverbUnit);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = reverbUnit->disconnectAll(true, true);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = reverbUnit->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = reverbGroup->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = system->close();
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = system->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
Common_Close();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,176 @@
|
||||||
|
/*==============================================================================
|
||||||
|
Custom DSP Example
|
||||||
|
Copyright (c), Firelight Technologies Pty, Ltd 2004-2015.
|
||||||
|
|
||||||
|
This example shows how to add a user created DSP callback to process audio
|
||||||
|
data. The read callback is executed at runtime, and can be added anywhere in
|
||||||
|
the DSP network.
|
||||||
|
==============================================================================*/
|
||||||
|
#include "fmod.hpp"
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
FMOD_RESULT F_CALLBACK myDSPCallback(FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels)
|
||||||
|
{
|
||||||
|
FMOD_RESULT result;
|
||||||
|
char name[256];
|
||||||
|
void* userdata;
|
||||||
|
FMOD::DSP *thisdsp = (FMOD::DSP *)dsp_state->instance;
|
||||||
|
|
||||||
|
/*
|
||||||
|
This redundant call just shows using the instance parameter of FMOD_DSP_STATE to
|
||||||
|
call a DSP information function.
|
||||||
|
*/
|
||||||
|
result = thisdsp->getInfo(name, 0, 0, 0, 0);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = thisdsp->getUserData(&userdata);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
This loop assumes inchannels = outchannels, which it will be if the DSP is created with '0'
|
||||||
|
as the number of channels in FMOD_DSP_DESCRIPTION.
|
||||||
|
Specifying an actual channel count will mean you have to take care of any number of channels coming in,
|
||||||
|
but outputting the number of channels specified. Generally it is best to keep the channel
|
||||||
|
count at 0 for maximum compatibility.
|
||||||
|
*/
|
||||||
|
for (unsigned int samp = 0; samp < length; samp++)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
Feel free to unroll this.
|
||||||
|
*/
|
||||||
|
for (int chan = 0; chan < *outchannels; chan++)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
This DSP filter just halves the volume!
|
||||||
|
Input is modified, and sent to output.
|
||||||
|
*/
|
||||||
|
outbuffer[(samp * *outchannels) + chan] = inbuffer[(samp * inchannels) + chan] * 0.2f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return FMOD_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int FMOD_Main()
|
||||||
|
{
|
||||||
|
FMOD::System *system;
|
||||||
|
FMOD::Sound *sound;
|
||||||
|
FMOD::Channel *channel;
|
||||||
|
FMOD::DSP *mydsp;
|
||||||
|
FMOD::ChannelGroup *mastergroup;
|
||||||
|
FMOD_RESULT result;
|
||||||
|
unsigned int version;
|
||||||
|
void *extradriverdata = 0;
|
||||||
|
|
||||||
|
Common_Init(&extradriverdata);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create a System object and initialize.
|
||||||
|
*/
|
||||||
|
result = FMOD::System_Create(&system);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->getVersion(&version);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
if (version < FMOD_VERSION)
|
||||||
|
{
|
||||||
|
Common_Fatal("FMOD lib version %08x doesn't match header version %08x", version, FMOD_VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = system->init(32, FMOD_INIT_NORMAL, extradriverdata);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->createSound(Common_MediaPath("drumloop.wav"), FMOD_LOOP_NORMAL, 0, &sound);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->playSound(sound, 0, false, &channel);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create the DSP effect.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
FMOD_DSP_DESCRIPTION dspdesc;
|
||||||
|
memset(&dspdesc, 0, sizeof(dspdesc));
|
||||||
|
|
||||||
|
strncpy(dspdesc.name, "My first DSP unit", sizeof(dspdesc.name));
|
||||||
|
dspdesc.version = 0x00010000;
|
||||||
|
dspdesc.numinputbuffers = 1;
|
||||||
|
dspdesc.numoutputbuffers = 1;
|
||||||
|
dspdesc.read = myDSPCallback;
|
||||||
|
dspdesc.userdata = (void *)0x12345678;
|
||||||
|
|
||||||
|
result = system->createDSP(&dspdesc, &mydsp);
|
||||||
|
ERRCHECK(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Attach the DSP, inactive by default.
|
||||||
|
*/
|
||||||
|
result = mydsp->setBypass(true);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->getMasterChannelGroup(&mastergroup);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = mastergroup->addDSP(0, mydsp);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Main loop.
|
||||||
|
*/
|
||||||
|
do
|
||||||
|
{
|
||||||
|
bool bypass;
|
||||||
|
|
||||||
|
Common_Update();
|
||||||
|
|
||||||
|
result = mydsp->getBypass(&bypass);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
if (Common_BtnPress(BTN_ACTION1))
|
||||||
|
{
|
||||||
|
bypass = !bypass;
|
||||||
|
|
||||||
|
result = mydsp->setBypass(bypass);
|
||||||
|
ERRCHECK(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = system->update();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
Common_Draw("==================================================");
|
||||||
|
Common_Draw("Custom DSP Example.");
|
||||||
|
Common_Draw("Copyright (c) Firelight Technologies 2004-2015.");
|
||||||
|
Common_Draw("==================================================");
|
||||||
|
Common_Draw("");
|
||||||
|
Common_Draw("Press %s to toggle filter bypass", Common_BtnStr(BTN_ACTION1));
|
||||||
|
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
|
||||||
|
Common_Draw("");
|
||||||
|
Common_Draw("Filter is %s", bypass ? "inactive" : "active");
|
||||||
|
|
||||||
|
Common_Sleep(50);
|
||||||
|
} while (!Common_BtnPress(BTN_QUIT));
|
||||||
|
|
||||||
|
/*
|
||||||
|
Shut down
|
||||||
|
*/
|
||||||
|
result = sound->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = mastergroup->removeDSP(mydsp);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = mydsp->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->close();
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = system->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
Common_Close();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,282 @@
|
||||||
|
/*==============================================================================
|
||||||
|
DSP Effect Per Speaker Example
|
||||||
|
Copyright (c), Firelight Technologies Pty, Ltd 2004-2015.
|
||||||
|
|
||||||
|
This example shows how to manipulate a DSP network and as an example, creates 2
|
||||||
|
DSP effects, splitting a single sound into 2 audio paths, which it then filters
|
||||||
|
seperately.
|
||||||
|
|
||||||
|
To only have each audio path come out of one speaker each,
|
||||||
|
DSPConnection::setMixMatrix is used just before the 2 branches merge back together
|
||||||
|
again.
|
||||||
|
|
||||||
|
For more speakers:
|
||||||
|
|
||||||
|
* Use System::setSoftwareFormat
|
||||||
|
* Create more effects, currently 2 for stereo (lowpass and highpass), create one
|
||||||
|
per speaker.
|
||||||
|
* Under the 'Now connect the 2 effects to channeldsp head.' section, connect
|
||||||
|
the extra effects by duplicating the code more times.
|
||||||
|
* Filter each effect to each speaker by calling DSPConnection::setMixMatrix.
|
||||||
|
Expand the existing code by extending the matrices from 2 in and 2 out, to the
|
||||||
|
number of speakers you require.
|
||||||
|
==============================================================================*/
|
||||||
|
#include "fmod.hpp"
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
int FMOD_Main()
|
||||||
|
{
|
||||||
|
FMOD::System *system;
|
||||||
|
FMOD::Sound *sound;
|
||||||
|
FMOD::Channel *channel;
|
||||||
|
FMOD::ChannelGroup *mastergroup;
|
||||||
|
FMOD::DSP *dsplowpass, *dsphighpass, *dsphead, *dspchannelmixer;
|
||||||
|
FMOD::DSPConnection *dsplowpassconnection, *dsphighpassconnection;
|
||||||
|
FMOD_RESULT result;
|
||||||
|
unsigned int version;
|
||||||
|
float pan = 0.0f;
|
||||||
|
void *extradriverdata = 0;
|
||||||
|
|
||||||
|
Common_Init(&extradriverdata);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create a System object and initialize.
|
||||||
|
*/
|
||||||
|
result = FMOD::System_Create(&system);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->getVersion(&version);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
if (version < FMOD_VERSION)
|
||||||
|
{
|
||||||
|
Common_Fatal("FMOD lib version %08x doesn't match header version %08x", version, FMOD_VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
In this special case we want to use stereo output and not worry about varying matrix sizes depending on user speaker mode.
|
||||||
|
*/
|
||||||
|
system->setSoftwareFormat(48000, FMOD_SPEAKERMODE_STEREO, 0);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Initialize FMOD
|
||||||
|
*/
|
||||||
|
result = system->init(32, FMOD_INIT_NORMAL, extradriverdata);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->createSound(Common_MediaPath("drumloop.wav"), FMOD_LOOP_NORMAL, 0, &sound);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->playSound(sound, 0, false, &channel);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create the DSP effects.
|
||||||
|
*/
|
||||||
|
result = system->createDSPByType(FMOD_DSP_TYPE_LOWPASS, &dsplowpass);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = dsplowpass->setParameterFloat(FMOD_DSP_LOWPASS_CUTOFF, 1000.0f);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = dsplowpass->setParameterFloat(FMOD_DSP_LOWPASS_RESONANCE, 4.0f);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->createDSPByType(FMOD_DSP_TYPE_HIGHPASS, &dsphighpass);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = dsphighpass->setParameterFloat(FMOD_DSP_HIGHPASS_CUTOFF, 4000.0f);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = dsphighpass->setParameterFloat(FMOD_DSP_HIGHPASS_RESONANCE, 4.0f);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Connect up the DSP network
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
When a sound is played, a subnetwork is set up in the DSP network which looks like this.
|
||||||
|
Wavetable is the drumloop sound, and it feeds its data from right to left.
|
||||||
|
|
||||||
|
[DSPHEAD]<------------[DSPCHANNELMIXER]<------------[CHANNEL HEAD]<------------[WAVETABLE - DRUMLOOP.WAV]
|
||||||
|
*/
|
||||||
|
result = system->getMasterChannelGroup(&mastergroup);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = mastergroup->getDSP(FMOD_CHANNELCONTROL_DSP_HEAD, &dsphead);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = dsphead->getInput(0, &dspchannelmixer, 0);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Now disconnect channeldsp head from wavetable to look like this.
|
||||||
|
|
||||||
|
[DSPHEAD] [DSPCHANNELMIXER]<------------[CHANNEL HEAD]<------------[WAVETABLE - DRUMLOOP.WAV]
|
||||||
|
*/
|
||||||
|
result = dsphead->disconnectFrom(dspchannelmixer);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Now connect the 2 effects to channeldsp head.
|
||||||
|
Store the 2 connections this makes so we can set their matrix later.
|
||||||
|
|
||||||
|
[DSPLOWPASS]
|
||||||
|
/x
|
||||||
|
[DSPHEAD] [DSPCHANNELMIXER]<------------[CHANNEL HEAD]<------------[WAVETABLE - DRUMLOOP.WAV]
|
||||||
|
\y
|
||||||
|
[DSPHIGHPASS]
|
||||||
|
*/
|
||||||
|
result = dsphead->addInput(dsplowpass, &dsplowpassconnection); /* x = dsplowpassconnection */
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = dsphead->addInput(dsphighpass, &dsphighpassconnection); /* y = dsphighpassconnection */
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Now connect the channelmixer to the 2 effects
|
||||||
|
|
||||||
|
[DSPLOWPASS]
|
||||||
|
/x \
|
||||||
|
[DSPHEAD] [DSPCHANNELMIXER]<------------[CHANNEL HEAD]<------------[WAVETABLE - DRUMLOOP.WAV]
|
||||||
|
\y /
|
||||||
|
[DSPHIGHPASS]
|
||||||
|
*/
|
||||||
|
result = dsplowpass->addInput(dspchannelmixer); /* Ignore connection - we dont care about it. */
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = dsphighpass->addInput(dspchannelmixer); /* Ignore connection - we dont care about it. */
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Now the drumloop will be twice as loud, because it is being split into 2, then recombined at the end.
|
||||||
|
What we really want is to only feed the dsphead<-dsplowpass through the left speaker for that effect, and
|
||||||
|
dsphead<-dsphighpass to the right speaker for that effect.
|
||||||
|
We can do that simply by setting the pan, or speaker matrix of the connections.
|
||||||
|
|
||||||
|
[DSPLOWPASS]
|
||||||
|
/x=1,0 \
|
||||||
|
[DSPHEAD] [DSPCHANNELMIXER]<------------[CHANNEL HEAD]<------------[WAVETABLE - DRUMLOOP.WAV]
|
||||||
|
\y=0,1 /
|
||||||
|
[DSPHIGHPASS]
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
float lowpassmatrix[2][2] = {
|
||||||
|
{ 1.0f, 0.0f }, // <- output to front left. Take front left input signal at 1.0.
|
||||||
|
{ 0.0f, 0.0f } // <- output to front right. Silence
|
||||||
|
};
|
||||||
|
float highpassmatrix[2][2] = {
|
||||||
|
{ 0.0f, 0.0f }, // <- output to front left. Silence
|
||||||
|
{ 0.0f, 1.0f } // <- output to front right. Take front right input signal at 1.0
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Upgrade the signal coming from the channel mixer from mono to stereo. Otherwise the lowpass and highpass will get mono signals
|
||||||
|
*/
|
||||||
|
result = dspchannelmixer->setChannelFormat(0, 0, FMOD_SPEAKERMODE_STEREO);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Now set the above matrices.
|
||||||
|
*/
|
||||||
|
result = dsplowpassconnection->setMixMatrix(&lowpassmatrix[0][0], 2, 2);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = dsphighpassconnection->setMixMatrix(&highpassmatrix[0][0], 2, 2);
|
||||||
|
ERRCHECK(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = dsplowpass->setBypass(true);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = dsphighpass->setBypass(true);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = dsplowpass->setActive(true);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = dsphighpass->setActive(true);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Main loop.
|
||||||
|
*/
|
||||||
|
do
|
||||||
|
{
|
||||||
|
bool lowpassbypass, highpassbypass;
|
||||||
|
|
||||||
|
Common_Update();
|
||||||
|
|
||||||
|
result = dsplowpass->getBypass(&lowpassbypass);
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = dsphighpass->getBypass(&highpassbypass);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
if (Common_BtnPress(BTN_ACTION1))
|
||||||
|
{
|
||||||
|
lowpassbypass = !lowpassbypass;
|
||||||
|
|
||||||
|
result = dsplowpass->setBypass(lowpassbypass);
|
||||||
|
ERRCHECK(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common_BtnPress(BTN_ACTION2))
|
||||||
|
{
|
||||||
|
highpassbypass = !highpassbypass;
|
||||||
|
|
||||||
|
result = dsphighpass->setBypass(highpassbypass);
|
||||||
|
ERRCHECK(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common_BtnDown(BTN_LEFT))
|
||||||
|
{
|
||||||
|
pan = (pan <= -0.9f) ? -1.0f : pan - 0.1f;
|
||||||
|
|
||||||
|
result = channel->setPan(pan);
|
||||||
|
ERRCHECK(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common_BtnDown(BTN_RIGHT))
|
||||||
|
{
|
||||||
|
pan = (pan >= 0.9f) ? 1.0f : pan + 0.1f;
|
||||||
|
|
||||||
|
result = channel->setPan(pan);
|
||||||
|
ERRCHECK(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = system->update();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
Common_Draw("==================================================");
|
||||||
|
Common_Draw("DSP Effect Per Speaker Example.");
|
||||||
|
Common_Draw("Copyright (c) Firelight Technologies 2004-2015.");
|
||||||
|
Common_Draw("==================================================");
|
||||||
|
Common_Draw("");
|
||||||
|
Common_Draw("Press %s to toggle lowpass (left speaker)", Common_BtnStr(BTN_ACTION1));
|
||||||
|
Common_Draw("Press %s to toggle highpass (right speaker)", Common_BtnStr(BTN_ACTION2));
|
||||||
|
Common_Draw("Press %s or %s to pan sound", Common_BtnStr(BTN_LEFT), Common_BtnStr(BTN_RIGHT));
|
||||||
|
Common_Draw("Press %s to quit", Common_BtnStr(BTN_QUIT));
|
||||||
|
Common_Draw("");
|
||||||
|
Common_Draw("Lowpass (left) is %s", lowpassbypass ? "inactive" : "active");
|
||||||
|
Common_Draw("Highpass (right) is %s", highpassbypass ? "inactive" : "active");
|
||||||
|
Common_Draw("Pan is %0.2f", pan);
|
||||||
|
|
||||||
|
Common_Sleep(50);
|
||||||
|
} while (!Common_BtnPress(BTN_QUIT));
|
||||||
|
|
||||||
|
/*
|
||||||
|
Shut down
|
||||||
|
*/
|
||||||
|
result = sound->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = dsplowpass->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = dsphighpass->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->close();
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = system->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
Common_Close();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,329 @@
|
||||||
|
/*==============================================================================
|
||||||
|
Plug-in Inspector Example
|
||||||
|
Copyright (c), Firelight Technologies Pty, Ltd 2004-2015.
|
||||||
|
|
||||||
|
This example shows how to enumerate loaded plug-ins and their parameters.
|
||||||
|
==============================================================================*/
|
||||||
|
#include "fmod.hpp"
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
const int INTERFACE_UPDATETIME = 50; // 50ms update for interface
|
||||||
|
const int MAX_PLUGINS_IN_VIEW = 5;
|
||||||
|
const int MAX_PARAMETERS_IN_VIEW = 14;
|
||||||
|
|
||||||
|
enum InspectorState
|
||||||
|
{
|
||||||
|
PLUGIN_SELECTOR,
|
||||||
|
PARAMETER_VIEWER
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PluginSelectorState
|
||||||
|
{
|
||||||
|
FMOD::System *system;
|
||||||
|
int numplugins;
|
||||||
|
int cursor;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ParameterViewerState
|
||||||
|
{
|
||||||
|
FMOD::DSP *dsp;
|
||||||
|
int numparams;
|
||||||
|
int scroll;
|
||||||
|
};
|
||||||
|
|
||||||
|
void drawTitle()
|
||||||
|
{
|
||||||
|
Common_Draw("==================================================");
|
||||||
|
Common_Draw("Plug-in Inspector Example.");
|
||||||
|
Common_Draw("Copyright (c) Firelight Technologies 2004-2015.");
|
||||||
|
Common_Draw("==================================================");
|
||||||
|
Common_Draw("");
|
||||||
|
}
|
||||||
|
|
||||||
|
bool hasDataParameter(const FMOD_DSP_DESCRIPTION *desc, FMOD_DSP_PARAMETER_DATA_TYPE type)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < desc->numparameters; i++)
|
||||||
|
{
|
||||||
|
if (desc->paramdesc[i]->type == FMOD_DSP_PARAMETER_TYPE_DATA && ((type >= 0 && desc->paramdesc[i]->datadesc.datatype >= 0) || desc->paramdesc[i]->datadesc.datatype == type))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawDSPInfo(const FMOD_DSP_DESCRIPTION *desc)
|
||||||
|
{
|
||||||
|
Common_Draw("Name (Version) : %s (%x)", desc->name, desc->version);
|
||||||
|
Common_Draw("SDK Version : %d", desc->pluginsdkversion);
|
||||||
|
Common_Draw("Type : %s", desc->numinputbuffers ? "Effect" : "Sound Generator");
|
||||||
|
Common_Draw("Parameters : %d", desc->numparameters);
|
||||||
|
Common_Draw("Audio Callback : %s", desc->process ? "process()" : "read()");
|
||||||
|
Common_Draw("");
|
||||||
|
Common_Draw(" Reset | Side-Chain | 3D | Audibility | User Data");
|
||||||
|
Common_Draw(" %s | %s | %s | %s | %s ",
|
||||||
|
desc->reset ? "Y " : "--",
|
||||||
|
hasDataParameter(desc, FMOD_DSP_PARAMETER_DATA_TYPE_SIDECHAIN) ? "Y " : "--",
|
||||||
|
hasDataParameter(desc, FMOD_DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES) ? "Y " : "--",
|
||||||
|
hasDataParameter(desc, FMOD_DSP_PARAMETER_DATA_TYPE_OVERALLGAIN) ? "Y " : "--",
|
||||||
|
hasDataParameter(desc, FMOD_DSP_PARAMETER_DATA_TYPE_USER) || desc->userdata ? "Y " : "--");
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawDSPList(PluginSelectorState *state)
|
||||||
|
{
|
||||||
|
unsigned int pluginhandle;
|
||||||
|
char pluginname[256];
|
||||||
|
FMOD_RESULT result;
|
||||||
|
|
||||||
|
Common_Draw("Press %s to select the next plug-in", Common_BtnStr(BTN_DOWN));
|
||||||
|
Common_Draw("Press %s to select the previous plug-in", Common_BtnStr(BTN_UP));
|
||||||
|
Common_Draw("Press %s to view the plug-in parameters", Common_BtnStr(BTN_RIGHT));
|
||||||
|
Common_Draw("");
|
||||||
|
|
||||||
|
int start = Common_Clamp(0, state->cursor - (MAX_PLUGINS_IN_VIEW - 1) / 2, state->numplugins - MAX_PLUGINS_IN_VIEW);
|
||||||
|
for (int i = start; i < start + MAX_PLUGINS_IN_VIEW; i++)
|
||||||
|
{
|
||||||
|
result = state->system->getPluginHandle(FMOD_PLUGINTYPE_DSP, i, &pluginhandle);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = state->system->getPluginInfo(pluginhandle, 0, pluginname, 256, 0);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
Common_Draw("%s %s", i == state->cursor ? ">" : " ", pluginname);
|
||||||
|
}
|
||||||
|
|
||||||
|
Common_Draw("");
|
||||||
|
Common_Draw("==================================================");
|
||||||
|
Common_Draw("");
|
||||||
|
|
||||||
|
result = state->system->getPluginHandle(FMOD_PLUGINTYPE_DSP, state->cursor, &pluginhandle);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
const FMOD_DSP_DESCRIPTION *description;
|
||||||
|
result = state->system->getDSPInfoByPlugin(pluginhandle, &description);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
drawDSPInfo(description);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawDSPParameters(ParameterViewerState *state)
|
||||||
|
{
|
||||||
|
FMOD_RESULT result;
|
||||||
|
FMOD_DSP_PARAMETER_DESC *paramdesc;
|
||||||
|
char pluginname[256];
|
||||||
|
|
||||||
|
Common_Draw("Press %s to scroll down", Common_BtnStr(BTN_DOWN));
|
||||||
|
Common_Draw("Press %s to scroll up", Common_BtnStr(BTN_UP));
|
||||||
|
Common_Draw("Press %s to return to the plug-in list", Common_BtnStr(BTN_LEFT));
|
||||||
|
Common_Draw("");
|
||||||
|
|
||||||
|
result = state->dsp->getInfo(pluginname, 0, 0, 0, 0);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
Common_Draw("%s Parameters:", pluginname);
|
||||||
|
Common_Draw("--------------------------------------------------");
|
||||||
|
|
||||||
|
for (int i = state->scroll; i < state->numparams; i++)
|
||||||
|
{
|
||||||
|
result = state->dsp->getParameterInfo(i, ¶mdesc);
|
||||||
|
ERRCHECK(result);
|
||||||
|
switch (paramdesc->type)
|
||||||
|
{
|
||||||
|
case FMOD_DSP_PARAMETER_TYPE_FLOAT:
|
||||||
|
{
|
||||||
|
char *units = paramdesc->label;
|
||||||
|
Common_Draw("%2d: %-15s [%g, %g] (%.2f%s)", i, paramdesc->name, paramdesc->floatdesc.min, paramdesc->floatdesc.max, paramdesc->floatdesc.defaultval, units);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case FMOD_DSP_PARAMETER_TYPE_INT:
|
||||||
|
{
|
||||||
|
if (paramdesc->intdesc.valuenames)
|
||||||
|
{
|
||||||
|
int lengthremaining = 1024;
|
||||||
|
char enums[1024];
|
||||||
|
char *s = enums;
|
||||||
|
for (int j = 0; j < paramdesc->intdesc.max - paramdesc->intdesc.min; ++j)
|
||||||
|
{
|
||||||
|
int len = Common_snprintf(s, lengthremaining, "%s, ", paramdesc->intdesc.valuenames[j]);
|
||||||
|
if (!len)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
s += len;
|
||||||
|
lengthremaining -= len;
|
||||||
|
}
|
||||||
|
if (lengthremaining)
|
||||||
|
{
|
||||||
|
Common_snprintf(s, lengthremaining, "%s", paramdesc->intdesc.valuenames[paramdesc->intdesc.max - paramdesc->intdesc.min]);
|
||||||
|
}
|
||||||
|
Common_Draw("%2d: %-15s [%s] (%s)", i, paramdesc->name, enums, paramdesc->intdesc.valuenames[paramdesc->intdesc.defaultval - paramdesc->intdesc.min]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char *units = paramdesc->label;
|
||||||
|
Common_Draw("%2d: %-15s [%d, %d] (%d%s)", i, paramdesc->name, paramdesc->intdesc.min, paramdesc->intdesc.max, paramdesc->intdesc.defaultval, units);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case FMOD_DSP_PARAMETER_TYPE_BOOL:
|
||||||
|
{
|
||||||
|
if (paramdesc->booldesc.valuenames)
|
||||||
|
{
|
||||||
|
Common_Draw("%2d: %-15s [%s, %s] (%s)", i, paramdesc->name, paramdesc->booldesc.valuenames[0], paramdesc->booldesc.valuenames[1], paramdesc->booldesc.valuenames[paramdesc->booldesc.defaultval ? 1 : 0]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Common_Draw("%2d: %-15s [On, Off] (%s)", i, paramdesc->name, paramdesc->booldesc.defaultval ? "On" : "Off");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case FMOD_DSP_PARAMETER_TYPE_DATA:
|
||||||
|
{
|
||||||
|
Common_Draw("%2d: %-15s (Data type: %d)", i, paramdesc->name, paramdesc->datadesc.datatype);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
InspectorState pluginSelectorDo(PluginSelectorState *state)
|
||||||
|
{
|
||||||
|
if (Common_BtnDown(BTN_UP))
|
||||||
|
{
|
||||||
|
state->cursor = (state->cursor - 1 + state->numplugins) % state->numplugins;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common_BtnDown(BTN_DOWN))
|
||||||
|
{
|
||||||
|
state->cursor = (state->cursor + 1) % state->numplugins;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common_BtnDown(BTN_RIGHT))
|
||||||
|
{
|
||||||
|
return PARAMETER_VIEWER;
|
||||||
|
}
|
||||||
|
|
||||||
|
drawTitle();
|
||||||
|
drawDSPList(state);
|
||||||
|
|
||||||
|
return PLUGIN_SELECTOR;
|
||||||
|
}
|
||||||
|
|
||||||
|
InspectorState parameterViewerDo(ParameterViewerState *state)
|
||||||
|
{
|
||||||
|
if (Common_BtnDown(BTN_UP))
|
||||||
|
{
|
||||||
|
state->scroll = Common_Max(state->scroll - 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common_BtnDown(BTN_DOWN))
|
||||||
|
{
|
||||||
|
state->scroll = Common_Clamp(0, state->scroll + 1, state->numparams - MAX_PARAMETERS_IN_VIEW / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Common_BtnDown(BTN_LEFT))
|
||||||
|
{
|
||||||
|
return PLUGIN_SELECTOR;
|
||||||
|
}
|
||||||
|
|
||||||
|
drawTitle();
|
||||||
|
drawDSPParameters(state);
|
||||||
|
|
||||||
|
return PARAMETER_VIEWER;
|
||||||
|
}
|
||||||
|
|
||||||
|
int FMOD_Main()
|
||||||
|
{
|
||||||
|
FMOD::System *system = 0;
|
||||||
|
FMOD_RESULT result;
|
||||||
|
unsigned int version;
|
||||||
|
void *extradriverdata = 0;
|
||||||
|
unsigned int pluginhandle;
|
||||||
|
InspectorState state = PLUGIN_SELECTOR;
|
||||||
|
PluginSelectorState pluginselector = { 0 };
|
||||||
|
ParameterViewerState parameterviewer = { 0 };
|
||||||
|
|
||||||
|
Common_Init(&extradriverdata);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Create a System object and initialize
|
||||||
|
*/
|
||||||
|
result = FMOD::System_Create(&system);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->getVersion(&version);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
if (version < FMOD_VERSION)
|
||||||
|
{
|
||||||
|
Common_Fatal("FMOD lib version %08x doesn't match header version %08x", version, FMOD_VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = system->init(32, FMOD_INIT_NORMAL, extradriverdata);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = system->getNumPlugins(FMOD_PLUGINTYPE_DSP, &pluginselector.numplugins);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
pluginselector.system = system;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
Common_Update();
|
||||||
|
|
||||||
|
if (state == PLUGIN_SELECTOR)
|
||||||
|
{
|
||||||
|
state = pluginSelectorDo(&pluginselector);
|
||||||
|
|
||||||
|
if (state == PARAMETER_VIEWER)
|
||||||
|
{
|
||||||
|
result = pluginselector.system->getPluginHandle(FMOD_PLUGINTYPE_DSP, pluginselector.cursor, &pluginhandle);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
result = pluginselector.system->createDSPByPlugin(pluginhandle, ¶meterviewer.dsp);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
FMOD_RESULT result = parameterviewer.dsp->getNumParameters(¶meterviewer.numparams);
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
parameterviewer.scroll = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (state == PARAMETER_VIEWER)
|
||||||
|
{
|
||||||
|
state = parameterViewerDo(¶meterviewer);
|
||||||
|
|
||||||
|
if (state == PLUGIN_SELECTOR)
|
||||||
|
{
|
||||||
|
result = parameterviewer.dsp->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
parameterviewer.dsp = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result = system->update();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
Common_Sleep(INTERFACE_UPDATETIME - 1);
|
||||||
|
} while (!Common_BtnPress(BTN_QUIT));
|
||||||
|
|
||||||
|
if (parameterviewer.dsp)
|
||||||
|
{
|
||||||
|
result = parameterviewer.dsp->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = system->close();
|
||||||
|
ERRCHECK(result);
|
||||||
|
result = system->release();
|
||||||
|
ERRCHECK(result);
|
||||||
|
|
||||||
|
Common_Close();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="src" path="gen"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||||
|
<classpathentry exported="true" kind="lib" path="fmod.jar"/>
|
||||||
|
<classpathentry kind="output" path="bin/classes"/>
|
||||||
|
</classpath>
|
|
@ -0,0 +1,54 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
<cconfiguration id="com.android.toolchain.gcc.367937256">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.android.toolchain.gcc.367937256" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.android.toolchain.gcc.367937256" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="com.android.toolchain.gcc.367937256.1934632123" name="/" resourcePath="">
|
||||||
|
<toolChain id="com.android.toolchain.gcc.1304477811" name="com.android.toolchain.gcc" superClass="com.android.toolchain.gcc">
|
||||||
|
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="com.android.targetPlatform.515624550" isAbstract="false" superClass="com.android.targetPlatform"/>
|
||||||
|
<builder arguments="NDK_DEBUG=1" command="ndk-build" id="com.android.builder.222443332" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Android Builder" superClass="com.android.builder">
|
||||||
|
<outputEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="obj"/>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="libs"/>
|
||||||
|
</outputEntries>
|
||||||
|
</builder>
|
||||||
|
<tool id="com.android.gcc.compiler.962627632" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
|
||||||
|
<inputType id="com.android.gcc.inputType.1936354764" superClass="com.android.gcc.inputType"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="jni"/>
|
||||||
|
</sourceEntries>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="Example.null.1010603500" name="Example"/>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<scannerConfigBuildInfo instanceId="com.android.toolchain.gcc.367937256;com.android.toolchain.gcc.367937256.1934632123;com.android.gcc.compiler.962627632;com.android.gcc.inputType.1936354764">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.android.AndroidPerProjectProfile"/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="refreshScope" versionNumber="1">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/Example"/>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
|
@ -0,0 +1,139 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>3d</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||||
|
<triggers>clean,full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
<dictionary>
|
||||||
|
<key>?children?</key>
|
||||||
|
<value>?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|?name?=entry\\\\\\\|\\\|\||</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>?name?</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||||
|
<value>ndk-build</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||||
|
<value>clean</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.contents</key>
|
||||||
|
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||||
|
<value>false</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||||
|
<triggers>full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
</natures>
|
||||||
|
<linkedResources>
|
||||||
|
<link>
|
||||||
|
<name>jni/3d.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/3d.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>fmod.jar</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-4-PROJECT_LOC/lowlevel/lib/fmod.jar</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>assets</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/media</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>src/org</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/java/org</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.h</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.h</locationURI>
|
||||||
|
</link>
|
||||||
|
</linkedResources>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="org.fmod.example"
|
||||||
|
android:versionCode="1"
|
||||||
|
android:versionName="1.0">
|
||||||
|
|
||||||
|
<uses-sdk
|
||||||
|
android:minSdkVersion="4"
|
||||||
|
android:targetSdkVersion="21" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
|
<application
|
||||||
|
android:icon="@drawable/icon"
|
||||||
|
android:allowBackup="true"
|
||||||
|
android:label="FMOD Example">
|
||||||
|
<activity android:name=".MainActivity">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
</manifest>
|
|
@ -0,0 +1,26 @@
|
||||||
|
LOCAL_PATH := $(call my-dir)
|
||||||
|
|
||||||
|
#
|
||||||
|
# FMOD Shared Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := fmod
|
||||||
|
LOCAL_SRC_FILES := ../../../../../lowlevel/lib/$(TARGET_ARCH_ABI)/libfmodL.so
|
||||||
|
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../../lowlevel/inc
|
||||||
|
|
||||||
|
include $(PREBUILT_SHARED_LIBRARY)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Example Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := example
|
||||||
|
LOCAL_SRC_FILES := ../../../common_platform.cpp \
|
||||||
|
../../../common.cpp \
|
||||||
|
../../../3d.cpp
|
||||||
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../
|
||||||
|
LOCAL_SHARED_LIBRARIES := fmod
|
||||||
|
|
||||||
|
include $(BUILD_SHARED_LIBRARY)
|
|
@ -0,0 +1,3 @@
|
||||||
|
APP_PLATFORM := android-4
|
||||||
|
APP_ABI := armeabi armeabi-v7a x86 arm64-v8a
|
||||||
|
APP_STL := stlport_shared
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Project target.
|
||||||
|
target=android-21
|
After Width: | Height: | Size: 2.3 KiB |
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="src" path="gen"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||||
|
<classpathentry exported="true" kind="lib" path="fmod.jar"/>
|
||||||
|
<classpathentry kind="output" path="bin/classes"/>
|
||||||
|
</classpath>
|
|
@ -0,0 +1,54 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
<cconfiguration id="com.android.toolchain.gcc.367937256">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.android.toolchain.gcc.367937256" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.android.toolchain.gcc.367937256" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="com.android.toolchain.gcc.367937256.1934632123" name="/" resourcePath="">
|
||||||
|
<toolChain id="com.android.toolchain.gcc.1304477811" name="com.android.toolchain.gcc" superClass="com.android.toolchain.gcc">
|
||||||
|
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="com.android.targetPlatform.515624550" isAbstract="false" superClass="com.android.targetPlatform"/>
|
||||||
|
<builder arguments="NDK_DEBUG=1" command="ndk-build" id="com.android.builder.222443332" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Android Builder" superClass="com.android.builder">
|
||||||
|
<outputEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="obj"/>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="libs"/>
|
||||||
|
</outputEntries>
|
||||||
|
</builder>
|
||||||
|
<tool id="com.android.gcc.compiler.962627632" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
|
||||||
|
<inputType id="com.android.gcc.inputType.1936354764" superClass="com.android.gcc.inputType"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="jni"/>
|
||||||
|
</sourceEntries>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="Example.null.1010603500" name="Example"/>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<scannerConfigBuildInfo instanceId="com.android.toolchain.gcc.367937256;com.android.toolchain.gcc.367937256.1934632123;com.android.gcc.compiler.962627632;com.android.gcc.inputType.1936354764">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.android.AndroidPerProjectProfile"/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="refreshScope" versionNumber="1">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/Example"/>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
|
@ -0,0 +1,139 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>channel_groups</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||||
|
<triggers>clean,full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
<dictionary>
|
||||||
|
<key>?children?</key>
|
||||||
|
<value>?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|?name?=entry\\\\\\\|\\\|\||</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>?name?</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||||
|
<value>ndk-build</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||||
|
<value>clean</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.contents</key>
|
||||||
|
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||||
|
<value>false</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||||
|
<triggers>full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
</natures>
|
||||||
|
<linkedResources>
|
||||||
|
<link>
|
||||||
|
<name>jni/channel_groups.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/channel_groups.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>fmod.jar</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-4-PROJECT_LOC/lowlevel/lib/fmod.jar</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>assets</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/media</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>src/org</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/java/org</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.h</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.h</locationURI>
|
||||||
|
</link>
|
||||||
|
</linkedResources>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="org.fmod.example"
|
||||||
|
android:versionCode="1"
|
||||||
|
android:versionName="1.0">
|
||||||
|
|
||||||
|
<uses-sdk
|
||||||
|
android:minSdkVersion="4"
|
||||||
|
android:targetSdkVersion="21" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
|
<application
|
||||||
|
android:icon="@drawable/icon"
|
||||||
|
android:allowBackup="true"
|
||||||
|
android:label="FMOD Example">
|
||||||
|
<activity android:name=".MainActivity">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
</manifest>
|
|
@ -0,0 +1,26 @@
|
||||||
|
LOCAL_PATH := $(call my-dir)
|
||||||
|
|
||||||
|
#
|
||||||
|
# FMOD Shared Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := fmod
|
||||||
|
LOCAL_SRC_FILES := ../../../../../lowlevel/lib/$(TARGET_ARCH_ABI)/libfmodL.so
|
||||||
|
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../../lowlevel/inc
|
||||||
|
|
||||||
|
include $(PREBUILT_SHARED_LIBRARY)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Example Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := example
|
||||||
|
LOCAL_SRC_FILES := ../../../common_platform.cpp \
|
||||||
|
../../../common.cpp \
|
||||||
|
../../../channel_groups.cpp
|
||||||
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../
|
||||||
|
LOCAL_SHARED_LIBRARIES := fmod
|
||||||
|
|
||||||
|
include $(BUILD_SHARED_LIBRARY)
|
|
@ -0,0 +1,3 @@
|
||||||
|
APP_PLATFORM := android-4
|
||||||
|
APP_ABI := armeabi armeabi-v7a x86 arm64-v8a
|
||||||
|
APP_STL := stlport_shared
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Project target.
|
||||||
|
target=android-21
|
After Width: | Height: | Size: 2.3 KiB |
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="src" path="gen"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||||
|
<classpathentry exported="true" kind="lib" path="fmod.jar"/>
|
||||||
|
<classpathentry kind="output" path="bin/classes"/>
|
||||||
|
</classpath>
|
|
@ -0,0 +1,54 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
<cconfiguration id="com.android.toolchain.gcc.367937256">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.android.toolchain.gcc.367937256" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.android.toolchain.gcc.367937256" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="com.android.toolchain.gcc.367937256.1934632123" name="/" resourcePath="">
|
||||||
|
<toolChain id="com.android.toolchain.gcc.1304477811" name="com.android.toolchain.gcc" superClass="com.android.toolchain.gcc">
|
||||||
|
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="com.android.targetPlatform.515624550" isAbstract="false" superClass="com.android.targetPlatform"/>
|
||||||
|
<builder arguments="NDK_DEBUG=1" command="ndk-build" id="com.android.builder.222443332" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Android Builder" superClass="com.android.builder">
|
||||||
|
<outputEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="obj"/>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="libs"/>
|
||||||
|
</outputEntries>
|
||||||
|
</builder>
|
||||||
|
<tool id="com.android.gcc.compiler.962627632" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
|
||||||
|
<inputType id="com.android.gcc.inputType.1936354764" superClass="com.android.gcc.inputType"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="jni"/>
|
||||||
|
</sourceEntries>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="Example.null.1010603500" name="Example"/>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<scannerConfigBuildInfo instanceId="com.android.toolchain.gcc.367937256;com.android.toolchain.gcc.367937256.1934632123;com.android.gcc.compiler.962627632;com.android.gcc.inputType.1936354764">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.android.AndroidPerProjectProfile"/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="refreshScope" versionNumber="1">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/Example"/>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
|
@ -0,0 +1,139 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>convolution_reverb</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||||
|
<triggers>clean,full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
<dictionary>
|
||||||
|
<key>?children?</key>
|
||||||
|
<value>?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|?name?=entry\\\\\\\|\\\|\||</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>?name?</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||||
|
<value>ndk-build</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||||
|
<value>clean</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.contents</key>
|
||||||
|
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||||
|
<value>false</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||||
|
<triggers>full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
</natures>
|
||||||
|
<linkedResources>
|
||||||
|
<link>
|
||||||
|
<name>jni/convolution_reverb.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/convolution_reverb.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>fmod.jar</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-4-PROJECT_LOC/lowlevel/lib/fmod.jar</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>assets</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/media</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>src/org</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/java/org</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.h</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.h</locationURI>
|
||||||
|
</link>
|
||||||
|
</linkedResources>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="org.fmod.example"
|
||||||
|
android:versionCode="1"
|
||||||
|
android:versionName="1.0">
|
||||||
|
|
||||||
|
<uses-sdk
|
||||||
|
android:minSdkVersion="4"
|
||||||
|
android:targetSdkVersion="21" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
|
<application
|
||||||
|
android:icon="@drawable/icon"
|
||||||
|
android:allowBackup="true"
|
||||||
|
android:label="FMOD Example">
|
||||||
|
<activity android:name=".MainActivity">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
</manifest>
|
|
@ -0,0 +1,26 @@
|
||||||
|
LOCAL_PATH := $(call my-dir)
|
||||||
|
|
||||||
|
#
|
||||||
|
# FMOD Shared Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := fmod
|
||||||
|
LOCAL_SRC_FILES := ../../../../../lowlevel/lib/$(TARGET_ARCH_ABI)/libfmodL.so
|
||||||
|
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../../lowlevel/inc
|
||||||
|
|
||||||
|
include $(PREBUILT_SHARED_LIBRARY)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Example Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := example
|
||||||
|
LOCAL_SRC_FILES := ../../../common_platform.cpp \
|
||||||
|
../../../common.cpp \
|
||||||
|
../../../convolution_reverb.cpp
|
||||||
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../
|
||||||
|
LOCAL_SHARED_LIBRARIES := fmod
|
||||||
|
|
||||||
|
include $(BUILD_SHARED_LIBRARY)
|
|
@ -0,0 +1,3 @@
|
||||||
|
APP_PLATFORM := android-4
|
||||||
|
APP_ABI := armeabi armeabi-v7a x86 arm64-v8a
|
||||||
|
APP_STL := stlport_shared
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Project target.
|
||||||
|
target=android-21
|
After Width: | Height: | Size: 2.3 KiB |
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="src" path="gen"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||||
|
<classpathentry exported="true" kind="lib" path="fmod.jar"/>
|
||||||
|
<classpathentry kind="output" path="bin/classes"/>
|
||||||
|
</classpath>
|
|
@ -0,0 +1,54 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
<cconfiguration id="com.android.toolchain.gcc.367937256">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.android.toolchain.gcc.367937256" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.android.toolchain.gcc.367937256" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="com.android.toolchain.gcc.367937256.1934632123" name="/" resourcePath="">
|
||||||
|
<toolChain id="com.android.toolchain.gcc.1304477811" name="com.android.toolchain.gcc" superClass="com.android.toolchain.gcc">
|
||||||
|
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="com.android.targetPlatform.515624550" isAbstract="false" superClass="com.android.targetPlatform"/>
|
||||||
|
<builder arguments="NDK_DEBUG=1" command="ndk-build" id="com.android.builder.222443332" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Android Builder" superClass="com.android.builder">
|
||||||
|
<outputEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="obj"/>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="libs"/>
|
||||||
|
</outputEntries>
|
||||||
|
</builder>
|
||||||
|
<tool id="com.android.gcc.compiler.962627632" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
|
||||||
|
<inputType id="com.android.gcc.inputType.1936354764" superClass="com.android.gcc.inputType"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="jni"/>
|
||||||
|
</sourceEntries>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="Example.null.1010603500" name="Example"/>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<scannerConfigBuildInfo instanceId="com.android.toolchain.gcc.367937256;com.android.toolchain.gcc.367937256.1934632123;com.android.gcc.compiler.962627632;com.android.gcc.inputType.1936354764">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.android.AndroidPerProjectProfile"/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="refreshScope" versionNumber="1">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/Example"/>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
|
@ -0,0 +1,139 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>dsp_custom</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||||
|
<triggers>clean,full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
<dictionary>
|
||||||
|
<key>?children?</key>
|
||||||
|
<value>?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|?name?=entry\\\\\\\|\\\|\||</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>?name?</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||||
|
<value>ndk-build</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||||
|
<value>clean</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.contents</key>
|
||||||
|
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||||
|
<value>false</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||||
|
<triggers>full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
</natures>
|
||||||
|
<linkedResources>
|
||||||
|
<link>
|
||||||
|
<name>jni/dsp_custom.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/dsp_custom.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>fmod.jar</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-4-PROJECT_LOC/lowlevel/lib/fmod.jar</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>assets</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/media</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>src/org</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/java/org</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.h</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.h</locationURI>
|
||||||
|
</link>
|
||||||
|
</linkedResources>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="org.fmod.example"
|
||||||
|
android:versionCode="1"
|
||||||
|
android:versionName="1.0">
|
||||||
|
|
||||||
|
<uses-sdk
|
||||||
|
android:minSdkVersion="4"
|
||||||
|
android:targetSdkVersion="21" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
|
<application
|
||||||
|
android:icon="@drawable/icon"
|
||||||
|
android:allowBackup="true"
|
||||||
|
android:label="FMOD Example">
|
||||||
|
<activity android:name=".MainActivity">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
</manifest>
|
|
@ -0,0 +1,26 @@
|
||||||
|
LOCAL_PATH := $(call my-dir)
|
||||||
|
|
||||||
|
#
|
||||||
|
# FMOD Shared Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := fmod
|
||||||
|
LOCAL_SRC_FILES := ../../../../../lowlevel/lib/$(TARGET_ARCH_ABI)/libfmodL.so
|
||||||
|
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../../lowlevel/inc
|
||||||
|
|
||||||
|
include $(PREBUILT_SHARED_LIBRARY)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Example Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := example
|
||||||
|
LOCAL_SRC_FILES := ../../../common_platform.cpp \
|
||||||
|
../../../common.cpp \
|
||||||
|
../../../dsp_custom.cpp
|
||||||
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../
|
||||||
|
LOCAL_SHARED_LIBRARIES := fmod
|
||||||
|
|
||||||
|
include $(BUILD_SHARED_LIBRARY)
|
|
@ -0,0 +1,3 @@
|
||||||
|
APP_PLATFORM := android-4
|
||||||
|
APP_ABI := armeabi armeabi-v7a x86 arm64-v8a
|
||||||
|
APP_STL := stlport_shared
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Project target.
|
||||||
|
target=android-21
|
After Width: | Height: | Size: 2.3 KiB |
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="src" path="gen"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||||
|
<classpathentry exported="true" kind="lib" path="fmod.jar"/>
|
||||||
|
<classpathentry kind="output" path="bin/classes"/>
|
||||||
|
</classpath>
|
|
@ -0,0 +1,54 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
<cconfiguration id="com.android.toolchain.gcc.367937256">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.android.toolchain.gcc.367937256" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.android.toolchain.gcc.367937256" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="com.android.toolchain.gcc.367937256.1934632123" name="/" resourcePath="">
|
||||||
|
<toolChain id="com.android.toolchain.gcc.1304477811" name="com.android.toolchain.gcc" superClass="com.android.toolchain.gcc">
|
||||||
|
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="com.android.targetPlatform.515624550" isAbstract="false" superClass="com.android.targetPlatform"/>
|
||||||
|
<builder arguments="NDK_DEBUG=1" command="ndk-build" id="com.android.builder.222443332" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Android Builder" superClass="com.android.builder">
|
||||||
|
<outputEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="obj"/>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="libs"/>
|
||||||
|
</outputEntries>
|
||||||
|
</builder>
|
||||||
|
<tool id="com.android.gcc.compiler.962627632" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
|
||||||
|
<inputType id="com.android.gcc.inputType.1936354764" superClass="com.android.gcc.inputType"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="jni"/>
|
||||||
|
</sourceEntries>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="Example.null.1010603500" name="Example"/>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<scannerConfigBuildInfo instanceId="com.android.toolchain.gcc.367937256;com.android.toolchain.gcc.367937256.1934632123;com.android.gcc.compiler.962627632;com.android.gcc.inputType.1936354764">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.android.AndroidPerProjectProfile"/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="refreshScope" versionNumber="1">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/Example"/>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
|
@ -0,0 +1,139 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>dsp_effect_per_speaker</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||||
|
<triggers>clean,full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
<dictionary>
|
||||||
|
<key>?children?</key>
|
||||||
|
<value>?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|?name?=entry\\\\\\\|\\\|\||</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>?name?</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||||
|
<value>ndk-build</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||||
|
<value>clean</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.contents</key>
|
||||||
|
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||||
|
<value>false</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||||
|
<triggers>full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
</natures>
|
||||||
|
<linkedResources>
|
||||||
|
<link>
|
||||||
|
<name>jni/dsp_effect_per_speaker.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/dsp_effect_per_speaker.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>fmod.jar</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-4-PROJECT_LOC/lowlevel/lib/fmod.jar</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>assets</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/media</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>src/org</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/java/org</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.h</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.h</locationURI>
|
||||||
|
</link>
|
||||||
|
</linkedResources>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="org.fmod.example"
|
||||||
|
android:versionCode="1"
|
||||||
|
android:versionName="1.0">
|
||||||
|
|
||||||
|
<uses-sdk
|
||||||
|
android:minSdkVersion="4"
|
||||||
|
android:targetSdkVersion="21" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
|
<application
|
||||||
|
android:icon="@drawable/icon"
|
||||||
|
android:allowBackup="true"
|
||||||
|
android:label="FMOD Example">
|
||||||
|
<activity android:name=".MainActivity">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
</manifest>
|
|
@ -0,0 +1,26 @@
|
||||||
|
LOCAL_PATH := $(call my-dir)
|
||||||
|
|
||||||
|
#
|
||||||
|
# FMOD Shared Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := fmod
|
||||||
|
LOCAL_SRC_FILES := ../../../../../lowlevel/lib/$(TARGET_ARCH_ABI)/libfmodL.so
|
||||||
|
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../../lowlevel/inc
|
||||||
|
|
||||||
|
include $(PREBUILT_SHARED_LIBRARY)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Example Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := example
|
||||||
|
LOCAL_SRC_FILES := ../../../common_platform.cpp \
|
||||||
|
../../../common.cpp \
|
||||||
|
../../../dsp_effect_per_speaker.cpp
|
||||||
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../
|
||||||
|
LOCAL_SHARED_LIBRARIES := fmod
|
||||||
|
|
||||||
|
include $(BUILD_SHARED_LIBRARY)
|
|
@ -0,0 +1,3 @@
|
||||||
|
APP_PLATFORM := android-4
|
||||||
|
APP_ABI := armeabi armeabi-v7a x86 arm64-v8a
|
||||||
|
APP_STL := stlport_shared
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Project target.
|
||||||
|
target=android-21
|
After Width: | Height: | Size: 2.3 KiB |
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="src" path="gen"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||||
|
<classpathentry exported="true" kind="lib" path="fmod.jar"/>
|
||||||
|
<classpathentry kind="output" path="bin/classes"/>
|
||||||
|
</classpath>
|
|
@ -0,0 +1,54 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
<cconfiguration id="com.android.toolchain.gcc.367937256">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.android.toolchain.gcc.367937256" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.android.toolchain.gcc.367937256" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="com.android.toolchain.gcc.367937256.1934632123" name="/" resourcePath="">
|
||||||
|
<toolChain id="com.android.toolchain.gcc.1304477811" name="com.android.toolchain.gcc" superClass="com.android.toolchain.gcc">
|
||||||
|
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="com.android.targetPlatform.515624550" isAbstract="false" superClass="com.android.targetPlatform"/>
|
||||||
|
<builder arguments="NDK_DEBUG=1" command="ndk-build" id="com.android.builder.222443332" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Android Builder" superClass="com.android.builder">
|
||||||
|
<outputEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="obj"/>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="libs"/>
|
||||||
|
</outputEntries>
|
||||||
|
</builder>
|
||||||
|
<tool id="com.android.gcc.compiler.962627632" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
|
||||||
|
<inputType id="com.android.gcc.inputType.1936354764" superClass="com.android.gcc.inputType"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="jni"/>
|
||||||
|
</sourceEntries>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="Example.null.1010603500" name="Example"/>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<scannerConfigBuildInfo instanceId="com.android.toolchain.gcc.367937256;com.android.toolchain.gcc.367937256.1934632123;com.android.gcc.compiler.962627632;com.android.gcc.inputType.1936354764">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.android.AndroidPerProjectProfile"/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="refreshScope" versionNumber="1">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/Example"/>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
|
@ -0,0 +1,139 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>dsp_inspector</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||||
|
<triggers>clean,full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
<dictionary>
|
||||||
|
<key>?children?</key>
|
||||||
|
<value>?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|?name?=entry\\\\\\\|\\\|\||</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>?name?</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||||
|
<value>ndk-build</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||||
|
<value>clean</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.contents</key>
|
||||||
|
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||||
|
<value>false</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||||
|
<triggers>full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
</natures>
|
||||||
|
<linkedResources>
|
||||||
|
<link>
|
||||||
|
<name>jni/dsp_inspector.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/dsp_inspector.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>fmod.jar</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-4-PROJECT_LOC/lowlevel/lib/fmod.jar</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>assets</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/media</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>src/org</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/java/org</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.h</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.h</locationURI>
|
||||||
|
</link>
|
||||||
|
</linkedResources>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="org.fmod.example"
|
||||||
|
android:versionCode="1"
|
||||||
|
android:versionName="1.0">
|
||||||
|
|
||||||
|
<uses-sdk
|
||||||
|
android:minSdkVersion="4"
|
||||||
|
android:targetSdkVersion="21" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
|
<application
|
||||||
|
android:icon="@drawable/icon"
|
||||||
|
android:allowBackup="true"
|
||||||
|
android:label="FMOD Example">
|
||||||
|
<activity android:name=".MainActivity">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
</manifest>
|
|
@ -0,0 +1,26 @@
|
||||||
|
LOCAL_PATH := $(call my-dir)
|
||||||
|
|
||||||
|
#
|
||||||
|
# FMOD Shared Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := fmod
|
||||||
|
LOCAL_SRC_FILES := ../../../../../lowlevel/lib/$(TARGET_ARCH_ABI)/libfmodL.so
|
||||||
|
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../../lowlevel/inc
|
||||||
|
|
||||||
|
include $(PREBUILT_SHARED_LIBRARY)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Example Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := example
|
||||||
|
LOCAL_SRC_FILES := ../../../common_platform.cpp \
|
||||||
|
../../../common.cpp \
|
||||||
|
../../../dsp_inspector.cpp
|
||||||
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../
|
||||||
|
LOCAL_SHARED_LIBRARIES := fmod
|
||||||
|
|
||||||
|
include $(BUILD_SHARED_LIBRARY)
|
|
@ -0,0 +1,3 @@
|
||||||
|
APP_PLATFORM := android-4
|
||||||
|
APP_ABI := armeabi armeabi-v7a x86 arm64-v8a
|
||||||
|
APP_STL := stlport_shared
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Project target.
|
||||||
|
target=android-21
|
After Width: | Height: | Size: 2.3 KiB |
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="src" path="gen"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||||
|
<classpathentry exported="true" kind="lib" path="fmod.jar"/>
|
||||||
|
<classpathentry kind="output" path="bin/classes"/>
|
||||||
|
</classpath>
|
|
@ -0,0 +1,54 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
<cconfiguration id="com.android.toolchain.gcc.367937256">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.android.toolchain.gcc.367937256" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.android.toolchain.gcc.367937256" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="com.android.toolchain.gcc.367937256.1934632123" name="/" resourcePath="">
|
||||||
|
<toolChain id="com.android.toolchain.gcc.1304477811" name="com.android.toolchain.gcc" superClass="com.android.toolchain.gcc">
|
||||||
|
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="com.android.targetPlatform.515624550" isAbstract="false" superClass="com.android.targetPlatform"/>
|
||||||
|
<builder arguments="NDK_DEBUG=1" command="ndk-build" id="com.android.builder.222443332" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Android Builder" superClass="com.android.builder">
|
||||||
|
<outputEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="obj"/>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="libs"/>
|
||||||
|
</outputEntries>
|
||||||
|
</builder>
|
||||||
|
<tool id="com.android.gcc.compiler.962627632" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
|
||||||
|
<inputType id="com.android.gcc.inputType.1936354764" superClass="com.android.gcc.inputType"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="jni"/>
|
||||||
|
</sourceEntries>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="Example.null.1010603500" name="Example"/>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<scannerConfigBuildInfo instanceId="com.android.toolchain.gcc.367937256;com.android.toolchain.gcc.367937256.1934632123;com.android.gcc.compiler.962627632;com.android.gcc.inputType.1936354764">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.android.AndroidPerProjectProfile"/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="refreshScope" versionNumber="1">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/Example"/>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
|
@ -0,0 +1,139 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>effects</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||||
|
<triggers>clean,full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
<dictionary>
|
||||||
|
<key>?children?</key>
|
||||||
|
<value>?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|?name?=entry\\\\\\\|\\\|\||</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>?name?</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||||
|
<value>ndk-build</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||||
|
<value>clean</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.contents</key>
|
||||||
|
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||||
|
<value>false</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||||
|
<triggers>full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
</natures>
|
||||||
|
<linkedResources>
|
||||||
|
<link>
|
||||||
|
<name>jni/effects.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/effects.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>fmod.jar</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-4-PROJECT_LOC/lowlevel/lib/fmod.jar</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>assets</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/media</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>src/org</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/java/org</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.h</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.h</locationURI>
|
||||||
|
</link>
|
||||||
|
</linkedResources>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="org.fmod.example"
|
||||||
|
android:versionCode="1"
|
||||||
|
android:versionName="1.0">
|
||||||
|
|
||||||
|
<uses-sdk
|
||||||
|
android:minSdkVersion="4"
|
||||||
|
android:targetSdkVersion="21" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
|
<application
|
||||||
|
android:icon="@drawable/icon"
|
||||||
|
android:allowBackup="true"
|
||||||
|
android:label="FMOD Example">
|
||||||
|
<activity android:name=".MainActivity">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
</manifest>
|
|
@ -0,0 +1,26 @@
|
||||||
|
LOCAL_PATH := $(call my-dir)
|
||||||
|
|
||||||
|
#
|
||||||
|
# FMOD Shared Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := fmod
|
||||||
|
LOCAL_SRC_FILES := ../../../../../lowlevel/lib/$(TARGET_ARCH_ABI)/libfmodL.so
|
||||||
|
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../../lowlevel/inc
|
||||||
|
|
||||||
|
include $(PREBUILT_SHARED_LIBRARY)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Example Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := example
|
||||||
|
LOCAL_SRC_FILES := ../../../common_platform.cpp \
|
||||||
|
../../../common.cpp \
|
||||||
|
../../../effects.cpp
|
||||||
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../
|
||||||
|
LOCAL_SHARED_LIBRARIES := fmod
|
||||||
|
|
||||||
|
include $(BUILD_SHARED_LIBRARY)
|
|
@ -0,0 +1,3 @@
|
||||||
|
APP_PLATFORM := android-4
|
||||||
|
APP_ABI := armeabi armeabi-v7a x86 arm64-v8a
|
||||||
|
APP_STL := stlport_shared
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Project target.
|
||||||
|
target=android-21
|
After Width: | Height: | Size: 2.3 KiB |
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="src" path="gen"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||||
|
<classpathentry exported="true" kind="lib" path="fmod.jar"/>
|
||||||
|
<classpathentry kind="output" path="bin/classes"/>
|
||||||
|
</classpath>
|
|
@ -0,0 +1,54 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
<cconfiguration id="com.android.toolchain.gcc.367937256">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.android.toolchain.gcc.367937256" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.android.toolchain.gcc.367937256" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="com.android.toolchain.gcc.367937256.1934632123" name="/" resourcePath="">
|
||||||
|
<toolChain id="com.android.toolchain.gcc.1304477811" name="com.android.toolchain.gcc" superClass="com.android.toolchain.gcc">
|
||||||
|
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="com.android.targetPlatform.515624550" isAbstract="false" superClass="com.android.targetPlatform"/>
|
||||||
|
<builder arguments="NDK_DEBUG=1" command="ndk-build" id="com.android.builder.222443332" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Android Builder" superClass="com.android.builder">
|
||||||
|
<outputEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="obj"/>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="libs"/>
|
||||||
|
</outputEntries>
|
||||||
|
</builder>
|
||||||
|
<tool id="com.android.gcc.compiler.962627632" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
|
||||||
|
<inputType id="com.android.gcc.inputType.1936354764" superClass="com.android.gcc.inputType"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="jni"/>
|
||||||
|
</sourceEntries>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="Example.null.1010603500" name="Example"/>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<scannerConfigBuildInfo instanceId="com.android.toolchain.gcc.367937256;com.android.toolchain.gcc.367937256.1934632123;com.android.gcc.compiler.962627632;com.android.gcc.inputType.1936354764">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.android.AndroidPerProjectProfile"/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="refreshScope" versionNumber="1">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/Example"/>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
|
@ -0,0 +1,139 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>gapless_playback</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||||
|
<triggers>clean,full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
<dictionary>
|
||||||
|
<key>?children?</key>
|
||||||
|
<value>?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|?name?=entry\\\\\\\|\\\|\||</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>?name?</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||||
|
<value>ndk-build</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||||
|
<value>clean</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.contents</key>
|
||||||
|
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||||
|
<value>false</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||||
|
<triggers>full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
</natures>
|
||||||
|
<linkedResources>
|
||||||
|
<link>
|
||||||
|
<name>jni/gapless_playback.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/gapless_playback.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>fmod.jar</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-4-PROJECT_LOC/lowlevel/lib/fmod.jar</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>assets</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/media</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>src/org</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/java/org</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.h</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.h</locationURI>
|
||||||
|
</link>
|
||||||
|
</linkedResources>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="org.fmod.example"
|
||||||
|
android:versionCode="1"
|
||||||
|
android:versionName="1.0">
|
||||||
|
|
||||||
|
<uses-sdk
|
||||||
|
android:minSdkVersion="4"
|
||||||
|
android:targetSdkVersion="21" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
|
<application
|
||||||
|
android:icon="@drawable/icon"
|
||||||
|
android:allowBackup="true"
|
||||||
|
android:label="FMOD Example">
|
||||||
|
<activity android:name=".MainActivity">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
</manifest>
|
|
@ -0,0 +1,26 @@
|
||||||
|
LOCAL_PATH := $(call my-dir)
|
||||||
|
|
||||||
|
#
|
||||||
|
# FMOD Shared Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := fmod
|
||||||
|
LOCAL_SRC_FILES := ../../../../../lowlevel/lib/$(TARGET_ARCH_ABI)/libfmodL.so
|
||||||
|
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../../lowlevel/inc
|
||||||
|
|
||||||
|
include $(PREBUILT_SHARED_LIBRARY)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Example Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := example
|
||||||
|
LOCAL_SRC_FILES := ../../../common_platform.cpp \
|
||||||
|
../../../common.cpp \
|
||||||
|
../../../gapless_playback.cpp
|
||||||
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../
|
||||||
|
LOCAL_SHARED_LIBRARIES := fmod
|
||||||
|
|
||||||
|
include $(BUILD_SHARED_LIBRARY)
|
|
@ -0,0 +1,3 @@
|
||||||
|
APP_PLATFORM := android-4
|
||||||
|
APP_ABI := armeabi armeabi-v7a x86 arm64-v8a
|
||||||
|
APP_STL := stlport_shared
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Project target.
|
||||||
|
target=android-21
|
After Width: | Height: | Size: 2.3 KiB |
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
|
||||||
|
<classpathentry kind="src" path="src"/>
|
||||||
|
<classpathentry kind="src" path="gen"/>
|
||||||
|
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
|
||||||
|
<classpathentry exported="true" kind="lib" path="fmod.jar"/>
|
||||||
|
<classpathentry kind="output" path="bin/classes"/>
|
||||||
|
</classpath>
|
|
@ -0,0 +1,54 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
<cconfiguration id="com.android.toolchain.gcc.367937256">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.android.toolchain.gcc.367937256" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.android.toolchain.gcc.367937256" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="com.android.toolchain.gcc.367937256.1934632123" name="/" resourcePath="">
|
||||||
|
<toolChain id="com.android.toolchain.gcc.1304477811" name="com.android.toolchain.gcc" superClass="com.android.toolchain.gcc">
|
||||||
|
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="com.android.targetPlatform.515624550" isAbstract="false" superClass="com.android.targetPlatform"/>
|
||||||
|
<builder arguments="NDK_DEBUG=1" command="ndk-build" id="com.android.builder.222443332" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Android Builder" superClass="com.android.builder">
|
||||||
|
<outputEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="obj"/>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="libs"/>
|
||||||
|
</outputEntries>
|
||||||
|
</builder>
|
||||||
|
<tool id="com.android.gcc.compiler.962627632" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
|
||||||
|
<inputType id="com.android.gcc.inputType.1936354764" superClass="com.android.gcc.inputType"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="jni"/>
|
||||||
|
</sourceEntries>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="Example.null.1010603500" name="Example"/>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<scannerConfigBuildInfo instanceId="com.android.toolchain.gcc.367937256;com.android.toolchain.gcc.367937256.1934632123;com.android.gcc.compiler.962627632;com.android.gcc.inputType.1936354764">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.android.AndroidPerProjectProfile"/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="refreshScope" versionNumber="1">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/Example"/>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
|
@ -0,0 +1,139 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>generate_tone</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||||
|
<triggers>clean,full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
<dictionary>
|
||||||
|
<key>?children?</key>
|
||||||
|
<value>?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|?name?=entry\\\\\\\|\\\|\||</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>?name?</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.buildCommand</key>
|
||||||
|
<value>ndk-build</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
|
||||||
|
<value>clean</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.contents</key>
|
||||||
|
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||||
|
<value>false</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||||
|
<triggers>full,incremental,</triggers>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||||
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
|
</natures>
|
||||||
|
<linkedResources>
|
||||||
|
<link>
|
||||||
|
<name>jni/generate_tone.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/generate_tone.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>fmod.jar</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-4-PROJECT_LOC/lowlevel/lib/fmod.jar</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>assets</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/media</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>src/org</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/java/org</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common.h</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.cpp</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.cpp</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>jni/common_platform.h</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/common_platform.h</locationURI>
|
||||||
|
</link>
|
||||||
|
</linkedResources>
|
||||||
|
</projectDescription>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="org.fmod.example"
|
||||||
|
android:versionCode="1"
|
||||||
|
android:versionName="1.0">
|
||||||
|
|
||||||
|
<uses-sdk
|
||||||
|
android:minSdkVersion="4"
|
||||||
|
android:targetSdkVersion="21" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
|
<application
|
||||||
|
android:icon="@drawable/icon"
|
||||||
|
android:allowBackup="true"
|
||||||
|
android:label="FMOD Example">
|
||||||
|
<activity android:name=".MainActivity">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
</manifest>
|
|
@ -0,0 +1,26 @@
|
||||||
|
LOCAL_PATH := $(call my-dir)
|
||||||
|
|
||||||
|
#
|
||||||
|
# FMOD Shared Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := fmod
|
||||||
|
LOCAL_SRC_FILES := ../../../../../lowlevel/lib/$(TARGET_ARCH_ABI)/libfmodL.so
|
||||||
|
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../../lowlevel/inc
|
||||||
|
|
||||||
|
include $(PREBUILT_SHARED_LIBRARY)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Example Library
|
||||||
|
#
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
|
LOCAL_MODULE := example
|
||||||
|
LOCAL_SRC_FILES := ../../../common_platform.cpp \
|
||||||
|
../../../common.cpp \
|
||||||
|
../../../generate_tone.cpp
|
||||||
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../
|
||||||
|
LOCAL_SHARED_LIBRARIES := fmod
|
||||||
|
|
||||||
|
include $(BUILD_SHARED_LIBRARY)
|