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();
|
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)
|
GstFlowReturn QVideoSurfaceGstDelegate::render(GstBuffer *buffer)
|
||||||
{
|
{
|
||||||
if (!m_surface) {
|
if (!m_surface) {
|
||||||
@@ -840,7 +847,8 @@ gboolean QVideoSurfaceGstSink::start(GstBaseSink *base)
|
|||||||
|
|
||||||
gboolean QVideoSurfaceGstSink::stop(GstBaseSink *base)
|
gboolean QVideoSurfaceGstSink::stop(GstBaseSink *base)
|
||||||
{
|
{
|
||||||
Q_UNUSED(base);
|
VO_SINK(base);
|
||||||
|
sink->delegate->clearPoolBuffers();
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,6 +94,7 @@ public:
|
|||||||
|
|
||||||
QGstBufferPoolInterface *pool() { return m_pool; }
|
QGstBufferPoolInterface *pool() { return m_pool; }
|
||||||
QMutex *poolMutex() { return &m_poolMutex; }
|
QMutex *poolMutex() { return &m_poolMutex; }
|
||||||
|
void clearPoolBuffers();
|
||||||
|
|
||||||
GstFlowReturn render(GstBuffer *buffer);
|
GstFlowReturn render(GstBuffer *buffer);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user