Пример #1
0
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);
}