int OutputProcessor::packageAudio(unsigned char* inBuff, int inBuffLen, unsigned char* outBuff) { if (audioPackager == 0) { ELOG_DEBUG("No se ha inicializado el codec de output audio RTP"); return -1; } timeval time; gettimeofday(&time, NULL); long millis = (time.tv_sec * 1000) + (time.tv_usec / 1000); RTPHeader head; head.setSeqNumber(seqnum_++); head.setTimestamp(millis*8); head.setSSRC(55543); head.setPayloadType(0); memcpy (rtpBuffer_, &head, head.getHeaderLength()); memcpy(&rtpBuffer_[head.getHeaderLength()], inBuff, inBuffLen); // sink_->sendData(rtpBuffer_, l); // rtpReceiver_->receiveRtpData(rtpBuffer_, (inBuffLen + RTP_HEADER_LEN)); return (inBuffLen+head.getHeaderLength()); }
int OutputProcessor::packageVideo(unsigned char* inBuff, int buffSize, unsigned char* outBuff) { if (videoPackager == 0) { ELOG_DEBUG("No se ha inicailizado el codec de output vídeo RTP"); return -1; } // ELOG_DEBUG("To packetize %u", buffSize); if (buffSize <= 0) return -1; RtpVP8Fragmenter frag(inBuff, buffSize, 1100); bool lastFrame = false; unsigned int outlen = 0; timeval time; gettimeofday(&time, NULL); long millis = (time.tv_sec * 1000) + (time.tv_usec / 1000); // timestamp_ += 90000 / mediaInfo.videoCodec.frameRate; do { outlen = 0; frag.getPacket(outBuff, &outlen, &lastFrame); RTPHeader rtpHeader; rtpHeader.setMarker(lastFrame?1:0); rtpHeader.setSeqNumber(seqnum_++); rtpHeader.setTimestamp(millis*90); rtpHeader.setSSRC(55543); rtpHeader.setPayloadType(100); memcpy(rtpBuffer_, &rtpHeader, rtpHeader.getHeaderLength()); memcpy(&rtpBuffer_[rtpHeader.getHeaderLength()],outBuff, outlen); int l = outlen + rtpHeader.getHeaderLength(); // sink_->sendData(rtpBuffer_, l); rtpReceiver_->receiveRtpData(rtpBuffer_, l); } while (!lastFrame); return 0; }