void CStateOnInsertion::startB2bAd(const CAdConfig& adConfig, const QDateTime& startTime) { if (!m_stateIsActive) return; CSpliceRequestMessage msg; CSpliceSession* spliceSession = m_spliceSessions->createSpliceSession(startTime, m_spliceSessions->getLastSessionId()); spliceSession->setExpectedDuration(adConfig.m_duration); spliceSession->setNewState(CSpliceSession::Initializing); msg.m_sessionId = spliceSession->getSessionId(); msg.m_priorSession = spliceSession->getPriorSessionId(); CTime time; time.fromTime(startTime); msg.m_time = time; msg.m_serviceId = adConfig.m_serviceId; msg.m_pcrPid = adConfig.m_pcrPid; msg.m_spliceElementaryStreams = adConfig.m_spliceElementaryStreams; msg.m_duration = adConfig.m_duration; msg.m_spliceEventId = 0xFFFFFFFF; // todo: fill in correct value for SCTE35 msg.m_postBlack = adConfig.m_postBlack; msg.m_accessType = adConfig.m_accessType; msg.m_overridePlaying = adConfig.m_overridePlaying; msg.m_returnToPriorChannel = adConfig.m_overridePlaying; vector<uint8_t> data(4,0); // bitrate rule and limit msg.m_spliceApiDescriptors.push_back(CSpliceApiDescriptor(0x1, data)); sendMessage(&msg); }