Медленное воспроизведение Mp3 в Windows Mobile 6 SndPlaySync - PullRequest
1 голос
/ 15 ноября 2009

Я пытаюсь воспроизвести mp3-файлы из моего мобильного приложения winows, используя недавно поддерживаемую функцию воспроизведения mp3-файлов SndPlaySync (также пробовал SndPlayAsync). Я сделал простейшую программу, просто прикрепил функцию к событию WM_KEYDOWN. (код прилагается ниже). Но все еще есть 0,5-2 секунды ожидания, прежде чем программа воспроизводит mp3. Когда я просто использую PlaySound и пытаюсь воспроизвести файл .wav, он работает без устали. Что я могу сделать?

Код:

Это работает слишком медленно

case WM_KEYDOWN: 
    PlaySound(c_szMid,NULL,NULL);
    HSOUND hSound;
    HRESULT hr;
    SndOpen(c_szMid, &hSound);
    hr = SndPlayAsync(hSound, 0);
    hr = SndClose(hSound);

И это работает быстро:

case WM_KEYDOWN: 
    PlaySound(c_szMid,NULL,NULL);

Буду благодарен за любые идеи!

Спасибо!

Dan

Ответы [ 3 ]

1 голос
/ 15 ноября 2009

Не забывайте, что файл mp3 сжат, а wav - нет.

Таким образом, задержка может быть временем, которое требуется, чтобы прочитать файл mp3 в память и распаковать его, что не должно происходить с файлом wav.

Хотя я не уверен, как ты это проверишь.

0 голосов
/ 16 ноября 2009

Я на самом деле добавил код, где я пытался SndPlayAsync, но он работал так же с SndPlaySync.

Я на самом деле сузил проблему - даже когда я пытаюсь воспроизвести файлы WAV, используя PlaySound (с флагом Sync) и с использованием SndPlaySync, SndPlaySync работает в два раза медленнее: (

Я открою новый вопрос об этом.

0 голосов
/ 15 ноября 2009

Это правильный код? Прямо сейчас вы вызываете PlaySound (который является синхронным) с последующей асинхронной версией. Для меня это должно звучать дважды.

Кроме того, если вы попытаетесь использовать PlaySound с флагом SND_ASYNC, какое поведение вы видите?

...