Как сделать так, чтобы QWebView отображался непосредственно в буфер GStreamer?

Я пытаюсь написать простой веб-браузер на основе QT с бэкэндом gstreamer в качестве подтверждения концепции для гораздо более сложной программы. Идея состоит в том, чтобы QWebView визуализировал в буферы gstreamer, которые будут отображаться или передаваться в потоковом режиме в зависимости от предоставленных параметров.

Тем не менее, я очень плохо знаком с QT, и мне не ясно, как заставить QWebView рендериться в бэкэнд по моему выбору. Любые советы будут оценены.

1 ответ

Решение

Оказывается, это не так сложно. Имеется GstBuffer * в buf для заполнения:

QApplication app;
QWebView web;
web.load(QUrl("www.google.ca"));
web.resize(1024,768);
GstMapInfo inf;
if( !gst_buffer_map(buf,&inf,GST_MAP_WRITE) )
  GST_ERROR("Couldn't map output buffer for writing!");
else
  { QImage img
      ( inf.data
      , 1024, 768
      , 1024*sizeof(uint32)
      , QImage::Format_xRGB
      );

    web.render(&img);   // render our webpage to our image buffer;
    app.processEvents();
    gst_buffer_unmap(buf,&inf);
    return buf;
  }
Другие вопросы по тегам