JD2022-TU1/main/extern/Raki/Source/RakiTools/BinOrbis/BinOrbis.cpp

73 lines
2.1 KiB
C++

#include "Precompiled.h"
#include "RakiEngine/Data/MemoryBlock/MemoryBlock.h"
#include "RakiEngine/Data/Stream/FileStream.h"
#include "RakiEngine/Data/Stream/SeekableStreamPart.h"
#include "RakiEngine/Data/WaveFile/BinWaveData/BinWaveData.h"
#include "RakiEngine/Data/WaveFile/RiffChunkManager.h"
#include "RakiEngine/Data/WaveFile/WaveFile.h"
#include "RakiEngine/Specific/_WIN32/Specific_WIN32.h"
#include "RakiTests/Initializer/TestInitializer.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=Y:/JD5/JD/playground/JD6/extern/Raki/TestData/Mus_Jun_Cage_Free_04_2M.wav
// path=D:/JDData/jd_production/main/data/EngineData/Sound/MetronomeDebugBar.wav
int _tmain(int argc, _TCHAR* argv[] )
{
raki::CoInitializeInitObject coInitializeInitObject;
{
raki::Engine::ExternalToolPaths externalToolPaths;
raki::TestInitializer initializer( &externalToolPaths );
raki::KeyValueContainer keyValueContainer( argc, argv );
bool error = false;
if ( ( keyValueContainer.getNbKeyValuePairs() != 1 ) && ( keyValueContainer.getNbKeyValuePairs() != 2 ) )
error = true;
if ( !keyValueContainer.getStringValue( _T( "path" ) ).size() )
error = true;
if ( error )
{
printf( "BinOrbis usage example:" );
printf( " BinOrbis path=<path>" );
return -1;
}
#define TEXT_SIZE 512
char inputPath[TEXT_SIZE];
size_t returnSize = 0;
wcstombs_s( &returnSize, inputPath, TEXT_SIZE, keyValueContainer.getStringValue( _T( "path" ) ).c_str(), TEXT_SIZE );
const bool isStream = keyValueContainer.getBoolValue( _T( "isStream" ) );
const raki::u32 binFlags = isStream ? 1 : 0;
char outputPath[TEXT_SIZE];
sprintf_s( outputPath, TEXT_SIZE, "%s.orbis", inputPath );
if ( !raki::Specific::BinSoftware::PcmBin( inputPath, outputPath, binFlags, raki::BinWaveData::platform_orbis ) )
return -1;
}
return 0;
}