fix: screenshot by render frame

This commit is contained in:
rankun 2020-02-15 13:37:35 +08:00
parent 3a2f82a027
commit 0ebe3d3198
4 changed files with 15 additions and 9 deletions

View file

@ -105,6 +105,11 @@ const AVFrame *VideoBuffer::consumeRenderedFrame()
return m_renderingframe;
}
const AVFrame *VideoBuffer::peekRenderedFrame()
{
return m_renderingframe;
}
void VideoBuffer::interrupt()
{
if (m_renderExpiredFrames) {

View file

@ -32,6 +32,8 @@ public:
// unlocking m_mutex
const AVFrame* consumeRenderedFrame();
const AVFrame* peekRenderedFrame();
// wake up and avoid any blocking call
void interrupt();

View file

@ -105,7 +105,14 @@ void Device::updateScript(QString script)
void Device::onScreenshot()
{
m_screenshot = true;
if (!m_vb) {
return;
}
m_vb->lock();
// screenshot
saveFrame(m_vb->peekRenderedFrame());
m_vb->unLock();
}
void Device::initSignals()
@ -201,12 +208,6 @@ void Device::initSignals()
if (m_videoForm) {
m_videoForm->updateRender(frame);
}
// screenshot
if (m_screenshot) {
saveFrame(frame);
m_screenshot = false;
}
m_vb->unLock();
},Qt::QueuedConnection);
}

View file

@ -65,8 +65,6 @@ private:
QTime m_startTimeCount;
DeviceParams m_params;
bool m_screenshot = false;
};
#endif // DEVICE_H