试图做一个子类:

mybin.h:

#pragma once

#include <gst/gstbin.h>

G_BEGIN_DECLS

G_DECLARE_DERIVABLE_TYPE(MyBin, my_bin, MY, BIN, GstBin)

struct _MyBinClass
{
    GstBinClass parent_class;
};

GstElement* my_bin_new(const gchar *name);

G_END_DECLS


mybin.c:

#include "mybin.h"

G_DEFINE_TYPE(MyBin, my_bin, GST_TYPE_BIN)

static void my_bin_init(MyBin *bin)
{
}

static void my_bin_class_init(MyBinClass *class)
{
    // virtual function overrides go here
}

GstElement* my_bin_new(const gchar *name)
{
    // ???
}


my_bin_new()中要写什么才能使my_bin_class_init()被调用?

我已经在glib文档中看到了g_object_new(),但尚不清楚要传递给它什么。 gstreamer源调用了gst_element_factory_make(),但是我看不到该工厂与我的自定义类之间的关系。

最佳答案

好啦

g_object_new(my_bin_get_type(), NULL);


其中my_bin_get_type()G_DEFINE_TYPE提供。

关于c - 如何在GstBin中覆盖handle_message?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42787900/

10-11 21:55