0
指向XAudio2中XAUDIO_BUFFER
結構的音頻緩衝區的指針定義爲BYTE *pAudioData
。當我使用16位整數PCM,這是我的程序看起來像:指向矢量第一個字節的指針<float>
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
,該怎麼辦?我該如何給出向量中第一個字節的指針?我應該使用另一個容器,如簡單的字符數組嗎?
第一個字節的地址有用嗎?浮點數的字節解釋與其實際值完全無關。 XAudio2可以解決這個問題嗎? –
你的循環是錯誤的。它會錯誤地讀取文件。 – Nawaz
@Konrad老實說,我不確定,因爲我在選項中指定樣本採用Float32格式,並且每個樣本都有32位,所以XAudio2將在解釋值之前讀取前4個字節? –