Загрузка волнового файла, но в конце данных есть случайная чепуха, а не ожидаемые образцыC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Загрузка волнового файла, но в конце данных есть случайная чепуха, а не ожидаемые образцы

Сообщение Anonymous »

У меня есть простой читатель WAV, который я нашел онлайн давным -давно, я вернулся к его использованию, но, похоже, он заменит около 1200 образцов в конце чанка данных одним случайным повторяющимся номером , например, -126800. В конце выборки ожидается молчание, поэтому число должно быть нулевым. < /P>
Вот простая программа: < /p>
void main() {
WAV_HEADER* wav = loadWav(".\\audio\\test.wav");
double sample_count = wav->SubChunk2Size * 8 / wav->BitsPerSample;

printf("Sample count: %i\n", (int)sample_count);

vector samples = vector();

for (int i = 0; i < wav->SubChunk2Size; i++)
{
int val = ((wav->data & 0xff) data[i + 1] & 0xff);
samples.push_back(val);
}
printf("done\n");
}
< /code>
И вот WAV Reader: < /p>
typedef struct
{
//riff
uint32_t Chunk_ID;
uint32_t ChunkSize;
uint32_t Format;

//fmt
uint32_t SubChunk1ID;
uint32_t SubChunk1Size;
uint16_t AudioFormat;
uint16_t NumberOfChanels;
uint32_t SampleRate;
uint32_t ByteRate;

uint16_t BlockAlignment;
uint16_t BitsPerSample;

//data
uint32_t SubChunk2ID;
uint32_t SubChunk2Size;

//Everything else is data. We note it's offset
char data[];

} WAV_HEADER;
#pragma pack()

inline WAV_HEADER* loadWav(const char* filePath)
{
long size;
WAV_HEADER* header;
void* buffer;

FILE* file;

fopen_s(&file,filePath, "r");
assert(file);

fseek(file, 0, SEEK_END);
size = ftell(file);
rewind(file);

std::cout
Я не уверен, в чем проблема, я подтвердил, что метадан нет, и не существует несоответствия между числами, считываемыми из заголовка и фактического файл. Я предполагаю, что на моей стороне это размер/смещение, но я не вижу его.
Любая помощь приветствует.>

Подробнее здесь: https://stackoverflow.com/questions/706 ... rather-tha
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»