Воспроизведение волнового файла заканчивается немедленно (C ++, Windows) - PullRequest
3 голосов
/ 13 августа 2008

У меня следующая ситуация. На машине есть карта Fritz ISDN . Существует процесс, который отвечает за воспроизведение определенного волнового файла на выходе устройства ( ISDN соединение устанавливается при запуске и становится постоянным). Сценарий прост, когда необходимо, процесс вызывает waveOutWrite() на ранее открытом волновом устройстве (все, конечно, инициализируется без проблем), а функция обратного вызова ждет, пока MM_WOM_DONE msg узнает, что воспроизведение завершено.

Однако через несколько дней (ничего не изменилось ни в процессе, ни в машине) сообщение MM_WOM_DONE пришло сразу после вызова waveOutWrite(), хотя волна длится пару секунд. Снова об ошибке не сообщается, похоже, файл был воспроизведен, но имел нулевую длину (что не так). Я также уверен, что waveOutReset() не был вызван моим процессом (это также инициировало бы отправку упомянутого сообщения). В прошлом у меня уже были странные проблемы, которые решались просто переустановкой драйверов TAPI . На этот раз по какой-то причине мне сложно выполнить это еще раз, и я пытаюсь использовать более аналитический подход :). Любые предложения, что может вызвать такое поведение? Может быть, что-то на другом конце линии ISDN ?

Ответы [ 3 ]

3 голосов
/ 24 сентября 2008

Исходя из вашего описания, вы играете асинхронно. Вы уверены, что резервная память для файла wav не очищалась в это время?

2 голосов
/ 14 августа 2008

У меня слишком мало времени для Google, но я знаю, что Ларри Остерман или Рэймонд Чен писали в блогах о подобной ситуации.

Я проверю позже, когда у меня будет больше времени, чтобы проверить, открыт ли этот вопрос.

0 голосов
/ 18 августа 2008

Что такое возвращаемое значение, когда звук не воспроизводится? Если вы получаете сообщение MMSYSERR_NOERROR, которое указывает на то, что драйвер неправильно сообщает ОС, что буфер обработан.

Изменился ли сам файл WAV? Эта запись в блоге указывает на то, что для метаданных была проведена довольно глубокая проверка.

...