gst/playback/gstplaybasebin.c: Small debug improvement.
Original commit message from CVS: * gst/playback/gstplaybasebin.c: (make_decoder), (setup_source): Small debug improvement. * gst/playback/gstqueue2.c: (apply_segment), (update_buffering), (plugin_init): Tweak the rate estimation period. When calculating the buffer filledness in rate estimation mode, don't mix it with other metrics.
This commit is contained in:
parent
c198d8000c
commit
aac5185f3e
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
|||||||
|
2007-06-28 Wim Taymans <wim@fluendo.com>
|
||||||
|
|
||||||
|
* gst/playback/gstplaybasebin.c: (make_decoder), (setup_source):
|
||||||
|
Small debug improvement.
|
||||||
|
|
||||||
|
* gst/playback/gstqueue2.c: (apply_segment), (update_buffering),
|
||||||
|
(plugin_init):
|
||||||
|
Tweak the rate estimation period.
|
||||||
|
When calculating the buffer filledness in rate estimation mode, don't
|
||||||
|
mix it with other metrics.
|
||||||
|
|
||||||
2007-06-28 Wim Taymans <wim@fluendo.com>
|
2007-06-28 Wim Taymans <wim@fluendo.com>
|
||||||
|
|
||||||
* gst/playback/gstdecodebin2.c: (gst_decode_group_new),
|
* gst/playback/gstdecodebin2.c: (gst_decode_group_new),
|
||||||
|
@ -1899,6 +1899,9 @@ make_decoder (GstPlayBaseBin * play_base_bin)
|
|||||||
g_object_set_data (G_OBJECT (decoder), "pending", "1");
|
g_object_set_data (G_OBJECT (decoder), "pending", "1");
|
||||||
play_base_bin->pending++;
|
play_base_bin->pending++;
|
||||||
|
|
||||||
|
GST_DEBUG_OBJECT (play_base_bin, "created decodebin, %d pending",
|
||||||
|
play_base_bin->pending);
|
||||||
|
|
||||||
play_base_bin->decoders = g_slist_prepend (play_base_bin->decoders, decoder);
|
play_base_bin->decoders = g_slist_prepend (play_base_bin->decoders, decoder);
|
||||||
|
|
||||||
return decoder;
|
return decoder;
|
||||||
@ -2080,7 +2083,6 @@ setup_source (GstPlayBaseBin * play_base_bin)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
if (is_dynamic) {
|
if (is_dynamic) {
|
||||||
GST_DEBUG_OBJECT (play_base_bin, "Source has dynamic output pads");
|
|
||||||
/* connect a handler for the new-pad signal */
|
/* connect a handler for the new-pad signal */
|
||||||
play_base_bin->src_np_sig_id =
|
play_base_bin->src_np_sig_id =
|
||||||
g_signal_connect (G_OBJECT (play_base_bin->source), "pad-added",
|
g_signal_connect (G_OBJECT (play_base_bin->source), "pad-added",
|
||||||
@ -2090,6 +2092,8 @@ setup_source (GstPlayBaseBin * play_base_bin)
|
|||||||
G_CALLBACK (source_no_more_pads), play_base_bin);
|
G_CALLBACK (source_no_more_pads), play_base_bin);
|
||||||
g_object_set_data (G_OBJECT (play_base_bin->source), "pending", "1");
|
g_object_set_data (G_OBJECT (play_base_bin->source), "pending", "1");
|
||||||
play_base_bin->pending++;
|
play_base_bin->pending++;
|
||||||
|
GST_DEBUG_OBJECT (play_base_bin,
|
||||||
|
"Source has dynamic output pads, %d pending", play_base_bin->pending);
|
||||||
} else {
|
} else {
|
||||||
GstElement *decoder;
|
GstElement *decoder;
|
||||||
|
|
||||||
|
@ -588,6 +588,16 @@ apply_segment (GstQueue * queue, GstEvent * event, GstSegment * segment)
|
|||||||
gst_event_parse_new_segment_full (event, &update, &rate, &arate,
|
gst_event_parse_new_segment_full (event, &update, &rate, &arate,
|
||||||
&format, &start, &stop, &time);
|
&format, &start, &stop, &time);
|
||||||
|
|
||||||
|
GST_DEBUG_OBJECT (queue,
|
||||||
|
"received NEWSEGMENT update %d, rate %lf, applied rate %lf, "
|
||||||
|
"format %d, "
|
||||||
|
"%" G_GINT64_FORMAT " -- %" G_GINT64_FORMAT ", time %"
|
||||||
|
G_GINT64_FORMAT ", accum %" G_GINT64_FORMAT, update, rate, arate,
|
||||||
|
format, start, stop, time);
|
||||||
|
|
||||||
|
if (format == GST_FORMAT_BYTES) {
|
||||||
|
}
|
||||||
|
|
||||||
/* now configure the values, we use these to track timestamps on the
|
/* now configure the values, we use these to track timestamps on the
|
||||||
* sinkpad. */
|
* sinkpad. */
|
||||||
if (format != GST_FORMAT_TIME) {
|
if (format != GST_FORMAT_TIME) {
|
||||||
@ -654,11 +664,13 @@ update_buffering (GstQueue * queue)
|
|||||||
percent = 100;
|
percent = 100;
|
||||||
} else {
|
} else {
|
||||||
/* figure out the percent we are filled, we take the max of all formats. */
|
/* figure out the percent we are filled, we take the max of all formats. */
|
||||||
percent = GET_PERCENT (bytes);
|
if (queue->use_rate_estimate) {
|
||||||
percent = MAX (percent, GET_PERCENT (time));
|
percent = GET_PERCENT (rate_time);
|
||||||
percent = MAX (percent, GET_PERCENT (buffers));
|
} else {
|
||||||
if (queue->use_rate_estimate)
|
percent = GET_PERCENT (bytes);
|
||||||
percent = MAX (percent, GET_PERCENT (rate_time));
|
percent = MAX (percent, GET_PERCENT (time));
|
||||||
|
percent = MAX (percent, GET_PERCENT (buffers));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (queue->is_buffering) {
|
if (queue->is_buffering) {
|
||||||
@ -702,11 +714,12 @@ reset_rate_timer (GstQueue * queue)
|
|||||||
queue->timer_started = FALSE;
|
queue->timer_started = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* the interval in seconds to recalculate the rate */
|
||||||
|
#define RATE_INTERVAL 0.2
|
||||||
/* Tuning for rate estimation. We use a large window for the input rate because
|
/* Tuning for rate estimation. We use a large window for the input rate because
|
||||||
* it should be stable when connected to a network. The output rate is less
|
* it should be stable when connected to a network. The output rate is less
|
||||||
* stable (the elements preroll, queues behind a demuxer fill, ...) and should
|
* stable (the elements preroll, queues behind a demuxer fill, ...) and should
|
||||||
* therefore adapt more quickly. */
|
* therefore adapt more quickly. */
|
||||||
#define RATE_INTERVAL 0.5
|
|
||||||
#define AVG_IN(avg,val) ((avg) * 15.0 + (val)) / 16.0
|
#define AVG_IN(avg,val) ((avg) * 15.0 + (val)) / 16.0
|
||||||
#define AVG_OUT(avg,val) ((avg) * 3.0 + (val)) / 4.0
|
#define AVG_OUT(avg,val) ((avg) * 3.0 + (val)) / 4.0
|
||||||
|
|
||||||
@ -1825,8 +1838,8 @@ gst_queue_get_property (GObject * object,
|
|||||||
static gboolean
|
static gboolean
|
||||||
plugin_init (GstPlugin * plugin)
|
plugin_init (GstPlugin * plugin)
|
||||||
{
|
{
|
||||||
GST_DEBUG_CATEGORY_INIT (queue_debug, "queue", 0, "queue element");
|
GST_DEBUG_CATEGORY_INIT (queue_debug, "queue2", 0, "queue element");
|
||||||
GST_DEBUG_CATEGORY_INIT (queue_dataflow, "queue_dataflow", 0,
|
GST_DEBUG_CATEGORY_INIT (queue_dataflow, "queue2_dataflow", 0,
|
||||||
"dataflow inside the queue element");
|
"dataflow inside the queue element");
|
||||||
|
|
||||||
#ifdef ENABLE_NLS
|
#ifdef ENABLE_NLS
|
||||||
|
Loading…
x
Reference in New Issue
Block a user