GStreamer: port to 1.0.
0.10 is still used by default. To enable GStreamer 1.0, pass GST_VERSION=1.0 to qmake for qtmultimedia.pro. Contributions from: Andrew den Exter <andrew.den.exter@qinetic.com.au> Ilya Smelykh <ilya@videoexpertsgroup.com> Jim Hodapp <jim.hodapp@canonical.com> Sergio Schvezov <sergio.schvezov@canonical.com> Change-Id: I72a46d1170a8794a149bdb5e20767afcc5b7587c Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
This commit is contained in:
committed by
Andrew den Exter
parent
7e3d69668e
commit
108dda7a90
@@ -147,23 +147,44 @@ void QGstAppSrc::pushDataToAppSrc()
|
||||
size = qMin(m_stream->bytesAvailable(), (qint64)m_dataRequestSize);
|
||||
|
||||
if (size) {
|
||||
void *data = g_malloc(size);
|
||||
GstBuffer* buffer = gst_app_buffer_new(data, size, g_free, data);
|
||||
GstBuffer* buffer = gst_buffer_new_and_alloc(size);
|
||||
|
||||
#if GST_CHECK_VERSION(1,0,0)
|
||||
GstMapInfo mapInfo;
|
||||
gst_buffer_map(buffer, &mapInfo, GST_MAP_WRITE);
|
||||
void* bufferData = mapInfo.data;
|
||||
#else
|
||||
void* bufferData = GST_BUFFER_DATA(buffer);
|
||||
#endif
|
||||
|
||||
buffer->offset = m_stream->pos();
|
||||
qint64 bytesRead = m_stream->read((char*)GST_BUFFER_DATA(buffer), size);
|
||||
qint64 bytesRead = m_stream->read((char*)bufferData, size);
|
||||
buffer->offset_end = buffer->offset + bytesRead - 1;
|
||||
|
||||
#if GST_CHECK_VERSION(1,0,0)
|
||||
gst_buffer_unmap(buffer, &mapInfo);
|
||||
#endif
|
||||
|
||||
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";
|
||||
#if GST_CHECK_VERSION(1,0,0)
|
||||
} else if (ret == GST_FLOW_FLUSHING) {
|
||||
qWarning()<<"appsrc: push buffer wrong state";
|
||||
}
|
||||
#else
|
||||
} else if (ret == GST_FLOW_WRONG_STATE) {
|
||||
qWarning()<<"appsrc: push buffer wrong state";
|
||||
} else if (ret == GST_FLOW_RESEND) {
|
||||
}
|
||||
#endif
|
||||
#if GST_VERSION_MAJOR < 1
|
||||
else if (ret == GST_FLOW_RESEND) {
|
||||
qWarning()<<"appsrc: push buffer resend";
|
||||
}
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
sendEOS();
|
||||
|
||||
Reference in New Issue
Block a user