mirror of https://github.com/axmolengine/axmol.git
parent
001614a9c5
commit
b294dffaa1
|
@ -159,7 +159,7 @@
|
|||
<CompileAsWinRT>true</CompileAsWinRT>
|
||||
<AdditionalOptions>/Zm384 /bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\winrt_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\winrt_8.1\freetype2;$(EngineRoot)external\websockets\include\winrt_8.1;$(EngineRoot)external\curl\include\winrt_8.1;$(EngineRoot)external\tiff\include\winrt_8.1;$(EngineRoot)external\jpeg\include\winrt_8.1;$(EngineRoot)external\png\include\winrt_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\winrt_8.1-specific\OggDecoder\include;$(EngineRoot)external\winrt_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\winrt_8.1\freetype2;$(EngineRoot)external\websockets\include\winrt_8.1;$(EngineRoot)external\curl\include\winrt_8.1;$(EngineRoot)external\tiff\include\winrt_8.1;$(EngineRoot)external\jpeg\include\winrt_8.1;$(EngineRoot)external\png\include\winrt_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;CC_ENABLE_BULLET_INTEGRATION=1;_DEBUG;COCOS2D_DEBUG=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
|
@ -179,7 +179,7 @@
|
|||
<CompileAsWinRT>true</CompileAsWinRT>
|
||||
<AdditionalOptions>/Zm384 /bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\winrt_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\winrt_8.1\freetype2;$(EngineRoot)external\websockets\include\winrt_8.1;$(EngineRoot)external\curl\include\winrt_8.1;$(EngineRoot)external\tiff\include\winrt_8.1;$(EngineRoot)external\jpeg\include\winrt_8.1;$(EngineRoot)external\png\include\winrt_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\winrt_8.1-specific\OggDecoder\include;$(EngineRoot)external\winrt_8.1-specific\OggDecoder\include;$(EngineRoot)external\winrt_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\winrt_8.1\freetype2;$(EngineRoot)external\websockets\include\winrt_8.1;$(EngineRoot)external\curl\include\winrt_8.1;$(EngineRoot)external\tiff\include\winrt_8.1;$(EngineRoot)external\jpeg\include\winrt_8.1;$(EngineRoot)external\png\include\winrt_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;CC_ENABLE_BULLET_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
|
@ -199,7 +199,7 @@
|
|||
<CompileAsWinRT>true</CompileAsWinRT>
|
||||
<AdditionalOptions>/Zm384 /bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\winrt_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\winrt_8.1\freetype2;$(EngineRoot)external\websockets\include\winrt_8.1;$(EngineRoot)external\curl\include\winrt_8.1;$(EngineRoot)external\tiff\include\winrt_8.1;$(EngineRoot)external\jpeg\include\winrt_8.1;$(EngineRoot)external\png\include\winrt_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\winrt_8.1-specific\OggDecoder\include;$(EngineRoot)external\winrt_8.1-specific\OggDecoder\include;$(EngineRoot)external\winrt_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\winrt_8.1\freetype2;$(EngineRoot)external\websockets\include\winrt_8.1;$(EngineRoot)external\curl\include\winrt_8.1;$(EngineRoot)external\tiff\include\winrt_8.1;$(EngineRoot)external\jpeg\include\winrt_8.1;$(EngineRoot)external\png\include\winrt_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;CC_ENABLE_BULLET_INTEGRATION=1;_DEBUG;COCOS2D_DEBUG=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
|
@ -219,7 +219,7 @@
|
|||
<CompileAsWinRT>true</CompileAsWinRT>
|
||||
<AdditionalOptions>/Zm384 /bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\winrt_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\winrt_8.1\freetype2;$(EngineRoot)external\websockets\include\winrt_8.1;$(EngineRoot)external\curl\include\winrt_8.1;$(EngineRoot)external\tiff\include\winrt_8.1;$(EngineRoot)external\jpeg\include\winrt_8.1;$(EngineRoot)external\png\include\winrt_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\winrt_8.1-specific\OggDecoder\include;$(EngineRoot)external\winrt_8.1-specific\OggDecoder\include;$(EngineRoot)external\winrt_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\winrt_8.1\freetype2;$(EngineRoot)external\websockets\include\winrt_8.1;$(EngineRoot)external\curl\include\winrt_8.1;$(EngineRoot)external\tiff\include\winrt_8.1;$(EngineRoot)external\jpeg\include\winrt_8.1;$(EngineRoot)external\png\include\winrt_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;CC_ENABLE_BULLET_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
|
|
|
@ -113,7 +113,7 @@
|
|||
<CompileAsWinRT>true</CompileAsWinRT>
|
||||
<AdditionalOptions>/Zm384 /bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1\freetype2;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\OggDecoder\include;$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1\freetype2;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>CC_WINDOWS_PHONE_8_1;_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;CC_ENABLE_BULLET_INTEGRATION=1;_DEBUG;COCOS2D_DEBUG=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
|
@ -133,7 +133,7 @@
|
|||
<CompileAsWinRT>true</CompileAsWinRT>
|
||||
<AdditionalOptions>/Zm384 /bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1\freetype2;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\OggDecoder\include;$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1\freetype2;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>CC_WINDOWS_PHONE_8_1;_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;CC_ENABLE_BULLET_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
|
@ -153,7 +153,7 @@
|
|||
<CompileAsWinRT>true</CompileAsWinRT>
|
||||
<AdditionalOptions>/Zm384 /bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1\freetype2;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\OggDecoder\include;$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1\freetype2;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>CC_WINDOWS_PHONE_8_1;_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;CC_ENABLE_BULLET_INTEGRATION=1;_DEBUG;COCOS2D_DEBUG=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
|
@ -173,7 +173,7 @@
|
|||
<CompileAsWinRT>true</CompileAsWinRT>
|
||||
<AdditionalOptions>/Zm384 /bigobj %(AdditionalOptions)</AdditionalOptions>
|
||||
<ForcedIncludeFiles>pch.h</ForcedIncludeFiles>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1\freetype2;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>$(EngineRoot)external\wp_8.1-specific\OggDecoder\include;$(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1\freetype2;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>CC_WINDOWS_PHONE_8_1;_USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;CC_ENABLE_BULLET_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<DisableSpecificWarnings>%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
|
|
|
@ -18,8 +18,8 @@
|
|||
<DisableSpecificWarnings>4056;4244;4251;4756;4453;28204;4099;</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>libGLESv2.lib;libEGL.lib;ws2_32.lib;libwebsockets.lib;libcurl.lib;chipmunk.lib;zlib.lib;freetype.lib;sqlite3.lib;d2d1.lib;d3d11.lib;dxgi.lib;windowscodecs.lib;dwrite.lib;dxguid.lib;xaudio2.lib;mfcore.lib;mfplat.lib;mfreadwrite.lib;mfuuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\angle\prebuilt\$(Platform);$(EngineRoot)external\curl\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\websockets\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\chipmunk\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\zlib\prebuilt\$(Platform);$(EngineRoot)external\sqlite3\libraries\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\freetype2\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\poly2tri;$(EngineRoot)external\poly2tri\common;$(EngineRoot)external\poly2tri\sweep;%(AdditionalLibraryDirectories);</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>libogg.lib;libvorbis.lib;libvorbisfile.lib;libGLESv2.lib;libEGL.lib;ws2_32.lib;libwebsockets.lib;libcurl.lib;chipmunk.lib;zlib.lib;freetype.lib;sqlite3.lib;d2d1.lib;d3d11.lib;dxgi.lib;windowscodecs.lib;dwrite.lib;dxguid.lib;xaudio2.lib;mfcore.lib;mfplat.lib;mfreadwrite.lib;mfuuid.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\OggDecoder\prebuilt\$(Platform);$(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\angle\prebuilt\$(Platform);$(EngineRoot)external\curl\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\websockets\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\chipmunk\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\zlib\prebuilt\$(Platform);$(EngineRoot)external\sqlite3\libraries\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\freetype2\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\poly2tri;$(EngineRoot)external\poly2tri\common;$(EngineRoot)external\poly2tri\sweep;%(AdditionalLibraryDirectories);</AdditionalLibraryDirectories>
|
||||
<AdditionalOptions>/IGNORE:4264 %(AdditionalOptions)</AdditionalOptions>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<CurlBinPath Condition=" '$(CurlBinPath)' == '' ">$(EngineRoot)external\curl\prebuilt\$(COCOS2D_PLATFORM)\$(Platform)\</CurlBinPath>
|
||||
<WebsocketsBinPath Condition=" '$(WebsocketsBinPath)' == '' ">$(EngineRoot)external\websockets\prebuilt\$(COCOS2D_PLATFORM)\$(Platform)\</WebsocketsBinPath>
|
||||
<SQLiteBinPath Condition=" '$(SQLiteBinPath)' == '' ">$(EngineRoot)external\sqlite3\libraries\$(COCOS2D_PLATFORM)\$(Platform)\</SQLiteBinPath>
|
||||
<OggBinPath Condition=" '$(OggBinPath)' == '' ">$(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\OggDecoder\prebuilt\$(Platform)\</OggBinPath>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Label="ANGLE">
|
||||
<None Include="$(AngleBinPath)libEGL.dll">
|
||||
|
@ -29,5 +30,14 @@
|
|||
<None Include="$(CurlBinPath)ssleay32.dll">
|
||||
<DeploymentContent>true</DeploymentContent>
|
||||
</None>
|
||||
<None Include="$(OggBinPath)libogg.dll">
|
||||
<DeploymentContent>true</DeploymentContent>
|
||||
</None>
|
||||
<None Include="$(OggBinPath)libvorbis.dll">
|
||||
<DeploymentContent>true</DeploymentContent>
|
||||
</None>
|
||||
<None Include="$(OggBinPath)libvorbisfile.dll">
|
||||
<DeploymentContent>true</DeploymentContent>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -37,6 +37,7 @@ inline void ThrowIfFailed(HRESULT hr)
|
|||
// AudioCache
|
||||
AudioCache::AudioCache()
|
||||
: _isReady(false)
|
||||
, _retry(false)
|
||||
, _fileFullPath("")
|
||||
, _srcReader(nullptr)
|
||||
, _fileFormat(FileFormat::UNKNOWN)
|
||||
|
@ -57,6 +58,10 @@ AudioCache::~AudioCache()
|
|||
|
||||
void AudioCache::readDataTask()
|
||||
{
|
||||
if (_isReady) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::wstring path(_fileFullPath.begin(), _fileFullPath.end());
|
||||
|
||||
if (nullptr != _srcReader) {
|
||||
|
@ -68,31 +73,34 @@ void AudioCache::readDataTask()
|
|||
{
|
||||
case FileFormat::WAV:
|
||||
_srcReader = new (std::nothrow) WAVReader();
|
||||
if (_srcReader && _srcReader->initialize(_fileFullPath)) {
|
||||
_audInfo._totalAudioBytes = _srcReader->getTotalAudioBytes();
|
||||
_audInfo._wfx = _srcReader->getWaveFormatInfo();
|
||||
_isReady = true;
|
||||
invokeCallbacks();
|
||||
}
|
||||
break;
|
||||
|
||||
case FileFormat::OGG:
|
||||
_srcReader = new (std::nothrow) OGGReader();
|
||||
break;
|
||||
|
||||
case FileFormat::MP3:
|
||||
_srcReader = new (std::nothrow) MP3Reader();
|
||||
if (_srcReader && _srcReader->initialize(_fileFullPath)) {
|
||||
_audInfo._totalAudioBytes = _srcReader->getTotalAudioBytes();
|
||||
_audInfo._wfx = _srcReader->getWaveFormatInfo();
|
||||
_isReady = true;
|
||||
invokeCallbacks();
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case FileFormat::UNKNOWN:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (_srcReader && _srcReader->initialize(_fileFullPath)) {
|
||||
_audInfo._totalAudioBytes = _srcReader->getTotalAudioBytes();
|
||||
_audInfo._wfx = _srcReader->getWaveFormatInfo();
|
||||
_isReady = true;
|
||||
_retry = false;
|
||||
invokeCallbacks();
|
||||
}
|
||||
|
||||
if (!_isReady) {
|
||||
_retry = true;
|
||||
log("Failed to read input file: %s.\n", _fileFullPath.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
void AudioCache::addCallback(const std::function<void()> &callback)
|
||||
|
@ -105,6 +113,10 @@ void AudioCache::addCallback(const std::function<void()> &callback)
|
|||
_callbacks.push_back(callback);
|
||||
}
|
||||
_cbMutex.unlock();
|
||||
|
||||
if (_retry) {
|
||||
readDataTask();
|
||||
}
|
||||
}
|
||||
|
||||
void AudioCache::invokeCallbacks()
|
||||
|
@ -290,6 +302,9 @@ void AudioPlayer::setVolume(float volume)
|
|||
if (FAILED(_xaMasterVoice->SetVolume(volume))) {
|
||||
error();
|
||||
}
|
||||
else {
|
||||
_volume = volume;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -371,7 +386,7 @@ bool AudioPlayer::_play(bool resume)
|
|||
|
||||
if (_state == AudioPlayerState::PAUSED && !resume || nullptr == _xaSourceVoice) break;
|
||||
|
||||
if (FAILED(_xaSourceVoice->Start())) {
|
||||
if (FAILED(_xaMasterVoice->SetVolume(_volume)) || FAILED(_xaSourceVoice->Start())) {
|
||||
error();
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -65,6 +65,7 @@ private:
|
|||
AudioCache& operator=(const AudioCache&);
|
||||
|
||||
private:
|
||||
bool _retry;
|
||||
bool _isReady;
|
||||
AudioInfo _audInfo;
|
||||
std::mutex _cbMutex;
|
||||
|
|
|
@ -160,7 +160,7 @@ int AudioEngineImpl::play2d(const std::string &filePath, bool loop, float volume
|
|||
}
|
||||
else if (ext.compare(".ogg") == 0){
|
||||
audioCache->_fileFormat = FileFormat::OGG;
|
||||
//eraseCache = false; //TODO add support for OGG
|
||||
eraseCache = false;
|
||||
}
|
||||
else if (ext.compare(".mp3") == 0){
|
||||
audioCache->_fileFormat = FileFormat::MP3;
|
||||
|
@ -168,7 +168,6 @@ int AudioEngineImpl::play2d(const std::string &filePath, bool loop, float volume
|
|||
}
|
||||
else{
|
||||
log("unsupported media type:%s\n", ext.c_str());
|
||||
eraseCache = false;
|
||||
}
|
||||
|
||||
if (eraseCache){
|
||||
|
|
|
@ -53,6 +53,24 @@ void AudioSourceReader::flushChunks()
|
|||
_rwMutex.unlock();
|
||||
}
|
||||
|
||||
void AudioSourceReader::seekTo(const float ratio)
|
||||
{
|
||||
if (_isStreaming) {
|
||||
auto newPos = ratio * _audioSize;
|
||||
|
||||
if (!newPos && !_isDirty && _chnkQ.size()) // already in 0.0 position
|
||||
return;
|
||||
|
||||
_bytesRead = newPos;
|
||||
flushChunks();
|
||||
auto alignment = _wfx.nChannels * _wfx.nBlockAlign;
|
||||
_bytesRead = _bytesRead >= _audioSize ? (_audioSize - alignment) : _bytesRead - (_bytesRead % alignment);
|
||||
|
||||
for (int i = 0; i < QUEUEBUFFER_NUM; i++) {
|
||||
produceChunk();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// WAVFileReader
|
||||
WAVReader::WAVReader() :
|
||||
|
@ -78,10 +96,8 @@ bool WAVReader::initialize(const std::string& filePath)
|
|||
|
||||
flushChunks();
|
||||
|
||||
_rwMutex.lock();
|
||||
_streamer = ref new MediaStreamer;
|
||||
_streamer->Initialize(std::wstring(_filePath.begin(), _filePath.end()).c_str(), true);
|
||||
_rwMutex.unlock();
|
||||
_wfx = _streamer->GetOutputWaveFormatEx();
|
||||
UINT32 dataSize = _streamer->GetMaxStreamLengthInBytes();
|
||||
|
||||
|
@ -162,31 +178,7 @@ void WAVReader::produceChunk()
|
|||
|
||||
void WAVReader::seekTo(const float ratio)
|
||||
{
|
||||
if (_isStreaming) {
|
||||
auto newPos = ratio * _audioSize;
|
||||
|
||||
if (!newPos && !_isDirty && _chnkQ.size()) // already in 0.0 position
|
||||
return;
|
||||
|
||||
_bytesRead = newPos;
|
||||
flushChunks();
|
||||
|
||||
switch (_wfx.wFormatTag)
|
||||
{
|
||||
case WAVE_FORMAT_PCM:
|
||||
case WAVE_FORMAT_ADPCM: {
|
||||
auto alignment = _wfx.nChannels * _wfx.nBlockAlign;
|
||||
_bytesRead = _bytesRead >= _audioSize ? (_audioSize - alignment) : _bytesRead - (_bytesRead % alignment);
|
||||
} break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
for (int i = 0; i < QUEUEBUFFER_NUM; i++) {
|
||||
produceChunk();
|
||||
}
|
||||
}
|
||||
AudioSourceReader::seekTo(ratio);
|
||||
}
|
||||
|
||||
|
||||
|
@ -299,21 +291,7 @@ void MP3Reader::produceChunk()
|
|||
|
||||
void MP3Reader::seekTo(const float ratio)
|
||||
{
|
||||
if (_isStreaming) {
|
||||
auto newPos = ratio * _audioSize;
|
||||
|
||||
if (!newPos && !_isDirty && _chnkQ.size()) // already in 0.0 position
|
||||
return;
|
||||
|
||||
_bytesRead = newPos;
|
||||
flushChunks();
|
||||
auto alignment = _wfx.nChannels * _wfx.nBlockAlign;
|
||||
_bytesRead = _bytesRead >= _audioSize ? (_audioSize - alignment) : _bytesRead - (_bytesRead % alignment);
|
||||
|
||||
for (int i = 0; i < QUEUEBUFFER_NUM; i++) {
|
||||
produceChunk();
|
||||
}
|
||||
}
|
||||
AudioSourceReader::seekTo(ratio);
|
||||
}
|
||||
|
||||
HRESULT MP3Reader::configureSourceReader(IMFSourceReader* pReader, IMFMediaType** ppDecomprsdAudioType)
|
||||
|
@ -520,4 +498,137 @@ Wrappers::FileHandle MP3Reader::openFile(const std::string& path, bool append)
|
|||
return Microsoft::WRL::Wrappers::FileHandle(CreateFile2(std::wstring(path.begin(), path.end()).c_str(), access, FILE_SHARE_READ, creation, &extParams));
|
||||
}
|
||||
|
||||
|
||||
// OGGReader
|
||||
OGGReader::OGGReader()
|
||||
{
|
||||
}
|
||||
|
||||
OGGReader::~OGGReader()
|
||||
{
|
||||
if (_vorbisFd) {
|
||||
ov_clear(_vorbisFd.get());
|
||||
}
|
||||
}
|
||||
|
||||
bool OGGReader::initialize(const std::string& filePath)
|
||||
{
|
||||
bool ret = false;
|
||||
_filePath = filePath;
|
||||
|
||||
do {
|
||||
_vorbisFd = std::make_unique<OggVorbis_File>();
|
||||
if (ov_fopen(FileUtils::getInstance()->getSuitableFOpen(_filePath).c_str(), _vorbisFd.get())){
|
||||
break;
|
||||
}
|
||||
|
||||
auto vi = ov_info(_vorbisFd.get(), -1);
|
||||
|
||||
if (!vi) {
|
||||
break;
|
||||
}
|
||||
|
||||
auto totalFrames = ov_pcm_total(_vorbisFd.get(), -1);
|
||||
auto bytesPerFrame = vi->channels * 2;
|
||||
_audioSize = totalFrames * bytesPerFrame;
|
||||
|
||||
_wfx.wFormatTag = WAVE_FORMAT_PCM;
|
||||
_wfx.nChannels = vi->channels;
|
||||
_wfx.nSamplesPerSec = vi->rate;
|
||||
_wfx.nAvgBytesPerSec = vi->rate * bytesPerFrame;
|
||||
_wfx.nBlockAlign = bytesPerFrame;
|
||||
_wfx.wBitsPerSample = (bytesPerFrame / vi->channels) * 8;
|
||||
_wfx.cbSize = 0;
|
||||
|
||||
if (_audioSize <= PCMDATA_CACHEMAXSIZE) {
|
||||
produceChunk();
|
||||
}
|
||||
else {
|
||||
_isStreaming = true;
|
||||
for (int i = 0; i < QUEUEBUFFER_NUM; i++) {
|
||||
produceChunk();
|
||||
}
|
||||
}
|
||||
|
||||
ret = true;
|
||||
} while (false);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool OGGReader::consumeChunk(AudioDataChunk& chunk)
|
||||
{
|
||||
bool ret = false;
|
||||
_isDirty = true;
|
||||
|
||||
_rwMutex.lock();
|
||||
if (_chnkQ.size() > 0) {
|
||||
chunk = _chnkQ.front();
|
||||
if (_isStreaming) {
|
||||
_chnkQ.pop();
|
||||
}
|
||||
ret = true;
|
||||
}
|
||||
_rwMutex.unlock();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void OGGReader::produceChunk()
|
||||
{
|
||||
_rwMutex.lock();
|
||||
int chunkSize = _audioSize;
|
||||
|
||||
do {
|
||||
if (!_isStreaming && _chnkQ.size() || _chnkQ.size() >= QUEUEBUFFER_NUM) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (_isStreaming) {
|
||||
chunkSize = std::min(CHUNK_SIZE_MAX, _audioSize - _bytesRead);
|
||||
}
|
||||
|
||||
if (!chunkSize && !_chnkQ.size()) {
|
||||
auto alignment = _wfx.nChannels * _wfx.nBlockAlign;
|
||||
_bytesRead -= alignment;
|
||||
chunkSize = alignment;
|
||||
}
|
||||
|
||||
if (!chunkSize) {
|
||||
break;
|
||||
}
|
||||
|
||||
int retSize = 0;
|
||||
AudioDataChunk chunk = { 0 };
|
||||
chunk._data = std::make_shared<PCMBuffer>(chunkSize);
|
||||
|
||||
auto newPos = (1.0f * _bytesRead / _audioSize) * ov_time_total(_vorbisFd.get(), -1);
|
||||
if (ov_time_seek(_vorbisFd.get(), newPos)){
|
||||
break;
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
long br = 0;
|
||||
int current_section = 0;
|
||||
if ((br = ov_read(_vorbisFd.get(), (char*)chunk._data->data() + retSize, chunkSize - retSize, 0, 2, 1, ¤t_section)) == 0) {
|
||||
break;
|
||||
}
|
||||
retSize += br;
|
||||
} while (retSize < chunkSize);
|
||||
|
||||
_bytesRead += retSize;
|
||||
chunk._dataSize = retSize;
|
||||
chunk._seqNo = ((float)_bytesRead / _audioSize) * ((float)_audioSize / CHUNK_SIZE_MAX);
|
||||
chunk._endOfStream = (_bytesRead >= _audioSize);
|
||||
_chnkQ.push(chunk);
|
||||
} while (false);
|
||||
_rwMutex.unlock();
|
||||
}
|
||||
|
||||
void OGGReader::seekTo(const float ratio)
|
||||
{
|
||||
AudioSourceReader::seekTo(ratio);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -30,6 +30,8 @@
|
|||
#include <queue>
|
||||
#include <mutex>
|
||||
#include "MediaStreamer.h"
|
||||
#include "ogg/ogg.h"
|
||||
#include "vorbis/vorbisfile.h"
|
||||
|
||||
NS_CC_BEGIN
|
||||
namespace experimental{
|
||||
|
@ -132,6 +134,22 @@ class MP3Reader : public AudioSourceReader
|
|||
std::string _mappedWavFile;
|
||||
};
|
||||
|
||||
class OGGReader : public AudioSourceReader
|
||||
{
|
||||
public:
|
||||
OGGReader();
|
||||
virtual ~OGGReader();
|
||||
|
||||
virtual bool initialize(const std::string& filePath) override;
|
||||
virtual FileFormat getFileFormat() override { return FileFormat::WAV; }
|
||||
virtual bool consumeChunk(AudioDataChunk& chunk) override;
|
||||
virtual void produceChunk() override;
|
||||
virtual void seekTo(const float ratio) override;
|
||||
|
||||
private:
|
||||
std::unique_ptr<OggVorbis_File> _vorbisFd;
|
||||
};
|
||||
|
||||
}
|
||||
NS_CC_END
|
||||
#endif // __AUDIO_SOURCE_READER_H_
|
||||
|
|
Loading…
Reference in New Issue