mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2024-05-10 04:12:40 +00:00
Allow registering GstPushSrc based types
This commit is contained in:
parent
2298fc3353
commit
45a146be26
|
@ -29,7 +29,8 @@ extern "C" {
|
|||
author: *const c_char,
|
||||
rank: i32,
|
||||
create_instance: extern fn() -> *mut Box<Source>,
|
||||
protocols: *const c_char) -> GBoolean;
|
||||
protocols: *const c_char,
|
||||
push_only: GBoolean) -> GBoolean;
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
|
@ -44,7 +45,8 @@ pub extern "C" fn sources_register(plugin: *const c_void) -> GBoolean {
|
|||
CString::new("Sebastian Dröge <sebastian@centricular.com>").unwrap().as_ptr(),
|
||||
256 + 100,
|
||||
FileSrc::new_ptr,
|
||||
CString::new("file").unwrap().as_ptr());
|
||||
CString::new("file").unwrap().as_ptr(),
|
||||
GBoolean::False);
|
||||
|
||||
gst_rs_source_register(plugin,
|
||||
CString::new("rshttpsrc").unwrap().as_ptr(),
|
||||
|
@ -54,7 +56,8 @@ pub extern "C" fn sources_register(plugin: *const c_void) -> GBoolean {
|
|||
CString::new("Sebastian Dröge <sebastian@centricular.com>").unwrap().as_ptr(),
|
||||
256 + 100,
|
||||
HttpSrc::new_ptr,
|
||||
CString::new("http:https").unwrap().as_ptr());
|
||||
CString::new("http:https").unwrap().as_ptr(),
|
||||
GBoolean::True);
|
||||
}
|
||||
|
||||
return GBoolean::True;
|
||||
|
|
|
@ -116,7 +116,7 @@ impl Source for HttpSrc {
|
|||
}
|
||||
self.response = None;
|
||||
|
||||
true
|
||||
return true;
|
||||
}
|
||||
|
||||
fn fill(&mut self, offset: u64, data: &mut [u8]) -> Result<usize, GstFlowReturn> {
|
||||
|
|
|
@ -266,7 +266,7 @@ gst_rs_source_plugin_init (GstPlugin * plugin)
|
|||
}
|
||||
|
||||
gboolean
|
||||
gst_rs_source_register (GstPlugin * plugin, const gchar *name, const gchar * long_name, const gchar * description, const gchar * classification, const gchar * author, GstRank rank, void * (*create_instance) (void), const gchar *protocols)
|
||||
gst_rs_source_register (GstPlugin * plugin, const gchar *name, const gchar * long_name, const gchar * description, const gchar * classification, const gchar * author, GstRank rank, void * (*create_instance) (void), const gchar *protocols, gboolean push_only)
|
||||
{
|
||||
GTypeInfo type_info = {
|
||||
sizeof (GstRsSrcClass),
|
||||
|
@ -298,7 +298,7 @@ gst_rs_source_register (GstPlugin * plugin, const gchar *name, const gchar * lon
|
|||
data->protocols = g_strsplit (protocols, ":", -1);
|
||||
|
||||
type_name = g_strconcat ("RsSrc-", name, NULL);
|
||||
type = g_type_register_static (GST_TYPE_BASE_SRC, type_name, &type_info, 0);
|
||||
type = g_type_register_static (push_only ? GST_TYPE_PUSH_SRC : GST_TYPE_BASE_SRC, type_name, &type_info, 0);
|
||||
g_free (type_name);
|
||||
|
||||
g_type_add_interface_static (type, GST_TYPE_URI_HANDLER, &iface_info);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define __GST_RS_SRC_H__
|
||||
|
||||
#include <gst/gst.h>
|
||||
#include <gst/base/gstbasesrc.h>
|
||||
#include <gst/base/base.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
|
@ -15,13 +15,13 @@ typedef struct _GstRsSrc GstRsSrc;
|
|||
typedef struct _GstRsSrcClass GstRsSrcClass;
|
||||
|
||||
struct _GstRsSrc {
|
||||
GstBaseSrc element;
|
||||
GstPushSrc element;
|
||||
|
||||
gpointer instance;
|
||||
};
|
||||
|
||||
struct _GstRsSrcClass {
|
||||
GstBaseSrcClass parent_class;
|
||||
GstPushSrcClass parent_class;
|
||||
};
|
||||
|
||||
G_GNUC_INTERNAL gboolean gst_rs_source_plugin_init (GstPlugin * plugin);
|
||||
|
|
Loading…
Reference in a new issue