mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-21 13:36:39 +00:00
validate: Use pad.last_flowret instead of trying to compute it ourselves
Which makes it more accurate Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/172>
This commit is contained in:
parent
779817cb91
commit
33a6cf5234
3 changed files with 15 additions and 36 deletions
|
@ -985,8 +985,6 @@ gst_validate_pad_monitor_flush (GstValidatePadMonitor * pad_monitor)
|
|||
pad_monitor->current_timestamp = GST_CLOCK_TIME_NONE;
|
||||
pad_monitor->current_duration = GST_CLOCK_TIME_NONE;
|
||||
|
||||
pad_monitor->last_flow_return = GST_FLOW_OK;
|
||||
|
||||
pad_monitor->timestamp_range_start = GST_CLOCK_TIME_NONE;
|
||||
pad_monitor->timestamp_range_end = GST_CLOCK_TIME_NONE;
|
||||
}
|
||||
|
@ -1387,7 +1385,6 @@ gst_validate_pad_monitor_check_aggregated_return (GstValidatePadMonitor *
|
|||
GstPad *otherpad;
|
||||
GstPad *peerpad;
|
||||
GstState state, pending;
|
||||
GstValidatePadMonitor *othermonitor;
|
||||
GstFlowReturn aggregated = GST_FLOW_NOT_LINKED;
|
||||
gboolean found_a_pad = FALSE;
|
||||
GstPad *pad =
|
||||
|
@ -1403,14 +1400,10 @@ gst_validate_pad_monitor_check_aggregated_return (GstValidatePadMonitor *
|
|||
otherpad = g_value_get_object (&value);
|
||||
peerpad = gst_pad_get_peer (otherpad);
|
||||
if (peerpad) {
|
||||
othermonitor = _GET_PAD_MONITOR (peerpad);
|
||||
if (othermonitor) {
|
||||
found_a_pad = TRUE;
|
||||
GST_VALIDATE_MONITOR_LOCK (othermonitor);
|
||||
aggregated =
|
||||
_combine_flows (aggregated, othermonitor->last_flow_return);
|
||||
GST_VALIDATE_MONITOR_UNLOCK (othermonitor);
|
||||
}
|
||||
found_a_pad = TRUE;
|
||||
aggregated =
|
||||
_combine_flows (aggregated,
|
||||
gst_pad_get_last_flow_return (peerpad));
|
||||
|
||||
gst_object_unref (peerpad);
|
||||
}
|
||||
|
@ -2354,7 +2347,6 @@ gst_validate_pad_monitor_chain_func (GstPad * pad, GstObject * parent,
|
|||
GST_VALIDATE_PAD_MONITOR_PARENT_LOCK (pad_monitor);
|
||||
GST_VALIDATE_MONITOR_LOCK (pad_monitor);
|
||||
|
||||
pad_monitor->last_flow_return = ret;
|
||||
if (ret == GST_FLOW_EOS) {
|
||||
mark_pads_eos (pad_monitor);
|
||||
}
|
||||
|
|
|
@ -107,8 +107,6 @@ struct _GstValidatePadMonitor {
|
|||
GstClockTime current_timestamp;
|
||||
GstClockTime current_duration;
|
||||
|
||||
GstFlowReturn last_flow_return;
|
||||
|
||||
/* Stores the timestamp range of data that has flown through
|
||||
* this pad by using TIMESTAMP and TIMESTAMP+DURATION from
|
||||
* incomming buffers. Every time a buffer is pushed, this range
|
||||
|
|
|
@ -295,23 +295,13 @@ fake_demuxer_prepare_pads (GstBin * pipeline, GstElement * demux,
|
|||
TRUE));
|
||||
}
|
||||
|
||||
static GstValidatePadMonitor *
|
||||
_get_pad_monitor (GstPad * pad)
|
||||
{
|
||||
GstValidatePadMonitor *m = get_pad_monitor (pad);
|
||||
|
||||
gst_object_unref (pad);
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
static void
|
||||
_test_flow_aggregation (GstFlowReturn flow, GstFlowReturn flow1,
|
||||
GstFlowReturn flow2, GstFlowReturn demux_flow, gboolean should_fail)
|
||||
{
|
||||
GstPad *srcpad;
|
||||
GstValidateReport *report;
|
||||
GstValidatePadMonitor *pmonitor, *pmonitor1, *pmonitor2;
|
||||
GstPad *p, *p1, *p2;
|
||||
GstElement *demuxer = fake_demuxer_new ();
|
||||
GstBin *pipeline = GST_BIN (gst_pipeline_new ("validate-pipeline"));
|
||||
GList *reports;
|
||||
|
@ -329,17 +319,19 @@ _test_flow_aggregation (GstFlowReturn flow, GstFlowReturn flow1,
|
|||
gst_check_setup_events_with_stream_id (srcpad, demuxer, NULL,
|
||||
GST_FORMAT_TIME, "the-stream");
|
||||
|
||||
pmonitor = _get_pad_monitor (gst_pad_get_peer (demuxer->srcpads->data));
|
||||
pmonitor1 =
|
||||
_get_pad_monitor (gst_pad_get_peer (demuxer->srcpads->next->data));
|
||||
pmonitor2 =
|
||||
_get_pad_monitor (gst_pad_get_peer (demuxer->srcpads->next->next->data));
|
||||
p = gst_pad_get_peer (demuxer->srcpads->data);
|
||||
p1 = gst_pad_get_peer (demuxer->srcpads->next->data);
|
||||
p2 = gst_pad_get_peer (demuxer->srcpads->next->next->data);
|
||||
|
||||
pmonitor->last_flow_return = flow;
|
||||
pmonitor1->last_flow_return = flow1;
|
||||
pmonitor2->last_flow_return = flow2;
|
||||
p->ABI.abi.last_flowret = flow;
|
||||
p1->ABI.abi.last_flowret = flow1;
|
||||
p2->ABI.abi.last_flowret = flow2;
|
||||
FAKE_DEMUXER (demuxer)->return_value = demux_flow;
|
||||
|
||||
gst_object_unref (p);
|
||||
gst_object_unref (p1);
|
||||
gst_object_unref (p2);
|
||||
|
||||
fail_unless_equals_int (gst_pad_push (srcpad, gst_discont_buffer_new ()),
|
||||
demux_flow);
|
||||
|
||||
|
@ -360,13 +352,10 @@ _test_flow_aggregation (GstFlowReturn flow, GstFlowReturn flow1,
|
|||
gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_NULL);
|
||||
ASSERT_OBJECT_REFCOUNT (pipeline, "ours", 1);
|
||||
gst_object_ref (demuxer);
|
||||
gst_object_ref (pmonitor);
|
||||
_stop_monitoring_bin (pipeline, runner);
|
||||
|
||||
ASSERT_OBJECT_REFCOUNT (demuxer, "plop", 1);
|
||||
gst_object_unref (demuxer);
|
||||
ASSERT_OBJECT_REFCOUNT (pmonitor, "plop", 1);
|
||||
gst_object_unref (pmonitor);
|
||||
gst_object_unref (srcpad);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue