#define GST_M3U8_CLIENT_LOCK(l) /* FIXME */
#define GST_M3U8_CLIENT_UNLOCK(l) /* FIXME */
+#ifdef TIZEN_FEATURE_HLSDEMUX_PROPERTY
+enum
+{
+ PROP_0,
+ PROP_IS_LIVE,
+ PROP_LIVE_START_TIME,
+ PROP_LIVE_END_TIME,
+ PROP_LAST
+};
+#endif
+
/* GObject */
static void gst_hls_demux_finalize (GObject * obj);
+#ifdef TIZEN_FEATURE_HLSDEMUX_PROPERTY
+static void
+gst_hls_demux_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+#endif
/* GstElement */
static GstStateChangeReturn
element_class = (GstElementClass *) klass;
adaptivedemux_class = (GstAdaptiveDemuxClass *) klass;
+#ifdef TIZEN_FEATURE_HLSDEMUX_PROPERTY
+ gobject_class->get_property = gst_hls_demux_get_property;
+#endif
gobject_class->finalize = gst_hls_demux_finalize;
+#ifdef TIZEN_FEATURE_HLSDEMUX_PROPERTY
+ g_object_class_install_property (gobject_class, PROP_IS_LIVE,
+ g_param_spec_boolean ("is-live", "is-live", "Whether the source is live",
+ FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (gobject_class, PROP_LIVE_START_TIME,
+ g_param_spec_uint64 ("live-start-time", "start time of the first fragment",
+ "start time of the first fragment in the current media playlist in case of live", 0, G_MAXUINT64,
+ 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (gobject_class, PROP_LIVE_END_TIME,
+ g_param_spec_uint64 ("live-end-time", "end time of the last fragment",
+ "end time of the last fragment in the current media playlist in case of live", 0, G_MAXUINT64,
+ 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+#endif
+
element_class->change_state = GST_DEBUG_FUNCPTR (gst_hls_demux_change_state);
gst_element_class_add_static_pad_template (element_class, &srctemplate);
g_mutex_init (&demux->keys_lock);
}
+#ifdef TIZEN_FEATURE_HLSDEMUX_PROPERTY
+static void
+gst_hls_demux_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
+{
+ GstAdaptiveDemux *adaptivedemux = GST_ADAPTIVE_DEMUX (object);
+ GstHLSDemux *demux = GST_HLS_DEMUX (adaptivedemux);
+ GstHLSVariantStream *variant = demux->current_variant;
+ gboolean is_live = FALSE;
+
+ if (variant)
+ is_live = gst_hls_variant_stream_is_live (variant);
+
+ switch (prop_id) {
+ case PROP_IS_LIVE:
+ g_value_set_boolean (value, is_live);
+ break;
+ case PROP_LIVE_START_TIME:{
+ GstClockTime start_time = 0;
+ if (is_live)
+ start_time = variant->m3u8->first_file_start;
+ g_value_set_uint64 (value, start_time);
+ break;
+ }
+ case PROP_LIVE_END_TIME:{
+ GstClockTime end_time = 0;
+ if (is_live)
+ end_time = variant->m3u8->last_file_end;
+ g_value_set_uint64 (value, end_time);
+ break;
+ }
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+#endif
+
static GstStateChangeReturn
gst_hls_demux_change_state (GstElement * element, GstStateChange transition)
{