我正在使用 DirectSound 开发一个项目,并试图将声音文件的标头信息传递给处理方法。WAV 文件在开始时有一个 RIFF chunkID。在对 ProcessWaveFile 方法的调用中,我传递了文件路径以及标头信息。'RIFF' chunkID 存储在一个字符中。我需要能够根据实际文件 chunkID 检查 chunkID 的各个字符,以确保文件正确。这是我的代码片段:
if((waveFileHeader.chunkId[0] != chunkID[0]) || (waveFileHeader.chunkId[1] != chunkID[1]) ||
(waveFileHeader.chunkId[2] != chunkID[2]) || (waveFileHeader.chunkId[3] != chunkID[3]))
{
MessageBox(hwnd, L"ChunkID not in the right Format.", L"Error", MB_OK);
return false;
}
chunkId 是文件的实际 ID,而 chunkID 是通过函数检查的 ID。正如你所看到的,我正在尝试像这里的数组一样处理它。chunkId 存储在 char[] 中。我也应该将 chunkID 存储在数组中吗?我将如何指定它?
bool ProcessWaveFile(char*, IDirectSoundBuffer8**, HWND, int, char, char, char, char, std::string, int, int);
以上是 ProcessWaveFile 方法的头文件行。chunkID 被指定为字符之一。我可以将其更改为 char[] 但实际调用该方法时会遇到困难。这是一个示例调用:
result1 = ProcessWaveFile("../terrain_sky/data/sound01.wav", &m_secondaryBuffer1, hwnd,
44100, 'RIFF', 'fmt ', 'WAVE', 'data', "WAVE_PCM_FORMAT", 16, 2);
如何在此调用中声明包含 RIFF 的数组值而不破坏变量链?