前面看了数据流的接入部分,接下来看数据的发送部分
Easydrawin 在另外的一个线程中执行发送数据的任务。
SInt64 ReflectorSocket::Run()中
获取相应的读事件以后 i
f (theEvents & Task::kReadEvent)
this->GetIncomingData(theMilliseconds);
拿到要发送的数据以后,调用
ReflectorSender::ReflectPackets,--->SendPacketsToOutput --> theOutput->WritePacket-->QTSS_Write ---调用了回调函数 return (sCallbacks->addr [kWriteCallback])
(inStream, inBuffer, inLen, outLenWritten, inFlags); == RTPStream::Write --经过一些无聊的代码
}
调用了 RTSPResponseStream::WriteV 最后 err = ::WSASend(fFileDesc, (LPWSABUF)iov, numIOvecs, &theBytesSent, 0, NULL, NULL);
if (err == 0)
看到了 关键帧优化的代码 ReflectorSender::ReflectPackets中。