GstFlowReturn MainWindow::newSample1(GstAppSink *sink1, gpointer gSelf)
{
GstSample* sample = NULL;
GstBuffer* sampleBuffer = NULL;
GstMapInfo bufferInfo;
MainWindow* self = static_cast<MainWindow* >(gSelf);
sample = gst_app_sink_pull_sample(GST_APP_SINK(sink1));
QImage image ;
QPixmap image1 ;
if(sample != NULL)
{
sampleBuffer = gst_sample_get_buffer(sample);
if(sampleBuffer != NULL)
{
gst_buffer_map(sampleBuffer, &bufferInfo, GST_MAP_READ);
image = QImage(bufferInfo.data, 640, 480, QImage::Format_Grayscale8);
image1 = QPixmap::fromImage(image);
if(!image1.isNull())
{
self->ui->CAM_VDO->setPixmap(image1);
}
gst_buffer_unmap(sampleBuffer, &bufferInfo);
}
gst_sample_unref(sample);
}
return GST_FLOW_OK;
}
Это приложение работает в течение 1 или 2 секунд, показывает изображения тоже, но затем падает, выдает ошибку ошибки сегментации.
Но когда я удаляю или комментирую эту строку:
self-> ui-> CAM_VDO-> setPixmap (image1);
работает нормально. Поэтому я думаю, что с Qlabel что-то не так или я что-то упускаю.
"CAM_VDO" - это QLabel.