PROP_TEMP_LOCATION,
PROP_TEMP_REMOVE,
PROP_RING_BUFFER_MAX_SIZE,
+#ifdef TIZEN_FEATURE_RTSPSRC_MODIFICATION
+ PROP_BUFFER_MODE,
+#endif
PROP_LAST
};
0, G_MAXUINT64, DEFAULT_RING_BUFFER_MAX_SIZE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+#ifdef TIZEN_FEATURE_RTSPSRC_MODIFICATION
+ /**
+ * GstQueue2:buffer-mode:
+ *
+ * Control the buffering mode used by the queue2.
+ */
+ g_object_class_install_property (gobject_class, PROP_BUFFER_MODE,
+ g_param_spec_enum ("buffer-mode", "Buffer Mode",
+ "Control the buffering algorithm in use",
+ GST_TYPE_BUFFERING_MODE, GST_BUFFERING_STREAM,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+#endif
+
/* set several parent class virtual functions */
gobject_class->finalize = gst_queue2_finalize;
queue->ring_buffer = NULL;
queue->ring_buffer_max_size = DEFAULT_RING_BUFFER_MAX_SIZE;
-
+#ifdef TIZEN_FEATURE_RTSPSRC_MODIFICATION
+ queue->mode = -1;
+#endif
GST_DEBUG_OBJECT (queue,
"initialized queue's not_empty & not_full conditions");
}
get_buffering_stats (GstQueue2 * queue, gint percent, GstBufferingMode * mode,
gint * avg_in, gint * avg_out, gint64 * buffering_left)
{
+#ifdef TIZEN_FEATURE_RTSPSRC_MODIFICATION
+ if (queue->mode != -1) {
+ *mode = queue->mode;
+ } else {
+ if (mode) {
+ if (!QUEUE_IS_USING_QUEUE (queue)) {
+ if (QUEUE_IS_USING_RING_BUFFER (queue))
+ *mode = GST_BUFFERING_TIMESHIFT;
+ else
+ *mode = GST_BUFFERING_DOWNLOAD;
+ } else {
+ *mode = GST_BUFFERING_STREAM;
+ }
+ }
+ }
+#else
if (mode) {
if (!QUEUE_IS_USING_QUEUE (queue)) {
if (QUEUE_IS_USING_RING_BUFFER (queue))
*mode = GST_BUFFERING_STREAM;
}
}
+#endif
if (avg_in)
*avg_in = queue->byte_in_rate;
gst_queue2_loop (GstPad * pad)
{
GstQueue2 *queue;
+#ifdef TIZEN_FEATURE_RTSPSRC_MODIFICATION
+ GstFlowReturn ret = GST_FLOW_OK;
+#else
GstFlowReturn ret;
+#endif
queue = GST_QUEUE2 (GST_PAD_PARENT (pad));
if (started)
g_timer_continue (queue->out_timer);
}
+#ifdef TIZEN_FEATURE_RTSPSRC_MODIFICATION
+ if (!queue->is_buffering) {
+ ret = gst_queue2_push_one (queue);
+ }
+#else
ret = gst_queue2_push_one (queue);
+#endif
queue->srcresult = ret;
queue->sinkresult = ret;
if (ret != GST_FLOW_OK)
case PROP_RING_BUFFER_MAX_SIZE:
queue->ring_buffer_max_size = g_value_get_uint64 (value);
break;
+#ifdef TIZEN_FEATURE_RTSPSRC_MODIFICATION
+ case PROP_BUFFER_MODE:
+ queue->mode = g_value_get_enum (value);
+ break;
+#endif
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
case PROP_RING_BUFFER_MAX_SIZE:
g_value_set_uint64 (value, queue->ring_buffer_max_size);
break;
+#ifdef TIZEN_FEATURE_RTSPSRC_MODIFICATION
+ case PROP_BUFFER_MODE:
+ g_value_set_enum (value, queue->mode);
+ break;
+#endif
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;