videolevels: Fix handling of interval for deciding when to auto adjust
This commit is contained in:
parent
97b2e8be4c
commit
0b181e7417
@ -311,7 +311,7 @@ gst_videolevels_set_property (GObject * object, guint prop_id,
|
|||||||
break;
|
break;
|
||||||
case PROP_INTERVAL:
|
case PROP_INTERVAL:
|
||||||
videolevels->interval = g_value_get_uint64 (value);
|
videolevels->interval = g_value_get_uint64 (value);
|
||||||
videolevels->last_auto_timestamp = 0;
|
videolevels->last_auto_timestamp = GST_CLOCK_TIME_NONE;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
@ -556,7 +556,7 @@ gst_videolevels_transform (GstBaseTransform * base, GstBuffer * inbuf,
|
|||||||
gpointer input;
|
gpointer input;
|
||||||
gpointer output;
|
gpointer output;
|
||||||
gboolean ret;
|
gboolean ret;
|
||||||
guint64 elapsed;
|
GstClockTimeDiff elapsed;
|
||||||
|
|
||||||
/* We need to lock our videolevels params to prevent segfaults */
|
/* We need to lock our videolevels params to prevent segfaults */
|
||||||
GST_BASE_TRANSFORM_LOCK (videolevels);
|
GST_BASE_TRANSFORM_LOCK (videolevels);
|
||||||
@ -569,9 +569,10 @@ gst_videolevels_transform (GstBaseTransform * base, GstBuffer * inbuf,
|
|||||||
videolevels->auto_adjust = 0;
|
videolevels->auto_adjust = 0;
|
||||||
}
|
}
|
||||||
else if (videolevels->auto_adjust == 2) {
|
else if (videolevels->auto_adjust == 2) {
|
||||||
elapsed = GST_BUFFER_TIMESTAMP (inbuf) - videolevels->last_auto_timestamp;
|
elapsed = GST_CLOCK_DIFF (videolevels->last_auto_timestamp, inbuf->timestamp);
|
||||||
if (elapsed >= videolevels->interval ||
|
if (videolevels->last_auto_timestamp == GST_CLOCK_TIME_NONE ||
|
||||||
videolevels->last_auto_timestamp == GST_CLOCK_TIME_NONE) {
|
elapsed >= (GstClockTimeDiff)videolevels->interval ||
|
||||||
|
elapsed < 0) {
|
||||||
gst_videolevels_auto_adjust (videolevels, input);
|
gst_videolevels_auto_adjust (videolevels, input);
|
||||||
videolevels->last_auto_timestamp = GST_BUFFER_TIMESTAMP (inbuf);
|
videolevels->last_auto_timestamp = GST_BUFFER_TIMESTAMP (inbuf);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user