gst player: clear the buffer pool when the video sink is stopped
Buffers were kept allocated until the player is destroyed or next media played. Change-Id: I8a0c85da3a82ac6883075a1d0674143783c7f010 Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
This commit is contained in:
committed by
Qt by Nokia
parent
c4cd9e711d
commit
e2f5779d2a
@@ -176,6 +176,13 @@ bool QVideoSurfaceGstDelegate::isActive()
|
||||
return !m_surface.isNull() && m_surface->isActive();
|
||||
}
|
||||
|
||||
void QVideoSurfaceGstDelegate::clearPoolBuffers()
|
||||
{
|
||||
QMutexLocker locker(&m_poolMutex);
|
||||
if (m_pool)
|
||||
m_pool->clear();
|
||||
}
|
||||
|
||||
GstFlowReturn QVideoSurfaceGstDelegate::render(GstBuffer *buffer)
|
||||
{
|
||||
if (!m_surface) {
|
||||
@@ -840,7 +847,8 @@ gboolean QVideoSurfaceGstSink::start(GstBaseSink *base)
|
||||
|
||||
gboolean QVideoSurfaceGstSink::stop(GstBaseSink *base)
|
||||
{
|
||||
Q_UNUSED(base);
|
||||
VO_SINK(base);
|
||||
sink->delegate->clearPoolBuffers();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -94,6 +94,7 @@ public:
|
||||
|
||||
QGstBufferPoolInterface *pool() { return m_pool; }
|
||||
QMutex *poolMutex() { return &m_poolMutex; }
|
||||
void clearPoolBuffers();
|
||||
|
||||
GstFlowReturn render(GstBuffer *buffer);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user