#include "H264LiveVideoSource.h" #include "RtspServer.h" H264LiveVideoSource* H264LiveVideoSource::createNew(UsageEnvironment& env, void* listener) { return new H264LiveVideoSource(env, listener); } H264LiveVideoSource::H264LiveVideoSource(UsageEnvironment& env, void* listener) : FramedSource(env) { env << "H264LiveVideoSource::H264LiveVideoSource" << "\n"; fHasTriggerKeyFrame = False; fSendHeaderCount = 1; fTruncatedBytesNum = 0; // setup callback listener fListener = listener; } H264LiveVideoSource::~H264LiveVideoSource() { } unsigned int H264LiveVideoSource::maxFrameSize() const { return 1024 * 1024; } void H264LiveVideoSource::doGetNextFrame() { QMediaBuffer outBuf; RtspServer* server = (RtspServer*)fListener; server->onDoGetNextFrame(&outBuf); if (outBuf.getData()) { fFrameSize = outBuf.getSize(); if (fFrameSize > fMaxSize) { fNumTruncatedBytes = fFrameSize - fMaxSize; fNumTruncatedBytes = fFrameSize - fMaxSize; } else { fNumTruncatedBytes = 0; } memmove(fTo, outBuf.getData(), fFrameSize); FramedSource::afterGetting(this); } }