2017-03-14 23 views
0

:GstBin에서 handle_message를 재정의하는 방법은 무엇입니까? 서브 클래스를 만들려고 노력

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_class_init() 호출 할 수 있도록 my_bin_new() 무엇을 작성?

나는 glib 문서에서 g_object_new()을 보았지만, 무엇을 전달해야하는지 명확하지 않습니다. gstreamer 소스는 gst_element_factory_make()이라고하지만 해당 팩토리가 내 사용자 정의 클래스와 어떤 관련이 있는지 알 수 없습니다.

답변

0

GObject는 필요할 때 (객체 생성) 필요할 때 클래스 및 객체 초기화 함수를 호출합니다. GObject 문서를 확인하여 알아보십시오. https://developer.gnome.org/gobject/stable/chapter-gobject.html

즉, 필요한대로 구현하고 GObject가 처리합니다. 직접 만든 예를 원하는 경우 (당신이 재생 요소를 확인할 수 있습니다 gst_element_factory_make를 통해 사용할 수 있도록 등록되지 https://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/gst/multifile/gstsplitmuxsink.c#n214

: https://cgit.freedesktop.org/gstreamer/gst-plugins-base/tree/gst/playback/gstplaysinkvideoconvert.c, 그들은이 playsink 요소에 직접 만든있는 GStreamer 코드에서 함수를 재정의 몇 가지 사례가있다 (코드는 이와 같은 폴더에). 확인

1

그것은 my_bin_get_type()G_DEFINE_TYPE 의해 제공

g_object_new(my_bin_get_type(), NULL); 

이다.