diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-01-27 18:54:20 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-01-27 18:54:20 +0100 |
commit | 9459acf48eaa9326e58bb1658408d045482a573b (patch) | |
tree | 395f0828e828c4bb9466262670c35f6e0ceff248 /src/gsttools | |
parent | 422099e8ddeddc0631db3a369e3c52f0ffe2f455 (diff) | |
parent | 7451906b71e7271238ecf9446b7960ab2c647cc9 (diff) |
Merge remote-tracking branch 'origin/stable' into dev
Change-Id: I83d589c55e8463cce23068dc81096aa66ec596a5
Diffstat (limited to 'src/gsttools')
-rw-r--r-- | src/gsttools/qgstappsrc.cpp | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/src/gsttools/qgstappsrc.cpp b/src/gsttools/qgstappsrc.cpp index c74639ef2..8917bda85 100644 --- a/src/gsttools/qgstappsrc.cpp +++ b/src/gsttools/qgstappsrc.cpp @@ -149,28 +149,29 @@ void QGstAppSrc::pushDataToAppSrc() size = qMin(m_stream->bytesAvailable(), queueSize()); else size = qMin(m_stream->bytesAvailable(), (qint64)m_dataRequestSize); - void *data = g_malloc(size); - GstBuffer* buffer = gst_app_buffer_new(data, size, g_free, data); - buffer->offset = m_stream->pos(); - qint64 bytesRead = m_stream->read((char*)GST_BUFFER_DATA(buffer), size); - buffer->offset_end = buffer->offset + bytesRead - 1; - - if (bytesRead > 0) { - m_dataRequested = false; - m_enoughData = false; - GstFlowReturn ret = gst_app_src_push_buffer (GST_APP_SRC (element()), buffer); - if (ret == GST_FLOW_ERROR) { - qWarning()<<"appsrc: push buffer error"; - } else if (ret == GST_FLOW_WRONG_STATE) { - qWarning()<<"appsrc: push buffer wrong state"; - } else if (ret == GST_FLOW_RESEND) { - qWarning()<<"appsrc: push buffer resend"; - } - } - // After reading we might be all done - if (m_stream->atEnd()) + if (size) { + void *data = g_malloc(size); + GstBuffer* buffer = gst_app_buffer_new(data, size, g_free, data); + buffer->offset = m_stream->pos(); + qint64 bytesRead = m_stream->read((char*)GST_BUFFER_DATA(buffer), size); + buffer->offset_end = buffer->offset + bytesRead - 1; + + if (bytesRead > 0) { + m_dataRequested = false; + m_enoughData = false; + GstFlowReturn ret = gst_app_src_push_buffer (GST_APP_SRC (element()), buffer); + if (ret == GST_FLOW_ERROR) { + qWarning()<<"appsrc: push buffer error"; + } else if (ret == GST_FLOW_WRONG_STATE) { + qWarning()<<"appsrc: push buffer wrong state"; + } else if (ret == GST_FLOW_RESEND) { + qWarning()<<"appsrc: push buffer resend"; + } + } + } else { sendEOS(); + } } else if (m_stream->atEnd()) { sendEOS(); } |