mirror of
https://github.com/notedit/gst.git
synced 2025-11-01 03:52:34 +08:00
add more api
This commit is contained in:
7
clock.go
7
clock.go
@@ -14,4 +14,11 @@ type Clock struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func (c *Clock) GetClockTime() uint64 {
|
||||||
|
|
||||||
|
clocktime := C.gst_clock_get_time(c.C)
|
||||||
|
return uint64(clocktime)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -121,6 +121,12 @@ func (e *Element) AddPad(pad *Pad) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *Element) GetClockBaseTime() uint64 {
|
||||||
|
|
||||||
|
CClockTime := C.gst_element_get_base_time(e.GstElement)
|
||||||
|
|
||||||
|
return uint64(CClockTime)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
func (e *Element) GetClock() (gstClock *Clock) {
|
func (e *Element) GetClock() (gstClock *Clock) {
|
||||||
|
|||||||
26
gst.c
26
gst.c
@@ -68,13 +68,6 @@ void X_gst_g_object_setv(GObject *object, guint n_properties, const gchar *names
|
|||||||
g_object_setv(object, n_properties, names, value);
|
g_object_setv(object, n_properties, names, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
GstElement* cb_request_aux_receiver(GstElement *rtpbin, guint session, gpointer user_data) {
|
|
||||||
//return go_callback_request_aux_receiver_thunk(rtpbin, session, user_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
GstElement* cb_request_aux_sender(GstElement *rtpbin, guint session, gpointer user_data) {
|
|
||||||
//return go_callback_request_aux_sender_thunk(rtpbin, session, user_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cb_new_pad(GstElement *element, GstPad *pad, gpointer data) {
|
void cb_new_pad(GstElement *element, GstPad *pad, gpointer data) {
|
||||||
gchar *name;
|
gchar *name;
|
||||||
@@ -181,6 +174,25 @@ GstBus* X_gst_pipeline_get_bus(GstElement* element) {
|
|||||||
return gst_pipeline_get_bus(GST_PIPELINE(element));
|
return gst_pipeline_get_bus(GST_PIPELINE(element));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GstClock * X_gst_pipeline_get_clock(GstElement* element) {
|
||||||
|
return gst_pipeline_get_clock(GST_PIPELINE(element));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GstClockTime X_gst_pipeline_get_delay(GstElement* element) {
|
||||||
|
return gst_pipeline_get_delay(GST_PIPELINE(element));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GstClockTime X_gst_pipeline_get_latency(GstElement* element) {
|
||||||
|
return gst_pipeline_get_latency(GST_PIPELINE(element));
|
||||||
|
}
|
||||||
|
|
||||||
|
void X_gst_pipeline_set_latency(GstElement* element, GstClockTime clockTime) {
|
||||||
|
|
||||||
|
gst_pipeline_set_latency(GST_PIPELINE(element), clockTime);
|
||||||
|
}
|
||||||
|
|
||||||
void cb_bus_message(GstBus * bus, GstMessage * message, gpointer poll_data) {
|
void cb_bus_message(GstBus * bus, GstMessage * message, gpointer poll_data) {
|
||||||
//go_callback_bus_message_thunk(bus, message, poll_data);
|
//go_callback_bus_message_thunk(bus, message, poll_data);
|
||||||
}
|
}
|
||||||
|
|||||||
8
gst.h
8
gst.h
@@ -16,8 +16,6 @@ extern void X_gst_g_object_set(GstElement* e, const gchar* p_name, const GValue*
|
|||||||
extern void X_gst_g_object_set_structure(GstElement *e, const gchar* p_name, const GstStructure *p_value);
|
extern void X_gst_g_object_set_structure(GstElement *e, const gchar* p_name, const GstStructure *p_value);
|
||||||
extern void X_gst_g_object_setv(GObject* object, guint n_properties, const gchar* names[], const GValue value[]);
|
extern void X_gst_g_object_setv(GObject* object, guint n_properties, const gchar* names[], const GValue value[]);
|
||||||
extern void X_g_signal_connect(GstElement* element, gchar* detailed_signal, void (*f)(GstElement*, GstPad*, gpointer), gpointer data);
|
extern void X_g_signal_connect(GstElement* element, gchar* detailed_signal, void (*f)(GstElement*, GstPad*, gpointer), gpointer data);
|
||||||
extern GstElement* cb_request_aux_receiver(GstElement *rtpbin, guint session, gpointer user_data);
|
|
||||||
extern GstElement* cb_request_aux_sender(GstElement *rtpbin, guint session, gpointer user_data);
|
|
||||||
extern void cb_new_pad(GstElement* element, GstPad* pad, gpointer data);
|
extern void cb_new_pad(GstElement* element, GstPad* pad, gpointer data);
|
||||||
extern void cb_need_data(GstElement *element, guint size, gpointer data);
|
extern void cb_need_data(GstElement *element, guint size, gpointer data);
|
||||||
extern void cb_enough_data(GstElement *element, gpointer data);
|
extern void cb_enough_data(GstElement *element, gpointer data);
|
||||||
@@ -37,5 +35,11 @@ extern void X_gst_structure_set_bool(GstStructure *structure, const gchar *name,
|
|||||||
extern GstEventType X_GST_EVENT_TYPE(GstEvent* event);
|
extern GstEventType X_GST_EVENT_TYPE(GstEvent* event);
|
||||||
extern GstMessageType X_GST_MESSAGE_TYPE(GstMessage *message);
|
extern GstMessageType X_GST_MESSAGE_TYPE(GstMessage *message);
|
||||||
extern GstBus* X_gst_pipeline_get_bus(GstElement* element);
|
extern GstBus* X_gst_pipeline_get_bus(GstElement* element);
|
||||||
|
extern GstClock * X_gst_pipeline_get_clock(GstElement* element);
|
||||||
|
extern GstClockTime X_gst_pipeline_get_delay(GstElement* element);
|
||||||
|
extern GstClockTime X_gst_pipeline_get_latency(GstElement* element);
|
||||||
|
extern void X_gst_pipeline_set_latency(GstElement* element, GstClockTime clockTime);
|
||||||
|
|
||||||
|
|
||||||
extern void cb_bus_message(GstBus * bus, GstMessage * message, gpointer poll_data);
|
extern void cb_bus_message(GstBus * bus, GstMessage * message, gpointer poll_data);
|
||||||
extern void X_g_signal_connect_data(gpointer instance, const gchar *detailed_signal, void (*f)(GstElement*, GstBus*, GstMessage*, gpointer), gpointer data, GClosureNotify destroy_data, GConnectFlags connect_flags);
|
extern void X_g_signal_connect_data(gpointer instance, const gchar *detailed_signal, void (*f)(GstElement*, GstBus*, GstMessage*, gpointer), gpointer data, GClosureNotify destroy_data, GConnectFlags connect_flags);
|
||||||
|
|||||||
43
pipeline.go
43
pipeline.go
@@ -90,23 +90,40 @@ func (p *Pipeline) GetBus() (bus *Bus) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// func (p *GstPipeline) GetClock() (gstClock *GstClock) {
|
func (p *Pipeline) GetClock() (clock *Clock) {
|
||||||
|
|
||||||
// CElementClock := C.gst_pipeline_get_clock(p.gstElement)
|
CElementClock := C.X_gst_pipeline_get_clock(p.GstElement)
|
||||||
|
|
||||||
// gstClock = &GstClock{
|
clock = &Clock{
|
||||||
// C: CElementClock,
|
C: CElementClock,
|
||||||
// }
|
}
|
||||||
|
|
||||||
// runtime.SetFinalizer(gstClock, func(gstClock *GstClock) {
|
runtime.SetFinalizer(clock, func(clock *Clock) {
|
||||||
// C.gst_object_unref(C.gpointer(unsafe.Pointer(gstClock.C)))
|
C.gst_object_unref(C.gpointer(unsafe.Pointer(clock.C)))
|
||||||
// })
|
})
|
||||||
|
|
||||||
// return
|
return
|
||||||
// }
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func (p *Pipeline) GetDelay() uint64 {
|
||||||
|
|
||||||
|
CClockTime := C.X_gst_pipeline_get_delay(p.GstElement)
|
||||||
|
return uint64(CClockTime)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func (p *Pipeline) GetLatency() uint64 {
|
||||||
|
|
||||||
|
CClockTime := C.X_gst_pipeline_get_latency(p.GstElement)
|
||||||
|
return uint64(CClockTime)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func (p *Pipeline) SetLatency(latency uint64) {
|
||||||
|
|
||||||
|
C.X_gst_pipeline_set_latency(p.GstElement,C.GstClockTime(latency))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO
|
|
||||||
// get/set delay
|
|
||||||
// get/set latency
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user