Name: %{_name}
Version: 1.22.0
-Release: 5
+Release: 6
Summary: Streaming-Media Framework Runtime
License: LGPL-2.0+
Group: Multimedia/Framework
%if 0%{?ENABLE_AALIB}
-D %{_good_opt}aalib=enabled \
%endif
+ -D %{_good_opt}adaptivedemux2=enabled \
-D %{_good_opt}apetag=enabled \
-D %{_good_opt}audiofx=enabled \
-D %{_good_opt}audioparsers=enabled \
%manifest gst-plugins-good.manifest
%defattr(-, root, root)
%license subprojects/gst-plugins-good/COPYING
+%{_lib_gstreamer_dir}/libgstadaptivedemux2.so
%{_lib_gstreamer_dir}/libgstalaw.so
%{_lib_gstreamer_dir}/libgstapetag.so
%{_lib_gstreamer_dir}/libgstaudiofx.so
/* Find the matching handler (if any) */
handler = find_source_handler_for_element (uridecodebin, msg->src);
if (!handler) {
+#ifndef TIZEN_FEATURE_MANUAL_BUFFERING_CTRL /* post buffering msg to app */
GST_LOG_OBJECT (uridecodebin, "No handler for message, dropping it");
gst_message_unref (msg);
msg = NULL;
+#endif
} else if (!uridecodebin->input_item->main_item
|| handler != uridecodebin->input_item->main_item->handler) {
GST_LOG_OBJECT (uridecodebin,
core_conf.set('TIZEN_FEATURE_FORCE_SW_DECODER', true)
core_conf.set('TIZEN_FEATURE_PLAYBIN3_MODIFICATION', true)
core_conf.set('TIZEN_FEATURE_DISABLE_EOS_DROP', true)
+core_conf.set('TIZEN_FEATURE_MANUAL_BUFFERING_CTRL', true)
tbm_dep = dependency('libtbm', required : get_option('tbm'))
if tbm_dep.found()
* Since: 1.6
*/
#define GST_ADAPTIVE_DEMUX_STATISTICS_MESSAGE_NAME "adaptive-streaming-statistics"
+#ifdef TIZEN_FEATURE_POST_VARIANT_INFO
+#define GST_ADAPTIVE_DEMUX_VARIANT_MESSAGE_NAME "adaptive-streaming-variant"
+#endif
#define GST_ELEMENT_ERROR_FROM_ERROR(el, msg, err) G_STMT_START { \
gchar *__dbg = g_strdup_printf ("%s: %s", msg, err->message); \
gint ref_count;
GstAdaptiveDemux *demux;
-
+
/* TRUE if the streams of this period were prepared and can be started */
gboolean prepared;
/* TRUE if there is another period after this one */
gboolean has_next_period;
-
+
/* An increasing unique identifier for the period.
*
* Note: unrelated to dash period id (which can be identical across
* periods) */
guint period_num;
-
+
/* The list of GstAdaptiveDemux2Stream (ref hold) */
GList *streams;
/* Period used for input */
GstAdaptiveDemuxPeriod *input_period;
-
+
GstSegment segment;
gdouble instant_rate_multiplier; /* 1.0 by default, or from instant-rate seek */
}
}
+#ifdef TIZEN_FEATURE_POST_VARIANT_INFO
+ GST_DEBUG_OBJECT (demux, "post variant info message");
+ gst_element_post_message (GST_ELEMENT_CAST (demux),
+ gst_message_new_element (GST_OBJECT_CAST (demux),
+ gst_structure_new (GST_ADAPTIVE_DEMUX_VARIANT_MESSAGE_NAME,
+ "video-variant-info", G_TYPE_POINTER,
+ demux->master->variant_info, NULL)));
+#endif
+
return GST_FLOW_OK;
}
(GDestroyNotify) gst_hls_variant_stream_unref);
g_list_free_full (playlist->iframe_variants,
(GDestroyNotify) gst_hls_variant_stream_unref);
+#ifdef TIZEN_FEATURE_POST_VARIANT_INFO
+ g_list_free_full (playlist->variant_info, g_free);
+#endif
if (playlist->default_variant)
gst_hls_variant_stream_unref (playlist->default_variant);
g_free (playlist->last_data);
g_list_length (playlist->iframe_variants),
g_list_length (playlist->renditions));
+#ifdef TIZEN_FEATURE_POST_VARIANT_INFO
+ GList *v = (playlist->iframe_variants)?(playlist->iframe_variants):(playlist->variants);
+
+ /* update variant stream info */
+ for (; v != NULL; v = v->next) {
+ GstHLSVariantStream *data = v->data;
+ GstM3U8VideoVariantInfo *var_info = g_new0 (GstM3U8VideoVariantInfo, 1);
+
+ GST_LOG ("variant info %d, %d x %d", data->bandwidth, data->width,
+ data->height);
+ var_info->bandwidth = data->bandwidth;
+ var_info->width = data->width;
+ var_info->height = data->height;
+
+ playlist->variant_info = g_list_append (playlist->variant_info, var_info);
+ }
+#endif
return playlist;
}
#ifndef __M3U8_H__
#define __M3U8_H__
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
#include <gst/gst.h>
G_BEGIN_DECLS
GList *fallback;
};
+#ifdef TIZEN_FEATURE_POST_VARIANT_INFO
+typedef struct
+{
+ gint bandwidth;
+ gint width;
+ gint height;
+} GstM3U8VideoVariantInfo;
+#endif
+
/* Notes: #define are to avoid symbol clashes with legacy hlsdemux */
#define gst_hls_variant_stream_ref hls_variant_stream_ref
/* Available variant streams, sorted by bitrate (low -> high) */
GList *variants; /* GstHLSVariantStream */
GList *iframe_variants; /* GstHLSVariantStream */
+#ifdef TIZEN_FEATURE_POST_VARIANT_INFO
+ GList *variant_info; /* stream variant info */
+#endif
/* Default variant, first in the list (originally, before sorting) */
GstHLSVariantStream *default_variant;
cdata.set('TIZEN_FEATURE_GST_MUX_ENHANCEMENT', true)
cdata.set('TIZEN_FEATURE_V4L2_DISABLE_COLORIMETRY', true)
cdata.set('TIZEN_FEATURE_V4L2_DECODER_DRC_SUPPORT', true)
+cdata.set('TIZEN_FEATURE_POST_VARIANT_INFO', true)
if get_option('tv-profile')
cdata.set('TIZEN_PROFILE_TV', true)