<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Hello.</p>
<p>I have an RTSP server, it is fully our code, but it is based on
Live555. This server sends to a video player (ffplay or our custom
player) a stream, which earlier was recorded by another
application. So, this system is an video archive and the RTSP
server is a player here.</p>
<p>It works fine, but I faced a problem. I recorded a stream from a
USB web camera. Using webrtc I change resolution and continue
recording. So, the archive containes frames with different
resolutions (and may be different SPS PPS). After I want to play
them. Plaing works before the changing resolution. The RTSP server
is a FramedSource:<br>
</p>
<p></p>
<pre>class VideoSource : public FramedSource
{
...
protected:
void doGetNextFrame() override;
}
void <a class="moz-txt-link-freetext" href="VideoSource::doGetNextFrame()">VideoSource::doGetNextFrame()</a>
{
...
//sending frames
memcpy(fTo, frame_.raw_data.data(), frame_.raw_data.size());
fFrameSize = frame_.raw_data.size();
...
//next circle
nextTask() = envir().taskScheduler().scheduleDelayedTask(0, (TaskFunc*)<a class="moz-txt-link-freetext" href="FramedSource::afterGetting">FramedSource::afterGetting</a>, this);
}
</pre>
<p>This circle works before changing resolution. After the last
frame sending it never called again. And live555 stops the stream.
Why?</p>
<p><br>
</p>
<p><br>
</p>
<p>Denis<br>
</p>
<p></p>
</body>
</html>