How to show video from libvlc in gtkmm3 widget?

Viewed 12

I want to play video in gtkmm3 in Gtk::DrawingArea widget. But I need to pass parameters to libvlc_media_player_set_xwindow. How can I get X window ID from Gtk::DrawingArea widget?

I am using gtkmm-3 and I don't want to use gtkmm-4, because I want compatibility with older systems.

I have class MyWindow which contains Gtk::DrawingArea * player instance loaded from Gtk::Builder.

class MyWindow : public Gtk::Window {
protected:
    Glib::RefPtr<Gtk::Builder> builder;
    Gtk::DrawingArea *player;
    libvlc_instance_t *vlc_i;

public:
    MyWindow(BaseObjectType *obj, Glib::RefPtr<Gtk::Builder> const &builder);

    void on_player_realize();
};
void MyWindow::on_player_realize(){
   // Gtk::Widget::on_realize();

    XID win = /*Which code gets  XID from this->player? */;

    std::string url="http://livesim.dashif.org/livesim/ato_10/testpic_2s/Manifest.mpd";

    const char * const vlc_args[] = {"--verbose=0" };
    this->vlc_i = libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);

    auto m = libvlc_media_new_location(vlc_i,url.c_str());
    auto mp = libvlc_media_player_new_from_media(m);
    libvlc_media_player_set_xwindow (mp, win); // here it wants XID
    libvlc_media_player_play (mp);
}
0 Answers
Related