本文整理汇总了C++中GST_OBJECT_PARENT函数的典型用法代码示例。如果您正苦于以下问题:C++ GST_OBJECT_PARENT函数的具体用法?C++ GST_OBJECT_PARENT怎么用?C++ GST_OBJECT_PARENT使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GST_OBJECT_PARENT函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: g_free
/* free the buffer */
g_free (buf->memory);
buf->memory = NULL;
return TRUE;
}
static gboolean
gst_jack_ring_buffer_start (GstAudioRingBuffer * buf)
{
GstJackAudioSink *sink;
sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf));
GST_DEBUG_OBJECT (sink, "start");
if (sink->transport & GST_JACK_TRANSPORT_MASTER) {
jack_client_t *client;
client = gst_jack_audio_client_get_client (sink->client);
jack_transport_start (client);
}
return TRUE;
}
static gboolean
gst_jack_ring_buffer_pause (GstAudioRingBuffer * buf)
{
GstJackAudioSink *sink;
sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf));
GST_DEBUG_OBJECT (sink, "pause");
if (sink->transport & GST_JACK_TRANSPORT_MASTER) {
jack_client_t *client;
client = gst_jack_audio_client_get_client (sink->client);
jack_transport_stop (client);
}
return TRUE;
}
static gboolean
gst_jack_ring_buffer_stop (GstAudioRingBuffer * buf)
{
GstJackAudioSink *sink;
sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf));
GST_DEBUG_OBJECT (sink, "stop");
if (sink->transport & GST_JACK_TRANSPORT_MASTER) {
jack_client_t *client;
client = gst_jack_audio_client_get_client (sink->client);
jack_transport_stop (client);
}
return TRUE;
}
#if defined (HAVE_JACK_0_120_1) || defined(HAVE_JACK_1_9_7)
static guint
gst_jack_ring_buffer_delay (GstAudioRingBuffer * buf)
{
GstJackAudioSink *sink;
guint i, res = 0;
jack_latency_range_t range;
sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf));
for (i = 0; i < sink->port_count; i++) {
jack_port_get_latency_range (sink->ports[i], JackPlaybackLatency, &range);
if (range.max > res)
res = range.max;
}
GST_LOG_OBJECT (sink, "delay %u", res);
return res;
}
#else /* !(defined (HAVE_JACK_0_120_1) || defined(HAVE_JACK_1_9_7)) */
static guint
gst_jack_ring_buffer_delay (GstAudioRingBuffer * buf)
{
GstJackAudioSink *sink;
guint i, res = 0;
guint latency;
jack_client_t *client;
sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (buf));
client = gst_jack_audio_client_get_client (sink->client);
for (i = 0; i < sink->port_count; i++) {
latency = jack_port_get_total_latency (client, sink->ports[i]);
if (latency > res)
res = latency;
//.........这里部分代码省略.........
示例2: appsink_handle_many
static GstFlowReturn
appsink_handle_many (GstElement * appsink, gpointer data)
{
int *count = g_object_get_data (G_OBJECT (appsink), COUNT_KEY);
GstSample *sample;
if (count == NULL) {
count = g_malloc0 (sizeof (int));
g_object_set_data_full (G_OBJECT (appsink), COUNT_KEY, count, g_free);
}
g_signal_emit_by_name (appsink, "pull-sample", &sample);
gst_sample_unref (sample);
if (g_atomic_int_add (count, 1) == 40) {
GST_DEBUG_OBJECT (appsink, "Terminatig");
g_idle_add (check_pipeline_termination, GST_OBJECT_PARENT (appsink));
}
return GST_FLOW_OK;
}
示例3: remove_on_unlinked_blocked
static GstPadProbeReturn
remove_on_unlinked_blocked (GstPad * pad, GstPadProbeInfo * info, gpointer elem)
{
KmsAgnosticBin2 *self;
GstPad *sink;
if (elem == NULL) {
return GST_PAD_PROBE_REMOVE;
}
GST_DEBUG_OBJECT (pad, "Unlinking pad");
GST_OBJECT_LOCK (pad);
if (g_object_get_qdata (G_OBJECT (pad), unlinking_data_quark ())) {
GST_OBJECT_UNLOCK (pad);
if (GST_PAD_PROBE_INFO_TYPE (info) & GST_PAD_PROBE_TYPE_QUERY_BOTH) {
/* Queries must be answered */
return GST_PAD_PROBE_PASS;
} else {
return GST_PAD_PROBE_DROP;
}
}
g_object_set_qdata (G_OBJECT (pad), unlinking_data_quark (),
GINT_TO_POINTER (TRUE));
GST_OBJECT_UNLOCK (pad);
sink = gst_pad_get_peer (pad);
if (sink != NULL) {
gst_pad_unlink (pad, sink);
g_object_unref (sink);
}
self = KMS_AGNOSTIC_BIN2 (GST_OBJECT_PARENT (elem));
g_thread_pool_push (self->priv->remove_pool, g_object_ref (elem), NULL);
return GST_PAD_PROBE_PASS;
}
示例4: input_bin_src_caps_probe
static GstPadProbeReturn
input_bin_src_caps_probe (GstPad * pad, GstPadProbeInfo * info, gpointer bin)
{
KmsAgnosticBin2 *self = KMS_AGNOSTIC_BIN2 (GST_OBJECT_PARENT (bin));
GstEvent *event = gst_pad_probe_info_get_event (info);
GstCaps *current_caps;
if (self == NULL) {
GST_WARNING_OBJECT (bin, "Parent agnosticbin seems to be released");
return GST_PAD_PROBE_OK;
}
GST_TRACE_OBJECT (self, "Event in parser pad: %" GST_PTR_FORMAT, event);
if (GST_EVENT_TYPE (event) != GST_EVENT_CAPS) {
return GST_PAD_PROBE_OK;
}
KMS_AGNOSTIC_BIN2_LOCK (self);
self->priv->started = TRUE;
if (self->priv->input_bin_src_caps != NULL) {
gst_caps_unref (self->priv->input_bin_src_caps);
}
gst_event_parse_caps (event, ¤t_caps);
self->priv->input_bin_src_caps = gst_caps_copy (current_caps);
kms_agnostic_bin2_insert_bin (self, GST_BIN (bin));
GST_INFO_OBJECT (self, "Setting current caps to: %" GST_PTR_FORMAT,
current_caps);
kms_element_for_each_src_pad (GST_ELEMENT (self),
(KmsPadIterationAction) add_linked_pads, self);
KMS_AGNOSTIC_BIN2_UNLOCK (self);
return GST_PAD_PROBE_REMOVE;
}
示例5: gst_vaapidecode_set_caps
static gboolean
gst_vaapidecode_set_caps(GstPad *pad, GstCaps *caps)
{
GstVaapiDecode * const decode = GST_VAAPIDECODE(GST_OBJECT_PARENT(pad));
g_return_val_if_fail(pad == decode->sinkpad, FALSE);
if (!gst_vaapidecode_update_sink_caps(decode, caps))
return FALSE;
if (!gst_vaapidecode_update_src_caps(decode, caps))
return FALSE;
if (!gst_vaapidecode_reset(decode, decode->sinkpad_caps))
return FALSE;
/* Propagate NEWSEGMENT event downstream, now that pads are linked */
if (decode->delayed_new_seg) {
if (gst_pad_push_event(decode->srcpad, decode->delayed_new_seg))
gst_event_unref(decode->delayed_new_seg);
decode->delayed_new_seg = NULL;
}
return TRUE;
}
示例6: jack_sample_rate_cb
/* we error out */
static int
jack_sample_rate_cb (jack_nframes_t nframes, void *arg)
{
GstJackAudioSink *sink;
GstJackRingBuffer *abuf;
abuf = GST_JACK_RING_BUFFER_CAST (arg);
sink = GST_JACK_AUDIO_SINK (GST_OBJECT_PARENT (arg));
if (abuf->sample_rate != -1 && abuf->sample_rate != nframes)
goto not_supported;
return 0;
/* ERRORS */
not_supported:
{
GST_ELEMENT_ERROR (sink, RESOURCE, SETTINGS,
(NULL), ("Jack changed the sample rate, which is not supported"));
return 1;
}
}
示例7: gst_buffer_unref
/* free the buffer */
gst_buffer_unref (buf->data);
buf->data = NULL;
return TRUE;
}
static gboolean
gst_jack_ring_buffer_start (GstRingBuffer * buf)
{
GstJackAudioSrc *src;
src = GST_JACK_AUDIO_SRC (GST_OBJECT_PARENT (buf));
GST_DEBUG_OBJECT (src, "start");
if (src->transport & GST_JACK_TRANSPORT_MASTER) {
jack_client_t *client;
client = gst_jack_audio_client_get_client (src->client);
jack_transport_start (client);
}
return TRUE;
}
static gboolean
gst_jack_ring_buffer_pause (GstRingBuffer * buf)
{
GstJackAudioSrc *src;
src = GST_JACK_AUDIO_SRC (GST_OBJECT_PARENT (buf));
GST_DEBUG_OBJECT (src, "pause");
if (src->transport & GST_JACK_TRANSPORT_MASTER) {
jack_client_t *client;
client = gst_jack_audio_client_get_client (src->client);
jack_transport_stop (client);
}
return TRUE;
}
static gboolean
gst_jack_ring_buffer_stop (GstRingBuffer * buf)
{
GstJackAudioSrc *src;
src = GST_JACK_AUDIO_SRC (GST_OBJECT_PARENT (buf));
GST_DEBUG_OBJECT (src, "stop");
if (src->transport & GST_JACK_TRANSPORT_MASTER) {
jack_client_t *client;
client = gst_jack_audio_client_get_client (src->client);
jack_transport_stop (client);
}
return TRUE;
}
#if defined (HAVE_JACK_0_120_1) || defined(HAVE_JACK_1_9_7)
static guint
gst_jack_ring_buffer_delay (GstRingBuffer * buf)
{
GstJackAudioSrc *src;
guint i, res = 0;
jack_latency_range_t range;
src = GST_JACK_AUDIO_SRC (GST_OBJECT_PARENT (buf));
for (i = 0; i < src->port_count; i++) {
jack_port_get_latency_range (src->ports[i], JackCaptureLatency, &range);
if (range.max > res)
res = range.max;
}
GST_DEBUG_OBJECT (src, "delay %u", res);
return res;
}
#else /* !(defined (HAVE_JACK_0_120_1) || defined(HAVE_JACK_1_9_7)) */
static guint
gst_jack_ring_buffer_delay (GstRingBuffer * buf)
{
GstJackAudioSrc *src;
guint i, res = 0;
guint latency;
jack_client_t *client;
src = GST_JACK_AUDIO_SRC (GST_OBJECT_PARENT (buf));
client = gst_jack_audio_client_get_client (src->client);
for (i = 0; i < src->port_count; i++) {
latency = jack_port_get_total_latency (client, src->ports[i]);
if (latency > res)
//.........这里部分代码省略.........
示例8: jack_buffer_size_cb
/* we error out */
static int
jack_buffer_size_cb (jack_nframes_t nframes, void *arg)
{
GstJackAudioSrc *src;
GstJackRingBuffer *abuf;
abuf = GST_JACK_RING_BUFFER_CAST (arg);
src = GST_JACK_AUDIO_SRC (GST_OBJECT_PARENT (arg));
if (abuf->buffer_size != -1 && abuf->buffer_size != nframes)
goto not_supported;
return 0;
/* ERRORS */
not_supported:
{
GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS,
(NULL), ("Jack changed the buffer size, which is not supported"));
return 1;
}
}
示例9: gst_jack_ring_buffer_open_device
/* the _open_device method should make a connection with the server
*/
static gboolean
gst_jack_ring_buffer_open_device (GstRingBuffer * buf)
{
GstJackAudioSrc *src;
jack_status_t status = 0;
const gchar *name;
src = GST_JACK_AUDIO_SRC (GST_OBJECT_PARENT (buf));
GST_DEBUG_OBJECT (src, "open");
name = g_get_application_name ();
if (!name)
name = "GStreamer";
src->client = gst_jack_audio_client_new (name, src->server,
GST_JACK_CLIENT_SOURCE,
jack_shutdown_cb,
jack_process_cb, jack_buffer_size_cb, jack_sample_rate_cb, buf, &status);
if (src->client == NULL)
goto could_not_open;
GST_DEBUG_OBJECT (src, "opened");
return TRUE;
/* ERRORS */
could_not_open:
{
if (status & JackServerFailed) {
GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND,
(NULL), ("Cannot connect to the Jack server (status %d)", status));
} else {
GST_ELEMENT_ERROR (src, RESOURCE, OPEN_WRITE,
(NULL), ("Jack client open error (status %d)", status));
}
return FALSE;
}
}
示例10: gst_faceblur_chain
/* chain function
* this function does the actual processing
*/
static GstFlowReturn
gst_faceblur_chain (GstPad * pad, GstBuffer * buf)
{
Gstfaceblur *filter;
CvSeq *faces;
int i;
filter = GST_FACEBLUR (GST_OBJECT_PARENT (pad));
filter->cvImage->imageData = (char *) GST_BUFFER_DATA (buf);
cvCvtColor (filter->cvImage, filter->cvGray, CV_RGB2GRAY);
cvClearMemStorage (filter->cvStorage);
if (filter->cvCascade) {
faces =
cvHaarDetectObjects (filter->cvGray, filter->cvCascade,
filter->cvStorage, 1.1, 2, 0, cvSize (30, 30)
#if (CV_MAJOR_VERSION >= 2) && (CV_MINOR_VERSION >= 2)
, cvSize (32, 32)
#endif
);
if (faces && faces->total > 0) {
buf = gst_buffer_make_writable (buf);
}
for (i = 0; i < (faces ? faces->total : 0); i++) {
CvRect *r = (CvRect *) cvGetSeqElem (faces, i);
cvSetImageROI (filter->cvImage, *r);
cvSmooth (filter->cvImage, filter->cvImage, CV_BLUR, 11, 11, 0, 0);
cvSmooth (filter->cvImage, filter->cvImage, CV_GAUSSIAN, 11, 11, 0, 0);
cvResetImageROI (filter->cvImage);
}
}
/* these filters operate in place, so we push the same buffer */
return gst_pad_push (filter->srcpad, buf);
}
示例11: proxy_src_pad_query_function
static gboolean
proxy_src_pad_query_function (GstPad * pad, GstObject * parent,
GstQuery * query)
{
gboolean ret = gst_pad_query_default (pad, parent, query);
if (!ret) {
return ret;
}
if (GST_QUERY_TYPE (query) == GST_QUERY_ACCEPT_CAPS) {
gboolean accepted;
gst_query_parse_accept_caps_result (query, &accepted);
if (!accepted) {
GstProxyPad *gp = gst_proxy_pad_get_internal (GST_PROXY_PAD (pad));
KmsAgnosticBin2 *self = NULL;
GST_ERROR_OBJECT (pad, "Caps not accepted: %" GST_PTR_FORMAT, query);
if (gp) {
self = KMS_AGNOSTIC_BIN2 (GST_OBJECT_PARENT (gp));
}
if (self) {
KMS_AGNOSTIC_BIN2_LOCK (self);
remove_target_pad (GST_PAD_CAST (gp));
kms_agnostic_bin2_process_pad (self, GST_PAD_CAST (gp));
KMS_AGNOSTIC_BIN2_UNLOCK (self);
}
g_object_unref (gp);
}
}
return ret;
}
示例12: _owr_deep_notify
void _owr_deep_notify(GObject *object, GstObject *orig,
GParamSpec *pspec, gpointer user_data)
{
GValue value = G_VALUE_INIT;
gchar *str = NULL;
GstObject *it;
gchar *prevpath, *path;
OWR_UNUSED(user_data);
OWR_UNUSED(object);
path = g_strdup("");
for (it = orig; GST_IS_OBJECT(it); it = GST_OBJECT_PARENT(it)) {
prevpath = path;
path = g_strjoin("/", GST_OBJECT_NAME(it), prevpath, NULL);
g_free(prevpath);
}
if (pspec->flags & G_PARAM_READABLE) {
g_value_init(&value, pspec->value_type);
g_object_get_property(G_OBJECT(orig), pspec->name, &value);
if (G_VALUE_TYPE(&value) == GST_TYPE_CAPS)
str = gst_caps_to_string(gst_value_get_caps(&value));
else if (G_VALUE_HOLDS_STRING(&value))
str = g_value_dup_string(&value);
else
str = gst_value_serialize(&value);
GST_INFO_OBJECT(object, "%s%s = %s\n", path, pspec->name, str);
g_free(str);
g_value_unset(&value);
} else
GST_INFO_OBJECT(object, "Parameter %s not readable in %s.", pspec->name, path);
g_free(path);
}
示例13: gst_tee_set_property
static void
gst_tee_set_property (GObject * object, guint prop_id, const GValue * value,
GParamSpec * pspec)
{
GstTee *tee = GST_TEE (object);
GST_OBJECT_LOCK (tee);
switch (prop_id) {
case PROP_HAS_CHAIN:
tee->has_chain = g_value_get_boolean (value);
break;
case PROP_SILENT:
tee->silent = g_value_get_boolean (value);
break;
case PROP_PULL_MODE:
tee->pull_mode = (GstTeePullMode) g_value_get_enum (value);
break;
case PROP_ALLOC_PAD:
{
GstPad *pad = g_value_get_object (value);
GST_OBJECT_LOCK (pad);
if (GST_OBJECT_PARENT (pad) == GST_OBJECT_CAST (object))
tee->allocpad = pad;
else
GST_WARNING_OBJECT (object, "Tried to set alloc pad %s which"
" is not my pad", GST_OBJECT_NAME (pad));
GST_OBJECT_UNLOCK (pad);
break;
}
case PROP_ALLOW_NOT_LINKED:
tee->allow_not_linked = g_value_get_boolean (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
GST_OBJECT_UNLOCK (tee);
}
示例14: gst_audioringbuffer_close_device
static gboolean
gst_audioringbuffer_close_device (GstRingBuffer * buf)
{
GstAudioSrc *src;
GstAudioSrcClass *csrc;
gboolean result = TRUE;
src = GST_AUDIO_SRC (GST_OBJECT_PARENT (buf));
csrc = GST_AUDIO_SRC_GET_CLASS (src);
if (csrc->close)
result = csrc->close (src);
if (!result)
goto could_not_open;
return result;
could_not_open:
{
return FALSE;
}
}
示例15: gst_shout2send_setcaps
static gboolean
gst_shout2send_setcaps (GstPad * pad, GstCaps * caps)
{
const gchar *mimetype;
GstShout2send *shout2send;
gboolean ret = TRUE;
shout2send = GST_SHOUT2SEND (GST_OBJECT_PARENT (pad));
mimetype = gst_structure_get_name (gst_caps_get_structure (caps, 0));
GST_DEBUG_OBJECT (shout2send, "mimetype of caps given is: %s", mimetype);
if (!strcmp (mimetype, "audio/mpeg")) {
shout2send->audio_format = SHOUT_FORMAT_MP3;
} else if (!strcmp (mimetype, "application/ogg")) {
shout2send->audio_format = SHOUT_FORMAT_VORBIS;
} else {
ret = FALSE;
}
return ret;
}