}
#endif
-static void
-gst_pad_data_unref (gboolean is_buffer, void *data)
-{
- if (G_LIKELY (is_buffer)) {
- gst_buffer_unref (data);
- } else {
- gst_buffer_list_unref (data);
- }
-}
-
/* this is the chain function that does not perform the additional argument
* checking for that little extra speed.
*/
static inline GstFlowReturn
-gst_pad_chain_data_unchecked (GstPad * pad, gboolean is_buffer, void *data)
+gst_pad_chain_data_unchecked (GstPad * pad, GstProbeType type, void *data)
{
GstFlowReturn ret;
gboolean needs_events;
goto events_error;
}
- PROBE (pad, GST_PROBE_TYPE_PUSH | GST_PROBE_TYPE_BUFFER, data, probe_stopped);
+ PROBE (pad, GST_PROBE_TYPE_PUSH | type, data, probe_stopped);
GST_OBJECT_UNLOCK (pad);
* the data to the wrong function. This is not really a
* problem since functions are assigned at creation time
* and don't change that often... */
- if (G_LIKELY (is_buffer)) {
+ if (G_LIKELY (type & GST_PROBE_TYPE_BUFFER)) {
GstPadChainFunction chainfunc;
if (G_UNLIKELY ((chainfunc = GST_PAD_CHAINFUNC (pad)) == NULL))
{
GST_OBJECT_UNLOCK (pad);
GST_PAD_STREAM_UNLOCK (pad);
- gst_pad_data_unref (is_buffer, data);
+ gst_mini_object_unref (GST_MINI_OBJECT_CAST (data));
switch (ret) {
case GST_FLOW_CUSTOM_SUCCESS:
}
no_function:
{
- gst_pad_data_unref (is_buffer, data);
+ gst_mini_object_unref (GST_MINI_OBJECT_CAST (data));
GST_CAT_LOG_OBJECT (GST_CAT_SCHEDULING, pad,
"pushing, but not chainhandler");
GST_ELEMENT_ERROR (GST_PAD_PARENT (pad), CORE, PAD, (NULL),
g_return_val_if_fail (GST_PAD_IS_SINK (pad), GST_FLOW_ERROR);
g_return_val_if_fail (GST_IS_BUFFER (buffer), GST_FLOW_ERROR);
- return gst_pad_chain_data_unchecked (pad, TRUE, buffer);
+ return gst_pad_chain_data_unchecked (pad, GST_PROBE_TYPE_BUFFER, buffer);
}
static GstFlowReturn
ret = GST_FLOW_OK;
for (i = 0; i < len; i++) {
buffer = gst_buffer_list_get (list, i);
- ret = gst_pad_chain_data_unchecked (pad, TRUE, gst_buffer_ref (buffer));
+ ret =
+ gst_pad_chain_data_unchecked (pad, GST_PROBE_TYPE_BUFFER,
+ gst_buffer_ref (buffer));
if (ret != GST_FLOW_OK)
break;
}
g_return_val_if_fail (GST_PAD_IS_SINK (pad), GST_FLOW_ERROR);
g_return_val_if_fail (GST_IS_BUFFER_LIST (list), GST_FLOW_ERROR);
- return gst_pad_chain_data_unchecked (pad, FALSE, list);
+ return gst_pad_chain_data_unchecked (pad, GST_PROBE_TYPE_BUFFER_LIST, list);
}
static GstFlowReturn
-gst_pad_push_data (GstPad * pad, gboolean is_buffer, void *data)
+gst_pad_push_data (GstPad * pad, GstProbeType type, void *data)
{
GstPad *peer;
GstFlowReturn ret;
- GstProbeType type;
-
- type = is_buffer ? GST_PROBE_TYPE_BUFFER : GST_PROBE_TYPE_BUFFER_LIST;
- type |= GST_PROBE_TYPE_PUSH;
GST_OBJECT_LOCK (pad);
if (G_UNLIKELY (GST_PAD_IS_FLUSHING (pad)))
goto flushing;
+ type |= GST_PROBE_TYPE_PUSH;
+
/* do block probes */
PROBE (pad, type | GST_PROBE_TYPE_BLOCK, data, probe_stopped);
pad->priv->using++;
GST_OBJECT_UNLOCK (pad);
- ret = gst_pad_chain_data_unchecked (peer, is_buffer, data);
+ ret = gst_pad_chain_data_unchecked (peer, type, data);
gst_object_unref (peer);
GST_CAT_LOG_OBJECT (GST_CAT_SCHEDULING, pad,
"pushing, but pad was flushing");
GST_OBJECT_UNLOCK (pad);
- gst_pad_data_unref (is_buffer, data);
+ gst_mini_object_unref (GST_MINI_OBJECT_CAST (data));
return GST_FLOW_WRONG_STATE;
}
probe_stopped:
{
GST_OBJECT_UNLOCK (pad);
- gst_pad_data_unref (is_buffer, data);
+ gst_mini_object_unref (GST_MINI_OBJECT_CAST (data));
switch (ret) {
case GST_FLOW_CUSTOM_SUCCESS:
GST_CAT_LOG_OBJECT (GST_CAT_SCHEDULING, pad,
"pushing, but it was not linked");
GST_OBJECT_UNLOCK (pad);
- gst_pad_data_unref (is_buffer, data);
+ gst_mini_object_unref (GST_MINI_OBJECT_CAST (data));
return GST_FLOW_NOT_LINKED;
}
}
g_return_val_if_fail (GST_PAD_IS_SRC (pad), GST_FLOW_ERROR);
g_return_val_if_fail (GST_IS_BUFFER (buffer), GST_FLOW_ERROR);
- return gst_pad_push_data (pad, TRUE, buffer);
+ return gst_pad_push_data (pad, GST_PROBE_TYPE_BUFFER, buffer);
}
/**
g_return_val_if_fail (GST_PAD_IS_SRC (pad), GST_FLOW_ERROR);
g_return_val_if_fail (GST_IS_BUFFER_LIST (list), GST_FLOW_ERROR);
- return gst_pad_push_data (pad, FALSE, list);
+ return gst_pad_push_data (pad, GST_PROBE_TYPE_BUFFER_LIST, list);
}
static GstFlowReturn