Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
a_etot_nik
8 / 8 / 1
Регистрация: 09.04.2010
Сообщений: 58
#1

Звуковой драйвер не сообщяет о завершение воспроизведения - C++

23.01.2012, 20:05. Просмотров 700. Ответов 8
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
void  CALLBACK func (HWAVEOUT hwi, UINT Msg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2){
    if (Msg == WOM_OPEN) std::cout<<"open"<<std::endl;
    if (WOM_DONE == Msg){  // Не выполняется ...
       std::cout<<"end_play"<<std::endl;
       sound_play * pClass = (sound_play * )dwInstance;
       pClass->buffer->pop();
       pClass->start = true;
       pClass->play();
    }
}
А так открываю ....
C++
1
  waveOutOpen(&devais,WAVE_MAPPER,format,(DWORD_PTR)func ,(DWORD)this, CALLBACK_FUNCTION)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2012, 20:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Звуковой драйвер не сообщяет о завершение воспроизведения (C++):

.NET 3.x audio, завершение воспроизведения - C#
Вопрос заключается в следующем: Как узнать, закончилось ли воспроизведение? (саундтрек кончился?)

Нужен звуковой драйвер - Драйверы для звуковых карт
Realtek HD Audio output Добавлено через 27 секунд на Windows 7

Не устанавливается звуковой драйвер - Windows 7
Нету звука. Устанавливал Realtek HD драйвер, ошибок не было, однако после перезагрузки нету никакого диспетчера Realtek HD. Нету и...

Звуковой драйвер полетел - Windows XP
Подскажите кто нить кто знает.Вылетел звук на компе вообще.Сканировал комп,мол из за того что звуковой драйвер поврежден.Ну я это...

Конфликтует приложение и звуковой драйвер - Windows XP
Всем привет! Ребят, конфликтует приложение и звуковой драйвер. что можно предпринять? kx 10k1 Audeo - драйвер. wercraft3 - приложение. ...

Драйвер для звуковой карты - Драйверы для звуковых карт
Здравствуйте! Прошу прощения, я далеко не программист, просто не знаю у кого еще спросить. Хочу в Скайрим поиграть, а когда зашла звука...

8
retmas
Жарю без масла
863 / 745 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
23.01.2012, 20:44 #2
в колбэках бывают ограничения на вызов ф-ий. может и тут они есть
0
a_etot_nik
8 / 8 / 1
Регистрация: 09.04.2010
Сообщений: 58
23.01.2012, 21:10  [ТС] #3
Врятли ... Когда записываю с микрофона колбек срабатывает
C++
1
2
3
4
5
void  CALLBACK ReadWaveData(HWAVEIN hwi, UINT Msg, DWORD dwInstance,
                 DWORD dwParam1,DWORD dwParam2){
    if (WIM_DATA == Msg){
           }
}
0
retmas
Жарю без масла
863 / 745 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
23.01.2012, 21:26 #4
так тут я не вижу никаких ф-й до проверки
вход в колбэк, проверка условия - должно выполняться

Добавлено через 2 минуты
не поленился, поискал. вот вам ссылка и конкретно цитата
Applications should not call any system-defined functions from inside a callback function, except for EnterCriticalSection, LeaveCriticalSection, midiOutLongMsg, midiOutShortMsg, OutputDebugString, PostMessage, PostThreadMessage, SetEvent, timeGetSystemTime, timeGetTime, timeKillEvent, and timeSetEvent. Calling other wave functions will cause deadlock.
написано все черным по белому.
з.ы. все это вам следовало самому найти, раз используете
1
a_etot_nik
8 / 8 / 1
Регистрация: 09.04.2010
Сообщений: 58
23.01.2012, 22:10  [ТС] #5
Если я правельно Вас понял :
C++
1
2
3
4
5
6
7
8
9
10
void  CALLBACK func (HWAVEOUT hwi, UINT Msg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2){
        if (Msg == WOM_OPEN) std::cout<<"open"<<std::endl;
        if (WOM_DONE == Msg){  // Не выполняется ...
           std::cout<<"end_play"<<std::endl;
           sound_play * pClass = (sound_play * )dwInstance;
           pClass->buffer->pop();
           pClass->start = true;
           pClass->play();
        }
}
Не выполняестя изза вызова системных функций кроме EnterCriticalSection, LeaveCriticalSection, midiOutLongMsg, midiOutShortMsg, OutputDebugString, PostMessage, PostThreadMessage, SetEvent, timeGetSystemTime, timeGetTime, timeKillEvent, and timeSetEvent .

Но почему тогда выполняется :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void  CALLBACK ReadWaveData(HWAVEIN hwi, UINT Msg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2){
    if (WIM_DATA == Msg){
       sound_caps * pClass = (sound_caps * )dwInstance;
       LPWAVEHDR Hdr = (LPWAVEHDR)dwParam1;      
       std::cout<<"caps_unprepar ="<<(waveInUnprepareHeader(hwi, Hdr, sizeof              (WAVEHDR))==MMSYSERR_NOERROR)<<std::endl;       
       elem * el;
       el = new elem;
       el->data = new BYTE [pClass->m_WF->nBlockAlign * pClass->m_nRecSamples] ;
       CopyMemory(el->data, Hdr->lpData, pClass->m_WF->nBlockAlign * pClass->m_nRecSamples);
       pClass->buffer->push(*el);
       if (pClass->start == TRUE)
            { // добавить еще 1 буфер (тот же самый)
         Hdr->dwFlags = WHDR_BEGINLOOP ; 
                Hdr->dwBufferLength = (pClass->m_WF->nBlockAlign * pClass->m_nRecSamples);
                waveInPrepareHeader(hwi, Hdr, sizeof(WAVEHDR));
                std::cout<<"DOUBLE ADD ="<<(waveInAddBuffer(hwi, Hdr, sizeof(WAVEHDR))==MMSYSERR_NOERROR)<<std::endl;
        std::cout<<"DOUBLE START ="<<(waveInStart  (pClass>devais)==MMSYSERR_NOERROR)<<std::endl;
            }      
    }   
}
0
retmas
Жарю без масла
863 / 745 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
23.01.2012, 22:47 #6
не "не выполняется изза", а не следует использовать. когда так пишут - это значит, что все - на вашей совести. и вполне даже может выполняться. но более интересный момент
Calling other wave functions will cause deadlock.
вот тут:
Цитата Сообщение от a_etot_nik Посмотреть сообщение
C++
1
pClass->play();
ничего такого не вызывается?
1
a_etot_nik
8 / 8 / 1
Регистрация: 09.04.2010
Сообщений: 58
23.01.2012, 23:10  [ТС] #7
Спасибо. Начал разбиратся. А почему тогда :
C++
1
2
3
4
5
6
7
8
9
  void  CALLBACK func (HWAVE hwo, UINT Msg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2){
    if (Msg == WOM_OPEN){
              std::cout<<"open"<<std::endl;  // Выполняется
           }
    if (WOM_DONE == Msg){
       std::cout<<"done"<<std::endl; // Не выполняется
      
    }
}
0
retmas
Жарю без масла
863 / 745 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
23.01.2012, 23:31 #8
по отдельным кускам мне сложно понять, поэтому могу лишь давать догадки...
проверьте так:
Цитата Сообщение от a_etot_nik Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
void  CALLBACK func (HWAVE hwo, UINT Msg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2){
        if (Msg == WOM_OPEN){
              //std::cout<<"open"<<std::endl;
           }
        if (WOM_DONE == Msg){
           std::cout<<"done"<<std::endl; // выполняется ли?
          
        }
}
а вообще, если вам по получению какого-то месега нужно пользоваться тем, чем не стоит, то может попробовать сигнализировать(PostMessage?) или устанавливать флаги, а в другом месте уже колдовать
0
a_etot_nik
8 / 8 / 1
Регистрация: 09.04.2010
Сообщений: 58
23.01.2012, 23:57  [ТС] #9
Да всё уже перепробовал ... Начал грешить на свою звук карту и драйвера ... Ладно буду разбиратся ... Спасибо ...
0
23.01.2012, 23:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2012, 23:57
Привет! Вот еще темы с ответами:

Как установить звуковой драйвер? - Звук, акустика
Здравствуйте! как востановить звук на компе, мне кажется что я удалила нечайно звукойвой драйвер, потому что в скайпе у меня пишет что не...

Не устанавливается драйвер звуковой карты - Windows XP
Заранее прошу прощения за ,возможно, глупый вопрос. Ситуация Следующая: Накрылся комп, купил в ОЛДИ самый дешевый и вставил туда свой...

Звуковой драйвер не идёт на Windows 7 - Windows 7
есть ли на материнскую плату такой модели &quot;asus p5gd2-x&quot; совместимы звуковой драйвер на windows seven, если есть то где скачать если нет то...

Windows 7 не видит драйвер звуковой карты - Windows 7
Доброго времени суток мужики ! столкнулся с такой проблемой... Как я понимаю это часто происходит с виндоус 7, не в какую нехочет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru