mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-30 21:51:09 +00:00
validate: expect a buffer with discontinuity after a seek
https://bugzilla.gnome.org/show_bug.cgi?id=744783
This commit is contained in:
parent
c47cc7ba90
commit
87064b6994
3 changed files with 20 additions and 1 deletions
|
@ -186,6 +186,8 @@ gst_validate_report_load_issues (void)
|
|||
" all buffers coming into the decoders might be checked"
|
||||
" and should have the exact expected metadatas and hash of the"
|
||||
" content"));
|
||||
REGISTER_VALIDATE_ISSUE (ISSUE, FIRST_BUFFER_NOT_DISCONT,
|
||||
_("First buffer after a seek does not have the DISCONT flag set"), NULL);
|
||||
REGISTER_VALIDATE_ISSUE (CRITICAL, WRONG_FLOW_RETURN,
|
||||
_("flow return from pad push doesn't match expected value"),
|
||||
_("flow return from a 1:1 sink/src pad element is as simple as "
|
||||
|
|
|
@ -63,6 +63,7 @@ typedef enum {
|
|||
#define WRONG_FLOW_RETURN _QUARK("buffer::wrong-flow-return")
|
||||
#define BUFFER_AFTER_EOS _QUARK("buffer::after-eos")
|
||||
#define WRONG_BUFFER _QUARK("buffer::not-expected-one")
|
||||
#define FIRST_BUFFER_NOT_DISCONT _QUARK("buffer::first-buffer-not-discont")
|
||||
|
||||
#define CAPS_IS_MISSING_FIELD _QUARK("caps::is-missing-field")
|
||||
#define CAPS_FIELD_HAS_BAD_TYPE _QUARK("caps::field-has-bad-type")
|
||||
|
|
|
@ -436,6 +436,19 @@ gst_validate_action_get_clocktime (GstValidateScenario * scenario,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static GstPadProbeReturn
|
||||
_check_discont_buffer_done (GstPad * pad, GstPadProbeInfo * info,
|
||||
GstValidateAction * action)
|
||||
{
|
||||
GstBuffer *buffer = GST_BUFFER (info->data);
|
||||
if (!GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT)) {
|
||||
GST_VALIDATE_REPORT (action->scenario, FIRST_BUFFER_NOT_DISCONT,
|
||||
"First buffer after a seek does not have the DISCONT flag set");
|
||||
}
|
||||
gst_validate_action_set_done (action);
|
||||
return GST_PAD_PROBE_REMOVE;
|
||||
}
|
||||
|
||||
static GstPadProbeReturn
|
||||
_check_new_segment_done (GstPad * pad, GstPadProbeInfo * info,
|
||||
GstValidateAction * action)
|
||||
|
@ -453,7 +466,10 @@ _check_new_segment_done (GstPad * pad, GstPadProbeInfo * info,
|
|||
priv->seeked_in_pause = TRUE;
|
||||
|
||||
gst_event_replace (&priv->last_seek, NULL);
|
||||
gst_validate_action_set_done (action);
|
||||
|
||||
gst_pad_add_probe (pad,
|
||||
GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_BUFFER_LIST,
|
||||
(GstPadProbeCallback) _check_discont_buffer_done, action, NULL);
|
||||
|
||||
return GST_PAD_PROBE_REMOVE;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue