summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2011-01-07 16:39:51 +0100
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2011-01-28 12:16:57 +0100
commit400198b2cd2718f29c14ea1dc397af7ff01bc9f6 (patch)
tree949201495559dbd252ad7ad531abfba14a5772cf
parent3e9d5c4bf8703ef8bdc8dda3aac344c53581eaac (diff)
baseparse: restrict duration scanning to pull mode and avoid extra set_caps call
-rw-r--r--gst/audioparsers/gstbaseparse.c5
-rw-r--r--gst/audioparsers/gstbaseparse.h5
2 files changed, 3 insertions, 7 deletions
diff --git a/gst/audioparsers/gstbaseparse.c b/gst/audioparsers/gstbaseparse.c
index 23a06e3ea..8f7a5d523 100644
--- a/gst/audioparsers/gstbaseparse.c
+++ b/gst/audioparsers/gstbaseparse.c
@@ -1422,7 +1422,8 @@ gst_base_parse_handle_and_push_buffer (GstBaseParse * parse,
/* check initial frame to determine if subclass/format can provide ts.
* If so, that allows and enables extra seek and duration determining options */
if (G_UNLIKELY (parse->priv->first_frame_offset < 0 && ret == GST_FLOW_OK)) {
- if (GST_BUFFER_TIMESTAMP_IS_VALID (buffer)) {
+ if (GST_BUFFER_TIMESTAMP_IS_VALID (buffer) &&
+ parse->priv->pad_mode == GST_ACTIVATE_PULL) {
parse->priv->first_frame_offset = offset;
parse->priv->first_frame_ts = GST_BUFFER_TIMESTAMP (buffer);
GST_DEBUG_OBJECT (parse, "subclass provided ts %" GST_TIME_FORMAT
@@ -3497,7 +3498,7 @@ gst_base_parse_sink_setcaps (GstPad * pad, GstCaps * caps)
if (klass->set_sink_caps)
res = klass->set_sink_caps (parse, caps);
- return res && gst_pad_set_caps (pad, caps);
+ return res;
}
static void
diff --git a/gst/audioparsers/gstbaseparse.h b/gst/audioparsers/gstbaseparse.h
index 6b45fd35b..5a4b67447 100644
--- a/gst/audioparsers/gstbaseparse.h
+++ b/gst/audioparsers/gstbaseparse.h
@@ -234,11 +234,6 @@ struct _GstBaseParseClass {
GstFormat dest_format,
gint64 * dest_value);
- gboolean (*find_frame) (GstBaseParse *parse,
- GstFormat src_format,
- gint64 src_value,
- gint64 * dest_value);
-
gboolean (*event) (GstBaseParse *parse,
GstEvent *event);