status_t EMBeOutputNode::HandleMessage(int32 message, const void* data, size_t size) { if(message == EM_PORT_MESSAGE_INCOMING_BUFFER) { m_opBuffer = *((BBuffer**) data); if(RunState() != B_STARTED) { emerr << "ERROR! Node received buffer when not running!" << endl; m_opBuffer -> Recycle(); return B_OK; } if(m_opBuffer != NULL) { vCount++; EMMediaFormat* opFormat = GetConnectedEMMediaFormat(); if((opFormat -> m_eType & EM_TYPE_ANY_VIDEO) > 0) { opFormat -> m_vFrameRate = *(static_cast<float*>(EMMediaEngine::Instance() -> GetSettingsRepository() -> GetSetting(SETTING_VIDEO_FRAMERATE))); } int64 vFrames = EMBeMediaUtility::FramesInBuffer(m_opBuffer, opFormat, EM_TYPE_RAW_AUDIO); // + 44100 / 4; m_vNumberOfReceivedFrames += vFrames; int64 vTime = EMBeMediaUtility::FramesToTime(m_vNumberOfReceivedFrames, m_opSystemAudioFormat); int64 vNextBufferPerf = static_cast<uint64>(floor(static_cast<float>(m_vStartingTime) + vTime)); m_opBuffer -> Header() -> start_time = vNextBufferPerf; media_timed_event sEvent(vNextBufferPerf, BTimedEventQueue::B_HANDLE_BUFFER); sEvent.pointer = m_opBuffer; sEvent.cleanup = BTimedEventQueue::B_RECYCLE_BUFFER; status_t vResult = EventQueue() -> AddEvent(sEvent); if(vResult != B_OK) { emerr << "ERROR! Couldn't add the B_HANDLE_BUFFER event to the queue: " << strerror(vResult) << endl; m_opBuffer -> Recycle(); } } else emerr << "ERROR! Node received invalid EM_NODE_BUFFER_ADDED message!" << endl; return B_OK; } else if(message == EM_PORT_MESSAGE_FLUSH_QUEUE) { media_timed_event sEvent(TimeSource() -> Now(), EM_TIMED_EVENT_FLUSH_CASH); EventQueue() -> AddEvent(sEvent); } else if(message == EM_PORT_MESSAGE_RESET) { media_timed_event sEvent(TimeSource() -> Now(), EM_TIMED_EVENT_RESET); EventQueue() -> AddEvent(sEvent); } else { ;//emout_commented_out_4_release << "ERROR! Received unknown message!" << endl; BMediaNode::HandleBadMessage(message, data, size); } return B_OK; }
/////////////////////////////////////////////////////// // CSoundRegistry::SoundEvent // // void CSoundRegistry::SoundEvent(LPCSTR szEvent, LPCSTR szEventName, LPCSTR szPath) { CRegistry sound; CString sEvent("AppEvents\\EventLabels\\"); sEvent += szEvent; sound.CreateKey(sEvent, HKEY_CURRENT_USER); sound.SetString(NULL, szEventName); sEvent = "AppEvents\\Schemes\\Apps\\"; sEvent += m_sScheme; if (!m_bSetScheme) { m_bSetScheme = TRUE; sound.CreateKey(sEvent, HKEY_CURRENT_USER); sound.SetString(NULL, m_sSchemeName); } sEvent += '\\'; sEvent += szEvent; // If the key doesn't exist if (!sound.OpenKey(sEvent, HKEY_CURRENT_USER)) { // Create the key with the right name sound.CreateKey(sEvent, HKEY_CURRENT_USER); sound.SetString(NULL, szEventName); // Set the default sound sEvent += "\\.current"; sound.CreateKey(sEvent, HKEY_CURRENT_USER); sEvent = szPath; sEvent += szEventName; sEvent += ".wav"; sound.SetString(NULL, sEvent); } }