Initial
This commit is contained in:
353
G-Audio/g-audio-main/src/C++/.gitignore
vendored
Normal file
353
G-Audio/g-audio-main/src/C++/.gitignore
vendored
Normal file
@@ -0,0 +1,353 @@
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
##
|
||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||
|
||||
# User-specific files
|
||||
*.rsuser
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Mono auto generated files
|
||||
mono_crash.*
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
[Aa][Rr][Mm]/
|
||||
[Aa][Rr][Mm]64/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Ll]og/
|
||||
|
||||
# Visual Studio 2015/2017 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# Visual Studio 2017 auto generated files
|
||||
Generated\ Files/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUnit
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
nunit-*.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# Benchmark Results
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
# .NET Core
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
|
||||
# StyleCop
|
||||
StyleCopReport.xml
|
||||
|
||||
# Files built by Visual Studio
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_h.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.iobj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.ipdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*_wpftmp.csproj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# Visual Studio Trace Files
|
||||
*.e2e
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding add-in
|
||||
.JustCode
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# AxoCover is a Code Coverage Tool
|
||||
.axoCover/*
|
||||
!.axoCover/settings.json
|
||||
|
||||
# Visual Studio code coverage results
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# NuGet Symbol Packages
|
||||
*.snupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/[Pp]ackages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/[Pp]ackages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/[Pp]ackages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignorable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
*.appx
|
||||
*.appxbundle
|
||||
*.appxupload
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!?*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.jfm
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
orleans.codegen.cs
|
||||
|
||||
# Including strong name files can present a security risk
|
||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||
#*.snk
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
ServiceFabricBackup/
|
||||
*.rptproj.bak
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
*.ndf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
*.rptproj.rsuser
|
||||
*- [Bb]ackup.rdl
|
||||
*- [Bb]ackup ([0-9]).rdl
|
||||
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
node_modules/
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||
*.vbw
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# CodeRush personal settings
|
||||
.cr/personal
|
||||
|
||||
# Python Tools for Visual Studio (PTVS)
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Cake - Uncomment if you are using it
|
||||
# tools/**
|
||||
# !tools/packages.config
|
||||
|
||||
# Tabs Studio
|
||||
*.tss
|
||||
|
||||
# Telerik's JustMock configuration file
|
||||
*.jmconfig
|
||||
|
||||
# BizTalk build output
|
||||
*.btp.cs
|
||||
*.btm.cs
|
||||
*.odx.cs
|
||||
*.xsd.cs
|
||||
|
||||
# OpenCover UI analysis results
|
||||
OpenCover/
|
||||
|
||||
# Azure Stream Analytics local run output
|
||||
ASALocalRun/
|
||||
|
||||
# MSBuild Binary and Structured Log
|
||||
*.binlog
|
||||
|
||||
# NVidia Nsight GPU debugger configuration file
|
||||
*.nvuser
|
||||
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
.mfractor/
|
||||
|
||||
# Local History for Visual Studio
|
||||
.localhistory/
|
||||
|
||||
# BeatPulse healthcheck temp database
|
||||
healthchecksdb
|
||||
|
||||
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||
MigrationBackup/
|
||||
|
||||
# zig tool
|
||||
zig/
|
||||
zig-cache/
|
||||
48
G-Audio/g-audio-main/src/C++/ReadMe.txt
Normal file
48
G-Audio/g-audio-main/src/C++/ReadMe.txt
Normal file
@@ -0,0 +1,48 @@
|
||||
========================================================================
|
||||
DYNAMIC LINK LIBRARY : g_audio Project Overview
|
||||
========================================================================
|
||||
|
||||
AppWizard has created this g_audio DLL for you.
|
||||
|
||||
This file contains a summary of what you will find in each of the files that
|
||||
make up your g_audio application.
|
||||
|
||||
|
||||
g_audio.vcxproj
|
||||
This is the main project file for VC++ projects generated using an Application Wizard.
|
||||
It contains information about the version of Visual C++ that generated the file, and
|
||||
information about the platforms, configurations, and project features selected with the
|
||||
Application Wizard.
|
||||
|
||||
g_audio.vcxproj.filters
|
||||
This is the filters file for VC++ projects generated using an Application Wizard.
|
||||
It contains information about the association between the files in your project
|
||||
and the filters. This association is used in the IDE to show grouping of files with
|
||||
similar extensions under a specific node (for e.g. ".cpp" files are associated with the
|
||||
"Source Files" filter).
|
||||
|
||||
g_audio.cpp
|
||||
This is the main DLL source file.
|
||||
|
||||
When created, this DLL does not export any symbols. As a result, it
|
||||
will not produce a .lib file when it is built. If you wish this project
|
||||
to be a project dependency of some other project, you will either need to
|
||||
add code to export some symbols from the DLL so that an export library
|
||||
will be produced, or you can set the Ignore Input Library property to Yes
|
||||
on the General propert page of the Linker folder in the project's Property
|
||||
Pages dialog box.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other standard files:
|
||||
|
||||
StdAfx.h, StdAfx.cpp
|
||||
These files are used to build a precompiled header (PCH) file
|
||||
named g_audio.pch and a precompiled types file named StdAfx.obj.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other notes:
|
||||
|
||||
AppWizard uses "TODO:" comments to indicate parts of the source code you
|
||||
should add to or customize.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
325
G-Audio/g-audio-main/src/C++/base64.cpp
Normal file
325
G-Audio/g-audio-main/src/C++/base64.cpp
Normal file
@@ -0,0 +1,325 @@
|
||||
/*
|
||||
* Written by Manuel Badzong. If you have suggestions or improvements, let me
|
||||
* know.
|
||||
*/
|
||||
#include "stdafx.h"
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
|
||||
static char encoder[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
static char decoder[256];
|
||||
static int initialized;
|
||||
|
||||
static void
|
||||
base64_init_decoder(void)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
if (initialized)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// -1 is used for error detection
|
||||
memset(decoder, -1, sizeof decoder);
|
||||
|
||||
for (; i < 64; decoder[(int) encoder[i]] = i, ++i);
|
||||
|
||||
initialized = 1;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static int
|
||||
base64_encsize(int size)
|
||||
{
|
||||
return 4 * ((size + 2) / 3);
|
||||
}
|
||||
|
||||
int
|
||||
base64_encode(char *dest, int size, unsigned char *src, int slen)
|
||||
{
|
||||
int dlen, i, j;
|
||||
uint32_t a, b, c, triple;
|
||||
|
||||
dlen = base64_encsize(slen);
|
||||
|
||||
// Sanity checks
|
||||
if (src == NULL || dest == NULL)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
if (dlen + 1 > size)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
if (slen == 0)
|
||||
{
|
||||
if (size > 0)
|
||||
{
|
||||
dest[0] = 0;
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (i = 0, j = 0; i < slen;)
|
||||
{
|
||||
a = src[i++];
|
||||
|
||||
// b and c may be off limit
|
||||
b = i < slen ? src[i++] : 0;
|
||||
c = i < slen ? src[i++] : 0;
|
||||
|
||||
triple = (a << 16) + (b << 8) + c;
|
||||
|
||||
dest[j++] = encoder[(triple >> 18) & 0x3F];
|
||||
dest[j++] = encoder[(triple >> 12) & 0x3F];
|
||||
dest[j++] = encoder[(triple >> 6) & 0x3F];
|
||||
dest[j++] = encoder[triple & 0x3F];
|
||||
}
|
||||
|
||||
// Pad zeroes at the end
|
||||
switch (slen % 3)
|
||||
{
|
||||
case 1:
|
||||
dest[j - 2] = '=';
|
||||
case 2:
|
||||
dest[j - 1] = '=';
|
||||
}
|
||||
|
||||
// Always add \0
|
||||
dest[j] = 0;
|
||||
|
||||
return dlen;
|
||||
}
|
||||
|
||||
char *
|
||||
base64_enc_malloc(unsigned char *src, int slen)
|
||||
{
|
||||
int size;
|
||||
char *buffer;
|
||||
|
||||
size = base64_encsize(slen) + 1;
|
||||
|
||||
buffer = (char *) malloc(size);
|
||||
if (buffer == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
size = base64_encode(buffer, size, src, slen);
|
||||
if (size == -1)
|
||||
{
|
||||
free(buffer);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
static int
|
||||
base64_decsize(char *src)
|
||||
{
|
||||
int slen, size, i;
|
||||
|
||||
if (src == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
slen = strlen(src);
|
||||
size = slen / 4 * 3;
|
||||
|
||||
// Count pad chars
|
||||
for (i = 0 ; src[slen - i - 1] == '='; ++i);
|
||||
|
||||
// Remove at most 2 bytes.
|
||||
return size - (i >= 2? 2: i);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
base64_decode(unsigned char *dest, int size, char *src)
|
||||
{
|
||||
int slen, dlen, padlen, i, j;
|
||||
uint32_t a, b, c, d, triple;
|
||||
|
||||
// Initialize decoder
|
||||
base64_init_decoder();
|
||||
|
||||
// Sanity checks
|
||||
if (src == NULL || dest == NULL)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
slen = strlen(src);
|
||||
if (slen == 0)
|
||||
{
|
||||
if (size > 0)
|
||||
{
|
||||
dest[0] = 0;
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Remove trailing pad characters.
|
||||
for (padlen = 0; src[slen - padlen - 1] == '='; ++padlen);
|
||||
if (padlen > 2)
|
||||
{
|
||||
slen -= padlen - 2;
|
||||
}
|
||||
if (slen % 4)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
dlen = base64_decsize(src);
|
||||
|
||||
// Check buffer size
|
||||
if (dlen + 1 > size)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (i = 0, j = 0; i < slen;)
|
||||
{
|
||||
a = decoder[(int) src[i++]];
|
||||
b = decoder[(int) src[i++]];
|
||||
c = decoder[(int) src[i++]];
|
||||
d = decoder[(int) src[i++]];
|
||||
|
||||
// Sextet 3 and 4 may be zero at the end
|
||||
if (i == slen)
|
||||
{
|
||||
if (src[slen - 1] == '=')
|
||||
{
|
||||
d = 0;
|
||||
if (src[slen - 2] == '=')
|
||||
{
|
||||
c = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Non-Base64 char
|
||||
if (a == -1 || b == -1 || c == -1 || d == -1)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
triple = (a << 18) + (b << 12) + (c << 6) + d;
|
||||
|
||||
if (j < dlen) dest[j++] = (triple >> 16) & 0xFF;
|
||||
if (j < dlen) dest[j++] = (triple >> 8) & 0xFF;
|
||||
if (j < dlen) dest[j++] = triple & 0xFF;
|
||||
}
|
||||
|
||||
// Always add \0
|
||||
dest[j] = 0;
|
||||
|
||||
return dlen;
|
||||
}
|
||||
|
||||
unsigned char *
|
||||
base64_dec_malloc(char *src, int32_t* dec_size)
|
||||
{
|
||||
int size;
|
||||
unsigned char *buffer;
|
||||
|
||||
if (dec_size == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
size = base64_decsize(src) + 1;
|
||||
|
||||
buffer = (unsigned char *) malloc(size);
|
||||
if (buffer == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
size = base64_decode(buffer, size, src);
|
||||
if (size == -1)
|
||||
{
|
||||
free(buffer);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*dec_size = size;
|
||||
return buffer;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
struct testcase {
|
||||
char *dec;
|
||||
char *enc;
|
||||
int fail;
|
||||
int reverse;
|
||||
};
|
||||
|
||||
struct testcase cases[] = {
|
||||
{"MQ==", "1", 0, 1},
|
||||
{"MTI=", "12", 0, 1},
|
||||
{"MTIz", "123", 0, 1},
|
||||
{"MTIzNA==", "1234", 0, 1},
|
||||
{"SGVsbG8gV29ybGQ=", "Hello World", 0, 1},
|
||||
{"aGVsbG8gd29ybGQ=", "hello world", 0, 1},
|
||||
{"Zm9vYmFy", "foobar", 0, 1},
|
||||
{"YmFyZm9v", "barfoo", 0, 1},
|
||||
{"dGVzdA==", "test", 0, 1},
|
||||
|
||||
// Edge cases
|
||||
{"", "", 0, 1},
|
||||
{"dGVzdA===", "test", 0, 0},
|
||||
{"dGVzdA====", "test", 0, 0},
|
||||
{"=", NULL, 1, 0},
|
||||
{"==", NULL, 1, 0},
|
||||
{"-", NULL, 1, 0},
|
||||
{"dGVzd=A==", NULL, 1, 0},
|
||||
{"dGVzd=A=", NULL, 1, 0},
|
||||
{"d-GVzdA==", NULL, 1, 0},
|
||||
{"dGVzdA.=", NULL, 1, 0},
|
||||
{"GVzdA==", NULL, 1, 0},
|
||||
{NULL, NULL, 0, 0}
|
||||
};
|
||||
char *buffer;
|
||||
struct testcase *tc;
|
||||
|
||||
for (tc = cases; tc->dec; ++tc)
|
||||
{
|
||||
// Decode
|
||||
buffer = (char *) base64_dec_malloc(tc->dec);
|
||||
if (tc->fail)
|
||||
{
|
||||
assert(buffer == NULL);
|
||||
continue;
|
||||
}
|
||||
|
||||
assert(buffer != NULL);
|
||||
assert(strcmp(buffer, tc->enc) == 0);
|
||||
free(buffer);
|
||||
|
||||
// Encode
|
||||
if (tc->reverse)
|
||||
{
|
||||
buffer = base64_enc_malloc((unsigned char *) tc->enc, strlen(tc->enc));
|
||||
assert(buffer != NULL);
|
||||
assert(strcmp(buffer, tc->dec) == 0);
|
||||
free(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
13
G-Audio/g-audio-main/src/C++/base64.h
Normal file
13
G-Audio/g-audio-main/src/C++/base64.h
Normal file
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
* Written by Manuel Badzong. If you have suggestions or improvements, let me
|
||||
* know.
|
||||
*/
|
||||
#ifndef _BASE64_H_
|
||||
#define _BASE64_H_
|
||||
|
||||
int base64_encode(char *dest, int size, unsigned char *src, int slen);
|
||||
char *base64_enc_malloc(unsigned char *src, int slen);
|
||||
int base64_decode(unsigned char *dest, int size, char *src);
|
||||
unsigned char *base64_dec_malloc(char *src, int32_t* dec_size);
|
||||
|
||||
#endif
|
||||
22
G-Audio/g-audio-main/src/C++/dllmain.cpp
Normal file
22
G-Audio/g-audio-main/src/C++/dllmain.cpp
Normal file
@@ -0,0 +1,22 @@
|
||||
#if defined( _WIN32 )
|
||||
|
||||
// dllmain.cpp : Defines the entry point for the DLL application.
|
||||
#include "stdafx.h"
|
||||
|
||||
BOOL APIENTRY DllMain( HMODULE hModule,
|
||||
DWORD ul_reason_for_call,
|
||||
LPVOID lpReserved
|
||||
)
|
||||
{
|
||||
switch (ul_reason_for_call)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
case DLL_THREAD_ATTACH:
|
||||
case DLL_THREAD_DETACH:
|
||||
case DLL_PROCESS_DETACH:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#endif
|
||||
12374
G-Audio/g-audio-main/src/C++/dr_flac.h
Normal file
12374
G-Audio/g-audio-main/src/C++/dr_flac.h
Normal file
File diff suppressed because it is too large
Load Diff
8305
G-Audio/g-audio-main/src/C++/dr_wav.h
Normal file
8305
G-Audio/g-audio-main/src/C++/dr_wav.h
Normal file
File diff suppressed because it is too large
Load Diff
3087
G-Audio/g-audio-main/src/C++/g_audio.cpp
Normal file
3087
G-Audio/g-audio-main/src/C++/g_audio.cpp
Normal file
File diff suppressed because it is too large
Load Diff
1400
G-Audio/g-audio-main/src/C++/g_audio.h
Normal file
1400
G-Audio/g-audio-main/src/C++/g_audio.h
Normal file
File diff suppressed because it is too large
Load Diff
BIN
G-Audio/g-audio-main/src/C++/g_audio.rc
Normal file
BIN
G-Audio/g-audio-main/src/C++/g_audio.rc
Normal file
Binary file not shown.
28
G-Audio/g-audio-main/src/C++/g_audio.sln
Normal file
28
G-Audio/g-audio-main/src/C++/g_audio.sln
Normal file
@@ -0,0 +1,28 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "g_audio", "g_audio.vcxproj", "{1EB632F7-46B4-486C-A9C0-5919F46BB496}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{1EB632F7-46B4-486C-A9C0-5919F46BB496}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{1EB632F7-46B4-486C-A9C0-5919F46BB496}.Debug|x64.Build.0 = Debug|x64
|
||||
{1EB632F7-46B4-486C-A9C0-5919F46BB496}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{1EB632F7-46B4-486C-A9C0-5919F46BB496}.Debug|x86.Build.0 = Debug|Win32
|
||||
{1EB632F7-46B4-486C-A9C0-5919F46BB496}.Release|x64.ActiveCfg = Release|x64
|
||||
{1EB632F7-46B4-486C-A9C0-5919F46BB496}.Release|x64.Build.0 = Release|x64
|
||||
{1EB632F7-46B4-486C-A9C0-5919F46BB496}.Release|x86.ActiveCfg = Release|Win32
|
||||
{1EB632F7-46B4-486C-A9C0-5919F46BB496}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
212
G-Audio/g-audio-main/src/C++/g_audio.vcxproj
Normal file
212
G-Audio/g-audio-main/src/C++/g_audio.vcxproj
Normal file
@@ -0,0 +1,212 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{1EB632F7-46B4-486C-A9C0-5919F46BB496}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>g_audio</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>g_audio</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<TargetName>$(ProjectName)_$(PlatformArchitecture)_DEBUG</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<TargetName>$(ProjectName)_$(PlatformArchitecture)_DEBUG</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<TargetName>$(ProjectName)_$(PlatformArchitecture)</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<TargetName>$(ProjectName)_$(PlatformArchitecture)</TargetName>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;G_AUDIO_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_DEBUG;_WINDOWS;_USRDLL;G_AUDIO_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;G_AUDIO_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ImageHasSafeExceptionHandlers>true</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>copy /Y "$(OutDir)$(TargetFileName)" "$(SolutionDir)..\LabVIEW\G-Audio\lib\$(TargetFileName)"</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>NDEBUG;_WINDOWS;_USRDLL;G_AUDIO_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>copy /Y "$(OutDir)$(TargetFileName)" "$(SolutionDir)..\LabVIEW\G-Audio\lib\$(TargetFileName)"</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="ReadMe.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="base64.h" />
|
||||
<ClInclude Include="dr_flac.h" />
|
||||
<ClInclude Include="g_audio.h" />
|
||||
<ClInclude Include="dr_wav.h" />
|
||||
<ClInclude Include="id3tag.h" />
|
||||
<ClInclude Include="miniaudio.h" />
|
||||
<ClInclude Include="minimp3.h" />
|
||||
<ClInclude Include="minimp3_ex.h" />
|
||||
<ClInclude Include="resource.h" />
|
||||
<ClInclude Include="stb_image.h" />
|
||||
<ClInclude Include="stb_vorbis.h" />
|
||||
<ClInclude Include="stdafx.h" />
|
||||
<ClInclude Include="targetver.h" />
|
||||
<ClInclude Include="thread.h" />
|
||||
<ClInclude Include="thread_safety.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="base64.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Use</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="g_audio.cpp" />
|
||||
<ClCompile Include="dllmain.cpp">
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
</PrecompiledHeader>
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="thread_safety.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="g_audio.rc" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
89
G-Audio/g-audio-main/src/C++/g_audio.vcxproj.filters
Normal file
89
G-Audio/g-audio-main/src/C++/g_audio.vcxproj.filters
Normal file
@@ -0,0 +1,89 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="ReadMe.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="stdafx.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="targetver.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="resource.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="dr_wav.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="minimp3_ex.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="minimp3.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="thread.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="thread_safety.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="g_audio.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="stb_vorbis.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="dr_flac.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="miniaudio.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="id3tag.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="stb_image.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="base64.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="dllmain.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="thread_safety.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="g_audio.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="base64.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="g_audio.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
1088
G-Audio/g-audio-main/src/C++/id3tag.h
Normal file
1088
G-Audio/g-audio-main/src/C++/id3tag.h
Normal file
File diff suppressed because it is too large
Load Diff
6
G-Audio/g-audio-main/src/C++/make.sh
Normal file
6
G-Audio/g-audio-main/src/C++/make.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
OUTPUT_PATH=../LabVIEW/G-Audio/lib
|
||||
|
||||
mkdir -p $OUTPUT_PATH
|
||||
g++ -shared -fPIC -o g_audio_64.so *.cpp -lm -lpthread -ldl -O3
|
||||
mv g_audio_64.so $OUTPUT_PATH
|
||||
5
G-Audio/g-audio-main/src/C++/make_linx.sh
Normal file
5
G-Audio/g-audio-main/src/C++/make_linx.sh
Normal file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
OUTPUT_PATH=/usr/lib
|
||||
|
||||
g++ -shared -fPIC -o g_audio_32.so *.cpp -lm -lpthread -ldl -std=c++11 -mfpu=neon -mfloat-abi=softfp -O3
|
||||
mv g_audio_32.so $OUTPUT_PATH
|
||||
90463
G-Audio/g-audio-main/src/C++/miniaudio.h
Normal file
90463
G-Audio/g-audio-main/src/C++/miniaudio.h
Normal file
File diff suppressed because it is too large
Load Diff
1865
G-Audio/g-audio-main/src/C++/minimp3.h
Normal file
1865
G-Audio/g-audio-main/src/C++/minimp3.h
Normal file
File diff suppressed because it is too large
Load Diff
1397
G-Audio/g-audio-main/src/C++/minimp3_ex.h
Normal file
1397
G-Audio/g-audio-main/src/C++/minimp3_ex.h
Normal file
File diff suppressed because it is too large
Load Diff
14
G-Audio/g-audio-main/src/C++/resource.h
Normal file
14
G-Audio/g-audio-main/src/C++/resource.h
Normal file
@@ -0,0 +1,14 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by g_audio.rc
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 101
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1001
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
7899
G-Audio/g-audio-main/src/C++/stb_image.h
Normal file
7899
G-Audio/g-audio-main/src/C++/stb_image.h
Normal file
File diff suppressed because it is too large
Load Diff
5584
G-Audio/g-audio-main/src/C++/stb_vorbis.h
Normal file
5584
G-Audio/g-audio-main/src/C++/stb_vorbis.h
Normal file
File diff suppressed because it is too large
Load Diff
8
G-Audio/g-audio-main/src/C++/stdafx.cpp
Normal file
8
G-Audio/g-audio-main/src/C++/stdafx.cpp
Normal file
@@ -0,0 +1,8 @@
|
||||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// g_audio.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// TODO: reference any additional headers you need in STDAFX.H
|
||||
// and not in this file
|
||||
21
G-Audio/g-audio-main/src/C++/stdafx.h
Normal file
21
G-Audio/g-audio-main/src/C++/stdafx.h
Normal file
@@ -0,0 +1,21 @@
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#if defined( _WIN32 )
|
||||
|
||||
#define _CRT_NONSTDC_NO_DEPRECATE
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
|
||||
#include "targetver.h"
|
||||
|
||||
//#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
||||
// Windows Header Files:
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
|
||||
// TODO: reference additional headers your program requires here
|
||||
8
G-Audio/g-audio-main/src/C++/targetver.h
Normal file
8
G-Audio/g-audio-main/src/C++/targetver.h
Normal file
@@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
// Including SDKDDKVer.h defines the highest available Windows platform.
|
||||
|
||||
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
|
||||
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
|
||||
|
||||
#include <SDKDDKVer.h>
|
||||
674
G-Audio/g-audio-main/src/C++/thread.h
Normal file
674
G-Audio/g-audio-main/src/C++/thread.h
Normal file
@@ -0,0 +1,674 @@
|
||||
/*
|
||||
------------------------------------------------------------------------------
|
||||
Licensing information can be found at the end of the file.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
thread.h - v0.3 - Cross platform threading functions for C/C++.
|
||||
|
||||
Modified to include only mutex functions. Threading functions had compilation
|
||||
issues when built on Windows not using Visual Studio.
|
||||
|
||||
Do this:
|
||||
#define THREAD_IMPLEMENTATION
|
||||
before you include this file in *one* C/C++ file to create the implementation.
|
||||
*/
|
||||
|
||||
#ifndef thread_h
|
||||
#define thread_h
|
||||
|
||||
#ifndef THREAD_U64
|
||||
#define THREAD_U64 unsigned long long
|
||||
#endif
|
||||
|
||||
#define THREAD_STACK_SIZE_DEFAULT ( 0 )
|
||||
#define THREAD_SIGNAL_WAIT_INFINITE ( -1 )
|
||||
#define THREAD_QUEUE_WAIT_INFINITE ( -1 )
|
||||
|
||||
typedef union thread_mutex_t thread_mutex_t;
|
||||
void thread_mutex_init( thread_mutex_t* mutex );
|
||||
void thread_mutex_term( thread_mutex_t* mutex );
|
||||
void thread_mutex_lock( thread_mutex_t* mutex );
|
||||
void thread_mutex_unlock( thread_mutex_t* mutex );
|
||||
|
||||
#endif /* thread_h */
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Example
|
||||
=======
|
||||
|
||||
Here's a basic sample program which starts a second thread which just waits and prints a message.
|
||||
|
||||
#define THREAD_IMPLEMENTATION
|
||||
#include "thread.h"
|
||||
|
||||
#include <stdio.h> // for printf
|
||||
|
||||
int thread_proc( void* user_data)
|
||||
{
|
||||
thread_timer_t timer;
|
||||
thread_timer_init( &timer );
|
||||
|
||||
int count = 0;
|
||||
thread_atomic_int_t* exit_flag = (thread_atomic_int_t*) user_data;
|
||||
while( thread_atomic_int_load( exit_flag ) == 0 )
|
||||
{
|
||||
printf( "Thread... " );
|
||||
thread_timer_wait( &timer, 1000000000 ); // sleep for a second
|
||||
++count;
|
||||
}
|
||||
|
||||
thread_timer_term( &timer );
|
||||
printf( "Done\n" );
|
||||
return count;
|
||||
}
|
||||
|
||||
int main( int argc, char** argv )
|
||||
{
|
||||
(void) argc, argv;
|
||||
|
||||
thread_atomic_int_t exit_flag;
|
||||
thread_atomic_int_store( &exit_flag, 0 );
|
||||
|
||||
thread_ptr_t thread = thread_create( thread_proc, &exit_flag, "Example thread", THREAD_STACK_SIZE_DEFAULT );
|
||||
|
||||
thread_timer_t timer;
|
||||
thread_timer_init( &timer );
|
||||
for( int i = 0; i < 5; ++i )
|
||||
{
|
||||
printf( "Main... " );
|
||||
thread_timer_wait( &timer, 2000000000 ); // sleep for two seconds
|
||||
}
|
||||
thread_timer_term( &timer );
|
||||
|
||||
thread_atomic_int_store( &exit_flag, 1 ); // signal thread to exit
|
||||
int retval = thread_join( thread );
|
||||
|
||||
printf( "Count: %d\n", retval );
|
||||
|
||||
thread_destroy( thread );
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
API Documentation
|
||||
=================
|
||||
|
||||
thread.h is a single-header library, and does not need any .lib files or other binaries, or any build scripts. To use it,
|
||||
you just include thread.h to get the API declarations. To get the definitions, you must include thread.h from *one*
|
||||
single C or C++ file, and #define the symbol `THREAD_IMPLEMENTATION` before you do.
|
||||
|
||||
|
||||
Customization
|
||||
-------------
|
||||
thread.h allows for specifying the exact type of 64-bit unsigned integer to be used in its API. By default, it is
|
||||
defined as `unsigned long long`, but as this is not a standard type on all compilers, you can redefine it by #defining
|
||||
THREAD_U64 before including thread.h. This is useful if you, for example, use the types from `<stdint.h>` in the rest of
|
||||
your program, and you want thread.h to use compatible types. In this case, you would include thread.h using the
|
||||
following code:
|
||||
|
||||
#define THREAD_U64 uint64_t
|
||||
#include "thread.h"
|
||||
|
||||
Note that when customizing this data type, you need to use the same definition in every place where you include
|
||||
thread.h, as it affect the declarations as well as the definitions.
|
||||
|
||||
|
||||
thread_current_thread_id
|
||||
------------------------
|
||||
|
||||
thread_id_t thread_current_thread_id( void )
|
||||
|
||||
Returns a unique identifier for the calling thread. After the thread terminates, the id might be reused for new threads.
|
||||
|
||||
|
||||
thread_yield
|
||||
------------
|
||||
|
||||
void thread_yield( void )
|
||||
|
||||
Makes the calling thread yield execution to another thread. The operating system controls which thread is switched to.
|
||||
|
||||
|
||||
thread_set_high_priority
|
||||
------------------------
|
||||
|
||||
void thread_set_high_priority( void )
|
||||
|
||||
When created, threads are set to run at normal priority. In some rare cases, such as a sound buffer update loop, it can
|
||||
be necessary to have one thread of your application run on a higher priority than the rest. Calling
|
||||
`thread_set_high_priority` will raise the priority of the calling thread, giving it a chance to be run more often.
|
||||
Do not increase the priority of a thread unless you absolutely have to, as it can negatively affect performance if used
|
||||
without care.
|
||||
|
||||
|
||||
thread_exit
|
||||
-----------
|
||||
|
||||
void thread_exit( int return_code )
|
||||
|
||||
Exits the calling thread, as if you had done `return return_code;` from the main body of the thread function.
|
||||
|
||||
|
||||
thread_create
|
||||
-------------
|
||||
|
||||
thread_ptr_t thread_create( int (*thread_proc)( void* ), void* user_data, char const* name, int stack_size )
|
||||
|
||||
Creates a new thread running the `thread_proc` function, passing the `user_data` through to it. The thread will be
|
||||
given the debug name given in the `name` parameter, if supported on the platform, and it will have the stack size
|
||||
specified in the `stack_size` parameter. To get the operating system default stack size, use the defined constant
|
||||
`THREAD_STACK_SIZE_DEFAULT`. When returning from the thread_proc function, the value you return can be received in
|
||||
another thread by calling thread_join. `thread_create` returns a pointer to the thread instance, which can be used
|
||||
as a parameter to the functions `thread_destroy` and `thread_join`.
|
||||
|
||||
|
||||
thread_destroy
|
||||
--------------
|
||||
|
||||
void thread_destroy( thread_ptr_t thread )
|
||||
|
||||
Destroys a thread that was created by calling `thread_create`. Make sure the thread has exited before you attempt to
|
||||
destroy it. This can be accomplished by calling `thread_join`. It is not possible for force termination of a thread by
|
||||
calling `thread_destroy`.
|
||||
|
||||
|
||||
thread_join
|
||||
-----------
|
||||
|
||||
int thread_join( thread_ptr_t thread )
|
||||
|
||||
Waits for the specified thread to exit. Returns the value which the thread returned when exiting.
|
||||
|
||||
|
||||
thread_mutex_init
|
||||
-----------------
|
||||
|
||||
void thread_mutex_init( thread_mutex_t* mutex )
|
||||
|
||||
Initializes the specified mutex instance, preparing it for use. A mutex can be used to lock sections of code, such that
|
||||
it can only be run by one thread at a time.
|
||||
|
||||
|
||||
thread_mutex_term
|
||||
-----------------
|
||||
|
||||
void thread_mutex_term( thread_mutex_t* mutex )
|
||||
|
||||
Terminates the specified mutex instance, releasing any system resources held by it.
|
||||
|
||||
|
||||
thread_mutex_lock
|
||||
-----------------
|
||||
|
||||
void thread_mutex_lock( thread_mutex_t* mutex )
|
||||
|
||||
Takes an exclusive lock on a mutex. If the lock is already taken by another thread, `thread_mutex_lock` will yield the
|
||||
calling thread and wait for the lock to become available before returning. The mutex must be initialized by calling
|
||||
`thread_mutex_init` before it can be locked.
|
||||
|
||||
|
||||
thread_mutex_unlock
|
||||
-------------------
|
||||
|
||||
void thread_mutex_unlock( thread_mutex_t* mutex )
|
||||
|
||||
Releases a lock taken by calling `thread_mutex_lock`.
|
||||
|
||||
|
||||
thread_signal_init
|
||||
------------------
|
||||
|
||||
void thread_signal_init( thread_signal_t* signal )
|
||||
|
||||
Initializes the specified signal instance, preparing it for use. A signal works like a flag, which can be waited on by
|
||||
one thread, until it is raised from another thread.
|
||||
|
||||
|
||||
thread_signal_term
|
||||
------------------
|
||||
|
||||
void thread_signal_term( thread_signal_t* signal )
|
||||
|
||||
Terminates the specified signal instance, releasing any system resources held by it.
|
||||
|
||||
|
||||
thread_signal_raise
|
||||
-------------------
|
||||
|
||||
void thread_signal_raise( thread_signal_t* signal )
|
||||
|
||||
Raise the specified signal. Other threads waiting for the signal will proceed.
|
||||
|
||||
|
||||
thread_signal_wait
|
||||
------------------
|
||||
|
||||
int thread_signal_wait( thread_signal_t* signal, int timeout_ms )
|
||||
|
||||
Waits for a signal to be raised, or until `timeout_ms` milliseconds have passed. If the wait timed out, a value of 0 is
|
||||
returned, otherwise a non-zero value is returned. If the `timeout_ms` parameter is THREAD_SIGNAL_WAIT_INFINITE,
|
||||
`thread_signal_wait` waits indefinitely.
|
||||
|
||||
|
||||
thread_atomic_int_load
|
||||
----------------------
|
||||
|
||||
int thread_atomic_int_load( thread_atomic_int_t* atomic )
|
||||
|
||||
Returns the value of `atomic` as an atomic operation.
|
||||
|
||||
|
||||
thread_atomic_int_store
|
||||
-----------------------
|
||||
|
||||
void thread_atomic_int_store( thread_atomic_int_t* atomic, int desired )
|
||||
|
||||
Sets the value of `atomic` as an atomic operation.
|
||||
|
||||
|
||||
thread_atomic_int_inc
|
||||
---------------------
|
||||
|
||||
int thread_atomic_int_inc( thread_atomic_int_t* atomic )
|
||||
|
||||
Increments the value of `atomic` by one, as an atomic operation. Returns the value `atomic` had before the operation.
|
||||
|
||||
|
||||
thread_atomic_int_dec
|
||||
---------------------
|
||||
|
||||
int thread_atomic_int_dec( thread_atomic_int_t* atomic )
|
||||
|
||||
Decrements the value of `atomic` by one, as an atomic operation. Returns the value `atomic` had before the operation.
|
||||
|
||||
|
||||
thread_atomic_int_add
|
||||
---------------------
|
||||
|
||||
int thread_atomic_int_add( thread_atomic_int_t* atomic, int value )
|
||||
|
||||
Adds the specified value to `atomic`, as an atomic operation. Returns the value `atomic` had before the operation.
|
||||
|
||||
|
||||
thread_atomic_int_sub
|
||||
---------------------
|
||||
|
||||
int thread_atomic_int_sub( thread_atomic_int_t* atomic, int value )
|
||||
|
||||
Subtracts the specified value to `atomic`, as an atomic operation. Returns the value `atomic` had before the operation.
|
||||
|
||||
|
||||
thread_atomic_int_swap
|
||||
----------------------
|
||||
|
||||
int thread_atomic_int_swap( thread_atomic_int_t* atomic, int desired )
|
||||
|
||||
Sets the value of `atomic` as an atomic operation. Returns the value `atomic` had before the operation.
|
||||
|
||||
|
||||
thread_atomic_int_compare_and_swap
|
||||
----------------------------------
|
||||
|
||||
int thread_atomic_int_compare_and_swap( thread_atomic_int_t* atomic, int expected, int desired )
|
||||
|
||||
Compares the value of `atomic` to the value of `expected`, and if they match, sets the vale of `atomic` to `desired`,
|
||||
all as an atomic operation. Returns the value `atomic` had before the operation.
|
||||
|
||||
|
||||
thread_atomic_ptr_load
|
||||
----------------------
|
||||
|
||||
void* thread_atomic_ptr_load( thread_atomic_ptr_t* atomic )
|
||||
|
||||
Returns the value of `atomic` as an atomic operation.
|
||||
|
||||
|
||||
thread_atomic_ptr_store
|
||||
-----------------------
|
||||
|
||||
void thread_atomic_ptr_store( thread_atomic_ptr_t* atomic, void* desired )
|
||||
|
||||
Sets the value of `atomic` as an atomic operation.
|
||||
|
||||
|
||||
thread_atomic_ptr_swap
|
||||
----------------------
|
||||
|
||||
void* thread_atomic_ptr_swap( thread_atomic_ptr_t* atomic, void* desired )
|
||||
|
||||
Sets the value of `atomic` as an atomic operation. Returns the value `atomic` had before the operation.
|
||||
|
||||
|
||||
thread_atomic_ptr_compare_and_swap
|
||||
----------------------------------
|
||||
|
||||
void* thread_atomic_ptr_compare_and_swap( thread_atomic_ptr_t* atomic, void* expected, void* desired )
|
||||
|
||||
Compares the value of `atomic` to the value of `expected`, and if they match, sets the vale of `atomic` to `desired`,
|
||||
all as an atomic operation. Returns the value `atomic` had before the operation.
|
||||
|
||||
|
||||
thread_timer_init
|
||||
-----------------
|
||||
|
||||
void thread_timer_init( thread_timer_t* timer )
|
||||
|
||||
Initializes the specified timer instance, preparing it for use. A timer can be used to sleep a thread for a high
|
||||
precision duration.
|
||||
|
||||
|
||||
thread_timer_term
|
||||
-----------------
|
||||
|
||||
void thread_timer_term( thread_timer_t* timer )
|
||||
|
||||
Terminates the specified timer instance, releasing any system resources held by it.
|
||||
|
||||
|
||||
thread_timer_wait
|
||||
-----------------
|
||||
|
||||
void thread_timer_wait( thread_timer_t* timer, THREAD_U64 nanoseconds )
|
||||
|
||||
Waits until `nanoseconds` amount of time have passed, before returning.
|
||||
|
||||
|
||||
thread_tls_create
|
||||
-----------------
|
||||
|
||||
thread_tls_t thread_tls_create( void )
|
||||
|
||||
Creates a thread local storage (TLS) index. Once created, each thread has its own value for that TLS index, which can
|
||||
be set or retrieved individually.
|
||||
|
||||
|
||||
thread_tls_destroy
|
||||
------------------
|
||||
|
||||
void thread_tls_destroy( thread_tls_t tls )
|
||||
|
||||
Destroys the specified TLS index. No further calls to `thread_tls_set` or `thread_tls_get` are valid after this.
|
||||
|
||||
|
||||
thread_tls_set
|
||||
--------------
|
||||
|
||||
void thread_tls_set( thread_tls_t tls, void* value )
|
||||
|
||||
Stores a value in the calling thread's slot for the specified TLS index. Each thread has its own value for each TLS
|
||||
index.
|
||||
|
||||
|
||||
thread_tls_get
|
||||
--------------
|
||||
|
||||
void* thread_tls_get( thread_tls_t tls )
|
||||
|
||||
Retrieves the value from the calling thread's slot for the specified TLS index. Each thread has its own value for each
|
||||
TLS index.
|
||||
|
||||
|
||||
thread_queue_init
|
||||
-----------------
|
||||
|
||||
void thread_queue_init( thread_queue_t* queue, int size, void** values, int count )
|
||||
|
||||
Initializes the specified queue instance, preparing it for use. The queue is a lock-free (but not wait-free)
|
||||
single-producer/single-consumer queue - it will not acquire any locks as long as there is space for adding or items to
|
||||
be consume, but will lock and wait when there is not. The `size` parameter specifies the number of elements in the
|
||||
queue. The `values` parameter is an array of queue slots (`size` elements in length), each being of type `void*`. If
|
||||
the queue is initially empty, the `count` parameter should be 0, otherwise it indicates the number of entires, from the
|
||||
start of the `values` array, that the queue is initialized with. The `values` array is not copied, and must remain valid
|
||||
until `thread_queue_term` is called.
|
||||
|
||||
|
||||
thread_queue_term
|
||||
-----------------
|
||||
|
||||
void thread_queue_term( thread_queue_t* queue )
|
||||
|
||||
Terminates the specified queue instance, releasing any system resources held by it.
|
||||
|
||||
|
||||
thread_queue_produce
|
||||
--------------------
|
||||
|
||||
int thread_queue_produce( thread_queue_t* queue, void* value, int timeout_ms )
|
||||
|
||||
Adds an element to a single-producer/single-consumer queue. If there is space in the queue to add another element, no
|
||||
lock will be taken. If the queue is full, calling thread will sleep until an element is consumed from another thread,
|
||||
before adding the element, or until `timeout_ms` milliseconds have passed. If the wait timed out, a value of 0 is
|
||||
returned, otherwise a non-zero value is returned. If the `timeout_ms` parameter is THREAD_QUEUE_WAIT_INFINITE,
|
||||
`thread_queue_produce` waits indefinitely.
|
||||
|
||||
|
||||
thread_queue_consume
|
||||
--------------------
|
||||
|
||||
void* thread_queue_consume( thread_queue_t* queue, int timeout_ms )
|
||||
|
||||
Removes an element from a single-producer/single-consumer queue. If the queue contains at least one element, no lock
|
||||
will be taken. If the queue is empty, the calling thread will sleep until an element is added from another thread, or
|
||||
until `timeout_ms` milliseconds have passed. If the wait timed out, a value of NULL is returned, otherwise
|
||||
`thread_queue_consume` returns the value that was removed from the queue. If the `timeout_ms` parameter is
|
||||
THREAD_QUEUE_WAIT_INFINITE, `thread_queue_consume` waits indefinitely.
|
||||
|
||||
|
||||
thread_queue_count
|
||||
------------------
|
||||
|
||||
int thread_queue_count( thread_queue_t* queue )
|
||||
|
||||
Returns the number of elements currently held in a single-producer/single-consumer queue. Be aware that by the time you
|
||||
get the count, it might have changed by another thread calling consume or produce, so use with care.
|
||||
|
||||
**/
|
||||
|
||||
|
||||
/*
|
||||
----------------------
|
||||
IMPLEMENTATION
|
||||
----------------------
|
||||
*/
|
||||
|
||||
#ifndef thread_impl
|
||||
#define thread_impl
|
||||
|
||||
union thread_mutex_t
|
||||
{
|
||||
void* align;
|
||||
char data[ 64 ];
|
||||
};
|
||||
|
||||
#endif /* thread_impl */
|
||||
|
||||
|
||||
|
||||
#ifdef THREAD_IMPLEMENTATION
|
||||
#undef THREAD_IMPLEMENTATION
|
||||
|
||||
|
||||
#if defined( _WIN32 )
|
||||
|
||||
#pragma comment( lib, "winmm.lib" )
|
||||
|
||||
#define _CRT_NONSTDC_NO_DEPRECATE
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
|
||||
#if !defined( _WIN32_WINNT ) || _WIN32_WINNT < 0x0501
|
||||
#undef _WIN32_WINNT
|
||||
#define _WIN32_WINNT 0x501// requires Windows XP minimum
|
||||
#endif
|
||||
|
||||
#define _WINSOCKAPI_
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable: 4668 ) // 'symbol' is not defined as a preprocessor macro, replacing with '0' for 'directives'
|
||||
#pragma warning( disable: 4255 )
|
||||
#include <windows.h>
|
||||
#pragma warning( pop )
|
||||
|
||||
// To set thread name
|
||||
const DWORD MS_VC_EXCEPTION = 0x406D1388;
|
||||
#pragma pack( push, 8 )
|
||||
typedef struct tagTHREADNAME_INFO
|
||||
{
|
||||
DWORD dwType;
|
||||
LPCSTR szName;
|
||||
DWORD dwThreadID;
|
||||
DWORD dwFlags;
|
||||
} THREADNAME_INFO;
|
||||
#pragma pack(pop)
|
||||
|
||||
#elif defined( __linux__ ) || defined( __APPLE__ ) || defined( __ANDROID__ )
|
||||
|
||||
#include <pthread.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#else
|
||||
#error Unknown platform.
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef NDEBUG
|
||||
#include <assert.h>
|
||||
#endif
|
||||
|
||||
|
||||
void thread_mutex_init( thread_mutex_t* mutex )
|
||||
{
|
||||
#if defined( _WIN32 )
|
||||
|
||||
// Compile-time size check
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable: 4214 ) // nonstandard extension used: bit field types other than int
|
||||
struct x { char thread_mutex_type_too_small : ( sizeof( thread_mutex_t ) < sizeof( CRITICAL_SECTION ) ? 0 : 1 ); };
|
||||
#pragma warning( pop )
|
||||
|
||||
InitializeCriticalSectionAndSpinCount( (CRITICAL_SECTION*) mutex, 32 );
|
||||
|
||||
#elif defined( __linux__ ) || defined( __APPLE__ ) || defined( __ANDROID__ )
|
||||
|
||||
// Compile-time size check
|
||||
struct x { char thread_mutex_type_too_small : ( sizeof( thread_mutex_t ) < sizeof( pthread_mutex_t ) ? 0 : 1 ); };
|
||||
|
||||
pthread_mutex_init( (pthread_mutex_t*) mutex, NULL );
|
||||
|
||||
#else
|
||||
#error Unknown platform.
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void thread_mutex_term( thread_mutex_t* mutex )
|
||||
{
|
||||
#if defined( _WIN32 )
|
||||
|
||||
DeleteCriticalSection( (CRITICAL_SECTION*) mutex );
|
||||
|
||||
#elif defined( __linux__ ) || defined( __APPLE__ ) || defined( __ANDROID__ )
|
||||
|
||||
pthread_mutex_destroy( (pthread_mutex_t*) mutex );
|
||||
|
||||
#else
|
||||
#error Unknown platform.
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void thread_mutex_lock( thread_mutex_t* mutex )
|
||||
{
|
||||
#if defined( _WIN32 )
|
||||
|
||||
EnterCriticalSection( (CRITICAL_SECTION*) mutex );
|
||||
|
||||
#elif defined( __linux__ ) || defined( __APPLE__ ) || defined( __ANDROID__ )
|
||||
|
||||
pthread_mutex_lock( (pthread_mutex_t*) mutex );
|
||||
|
||||
#else
|
||||
#error Unknown platform.
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void thread_mutex_unlock( thread_mutex_t* mutex )
|
||||
{
|
||||
#if defined( _WIN32 )
|
||||
|
||||
LeaveCriticalSection( (CRITICAL_SECTION*) mutex );
|
||||
|
||||
#elif defined( __linux__ ) || defined( __APPLE__ ) || defined( __ANDROID__ )
|
||||
|
||||
pthread_mutex_unlock( (pthread_mutex_t*) mutex );
|
||||
|
||||
#else
|
||||
#error Unknown platform.
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* THREAD_IMPLEMENTATION */
|
||||
|
||||
/*
|
||||
revision history:
|
||||
0.3 set_high_priority API change. Fixed spurious wakeup bug in signal. Added
|
||||
timeout param to queue produce/consume. Various cleanup and trivial fixes.
|
||||
0.2 first publicly released version
|
||||
*/
|
||||
|
||||
/*
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
This software is available under 2 licenses - you may choose the one you like.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
ALTERNATIVE A - MIT License
|
||||
|
||||
Copyright (c) 2015 Mattias Gustavsson
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
ALTERNATIVE B - Public Domain (www.unlicense.org)
|
||||
|
||||
This is free and unencumbered software released into the public domain.
|
||||
|
||||
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
|
||||
software, either in source code form or as a compiled binary, for any purpose,
|
||||
commercial or non-commercial, and by any means.
|
||||
|
||||
In jurisdictions that recognize copyright laws, the author or authors of this
|
||||
software dedicate any and all copyright interest in the software to the public
|
||||
domain. We make this dedication for the benefit of the public at large and to
|
||||
the detriment of our heirs and successors. We intend this dedication to be an
|
||||
overt act of relinquishment in perpetuity of all present and future rights to
|
||||
this software under copyright law.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
*/
|
||||
168
G-Audio/g-audio-main/src/C++/thread_safety.cpp
Normal file
168
G-Audio/g-audio-main/src/C++/thread_safety.cpp
Normal file
@@ -0,0 +1,168 @@
|
||||
#include "stdafx.h"
|
||||
#define THREAD_IMPLEMENTATION
|
||||
#include "thread_safety.h"
|
||||
|
||||
// These variables will be kept in memory while LabVIEW has DLL loaded.
|
||||
// LabVIEW won't unload DLL until entire VI call chain is removed from memory, or explicitly removed by wiring empty path to CLFN.
|
||||
|
||||
ga_refnum refnums[ga_refnum_count];
|
||||
thread_mutex_t ga_mutexes[ga_mutex_count] = { 0 };
|
||||
|
||||
// Create the refnums mutex if it doesn't already exist.
|
||||
// If it does exist, do nothing.
|
||||
// Could maybe use the CLFN's reserve callback to call this rather than every lock / unlock
|
||||
static inline void create_refnums_mutex(ga_refnum_type refnum_type)
|
||||
{
|
||||
// Init the mutex if it doesn't exist
|
||||
if (strlen(refnums[refnum_type].refnums_mutex.data) == 0)
|
||||
{
|
||||
thread_mutex_init(&(refnums[refnum_type].refnums_mutex));
|
||||
}
|
||||
}
|
||||
|
||||
// Lock the refnums mutex. Will attempt to create the mutex first in case it doesn't exist.
|
||||
static void lock_refnums_mutex(ga_refnum_type refnum_type)
|
||||
{
|
||||
create_refnums_mutex(refnum_type);
|
||||
thread_mutex_lock(&(refnums[refnum_type].refnums_mutex));
|
||||
return;
|
||||
}
|
||||
|
||||
// Unlock the refnums mutex. Will attempt to create the mutex first in case it doesn't exist.
|
||||
static void unlock_refnums_mutex(ga_refnum_type refnum_type)
|
||||
{
|
||||
create_refnums_mutex(refnum_type);
|
||||
thread_mutex_unlock(&(refnums[refnum_type].refnums_mutex));
|
||||
return;
|
||||
}
|
||||
|
||||
// Creates a new refnum and stores it and its data into the allocated refnums, returning the new refnum value.
|
||||
// If the refnum allocation is exhausted, returns -1.
|
||||
int32_t create_insert_refnum_data(ga_refnum_type refnum_type, void* data)
|
||||
{
|
||||
int32_t new_reference = 0;
|
||||
|
||||
lock_refnums_mutex(refnum_type);
|
||||
//// START CRITICAL SECTION ////
|
||||
do
|
||||
{
|
||||
// update reference id
|
||||
refnums[refnum_type].refnum_counter++;
|
||||
// Check for roll over of reference counter.
|
||||
if (refnums[refnum_type].refnum_counter < 0)
|
||||
{
|
||||
refnums[refnum_type].refnum_counter = 0;
|
||||
}
|
||||
new_reference = refnums[refnum_type].refnum_counter;
|
||||
if (!refnums[refnum_type].refnums.count(new_reference))
|
||||
{
|
||||
refnums[refnum_type].refnums[new_reference] = data;
|
||||
break;
|
||||
}
|
||||
// Check if maximum reference allocation has been reached.
|
||||
else if (refnums[refnum_type].refnums.size() >= INT_MAX)
|
||||
{
|
||||
new_reference = -1;
|
||||
break;
|
||||
}
|
||||
} while (1);
|
||||
//// END CRITICAL SECTION ////
|
||||
unlock_refnums_mutex(refnum_type);
|
||||
|
||||
return new_reference;
|
||||
}
|
||||
|
||||
// Updates the data in the refnum allocation for the given refnum.
|
||||
void update_reference_data(ga_refnum_type refnum_type, int32_t reference, void * data)
|
||||
{
|
||||
lock_refnums_mutex(refnum_type);
|
||||
//// START CRITICAL SECTION ////
|
||||
if (refnums[refnum_type].refnums.count(reference))
|
||||
{
|
||||
refnums[refnum_type].refnums[reference] = data;
|
||||
}
|
||||
//// END CRITICAL SECTION ////
|
||||
unlock_refnums_mutex(refnum_type);
|
||||
}
|
||||
|
||||
// Retrieves the data in the refnum allocation for the given refnum.
|
||||
void* get_reference_data(ga_refnum_type refnum_type, int32_t reference)
|
||||
{
|
||||
void* data = NULL;
|
||||
|
||||
lock_refnums_mutex(refnum_type);
|
||||
//// START CRITICAL SECTION ////
|
||||
if (refnums[refnum_type].refnums.count(reference))
|
||||
{
|
||||
data = refnums[refnum_type].refnums[reference];
|
||||
}
|
||||
//// END CRITICAL SECTION ////
|
||||
unlock_refnums_mutex(refnum_type);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
// Removes the refnum from the refnum allocation, returning its data.
|
||||
// The caller is responsible for freeing the data.
|
||||
void* remove_reference(ga_refnum_type refnum_type, int32_t reference)
|
||||
{
|
||||
void* data = NULL;
|
||||
|
||||
lock_refnums_mutex(refnum_type);
|
||||
//// START CRITICAL SECTION ////
|
||||
if (refnums[refnum_type].refnums.count(reference))
|
||||
{
|
||||
data = refnums[refnum_type].refnums[reference];
|
||||
refnums[refnum_type].refnums.erase(reference);
|
||||
}
|
||||
//// END CRITICAL SECTION ////
|
||||
unlock_refnums_mutex(refnum_type);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
std::vector<int32_t> get_all_references(ga_refnum_type refnum_type)
|
||||
{
|
||||
std::vector<int32_t> all_refnums;
|
||||
|
||||
lock_refnums_mutex(refnum_type);
|
||||
//// START CRITICAL SECTION ////
|
||||
for (std::unordered_map<int32_t, void*>::iterator it = refnums[refnum_type].refnums.begin(); it != refnums[refnum_type].refnums.end(); ++it)
|
||||
{
|
||||
all_refnums.push_back(it->first);
|
||||
}
|
||||
//// END CRITICAL SECTION ////
|
||||
unlock_refnums_mutex(refnum_type);
|
||||
|
||||
return all_refnums;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Create the context mutex if it doesn't already exist.
|
||||
// If it does exist, do nothing.
|
||||
// Could maybe use the CLFN's reserve callback to call this rather than every lock / unlock
|
||||
inline void create_ga_mutex(ga_mutex_type mutex_type)
|
||||
{
|
||||
// Init the mutex if it doesn't exist
|
||||
if (strlen(ga_mutexes[mutex_type].data) == 0)
|
||||
{
|
||||
thread_mutex_init(&ga_mutexes[mutex_type]);
|
||||
}
|
||||
}
|
||||
|
||||
// Lock the context mutex. Will attempt to create the mutex first in case it doesn't exist.
|
||||
void lock_ga_mutex(ga_mutex_type mutex_type)
|
||||
{
|
||||
create_ga_mutex(mutex_type);
|
||||
thread_mutex_lock(&ga_mutexes[mutex_type]);
|
||||
return;
|
||||
}
|
||||
|
||||
// Unlock the context mutex. Will attempt to create the mutex first in case it doesn't exist.
|
||||
void unlock_ga_mutex(ga_mutex_type mutex_type)
|
||||
{
|
||||
create_ga_mutex(mutex_type);
|
||||
thread_mutex_unlock(&ga_mutexes[mutex_type]);
|
||||
return;
|
||||
}
|
||||
53
G-Audio/g-audio-main/src/C++/thread_safety.h
Normal file
53
G-Audio/g-audio-main/src/C++/thread_safety.h
Normal file
@@ -0,0 +1,53 @@
|
||||
#ifndef _THREAD_SAFETY_
|
||||
#define _THREAD_SAFETY_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
// Need to #define THREAD_IMPLEMENTATION before including thread.h
|
||||
// Don't do it in this header, as it will cause linkage issues
|
||||
// Instead define it in thread_safety.cpp
|
||||
#include "thread.h"
|
||||
#include "miniaudio.h"
|
||||
|
||||
typedef struct ga_refnum
|
||||
{
|
||||
std::unordered_map<int32_t, void*> refnums;
|
||||
thread_mutex_t refnums_mutex = { 0 };
|
||||
int32_t refnum_counter = 0;
|
||||
} ga_refnum;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ga_refnum_audio_file = 0,
|
||||
ga_refnum_audio_device,
|
||||
ga_refnum_count
|
||||
} ga_refnum_type;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ga_mutex_common = 0,
|
||||
ga_mutex_context,
|
||||
ga_mutex_device,
|
||||
ga_mutex_count
|
||||
} ga_mutex_type;
|
||||
|
||||
static inline void create_refnums_mutex(ga_refnum_type refnum_type);
|
||||
static void lock_refnums_mutex(ga_refnum_type refnum_type);
|
||||
static void unlock_refnums_mutex(ga_refnum_type refnum_type);
|
||||
|
||||
inline void create_ga_mutex(ga_mutex_type mutex_type);
|
||||
void lock_ga_mutex(ga_mutex_type mutex_type);
|
||||
void unlock_ga_mutex(ga_mutex_type mutex_type);
|
||||
|
||||
// Create and insert a new unique reference to the global references
|
||||
int32_t create_insert_refnum_data(ga_refnum_type refnum_type, void* data);
|
||||
void update_reference_data(ga_refnum_type refnum_type, int32_t reference, void* data);
|
||||
void* get_reference_data(ga_refnum_type refnum_type, int32_t reference);
|
||||
void* remove_reference(ga_refnum_type refnum_type, int32_t reference);
|
||||
std::vector<int32_t> get_all_references(ga_refnum_type refnum_type);
|
||||
|
||||
#endif
|
||||
26
G-Audio/g-audio-main/src/C++/xcode/.gitignore
vendored
Normal file
26
G-Audio/g-audio-main/src/C++/xcode/.gitignore
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# Xcode
|
||||
#
|
||||
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
|
||||
|
||||
## User settings
|
||||
xcuserdata/
|
||||
|
||||
## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
|
||||
*.xcscmblueprint
|
||||
*.xccheckout
|
||||
|
||||
## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
|
||||
build/
|
||||
DerivedData/
|
||||
*.moved-aside
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
|
||||
## Gcc Patch
|
||||
/*.gcno
|
||||
24
G-Audio/g-audio-main/src/C++/xcode/g_audio/Info.plist
Normal file
24
G-Audio/g-audio-main/src/C++/xcode/g_audio/Info.plist
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>$(EXECUTABLE_NAME)</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>$(PRODUCT_NAME)</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(MARKETING_VERSION)</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>$(CURRENT_PROJECT_VERSION)</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,401 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 50;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
3CD6706826E0D1FE0040E196 /* xcode.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CD6706626E0D1FE0040E196 /* xcode.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
3CD6707626E0D2860040E196 /* thread.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CD6706E26E0D2860040E196 /* thread.h */; };
|
||||
3CD6707726E0D2860040E196 /* stb_vorbis.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CD6706F26E0D2860040E196 /* stb_vorbis.h */; };
|
||||
3CD6707826E0D2860040E196 /* stdafx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CD6707026E0D2860040E196 /* stdafx.cpp */; };
|
||||
3CD6707926E0D2860040E196 /* stdafx.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CD6707126E0D2860040E196 /* stdafx.h */; };
|
||||
3CD6707A26E0D2860040E196 /* thread_safety.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CD6707226E0D2860040E196 /* thread_safety.cpp */; };
|
||||
3CD6707B26E0D2860040E196 /* thread_safety.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CD6707326E0D2860040E196 /* thread_safety.h */; };
|
||||
3CD6707C26E0D2860040E196 /* targetver.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CD6707426E0D2860040E196 /* targetver.h */; };
|
||||
3CD6707D26E0D2860040E196 /* resource.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CD6707526E0D2860040E196 /* resource.h */; };
|
||||
3CD6708126E0D2A40040E196 /* miniaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CD6707E26E0D2A40040E196 /* miniaudio.h */; };
|
||||
3CD6708226E0D2A40040E196 /* minimp3.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CD6707F26E0D2A40040E196 /* minimp3.h */; };
|
||||
3CD6708326E0D2A40040E196 /* minimp3_ex.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CD6708026E0D2A40040E196 /* minimp3_ex.h */; };
|
||||
3CD6708626E0D2B00040E196 /* g_audio.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CD6708426E0D2B00040E196 /* g_audio.h */; };
|
||||
3CD6708726E0D2B00040E196 /* g_audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CD6708526E0D2B00040E196 /* g_audio.cpp */; };
|
||||
3CD6708B26E0D2CB0040E196 /* dllmain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3CD6708826E0D2CA0040E196 /* dllmain.cpp */; };
|
||||
3CD6708C26E0D2CB0040E196 /* dr_wav.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CD6708926E0D2CB0040E196 /* dr_wav.h */; };
|
||||
3CD6708D26E0D2CB0040E196 /* dr_flac.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CD6708A26E0D2CB0040E196 /* dr_flac.h */; };
|
||||
3CD6708F26E0D3C80040E196 /* g_audio in Resources */ = {isa = PBXBuildFile; fileRef = 3CD6708E26E0D3C70040E196 /* g_audio */; };
|
||||
E513406328709686005700A8 /* id3tag.h in Headers */ = {isa = PBXBuildFile; fileRef = E513405F28709685005700A8 /* id3tag.h */; };
|
||||
E513406428709686005700A8 /* base64.h in Headers */ = {isa = PBXBuildFile; fileRef = E513406028709686005700A8 /* base64.h */; };
|
||||
E513406528709686005700A8 /* stb_image.h in Headers */ = {isa = PBXBuildFile; fileRef = E513406128709686005700A8 /* stb_image.h */; };
|
||||
E513406628709686005700A8 /* base64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E513406228709686005700A8 /* base64.cpp */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
3CD6706326E0D1FE0040E196 /* g_audio_64.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = g_audio_64.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
3CD6706626E0D1FE0040E196 /* xcode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = xcode.h; sourceTree = "<group>"; };
|
||||
3CD6706E26E0D2860040E196 /* thread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = thread.h; path = ../thread.h; sourceTree = "<group>"; };
|
||||
3CD6706F26E0D2860040E196 /* stb_vorbis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stb_vorbis.h; path = ../stb_vorbis.h; sourceTree = "<group>"; };
|
||||
3CD6707026E0D2860040E196 /* stdafx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = stdafx.cpp; path = ../stdafx.cpp; sourceTree = "<group>"; };
|
||||
3CD6707126E0D2860040E196 /* stdafx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stdafx.h; path = ../stdafx.h; sourceTree = "<group>"; };
|
||||
3CD6707226E0D2860040E196 /* thread_safety.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = thread_safety.cpp; path = ../thread_safety.cpp; sourceTree = "<group>"; };
|
||||
3CD6707326E0D2860040E196 /* thread_safety.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = thread_safety.h; path = ../thread_safety.h; sourceTree = "<group>"; };
|
||||
3CD6707426E0D2860040E196 /* targetver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = targetver.h; path = ../targetver.h; sourceTree = "<group>"; };
|
||||
3CD6707526E0D2860040E196 /* resource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = resource.h; path = ../resource.h; sourceTree = "<group>"; };
|
||||
3CD6707E26E0D2A40040E196 /* miniaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = miniaudio.h; path = ../miniaudio.h; sourceTree = "<group>"; };
|
||||
3CD6707F26E0D2A40040E196 /* minimp3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = minimp3.h; path = ../minimp3.h; sourceTree = "<group>"; };
|
||||
3CD6708026E0D2A40040E196 /* minimp3_ex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = minimp3_ex.h; path = ../minimp3_ex.h; sourceTree = "<group>"; };
|
||||
3CD6708426E0D2B00040E196 /* g_audio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = g_audio.h; path = ../g_audio.h; sourceTree = "<group>"; };
|
||||
3CD6708526E0D2B00040E196 /* g_audio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = g_audio.cpp; path = ../g_audio.cpp; sourceTree = "<group>"; };
|
||||
3CD6708826E0D2CA0040E196 /* dllmain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dllmain.cpp; path = ../dllmain.cpp; sourceTree = "<group>"; };
|
||||
3CD6708926E0D2CB0040E196 /* dr_wav.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dr_wav.h; path = ../dr_wav.h; sourceTree = "<group>"; };
|
||||
3CD6708A26E0D2CB0040E196 /* dr_flac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dr_flac.h; path = ../dr_flac.h; sourceTree = "<group>"; };
|
||||
3CD6708E26E0D3C70040E196 /* g_audio */ = {isa = PBXFileReference; lastKnownFileType = folder; path = g_audio; sourceTree = "<group>"; };
|
||||
E513405F28709685005700A8 /* id3tag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = id3tag.h; path = ../id3tag.h; sourceTree = "<group>"; };
|
||||
E513406028709686005700A8 /* base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = base64.h; path = ../base64.h; sourceTree = "<group>"; };
|
||||
E513406128709686005700A8 /* stb_image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stb_image.h; path = ../stb_image.h; sourceTree = "<group>"; };
|
||||
E513406228709686005700A8 /* base64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = base64.cpp; path = ../base64.cpp; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
3CD6706026E0D1FE0040E196 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
3CD6705926E0D1FE0040E196 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E513406228709686005700A8 /* base64.cpp */,
|
||||
E513406028709686005700A8 /* base64.h */,
|
||||
E513405F28709685005700A8 /* id3tag.h */,
|
||||
E513406128709686005700A8 /* stb_image.h */,
|
||||
3CD6708E26E0D3C70040E196 /* g_audio */,
|
||||
3CD6708826E0D2CA0040E196 /* dllmain.cpp */,
|
||||
3CD6708A26E0D2CB0040E196 /* dr_flac.h */,
|
||||
3CD6708926E0D2CB0040E196 /* dr_wav.h */,
|
||||
3CD6708526E0D2B00040E196 /* g_audio.cpp */,
|
||||
3CD6708426E0D2B00040E196 /* g_audio.h */,
|
||||
3CD6707E26E0D2A40040E196 /* miniaudio.h */,
|
||||
3CD6708026E0D2A40040E196 /* minimp3_ex.h */,
|
||||
3CD6707F26E0D2A40040E196 /* minimp3.h */,
|
||||
3CD6707526E0D2860040E196 /* resource.h */,
|
||||
3CD6706F26E0D2860040E196 /* stb_vorbis.h */,
|
||||
3CD6707026E0D2860040E196 /* stdafx.cpp */,
|
||||
3CD6707126E0D2860040E196 /* stdafx.h */,
|
||||
3CD6707426E0D2860040E196 /* targetver.h */,
|
||||
3CD6707226E0D2860040E196 /* thread_safety.cpp */,
|
||||
3CD6707326E0D2860040E196 /* thread_safety.h */,
|
||||
3CD6706E26E0D2860040E196 /* thread.h */,
|
||||
3CD6706626E0D1FE0040E196 /* xcode.h */,
|
||||
3CD6706426E0D1FE0040E196 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3CD6706426E0D1FE0040E196 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3CD6706326E0D1FE0040E196 /* g_audio_64.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
3CD6705E26E0D1FE0040E196 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3CD6708D26E0D2CB0040E196 /* dr_flac.h in Headers */,
|
||||
3CD6708126E0D2A40040E196 /* miniaudio.h in Headers */,
|
||||
3CD6707926E0D2860040E196 /* stdafx.h in Headers */,
|
||||
3CD6708226E0D2A40040E196 /* minimp3.h in Headers */,
|
||||
3CD6707626E0D2860040E196 /* thread.h in Headers */,
|
||||
E513406428709686005700A8 /* base64.h in Headers */,
|
||||
3CD6707D26E0D2860040E196 /* resource.h in Headers */,
|
||||
3CD6708326E0D2A40040E196 /* minimp3_ex.h in Headers */,
|
||||
3CD6707726E0D2860040E196 /* stb_vorbis.h in Headers */,
|
||||
3CD6707B26E0D2860040E196 /* thread_safety.h in Headers */,
|
||||
3CD6708626E0D2B00040E196 /* g_audio.h in Headers */,
|
||||
E513406328709686005700A8 /* id3tag.h in Headers */,
|
||||
E513406528709686005700A8 /* stb_image.h in Headers */,
|
||||
3CD6708C26E0D2CB0040E196 /* dr_wav.h in Headers */,
|
||||
3CD6706826E0D1FE0040E196 /* xcode.h in Headers */,
|
||||
3CD6707C26E0D2860040E196 /* targetver.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
3CD6706226E0D1FE0040E196 /* g_audio_64 */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 3CD6706B26E0D1FE0040E196 /* Build configuration list for PBXNativeTarget "g_audio_64" */;
|
||||
buildPhases = (
|
||||
3CD6705E26E0D1FE0040E196 /* Headers */,
|
||||
3CD6705F26E0D1FE0040E196 /* Sources */,
|
||||
3CD6706026E0D1FE0040E196 /* Frameworks */,
|
||||
3CD6706126E0D1FE0040E196 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = g_audio_64;
|
||||
productName = g_audio;
|
||||
productReference = 3CD6706326E0D1FE0040E196 /* g_audio_64.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
3CD6705A26E0D1FE0040E196 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 1150;
|
||||
ORGANIZATIONNAME = Dataflow_G;
|
||||
TargetAttributes = {
|
||||
3CD6706226E0D1FE0040E196 = {
|
||||
CreatedOnToolsVersion = 11.5;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 3CD6705D26E0D1FE0040E196 /* Build configuration list for PBXProject "g_audio_64" */;
|
||||
compatibilityVersion = "Xcode 9.3";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 3CD6705926E0D1FE0040E196;
|
||||
productRefGroup = 3CD6706426E0D1FE0040E196 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
3CD6706226E0D1FE0040E196 /* g_audio_64 */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
3CD6706126E0D1FE0040E196 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3CD6708F26E0D3C80040E196 /* g_audio in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
3CD6705F26E0D1FE0040E196 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3CD6707826E0D2860040E196 /* stdafx.cpp in Sources */,
|
||||
3CD6708B26E0D2CB0040E196 /* dllmain.cpp in Sources */,
|
||||
3CD6707A26E0D2860040E196 /* thread_safety.cpp in Sources */,
|
||||
E513406628709686005700A8 /* base64.cpp in Sources */,
|
||||
3CD6708726E0D2B00040E196 /* g_audio.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
3CD6706926E0D1FE0040E196 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = macosx;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
3CD6706A26E0D1FE0040E196 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = macosx;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
3CD6706C26E0D1FE0040E196 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = g_audio/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
MARKETING_VERSION = 0.4.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "dataflowg.g-audio";
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
3CD6706D26E0D1FE0040E196 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = g_audio/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
MARKETING_VERSION = 0.4.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = "dataflowg.g-audio";
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
3CD6705D26E0D1FE0040E196 /* Build configuration list for PBXProject "g_audio_64" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3CD6706926E0D1FE0040E196 /* Debug */,
|
||||
3CD6706A26E0D1FE0040E196 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
3CD6706B26E0D1FE0040E196 /* Build configuration list for PBXNativeTarget "g_audio_64" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3CD6706C26E0D1FE0040E196 /* Debug */,
|
||||
3CD6706D26E0D1FE0040E196 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 3CD6705A26E0D1FE0040E196 /* Project object */;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:/Users/dataflowg/github/g-audio/src/C++/xcode/g_audio_64.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>PreviewsEnabled</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,85 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1150"
|
||||
version = "1.7">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<PostActions>
|
||||
<ExecutionAction
|
||||
ActionType = "Xcode.IDEStandardExecutionActionsCore.ExecutionActionType.ShellScriptAction">
|
||||
<ActionContent
|
||||
title = "Run Script"
|
||||
scriptText = "# Type a script or drag a script file from your workspace to insert its path. cd $BUILT_PRODUCTS_DIR rm -f g_audio_64.framework.zip zip --symlinks -r g_audio_64.framework.zip g_audio_64.framework cp -R g_audio_64.framework $PROJECT_DIR/../../LabVIEW/G-Audio/lib/ mv g_audio_64.framework.zip $PROJECT_DIR/../../LabVIEW/G-Audio/lib/ ">
|
||||
<EnvironmentBuildable>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "3CD6706226E0D1FE0040E196"
|
||||
BuildableName = "g_audio_64.framework"
|
||||
BlueprintName = "g_audio_64"
|
||||
ReferencedContainer = "container:g_audio_64.xcodeproj">
|
||||
</BuildableReference>
|
||||
</EnvironmentBuildable>
|
||||
</ActionContent>
|
||||
</ExecutionAction>
|
||||
</PostActions>
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "3CD6706226E0D1FE0040E196"
|
||||
BuildableName = "g_audio_64.framework"
|
||||
BlueprintName = "g_audio_64"
|
||||
ReferencedContainer = "container:g_audio_64.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Release"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "3CD6706226E0D1FE0040E196"
|
||||
BuildableName = "g_audio_64.framework"
|
||||
BlueprintName = "g_audio_64"
|
||||
ReferencedContainer = "container:g_audio_64.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
19
G-Audio/g-audio-main/src/C++/xcode/xcode.h
Normal file
19
G-Audio/g-audio-main/src/C++/xcode/xcode.h
Normal file
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// g_audio.h
|
||||
// g_audio
|
||||
//
|
||||
// Created by Dataflow_G on 9/2/21.
|
||||
// Copyright © 2021 Dataflow_G. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
//! Project version number for g_audio.
|
||||
FOUNDATION_EXPORT double g_audioVersionNumber;
|
||||
|
||||
//! Project version string for g_audio.
|
||||
FOUNDATION_EXPORT const unsigned char g_audioVersionString[];
|
||||
|
||||
// In this header, you should import all the public headers of your framework using statements like #import <g_audio/PublicHeader.h>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user