Use GstPushSrc as a base class
Olivier CrĂȘte
11 years ago
49 | 49 |
|
50 | 50 |
static GstFlowReturn
|
51 | 51 |
gst_nice_src_create (
|
52 | |
GstBaseSrc *basesrc,
|
53 | |
guint64 offset,
|
54 | |
guint length,
|
|
52 |
GstPushSrc *basesrc,
|
55 | 53 |
GstBuffer **buffer);
|
56 | 54 |
|
57 | 55 |
static gboolean
|
|
92 | 90 |
GST_PAD_ALWAYS,
|
93 | 91 |
GST_STATIC_CAPS_ANY);
|
94 | 92 |
|
95 | |
G_DEFINE_TYPE (GstNiceSrc, gst_nice_src, GST_TYPE_BASE_SRC);
|
|
93 |
G_DEFINE_TYPE (GstNiceSrc, gst_nice_src, GST_TYPE_PUSH_SRC);
|
96 | 94 |
|
97 | 95 |
enum
|
98 | 96 |
{
|
|
105 | 103 |
static void
|
106 | 104 |
gst_nice_src_class_init (GstNiceSrcClass *klass)
|
107 | 105 |
{
|
|
106 |
GstPushSrcClass *gstpushsrc_class;
|
108 | 107 |
GstBaseSrcClass *gstbasesrc_class;
|
109 | 108 |
GstElementClass *gstelement_class;
|
110 | 109 |
GObjectClass *gobject_class;
|
|
112 | 111 |
GST_DEBUG_CATEGORY_INIT (nicesrc_debug, "nicesrc",
|
113 | 112 |
0, "libnice source");
|
114 | 113 |
|
|
114 |
gstpushsrc_class = (GstPushSrcClass *) klass;
|
|
115 |
gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_nice_src_create);
|
|
116 |
|
115 | 117 |
gstbasesrc_class = (GstBaseSrcClass *) klass;
|
116 | |
gstbasesrc_class->create = GST_DEBUG_FUNCPTR (gst_nice_src_create);
|
117 | 118 |
gstbasesrc_class->unlock = GST_DEBUG_FUNCPTR (gst_nice_src_unlock);
|
118 | 119 |
gstbasesrc_class->unlock_stop = GST_DEBUG_FUNCPTR (gst_nice_src_unlock_stop);
|
119 | 120 |
|
|
261 | 262 |
|
262 | 263 |
static GstFlowReturn
|
263 | 264 |
gst_nice_src_create (
|
264 | |
GstBaseSrc *basesrc,
|
265 | |
guint64 offset,
|
266 | |
guint length,
|
|
265 |
GstPushSrc *basesrc,
|
267 | 266 |
GstBuffer **buffer)
|
268 | 267 |
{
|
269 | 268 |
GstNiceSrc *nicesrc = GST_NICE_SRC (basesrc);
|
270 | 269 |
|
271 | 270 |
GST_LOG_OBJECT (nicesrc, "create called");
|
272 | |
|
273 | |
nicesrc->offset = offset;
|
274 | 271 |
|
275 | 272 |
GST_OBJECT_LOCK (basesrc);
|
276 | 273 |
if (nicesrc->unlocked) {
|
38 | 38 |
#define _GSTNICESRC_H
|
39 | 39 |
|
40 | 40 |
#include <gst/gst.h>
|
41 | |
#include <gst/base/gstbasesrc.h>
|
|
41 |
#include <gst/base/gstpushsrc.h>
|
42 | 42 |
|
43 | 43 |
#include <nice/nice.h>
|
44 | 44 |
|
|
59 | 59 |
|
60 | 60 |
struct _GstNiceSrc
|
61 | 61 |
{
|
62 | |
GstBaseSrc parent;
|
|
62 |
GstPushSrc parent;
|
63 | 63 |
GstPad *srcpad;
|
64 | 64 |
NiceAgent *agent;
|
65 | 65 |
guint stream_id;
|
66 | 66 |
guint component_id;
|
67 | 67 |
GMainContext *mainctx;
|
68 | 68 |
GMainLoop *mainloop;
|
69 | |
guint64 offset;
|
70 | |
GstFlowReturn flow_ret;
|
71 | 69 |
GQueue *outbufs;
|
72 | 70 |
gboolean unlocked;
|
73 | 71 |
GSource *idle_source;
|
|
77 | 75 |
|
78 | 76 |
struct _GstNiceSrcClass
|
79 | 77 |
{
|
80 | |
GstBaseSrcClass parent_class;
|
|
78 |
GstPushSrcClass parent_class;
|
81 | 79 |
};
|
82 | 80 |
|
83 | 81 |
GType gst_nice_src_get_type (void);
|