Установка QPixmap на Qlabel дает ошибку сегментации и сбой приложения - PullRequest
0 голосов
/ 17 марта 2020
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.

...