Указатель на аудиобуфер структуры XAUDIO_BUFFER
в XAudio2 определен как BYTE *pAudioData
. Когда я использовал 16-битный Integer PCM, моя программа выглядела так:
void buildWaveBuffer(std::vector<unsigned char> &vec)
{
std::string lineString;
int lineInt;
unsigned char lowByte, highByte;
std::ifstream myfile("sineInt16");
if (myfile.is_open())
{
while(myfile.good())
{
std::getline(myfile,lineString,',');
lineInt = atoi(lineString.c_str());
highByte = (lineInt >> 8) & 0x00FF;
lowByte = lineInt & 0x00FF;
vec.push_back(lowByte);
vec.push_back(highByte);
}
myfile.close();
}
}
"sineInt16"
является файлом .csv. Поскольку вектор организован последовательно в памяти, я просто сделал бы pAudioData = &vec[0]
, и это сработало бы. Что если я захочу изменить формат моего .csv на float
? Как мне дать указатель на первый байт в векторе? Должен ли я использовать другой контейнер, как простой массив символов?