waveOutOpen(), waveOutWrite() выдает моей ветке недокументированное сообщение 1024

Функции вывода звука дают мне неожиданные сообщения. Это знак, что я делаю что-то не так? Если да, то? В противном случае есть хороший источник, который объясняет, что эти сообщения могут быть?

waveOutOpen () выдает мне сообщение 955 MM_WOM_OPEN, как задокументировано, за которым следуют недокументированные 1024 (возможно, DDM_SETFMT, DM_GETDEFID, NIN_SELECT, TBM_GETPOS, WM_PSD_PAGESETUPDLG, WM_USER, в соответствии с https: //wiki.wist_F_Windows.q).

В основной теме:

  hAudioOut = CreateThread( 0, 0, AudioOutThreadProc, this, 0, &dwAudioOutId );

      if( !hAudioOut ) {
          AKS( AKSWarn, "Audio Out CreateThread() fail" );
          return;
      }

В результирующей аудиопотоке:

static DWORD WINAPI AudioOutThreadProc( LPVOID lpParameter ) {

  Interpreter* pinterp = (Interpreter *) lpParameter;
  WAVEFORMATEX waveFormat;

  waveFormat.cbSize          = sizeof(waveFormat);
  waveFormat.wFormatTag      = WAVE_FORMAT_PCM;
  waveFormat.nChannels       = 1;
  waveFormat.nSamplesPerSec  = (int) dFreqEval;
  waveFormat.wBitsPerSample  = iOutputBits;
  waveFormat.nBlockAlign     = waveFormat.nChannels *
                               waveFormat.wBitsPerSample / 8;
  waveFormat.nAvgBytesPerSec = waveFormat.nSamplesPerSec *
                               waveFormat.nBlockAlign;

  MMRESULT openRes = waveOutOpen( &waveOut, WAVE_MAPPER, &waveFormat,
                                  (DWORD_PTR) dwAudioOutId, (DWORD_PTR) this,
                                  CALLBACK_THREAD /*| WAVE_FORMAT_DIRECT*/ );

  if ( openRes != MMSYSERR_NOERROR )
      Log( "waveOutOpen() = %d", openRes );

  MSG msg;
  int iRV;
  while ( iRV = GetMessage( &msg, 0, 0, 0 ) ) {

      Log( "got  message %d", msg.message );

      // Is the main thread asking us to stop?
      if ( pinterp->bStop ) {

          Log( "AudioInThreadProc(): bStop" );
          return EXIT_SUCCESS;
      }

      // Did we get an error?
      if ( iRV == -1 ) {
          Log( "GetMessage() = -1: %d", GetLastError() );
          abort();
      }

      // Did we get an expected message?  (Only one expected,
      // which tells us its time to write more data.)
      if ( msg.message == WOM_DONE )
          pinterp->Write();

      // Anything else--log it.
      else
          Log( "got unknown message %d", msg.message );
  }

  Log( "AudioInThreadProc(): GetMessage = return" );

  return msg.wParam;
}

waveOutWrite () не задокументирован, чтобы давать какие-либо сообщения, но также дает мне сообщение 1024.

0 ответов

Другие вопросы по тегам