您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ GST_PAD函数代码示例

51自学网 2021-06-01 20:56:49
  C++
这篇教程C++ GST_PAD函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中GST_PAD函数的典型用法代码示例。如果您正苦于以下问题:C++ GST_PAD函数的具体用法?C++ GST_PAD怎么用?C++ GST_PAD使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了GST_PAD函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: gst_a2dp_sink_init_ghost_pad

static gboolean gst_a2dp_sink_init_ghost_pad(GstA2dpSink *self){	GstPad *capsfilter_pad;	/* we search for the capsfilter sinkpad */	capsfilter_pad = gst_element_get_static_pad(self->capsfilter, "sink");	/* now we add a ghostpad */	self->ghostpad = GST_GHOST_PAD(gst_ghost_pad_new("sink",		capsfilter_pad));	g_object_unref(capsfilter_pad);	/* the getcaps of our ghostpad must reflect the device caps */	gst_pad_set_getcaps_function(GST_PAD(self->ghostpad),				gst_a2dp_sink_get_caps);	self->ghostpad_setcapsfunc = GST_PAD_SETCAPSFUNC(self->ghostpad);	gst_pad_set_setcaps_function(GST_PAD(self->ghostpad),			GST_DEBUG_FUNCPTR(gst_a2dp_sink_set_caps));	/* we need to handle events on our own and we also need the eventfunc	 * of the ghostpad for forwarding calls */	self->ghostpad_eventfunc = GST_PAD_EVENTFUNC(GST_PAD(self->ghostpad));	gst_pad_set_event_function(GST_PAD(self->ghostpad),			gst_a2dp_sink_handle_event);	if (!gst_element_add_pad(GST_ELEMENT(self), GST_PAD(self->ghostpad)))		GST_ERROR_OBJECT(self, "failed to add ghostpad");	return TRUE;}
开发者ID:Mcjesus15,项目名称:Zio_Other,代码行数:30,


示例2: gst_freeze_sink_event

static gbooleangst_freeze_sink_event (GstPad * pad, GstEvent * event){  gboolean ret = TRUE;  GstFreeze *freeze = GST_FREEZE (gst_pad_get_parent (pad));  switch (GST_EVENT_TYPE (event)) {    case GST_EVENT_EOS:      GST_DEBUG_OBJECT (freeze, "EOS on sink pad %s",          gst_pad_get_name (GST_PAD (freeze->sinkpad)));      gst_event_unref (event);      break;    case GST_EVENT_NEWSEGMENT:      /* FALL TROUGH */    case GST_EVENT_FLUSH_STOP:      gst_freeze_clear_buffer (freeze);      /* FALL TROUGH */    default:      ret = gst_pad_event_default (GST_PAD (freeze->sinkpad), event);      break;  }  gst_object_unref (freeze);  return ret;}
开发者ID:bilboed,项目名称:gst-plugins-bad,代码行数:27,


示例3: mpegts_parse_sync_program_pads

static voidmpegts_parse_sync_program_pads (MpegTSParse2 * parse){  GList *walk;  GST_INFO_OBJECT (parse, "begin sync pads");  for (walk = parse->pads_to_remove; walk; walk = walk->next)    gst_element_remove_pad (GST_ELEMENT (parse), GST_PAD (walk->data));  for (walk = parse->pads_to_add; walk; walk = walk->next)    gst_element_add_pad (GST_ELEMENT (parse), GST_PAD (walk->data));  if (parse->pads_to_add)    g_list_free (parse->pads_to_add);  if (parse->pads_to_remove)    g_list_free (parse->pads_to_remove);  GST_OBJECT_LOCK (parse);  parse->pads_to_remove = NULL;  parse->pads_to_add = NULL;  parse->need_sync_program_pads = FALSE;  GST_OBJECT_UNLOCK (parse);  GST_INFO_OBJECT (parse, "end sync pads");}
开发者ID:kanongil,项目名称:gst-plugins-bad,代码行数:26,


示例4: kms_audio_mixer_remove_sometimes_src_pad

static voidkms_audio_mixer_remove_sometimes_src_pad (KmsAudioMixer * self,    GstElement * adder){  GstProxyPad *internal;  GstPad *srcpad, *peer;  srcpad = gst_element_get_static_pad (adder, "src");  peer = gst_pad_get_peer (srcpad);  if (peer == NULL)    goto end_phase_1;  internal = gst_proxy_pad_get_internal ((GstProxyPad *) peer);  if (internal == NULL)    goto end_phase_2;  gst_ghost_pad_set_target (GST_GHOST_PAD (internal), NULL);  if (GST_STATE (self) < GST_STATE_PAUSED      || GST_STATE_PENDING (self) < GST_STATE_PAUSED      || GST_STATE_TARGET (self) < GST_STATE_PAUSED) {    gst_pad_set_active (GST_PAD (internal), FALSE);  }  GST_DEBUG ("Removing source pad %" GST_PTR_FORMAT, internal);  gst_element_remove_pad (GST_ELEMENT (self), GST_PAD (internal));  gst_object_unref (internal);end_phase_2:  gst_object_unref (peer);end_phase_1:  gst_object_unref (srcpad);}
开发者ID:KennyDark,项目名称:kms-core,代码行数:35,


示例5: _request_new_pad

/**************************************************** *              GstElement vmetods                  * ****************************************************/static GstPad *_request_new_pad (GstElement * element, GstPadTemplate * templ,    const gchar * name, const GstCaps * caps){  GstPad *audioresample_srcpad, *audioconvert_sinkpad, *tmpghost;  GstPad *ghost;  GstElement *audioconvert, *audioresample;  PadInfos *infos = g_slice_new0 (PadInfos);  GESSmartAdder *self = GES_SMART_ADDER (element);  infos->adder_pad = gst_element_request_pad (self->adder, templ, NULL, caps);  if (infos->adder_pad == NULL) {    GST_WARNING_OBJECT (element, "Could not get any pad from GstAdder");    return NULL;  }  infos->self = self;  infos->bin = gst_bin_new (NULL);  audioconvert = gst_element_factory_make ("audioconvert", NULL);  audioresample = gst_element_factory_make ("audioresample", NULL);  gst_bin_add_many (GST_BIN (infos->bin), audioconvert, audioresample, NULL);  gst_element_link_many (audioconvert, audioresample, NULL);  audioconvert_sinkpad = gst_element_get_static_pad (audioconvert, "sink");  tmpghost = GST_PAD (gst_ghost_pad_new (NULL, audioconvert_sinkpad));  gst_object_unref (audioconvert_sinkpad);  gst_pad_set_active (tmpghost, TRUE);  gst_element_add_pad (GST_ELEMENT (infos->bin), tmpghost);  gst_bin_add (GST_BIN (self), infos->bin);  ghost = gst_ghost_pad_new (NULL, tmpghost);  gst_pad_set_active (ghost, TRUE);  if (!gst_element_add_pad (GST_ELEMENT (self), ghost))    goto could_not_add;  audioresample_srcpad = gst_element_get_static_pad (audioresample, "src");  tmpghost = GST_PAD (gst_ghost_pad_new (NULL, audioresample_srcpad));  gst_object_unref (audioresample_srcpad);  gst_pad_set_active (tmpghost, TRUE);  gst_element_add_pad (GST_ELEMENT (infos->bin), tmpghost);  gst_pad_link (tmpghost, infos->adder_pad);  LOCK (self);  g_hash_table_insert (self->pads_infos, ghost, infos);  UNLOCK (self);  GST_DEBUG_OBJECT (self, "Returning new pad %" GST_PTR_FORMAT, ghost);  return ghost;could_not_add:  {    GST_ERROR_OBJECT (self, "could not add pad");    destroy_pad (infos);    return NULL;  }}
开发者ID:lubosz,项目名称:gst-editing-services,代码行数:62,


示例6: _create_input_chain

static gboolean_create_input_chain (GstGLMixerBin * self, struct input_chain *chain,    GstPad * mixer_pad){  GstGLMixerBinClass *klass = GST_GL_MIXER_BIN_GET_CLASS (self);  GstPad *pad;  gboolean res = TRUE;  gchar *name;  chain->self = self;  chain->mixer_pad = mixer_pad;  chain->upload = gst_element_factory_make ("glupload", NULL);  chain->in_convert = gst_element_factory_make ("glcolorconvert", NULL);  res &= gst_bin_add (GST_BIN (self), chain->in_convert);  res &= gst_bin_add (GST_BIN (self), chain->upload);  pad = gst_element_get_static_pad (chain->in_convert, "src");  if (gst_pad_link (pad, mixer_pad) != GST_PAD_LINK_OK) {    gst_object_unref (pad);    return FALSE;  }  gst_object_unref (pad);  res &=      gst_element_link_pads (chain->upload, "src", chain->in_convert, "sink");  pad = gst_element_get_static_pad (chain->upload, "sink");  if (!pad) {    return FALSE;  } else {    GST_DEBUG_OBJECT (self, "setting target sink pad %" GST_PTR_FORMAT, pad);    name = gst_object_get_name (GST_OBJECT (mixer_pad));    if (klass->create_input_pad) {      chain->ghost_pad = klass->create_input_pad (self, chain->mixer_pad);      gst_object_set_name (GST_OBJECT (chain->ghost_pad), name);      gst_ghost_pad_set_target (chain->ghost_pad, pad);    } else {      chain->ghost_pad =          GST_GHOST_PAD (gst_ghost_pad_new (GST_PAD_NAME (chain->mixer_pad),              pad));    }    g_free (name);    GST_OBJECT_LOCK (self);    if (self->priv->running)      gst_pad_set_active (GST_PAD (chain->ghost_pad), TRUE);    GST_OBJECT_UNLOCK (self);    gst_element_add_pad (GST_ELEMENT_CAST (self), GST_PAD (chain->ghost_pad));    gst_object_unref (pad);  }  gst_element_sync_state_with_parent (chain->upload);  gst_element_sync_state_with_parent (chain->in_convert);  return TRUE;}
开发者ID:mbouron,项目名称:gst-plugins-bad,代码行数:58,


示例7: gst_imx_compositor_sink_query

static gboolean gst_imx_compositor_sink_query(GstImxBPAggregator *aggregator, GstImxBPAggregatorPad *pad, GstQuery *query){	switch (GST_QUERY_TYPE(query))	{		case GST_QUERY_CAPS:		{			/* Custom caps query response. Take the sinkpad template caps,			 * optionally filter them, and return them as the result.			 * This ensures that the caps that the derived class supports			 * for input data are actually used (by default, the aggregator			 * base classes try to keep input and output caps equal) */			GstCaps *filter, *caps;			gst_query_parse_caps(query, &filter);			caps = gst_pad_get_pad_template_caps(GST_PAD(pad));			if (filter != NULL)			{				GstCaps *unfiltered_caps = gst_caps_make_writable(caps);				caps = gst_caps_intersect(unfiltered_caps, filter);				gst_caps_unref(unfiltered_caps);			}			GST_DEBUG_OBJECT(aggregator, "responding to CAPS query with caps %" GST_PTR_FORMAT, (gpointer)caps);			gst_query_set_caps_result(query, caps);			gst_caps_unref(caps);			return TRUE;		}		case GST_QUERY_ACCEPT_CAPS:		{			/* Custom accept_caps query response. Simply check if			 * the supplied caps are a valid subset of the sinkpad's			 * template caps. This is done for the same reasons			 * as the caps query response above. */			GstCaps *accept_caps = NULL, *template_caps = NULL;			gboolean ret;			gst_query_parse_accept_caps(query, &accept_caps);			template_caps = gst_pad_get_pad_template_caps(GST_PAD(pad));			ret = gst_caps_is_subset(accept_caps, template_caps);			GST_DEBUG_OBJECT(aggregator, "responding to ACCEPT_CAPS query with value %d  (acceptcaps: %" GST_PTR_FORMAT "  template caps %" GST_PTR_FORMAT ")", ret, (gpointer)accept_caps, (gpointer)template_caps);			gst_query_set_accept_caps_result(query, ret);			return TRUE;		}		default:			return GST_IMXBP_AGGREGATOR_CLASS(gst_imx_compositor_parent_class)->sink_query(aggregator, pad, query);	}}
开发者ID:FrankBau,项目名称:gstreamer-imx,代码行数:57,


示例8: ofLogError

bool ofGstVideoPlayer::allocate(int bpp){	if(bIsAllocated) return true;	guint64 durationNanos = videoUtils.getDurationNanos();	nFrames		  = 0;	if(GstPad* pad = gst_element_get_static_pad(videoUtils.getSink(), "sink")){#if GST_VERSION_MAJOR==0		int width,height;		if(gst_video_get_size(GST_PAD(pad), &width, &height)){			if(!videoUtils.allocate(width,height,bpp)) return false;		}else{			ofLogError("ofGstVideoPlayer") << "allocate(): couldn't query width and height";			return false;		}		const GValue *framerate = gst_video_frame_rate(pad);		fps_n=0;		fps_d=0;		if(framerate && GST_VALUE_HOLDS_FRACTION (framerate)){			fps_n = gst_value_get_fraction_numerator (framerate);			fps_d = gst_value_get_fraction_denominator (framerate);			nFrames = (float)(durationNanos / (float)GST_SECOND) * (float)fps_n/(float)fps_d;			ofLogVerbose("ofGstVideoPlayer") << "allocate(): framerate: " << fps_n << "/" << fps_d;		}else{			ofLogWarning("ofGstVideoPlayer") << "allocate(): cannot get framerate, frame seek won't work";		}		bIsAllocated = true;#else		if(GstCaps *caps = gst_pad_get_current_caps (GST_PAD (pad))){			GstVideoInfo info;			gst_video_info_init (&info);			if (gst_video_info_from_caps (&info, caps)){				if(!videoUtils.allocate(info.width,info.height,bpp)) return false;			}else{				ofLogError("ofGstVideoPlayer") << "allocate(): couldn't query width and height";				return false;			}			fps_n = info.fps_n;			fps_d = info.fps_d;			nFrames = (float)(durationNanos / (float)GST_SECOND) * (float)fps_n/(float)fps_d;			gst_caps_unref(caps);			bIsAllocated = true;		}else{			ofLogError("ofGstVideoPlayer") << "allocate(): cannot get pipeline caps";			bIsAllocated = false;		}#endif		gst_object_unref(GST_OBJECT(pad));	}else{		ofLogError("ofGstVideoPlayer") << "allocate(): cannot get sink pad";		bIsAllocated = false;	}	return bIsAllocated;}
开发者ID:B-IT,项目名称:openFrameworks,代码行数:57,


示例9: gst_tcp_mix_src_pad_start

static gbooleangst_tcp_mix_src_pad_start (GstTCPMixSrcPad * pad){  gboolean res = FALSE;  if (GST_PAD_TASK (pad) == NULL) {    GstTaskFunction func = (GstTaskFunction) gst_tcp_mix_src_loop;    res = gst_pad_start_task (GST_PAD (pad), func, GST_PAD (pad), NULL);  }  return res;}
开发者ID:duzy,项目名称:gst-switch,代码行数:12,


示例10: splitmux_part_pad_constructed

static voidsplitmux_part_pad_constructed (GObject * pad){  gst_pad_set_chain_function (GST_PAD (pad),      GST_DEBUG_FUNCPTR (splitmux_part_pad_chain));  gst_pad_set_event_function (GST_PAD (pad),      GST_DEBUG_FUNCPTR (splitmux_part_pad_event));  gst_pad_set_query_function (GST_PAD (pad),      GST_DEBUG_FUNCPTR (splitmux_part_pad_query));  G_OBJECT_CLASS (gst_splitmux_part_pad_parent_class)->constructed (pad);}
开发者ID:ConfusedReality,项目名称:pkg_multimedia_gst-plugins-good,代码行数:12,


示例11: _request_new_pad

static GstPad *_request_new_pad (GstElement * element,    GstPadTemplate * templ, const gchar * req_name, const GstCaps * caps){  GstAggregator *self;  GstAggregatorPad *agg_pad;  GstElementClass *klass = GST_ELEMENT_GET_CLASS (element);  GstAggregatorPrivate *priv = GST_AGGREGATOR (element)->priv;  self = GST_AGGREGATOR (element);  if (templ == gst_element_class_get_pad_template (klass, "sink_%u")) {    gint serial = 0;    gchar *name = NULL;    GST_OBJECT_LOCK (element);    if (req_name == NULL || strlen (req_name) < 6        || !g_str_has_prefix (req_name, "sink_")) {      /* no name given when requesting the pad, use next available int */      priv->padcount++;    } else {      /* parse serial number from requested padname */      serial = g_ascii_strtoull (&req_name[5], NULL, 10);      if (serial >= priv->padcount)        priv->padcount = serial;    }    name = g_strdup_printf ("sink_%u", priv->padcount);    agg_pad = g_object_new (GST_AGGREGATOR_GET_CLASS (self)->sinkpads_type,        "name", name, "direction", GST_PAD_SINK, "template", templ, NULL);    g_free (name);    GST_OBJECT_UNLOCK (element);  } else {    return NULL;  }  GST_DEBUG_OBJECT (element, "Adding pad %s", GST_PAD_NAME (agg_pad));  if (priv->running)    gst_pad_set_active (GST_PAD (agg_pad), TRUE);  /* add the pad to the element */  gst_element_add_pad (element, GST_PAD (agg_pad));  return GST_PAD (agg_pad);}
开发者ID:jledet,项目名称:gst-plugins-bad,代码行数:49,


示例12: gst_switch_request_new_pad

static GstPad *gst_switch_request_new_pad (GstElement * element,    GstPadTemplate * templ, const gchar * name, const GstCaps * caps){  GstSwitch *swit = GST_SWITCH (element);  GstGhostPad *pad;  INFO ("requesting: %s.%s (%d=%d+%d)", GST_ELEMENT_NAME (swit),      name ? name : GST_PAD_TEMPLATE_NAME_TEMPLATE (templ),      element->numpads, element->numsrcpads, element->numsinkpads);  GST_SWITCH_LOCK (swit);  switch (GST_PAD_TEMPLATE_DIRECTION (templ)) {    case GST_PAD_SRC:      pad = gst_switch_request_new_src_pad (swit, templ, name, caps);      break;    case GST_PAD_SINK:      pad = gst_switch_request_new_sink_pad (swit, templ, name, caps);      break;    default:      pad = NULL;      break;  }  if (pad) {    gst_pad_set_active (GST_PAD (pad), TRUE);    if (gst_element_add_pad (GST_ELEMENT (swit), GST_PAD (pad))) {      GstPad *basepad = gst_ghost_pad_get_target (pad);      GstElement *swcase = GST_ELEMENT (GST_PAD_PARENT (basepad));      GST_OBJECT_FLAG_SET (basepad, GST_SWITCH_PAD_FLAG_GHOSTED);      GST_DEBUG_OBJECT (swit, "New %s:%s on %s:%s",          GST_ELEMENT_NAME (swit), GST_PAD_NAME (pad),          GST_ELEMENT_NAME (swcase), GST_PAD_NAME (basepad));      INFO ("requested %s.%s on %s.%s",          GST_ELEMENT_NAME (swit), GST_PAD_NAME (pad),          GST_ELEMENT_NAME (swcase), GST_PAD_NAME (basepad));    }  }  GST_SWITCH_UNLOCK (swit);  return GST_PAD (pad);}
开发者ID:jhenstridge,项目名称:gst-switch,代码行数:48,


示例13: gst_gl_mixer_bin_release_pad

static voidgst_gl_mixer_bin_release_pad (GstElement * element, GstPad * pad){  GstGLMixerBin *self = GST_GL_MIXER_BIN (element);  GList *l = self->priv->input_chains;  gboolean released = FALSE;  GST_OBJECT_LOCK (element);  while (l) {    struct input_chain *chain = l->data;    if (GST_PAD (chain->ghost_pad) == pad) {      self->priv->input_chains =          g_list_delete_link (self->priv->input_chains, l);      GST_OBJECT_UNLOCK (element);      _free_input_chain (chain);      gst_element_remove_pad (element, pad);      released = TRUE;      break;    }    l = l->next;  }  if (!released)    GST_OBJECT_UNLOCK (element);}
开发者ID:thiblahute,项目名称:gst-plugins-base,代码行数:25,


示例14: gst_imx_compositor_pad_update_canvas

static void gst_imx_compositor_pad_update_canvas(GstImxCompositorPad *compositor_pad, GstImxRegion const *source_region){	GstImxCompositor *compositor;	GstVideoInfo *info = &(GST_IMXBP_VIDEO_AGGREGATOR_PAD(compositor_pad)->info);	/* Catch redundant calls */	if (!(compositor_pad->canvas_needs_update))		return;	compositor = GST_IMX_COMPOSITOR(gst_pad_get_parent_element(GST_PAD(compositor_pad)));	/* (Re)compute the outer region */	gst_imx_compositor_pad_compute_outer_region(compositor_pad);	/* (Re)computer the inner region */	gst_imx_canvas_calculate_inner_region(&(compositor_pad->canvas), info);	/* Next, clip the canvas against the overall region,	 * which describes the output frame's size	 * This way, it is ensured that only the parts that are "within"	 * the output frame are blit */	gst_imx_canvas_clip(		&(compositor_pad->canvas),		&(compositor->overall_region),		info,		source_region,		&(compositor_pad->source_subset)	);	/* Canvas updated, mark it as such */	compositor_pad->canvas_needs_update = FALSE;	gst_object_unref(GST_OBJECT(compositor));}
开发者ID:FrankBau,项目名称:gstreamer-imx,代码行数:34,


示例15: gst_switch_select

static GstElement *gst_switch_select (GstSwitch * swit,    GstPadTemplate * templ, const gchar * name, const GstCaps * caps){  GList *item = GST_BIN_CHILDREN (GST_BIN (swit));  GstElement *swcase = NULL;  for (; item; item = g_list_next (item)) {    GList *paditem = GST_ELEMENT_PADS (GST_ELEMENT (item->data));    GstPad *basepad = NULL, *pad = NULL;    for (; paditem; paditem = g_list_next (paditem)) {      pad = GST_PAD (paditem->data);      if (GST_PAD_IS_SINK (pad) && !gst_pad_is_linked (pad) &&          !GST_OBJECT_FLAG_IS_SET (GST_OBJECT (pad),              GST_SWITCH_PAD_FLAG_GHOSTED)) {        basepad = pad;        break;      }    }    if (basepad) {      swcase = GST_ELEMENT (item->data);      break;    }  }  if (!swcase) {    swcase = gst_switch_request_new_case (swit, templ, caps);  }  return swcase;}
开发者ID:jhenstridge,项目名称:gst-switch,代码行数:32,


示例16: gst_gl_mixer_bin_request_new_pad

static GstPad *gst_gl_mixer_bin_request_new_pad (GstElement * element, GstPadTemplate * templ,    const gchar * req_name, const GstCaps * caps){  GstGLMixerBin *self = GST_GL_MIXER_BIN (element);  GstPadTemplate *mixer_templ;  struct input_chain *chain;  GstPad *mixer_pad;  chain = g_new0 (struct input_chain, 1);  mixer_templ = _find_element_pad_template (self->mixer,      GST_PAD_TEMPLATE_DIRECTION (templ), GST_PAD_TEMPLATE_PRESENCE (templ));  g_return_val_if_fail (mixer_templ, NULL);  mixer_pad =      gst_element_request_pad (self->mixer, mixer_templ, req_name, NULL);  g_return_val_if_fail (mixer_pad, NULL);  if (!_create_input_chain (self, chain, mixer_pad)) {    gst_element_release_request_pad (self->mixer, mixer_pad);    _free_input_chain (chain);    return NULL;  }  GST_OBJECT_LOCK (element);  self->priv->input_chains = g_list_prepend (self->priv->input_chains, chain);  GST_OBJECT_UNLOCK (element);  gst_child_proxy_child_added (GST_CHILD_PROXY (self),      G_OBJECT (chain->ghost_pad), GST_OBJECT_NAME (chain->ghost_pad));  return GST_PAD (chain->ghost_pad);}
开发者ID:mbouron,项目名称:gst-plugins-bad,代码行数:34,


示例17: eos_callback

gboolean eos_callback(GstPad *pad,                      GstObject *parent,                      GstEvent *event){    GstEvent *seek_event;    GstElement *bkgdec;    GValue v=G_VALUE_INIT;    GstPad *srcpad;    GstIterator *srcpads;    gboolean result;    g_print("Decodebin received EOS. Someone should handle that.../n");        bkgdec=gst_pad_get_parent_element(pad);    if(bkgdec->numsrcpads>0) {        srcpads=gst_element_iterate_src_pads(bkgdec);        gst_iterator_next(srcpads,&v);        srcpad=GST_PAD(g_value_get_object(&v));        seek_event=gst_event_new_seek ( 1.0, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH,                         GST_SEEK_TYPE_SET, 0,                         GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE);             result=gst_pad_send_event(srcpad,seek_event);        if(result==TRUE) {            g_print("seek event sent OK./n");        } else {           g_print("seek sent FAILED./n");        }        g_value_reset(&v);        g_value_unset(&v);        gst_iterator_free(srcpads);        return TRUE;    }    return gst_pad_event_default(pad,parent,event);}
开发者ID:LjsOks1,项目名称:kiosk,代码行数:34,


示例18: kms_tree_bin_unlink_input_element_from_tee

voidkms_tree_bin_unlink_input_element_from_tee (KmsTreeBin * self){  GstPad *queue_sink, *peer, *tee_src;  GstElement *tee;  queue_sink = gst_element_get_static_pad (self->priv->input_element, "sink");  peer = gst_pad_get_peer (queue_sink);  if (GST_IS_PROXY_PAD (peer)) {    GstProxyPad *ghost;    ghost = gst_proxy_pad_get_internal (GST_PROXY_PAD (peer));    tee_src = gst_pad_get_peer (GST_PAD (ghost));    g_object_unref (peer);    g_object_unref (ghost);  } else {    tee_src = peer;  }  gst_pad_unlink (tee_src, queue_sink);  tee = gst_pad_get_parent_element (tee_src);  if (tee != NULL) {    gst_element_release_request_pad (tee, tee_src);    g_object_unref (tee);  }  g_object_unref (tee_src);  g_object_unref (queue_sink);}
开发者ID:kc7bfi,项目名称:kms-core,代码行数:32,


示例19: SourcePadJitterEntry

		/// Constructor.		inline explicit SourcePadJitterEntry(const GstPad* pSourcePad)			: m_pPad(GST_PAD(gst_object_ref(GST_OBJECT(pSourcePad))))			, m_ElementName(GetPadParentElementName(pSourcePad))			, m_PadName(gst_pad_get_name(pSourcePad))			, m_LastSourceTimestamp(0)			, m_StatsCollection(PipelineTracer::STATS_COLLECTION_SIZE)		{}
开发者ID:jhgorse,项目名称:mog,代码行数:8,


示例20: _unresponsive_timeout

static gboolean_unresponsive_timeout (GstClock * clock, GstClockTime time, GstClockID id,    gpointer user_data){  GstAggregatorPad *aggpad;  GstAggregator *self;  if (user_data == NULL)    return FALSE;  aggpad = GST_AGGREGATOR_PAD (user_data);  /* avoid holding the last reference to the parent element here */  PAD_LOCK_EVENT (aggpad);  self = GST_AGGREGATOR (gst_pad_get_parent (GST_PAD (aggpad)));  GST_DEBUG_OBJECT (aggpad, "marked unresponsive");  g_atomic_int_set (&aggpad->unresponsive, TRUE);  if (self) {    QUEUE_PUSH (self);    gst_object_unref (self);  }  PAD_UNLOCK_EVENT (aggpad);  return TRUE;}
开发者ID:jledet,项目名称:gst-plugins-bad,代码行数:30,


示例21: gst_gl_video_mixer_pad_set_property

static voidgst_gl_video_mixer_pad_set_property (GObject * object, guint prop_id,    const GValue * value, GParamSpec * pspec){  GstGLVideoMixerPad *pad = GST_GL_VIDEO_MIXER_PAD (object);  GstGLMixer *mix = GST_GL_MIXER (gst_pad_get_parent (GST_PAD (pad)));  switch (prop_id) {    case PROP_PAD_XPOS:      pad->xpos = g_value_get_int (value);      pad->geometry_change = TRUE;      break;    case PROP_PAD_YPOS:      pad->ypos = g_value_get_int (value);      pad->geometry_change = TRUE;      break;    case PROP_PAD_WIDTH:      pad->width = g_value_get_int (value);      pad->geometry_change = TRUE;      break;    case PROP_PAD_HEIGHT:      pad->height = g_value_get_int (value);      pad->geometry_change = TRUE;      break;    case PROP_PAD_ALPHA:      pad->alpha = g_value_get_double (value);      break;    default:      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);      break;  }  gst_object_unref (mix);}
开发者ID:ndufresne,项目名称:gst-plugins-bad,代码行数:34,


示例22: gst_ghost_pad_new_full

static GstPad *gst_ghost_pad_new_full (const gchar * name, GstPadDirection dir,    GstPadTemplate * templ){  GstGhostPad *ret;  g_return_val_if_fail (dir != GST_PAD_UNKNOWN, NULL);  /* OBJECT CREATION */  if (templ) {    ret = g_object_new (GST_TYPE_GHOST_PAD, "name", name,        "direction", dir, "template", templ, NULL);  } else {    ret = g_object_new (GST_TYPE_GHOST_PAD, "name", name,        "direction", dir, NULL);  }  if (!gst_ghost_pad_construct (ret))    goto construct_failed;  return GST_PAD (ret);construct_failed:  /* already logged */  gst_object_unref (ret);  return NULL;}
开发者ID:WangCrystal,项目名称:gstreamer,代码行数:27,


示例23: gst_a2dp_sink_handle_event

/* used for catching newsegment events while we don't have a sink, for * later forwarding it to the sink */static gboolean gst_a2dp_sink_handle_event(GstPad *pad, GstEvent *event){	GstA2dpSink *self;	GstTagList *taglist = NULL;	GstObject *parent;	self = GST_A2DP_SINK(GST_PAD_PARENT(pad));	parent = gst_element_get_parent(GST_ELEMENT(self->sink));	if (GST_EVENT_TYPE(event) == GST_EVENT_NEWSEGMENT &&			parent != GST_OBJECT_CAST(self)) {		if (self->newseg_event != NULL)			gst_event_unref(self->newseg_event);		self->newseg_event = gst_event_ref(event);	} else if (GST_EVENT_TYPE(event) == GST_EVENT_TAG &&			parent != GST_OBJECT_CAST(self)) {		if (self->taglist == NULL)			gst_event_parse_tag(event, &self->taglist);		else {			gst_event_parse_tag(event, &taglist);			gst_tag_list_insert(self->taglist, taglist,					GST_TAG_MERGE_REPLACE);		}	}	if (parent != NULL)		gst_object_unref(GST_OBJECT(parent));	return self->ghostpad_eventfunc(GST_PAD(self->ghostpad), event);}
开发者ID:Mcjesus15,项目名称:Zio_Other,代码行数:33,


示例24: gst_audiomixer_sink_query

static gbooleangst_audiomixer_sink_query (GstAggregator * agg, GstAggregatorPad * aggpad,    GstQuery * query){  gboolean res = FALSE;  switch (GST_QUERY_TYPE (query)) {    case GST_QUERY_CAPS:    {      GstCaps *filter, *caps;      gst_query_parse_caps (query, &filter);      caps = gst_audiomixer_sink_getcaps (agg, GST_PAD (aggpad), filter);      gst_query_set_caps_result (query, caps);      gst_caps_unref (caps);      res = TRUE;      break;    }    default:      res =          GST_AGGREGATOR_CLASS (parent_class)->sink_query (agg, aggpad, query);      break;  }  return res;}
开发者ID:alessandrod,项目名称:gst-plugins-bad,代码行数:26,


示例25: push_switched_buffers

/* Push buffers and switch for each selector pad */static voidpush_switched_buffers (GList * input_pads,    GstElement * elem, GList * peer_pads, gint num_buffers){  GstBuffer *buf = NULL;  GList *l = peer_pads;  GstPad *selpad = NULL;  /* setup dummy buffer */  buf = gst_buffer_new_and_alloc (1);  while (l != NULL) {    /* set selector pad */    selpad = gst_pad_get_peer (GST_PAD (l->data));    selector_set_active_pad (elem, selpad);    if (selpad) {      gst_object_unref (selpad);    }    /* push buffers */    push_input_buffers (input_pads, buf, num_buffers);    /* switch to next selector pad */    l = g_list_next (l);  }  /* cleanup buffer */  gst_buffer_unref (buf);}
开发者ID:BigBrother-International,项目名称:gstreamer,代码行数:28,


示例26: _sink_query

static gboolean_sink_query (GstAggregator * self, GstAggregatorPad * aggpad, GstQuery * query){  GstPad *pad = GST_PAD (aggpad);  return gst_pad_query_default (pad, GST_OBJECT (self), query);}
开发者ID:kakaroto,项目名称:gst-plugins-bad,代码行数:7,


示例27: dynamic_link

static voiddynamic_link (GstPadTemplate * templ, GstPad * newpad, gpointer user_data){  GstPad *target = GST_PAD (user_data);  gst_pad_link (newpad, target);  gst_object_unref (target);}
开发者ID:Distrotech,项目名称:gst-plugins-good,代码行数:8,


示例28: testQueryCheckDataReceived

/* generate queries to adaptive demux */static gbooleantestQueryCheckDataReceived (GstAdaptiveDemuxTestEngine * engine,    GstAdaptiveDemuxTestOutputStream * stream,    GstBuffer * buffer, gpointer user_data){  GList *pads;  GstPad *pad;  GstQuery *query;  gboolean ret;  gint64 duration;  gboolean seekable;  gint64 segment_start;  gint64 segment_end;  gchar *uri;  gchar *redirect_uri;  gboolean redirect_permanent;  pads = GST_ELEMENT_PADS (stream->appsink);  /* AppSink should have only 1 pad */  fail_unless (pads != NULL);  fail_unless (g_list_length (pads) == 1);  pad = GST_PAD (pads->data);  query = gst_query_new_duration (GST_FORMAT_TIME);  ret = gst_pad_peer_query (pad, query);  fail_unless (ret == TRUE);  gst_query_parse_duration (query, NULL, &duration);  fail_unless (duration == 135743 * GST_MSECOND);  gst_query_unref (query);  query = gst_query_new_seeking (GST_FORMAT_TIME);  ret = gst_pad_peer_query (pad, query);  fail_unless (ret == TRUE);  gst_query_parse_seeking (query, NULL, &seekable, &segment_start,      &segment_end);  fail_unless (seekable == TRUE);  fail_unless (segment_start == 0);  fail_unless (segment_end == duration);  gst_query_unref (query);  query = gst_query_new_uri ();  ret = gst_pad_peer_query (pad, query);  fail_unless (ret == TRUE);  gst_query_parse_uri (query, &uri);  gst_query_parse_uri_redirection (query, &redirect_uri);  gst_query_parse_uri_redirection_permanent (query, &redirect_permanent);  fail_unless (strcmp (uri, "http://unit.test/test.mpd") == 0);  /* adaptive demux does not reply with redirect information */  fail_unless (redirect_uri == NULL);  fail_unless (redirect_permanent == FALSE);  g_free (uri);  g_free (redirect_uri);  gst_query_unref (query);  return gst_adaptive_demux_test_check_received_data (engine,      stream, buffer, user_data);}
开发者ID:asrashley,项目名称:gst-plugins-bad,代码行数:59,



注:本文中的GST_PAD函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ GST_PAD_CAPS函数代码示例
C++ GST_OBJECT_UNLOCK函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。