105 lines
3.4 KiB
C++
105 lines
3.4 KiB
C++
#include "Precompiled.h"
|
|
|
|
|
|
|
|
|
|
#include "RakiTests/Initializer/TestInitializer.h"
|
|
|
|
|
|
#include "RakiEngine/Data/MemoryBlock/MemoryBlock.h"
|
|
#include "RakiEngine/Data/Stream/BufferFromStream.h"
|
|
#include "RakiEngine/Data/Stream/FileStream.h"
|
|
#include "RakiEngine/Data/Stream/SeekableStreamPart.h"
|
|
#include "RakiEngine/Data/WaveFile/RiffChunkManager.h"
|
|
#include "RakiEngine/Data/WaveFile/BinWaveData/BinWaveData.h"
|
|
#include "RakiEngine/Data/WaveFile/WaveFile.h"
|
|
#include "RakiEngine/Data/WaveFile/WaveDataPitchConverter.h"
|
|
#include "RakiEngine/Specific/_WIN32/Specific_WIN32.h"
|
|
|
|
#include "RakiTests/_Win32/CoInitializeInitObject.h"
|
|
#include "RakiTests/_Win32/KeyValueContainer.h"
|
|
|
|
|
|
#ifndef RAKI_PLATFORM_WIN32
|
|
#error // this is a bin test app - only for Win32
|
|
#endif // RAKI_PLATFORM_WIN32
|
|
|
|
|
|
|
|
|
|
// path=E:/ITF/UbiArt/extern/Raki/TestData/Sfx_CageDoor_Discover.wav samplingRate=32 interleaveIfStereo=false
|
|
|
|
int _tmain(int argc, _TCHAR* argv[] )
|
|
{
|
|
raki::CoInitializeInitObject coInitializeInitObject;
|
|
|
|
raki::KeyValueContainer keyValueContainer( argc, argv );
|
|
|
|
{
|
|
raki::Engine::ExternalToolPaths externalToolPaths;
|
|
|
|
const raki::u32 size = 512;
|
|
char rvlRootPath[size];
|
|
char cafeDspadpcmEncPath[size];
|
|
|
|
size_t returnedSize = 0;
|
|
getenv_s( &returnedSize, rvlRootPath, size, "REVOLUTION_SDK_ROOT" );
|
|
|
|
if ( !rvlRootPath[0] )
|
|
return false;
|
|
|
|
// -fscomp -x -ignorewavloop
|
|
sprintf_s( cafeDspadpcmEncPath, size, "%s\\x86\\bin\\dspadpcm.exe", rvlRootPath );
|
|
|
|
externalToolPaths.m_wiiDspadpcmEncPath = cafeDspadpcmEncPath;
|
|
|
|
raki::TestInitializer initializer( &externalToolPaths );
|
|
|
|
bool error = false;
|
|
|
|
if ( ( keyValueContainer.getNbKeyValuePairs() != 3 ) && ( keyValueContainer.getNbKeyValuePairs() != 4 ) )
|
|
error = true;
|
|
|
|
if ( !keyValueContainer.getStringValue( _T( "path" ) ).size() )
|
|
error = true;
|
|
|
|
if ( !keyValueContainer.getStringValue( _T( "samplingRate" ) ).size() )
|
|
error = true;
|
|
|
|
if ( !keyValueContainer.getStringValue( _T( "interleaveIfStereo" ) ).size() )
|
|
error = true;
|
|
|
|
const bool isStream = keyValueContainer.getBoolValue( _T( "isStream" ) );
|
|
const raki::u32 binFlags = isStream ? 1 : 0;
|
|
|
|
if ( error )
|
|
{
|
|
printf( "BinWii usage (note original wave files MUST HAVE 48 kHz sampling rate:" );
|
|
printf( " valid sampling rate are:" );
|
|
printf( " 32 for 32 kHz, 24 for 24 kHz and 16 for 16 kHz" );
|
|
printf( " Interleaving is necessary for streamed waves, non interleaved data is necessary for buffered waves" );
|
|
printf( "Example:" );
|
|
printf( " BinWii path=<path> samplingRate=32 interleaveIfStereo=false" );
|
|
return -1;
|
|
}
|
|
|
|
#define TEXT_SIZE 512
|
|
char path[TEXT_SIZE];
|
|
size_t returnSize = 0;
|
|
wcstombs_s( &returnSize, path, TEXT_SIZE, keyValueContainer.getStringValue( _T( "path" ) ).c_str(), TEXT_SIZE );
|
|
|
|
int samplingRate = keyValueContainer.getIntValue( _T( "samplingRate" ) );
|
|
|
|
bool interleaveIfStereo = keyValueContainer.getBoolValue( _T( "interleaveIfStereo" ) );
|
|
|
|
char outputPath[TEXT_SIZE];
|
|
sprintf_s( outputPath, TEXT_SIZE, "%s.wii", path );
|
|
|
|
if ( !raki::Specific::BinWii::Bin( path, outputPath, samplingRate, interleaveIfStereo, binFlags ) )
|
|
return -1;
|
|
}
|
|
|
|
|
|
return 0;
|
|
}
|
|
|