0
XAudio2のXAUDIO_BUFFER
構造体のオーディオバッファへのポインタは、BYTE *pAudioData
と定義されています。 .csvファイルであることベクトルの先頭バイトへのポインタ<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"
:私は16ビットの整数PCMを使用していた場合は、これは私のプログラムは以下のように見えたものです。ベクトルはメモリ内で順番に整理されているので、私は単にpAudioData = &vec[0]
を実行するだけで動作します。 .csvの形式をfloat
に変更したい場合はどうすればよいですか?ベクトルの最初のバイトへのポインタを与えるにはどうしたらいいですか?単純な文字配列のような別のコンテナを使うべきですか?
最初のバイトのアドレスはどのようなものですか? floatのバイト単位の解釈は、実際の値とはまったく関係ありません。 XAudio2はこれに対処できますか? –
ループが間違っています。ファイルを間違って読み込みます。 – Nawaz
@Konrad正直なところ私は分かりませんが、オプションではサンプルがFloat32形式であり、各サンプルに32ビットが指定されているので、XAudio2は値を解釈する前に最初の4バイトを読み込みます? –