MCPcopy Create free account
hub / github.com/BigPig0/RelayLive / get_ps_data

Method get_ps_data

Projects/live_server/worker.cpp:569–601  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

567 }
568
569 int CLiveWorker::get_ps_data(char* pBuff, int &nLen)
570 {
571 if(m_nTmpBuffReaded >= m_PsStream.size()) {
572 AV_BUFF* tag = (AV_BUFF*)ring_get_element(m_pPSRing, NULL);
573 if(!tag)
574 return 0;
575
576 m_PsStream.clear();
577 m_PsStream.append_data(tag->pData, tag->nLen);
578 m_nTmpBuffReaded = 0;
579 simple_ring_cosume(m_pPSRing);
580
581 //Log::debug("get ps %x, %d, %d", tag->pData, tag->nLen, ring_get_count_free_elements(m_pPSRing));
582
583 if(!m_bParseKey) {
584 if(is_key(m_PsStream.get(), m_PsStream.size())){
585 m_bParseKey = true;
586 } else {
587 Log::warning("no key frame before this");
588 m_PsStream.clear();
589 return 0;
590 }
591 }
592 }
593
594 int len = m_PsStream.size() - m_nTmpBuffReaded;
595 if(len > nLen)
596 len = nLen;
597 memcpy(pBuff, m_PsStream.get()+m_nTmpBuffReaded, len);
598 m_nTmpBuffReaded += len;
599
600 return len;
601 }
602
603 void CLiveWorker::push_flv_frame(char* pBuff, int nLen)
604 {

Callers 1

fill_iobufferFunction · 0.45

Calls 4

ring_get_elementFunction · 0.85
append_dataMethod · 0.80
sizeMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected