void QOpenSLESAudioOutput::start(QIODevice *device) { Q_ASSERT(device); if (!preparePlayer()) return; m_pullMode = true; m_audioSource = device; setState(QAudio::ActiveState); setError(QAudio::NoError); // Attempt to fill buffers first. for (int i = 0; i != BUFFER_COUNT; ++i) { const int index = i * m_bufferSize; const qint64 readSize = m_audioSource->read(m_buffers + index, m_bufferSize); if (readSize && SL_RESULT_SUCCESS != (*m_bufferQueueItf)->Enqueue(m_bufferQueueItf, m_buffers + index, readSize)) { setError(QAudio::FatalError); destroyPlayer(); return; } m_processedBytes += readSize; } // Change the state to playing. // We need to do this after filling the buffers or processedBytes might get corrupted. startPlayer(); }
QIODevice *QOpenSLESAudioOutput::start() { if (!preparePlayer()) return Q_NULLPTR; m_pullMode = false; m_audioSource = new SLIODevicePrivate(this); m_audioSource->open(QIODevice::WriteOnly | QIODevice::Unbuffered); // Change the state to playing startPlayer(); setState(QAudio::IdleState); return m_audioSource; }
QIODevice *QOpenSLESAudioOutput::start() { destroyPlayer(); m_pullMode = false; if (!preparePlayer()) return Q_NULLPTR; m_audioSource = new SLIODevicePrivate(this); m_audioSource->open(QIODevice::WriteOnly | QIODevice::Unbuffered); // Change the state to playing if (SL_RESULT_SUCCESS != (*m_playItf)->SetPlayState(m_playItf, SL_PLAYSTATE_PLAYING)) { setError(QAudio::FatalError); destroyPlayer(); } setState(QAudio::IdleState); return m_audioSource; }
// this is the main function, you don't use main(), as this is handled different // on some platforms int run(int argc, char *argv[]) { SGEGAMESTATEMANAGER *manager; SGEGAMESTATE *mainstate; MainStateData data; // initialize engine and set up resolution and depth sgeInit(NOAUDIO,NOJOYSTICK); sgeOpenScreen("Tilemap Demo",640,480,32,NOFULLSCREEN); sgeHideMouse(); // add a new gamestate. you will usually have to add different gamestates // like 'main menu', 'game loop', 'load screen', etc. mainstate = sgeGameStateNew(); mainstate->onRedraw = onRedraw; mainstate->onKeyDown = onKeyDown; mainstate->onKeyUp = onKeyUp; mainstate->data = &data; // now initialize tile map prepareTilemap( &data ); // and the player sprite preparePlayer( &data ); // and the rest of the variables initialize( &data ); // now finally create the gamestate manager and change to the only state // we defined, which is the on_redraw function manager = sgeGameStateManagerNew(); sgeGameStateManagerChange(manager, mainstate); // start the game running with 30 frames per seconds sgeGameStateManagerRun(manager, 30); // close the screen and quit sgeCloseScreen(); return 0; }