summaryrefslogtreecommitdiff
path: root/libgupnp-dlna/metadata-backends/gstreamer-legacy/gupnp-dlna-gst-video-information.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgupnp-dlna/metadata-backends/gstreamer-legacy/gupnp-dlna-gst-video-information.c')
-rw-r--r--libgupnp-dlna/metadata-backends/gstreamer-legacy/gupnp-dlna-gst-video-information.c418
1 files changed, 0 insertions, 418 deletions
diff --git a/libgupnp-dlna/metadata-backends/gstreamer-legacy/gupnp-dlna-gst-video-information.c b/libgupnp-dlna/metadata-backends/gstreamer-legacy/gupnp-dlna-gst-video-information.c
deleted file mode 100644
index 42bc0e3..0000000
--- a/libgupnp-dlna/metadata-backends/gstreamer-legacy/gupnp-dlna-gst-video-information.c
+++ /dev/null
@@ -1,418 +0,0 @@
-/*
- * Copyright (C) 2012,2013 Intel Corporation.
- *
- * Authors: Krzesimir Nowak <krnowak@openismus.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H_ */
-#include "gupnp-dlna-gst-video-information.h"
-#include "gupnp-dlna-gst-info-utils.h"
-
-G_DEFINE_TYPE (GUPnPDLNAGstVideoInformation,
- gupnp_dlna_gst_video_information,
- GUPNP_TYPE_DLNA_VIDEO_INFORMATION)
-
-struct _GUPnPDLNAGstVideoInformationPrivate {
- GstDiscovererInfo *info;
- GList *stream_list;
- GstDiscovererVideoInfo *video_info;
- GstCaps *caps;
-};
-
-enum
-{
- PROP_0,
-
- PROP_INFO
-};
-
-static GstDiscovererVideoInfo *
-get_video_info (GUPnPDLNAGstVideoInformation *gst_info)
-{
- GUPnPDLNAGstVideoInformationPrivate *priv = gst_info->priv;
-
- if (!priv->video_info) {
- GList *iter;
-
- if (!priv->stream_list) {
- priv->stream_list =
- gst_discoverer_info_get_stream_list (priv->info);
- if (!priv->stream_list)
- return NULL;
- }
-
- for (iter = priv->stream_list; iter; iter = iter->next) {
- GstDiscovererStreamInfo *stream =
- GST_DISCOVERER_STREAM_INFO (iter->data);
- GType stream_type = G_TYPE_FROM_INSTANCE (stream);
-
- if (stream_type == GST_TYPE_DISCOVERER_VIDEO_INFO) {
- priv->video_info =
- GST_DISCOVERER_VIDEO_INFO (stream);
-
- break;
- }
- }
- }
-
- return priv->video_info;
-}
-
-static GstCaps *
-get_caps (GUPnPDLNAGstVideoInformation *gst_info)
-{
- GUPnPDLNAGstVideoInformationPrivate *priv = gst_info->priv;
-
- if (!priv->caps)
- priv->caps = gst_discoverer_stream_info_get_caps
- (GST_DISCOVERER_STREAM_INFO
- (get_video_info (gst_info)));
-
- return priv->caps;
-}
-
-static GUPnPDLNAIntValue
-get_int_value (GUPnPDLNAGstVideoInformation *gst_info,
- const gchar *name)
-{
- GstCaps *caps = get_caps (gst_info);
- GstDiscovererStreamInfo *stream =
- GST_DISCOVERER_STREAM_INFO (get_video_info (gst_info));
- GstDiscovererInfo *info = gst_info->priv->info;
-
- return gupnp_dlna_gst_get_int_value (caps, stream, info, name);
-}
-
-static GUPnPDLNAStringValue
-get_string_value (GUPnPDLNAGstVideoInformation *gst_info,
- const gchar *name)
-{
- GstCaps *caps = get_caps (gst_info);
- GstDiscovererStreamInfo *stream =
- GST_DISCOVERER_STREAM_INFO (get_video_info (gst_info));
- GstDiscovererInfo *info = gst_info->priv->info;
-
- return gupnp_dlna_gst_get_string_value (caps, stream, info, name);
-}
-
-static GUPnPDLNABoolValue
-get_bool_value (GUPnPDLNAGstVideoInformation *gst_info,
- const gchar *name)
-{
- GstCaps *caps = get_caps (gst_info);
- GstDiscovererStreamInfo *stream =
- GST_DISCOVERER_STREAM_INFO (get_video_info (gst_info));
- GstDiscovererInfo *info = gst_info->priv->info;
-
- return gupnp_dlna_gst_get_bool_value (caps, stream, info, name);
-}
-
-static GUPnPDLNAIntValue
-backend_get_bitrate (GUPnPDLNAVideoInformation *self)
-{
- GUPnPDLNAGstVideoInformation* gst_info =
- GUPNP_DLNA_GST_VIDEO_INFORMATION (self);
- GstDiscovererVideoInfo *video_info = get_video_info (gst_info);
- guint data = gst_discoverer_video_info_get_bitrate (video_info);
- GUPnPDLNAIntValue value = GUPNP_DLNA_INT_VALUE_UNSET;
-
- if (data > 0 && data <= G_MAXINT) {
- value.state = GUPNP_DLNA_VALUE_STATE_SET;
- value.value = (gint) data;
- }
-
- return value;
-}
-
-static GUPnPDLNAFractionValue
-backend_get_framerate (GUPnPDLNAVideoInformation *self)
-{
- GUPnPDLNAGstVideoInformation* gst_info =
- GUPNP_DLNA_GST_VIDEO_INFORMATION (self);
- GstDiscovererVideoInfo *video_info = get_video_info (gst_info);
- guint ndata = gst_discoverer_video_info_get_framerate_num (video_info);
- guint ddata = gst_discoverer_video_info_get_framerate_denom
- (video_info);
- GUPnPDLNAFractionValue value = GUPNP_DLNA_FRACTION_VALUE_UNSET;
-
- if (ndata > 0 && ndata <= G_MAXINT && ddata > 0 && ddata <= G_MAXINT) {
- value.state = GUPNP_DLNA_VALUE_STATE_SET;
- value.numerator = (gint) ndata;
- value.denominator = (gint) ddata;
- }
-
- return value;
-}
-
-static GUPnPDLNAIntValue
-backend_get_height (GUPnPDLNAVideoInformation *self)
-{
- GUPnPDLNAGstVideoInformation* gst_info =
- GUPNP_DLNA_GST_VIDEO_INFORMATION (self);
- GstDiscovererVideoInfo *video_info = get_video_info (gst_info);
- guint data = gst_discoverer_video_info_get_height (video_info);
- GUPnPDLNAIntValue value = GUPNP_DLNA_INT_VALUE_UNSET;
-
- if (data > 0 && data <= G_MAXINT) {
- value.state = GUPNP_DLNA_VALUE_STATE_SET;
- value.value = (gint) data;
- }
-
- return value;
-}
-
-static GUPnPDLNABoolValue
-backend_is_interlaced (GUPnPDLNAVideoInformation *self)
-{
- GUPnPDLNAGstVideoInformation* gst_info =
- GUPNP_DLNA_GST_VIDEO_INFORMATION (self);
- GstDiscovererVideoInfo *video_info = get_video_info (gst_info);
- gboolean data = gst_discoverer_video_info_get_height (video_info);
- GUPnPDLNABoolValue value;
-
- value.state = GUPNP_DLNA_VALUE_STATE_SET;
- value.value = data;
-
- return value;
-}
-
-static GUPnPDLNAStringValue
-backend_get_level (GUPnPDLNAVideoInformation *self)
-{
- GUPnPDLNAGstVideoInformation* gst_info =
- GUPNP_DLNA_GST_VIDEO_INFORMATION (self);
-
- return get_string_value (gst_info, "level");
-}
-
-static GUPnPDLNAIntValue
-backend_get_mpeg_version (GUPnPDLNAVideoInformation *self)
-{
- GUPnPDLNAGstVideoInformation* gst_info =
- GUPNP_DLNA_GST_VIDEO_INFORMATION (self);
-
- return get_int_value (gst_info, "mpegversion");
-}
-
-static GUPnPDLNAFractionValue
-backend_get_pixel_aspect_ratio (GUPnPDLNAVideoInformation *self)
-{
- GUPnPDLNAGstVideoInformation* gst_info =
- GUPNP_DLNA_GST_VIDEO_INFORMATION (self);
- GstDiscovererVideoInfo *video_info = get_video_info (gst_info);
- guint ndata = gst_discoverer_video_info_get_par_num (video_info);
- guint ddata = gst_discoverer_video_info_get_par_denom (video_info);
- GUPnPDLNAFractionValue value = GUPNP_DLNA_FRACTION_VALUE_UNSET;
-
- if (ndata > 0 && ndata <= G_MAXINT && ddata > 0 && ddata <= G_MAXINT) {
- value.state = GUPNP_DLNA_VALUE_STATE_SET;
- value.numerator = (gint) ndata;
- value.denominator = (gint) ddata;
- }
-
- return value;
-}
-
-static GUPnPDLNAStringValue
-backend_get_profile (GUPnPDLNAVideoInformation *self)
-{
- GUPnPDLNAGstVideoInformation* gst_info =
- GUPNP_DLNA_GST_VIDEO_INFORMATION (self);
-
- return get_string_value (gst_info, "profile");
-}
-
-static GUPnPDLNABoolValue
-backend_is_system_stream (GUPnPDLNAVideoInformation *self)
-{
- GUPnPDLNAGstVideoInformation* gst_info =
- GUPNP_DLNA_GST_VIDEO_INFORMATION (self);
-
- return get_bool_value (gst_info, "systemstream");
-}
-
-static GUPnPDLNAIntValue
-backend_get_width (GUPnPDLNAVideoInformation *self)
-{
- GUPnPDLNAGstVideoInformation* gst_info =
- GUPNP_DLNA_GST_VIDEO_INFORMATION (self);
- GstDiscovererVideoInfo *video_info = get_video_info (gst_info);
- guint data = gst_discoverer_video_info_get_width (video_info);
- GUPnPDLNAIntValue value = GUPNP_DLNA_INT_VALUE_UNSET;
-
- if (data > 0 && data <= G_MAXINT) {
- value.state = GUPNP_DLNA_VALUE_STATE_SET;
- value.value = (gint) data;
- }
-
- return value;
-}
-
-static GUPnPDLNAStringValue
-backend_get_mime (GUPnPDLNAVideoInformation *self)
-{
- GUPnPDLNAGstVideoInformation* gst_info =
- GUPNP_DLNA_GST_VIDEO_INFORMATION (self);
-
- return gupnp_dlna_gst_get_mime (get_caps (gst_info));
-}
-
-static void
-gupnp_dlna_gst_video_information_dispose (GObject *object)
-{
- GUPnPDLNAGstVideoInformation *info =
- GUPNP_DLNA_GST_VIDEO_INFORMATION (object);
- GUPnPDLNAGstVideoInformationPrivate *priv = info->priv;
-
- g_clear_pointer (&priv->info, gupnp_dlna_gst_discoverer_info_unref);
- g_clear_pointer (&priv->stream_list,
- gst_discoverer_stream_info_list_free);
- /* priv->video_info is freed with stream list above */
- priv->video_info = NULL;
- g_clear_pointer (&priv->caps, gst_caps_unref);
- G_OBJECT_CLASS
- (gupnp_dlna_gst_video_information_parent_class)->dispose (object);
-}
-
-static void
-gupnp_dlna_gst_video_information_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GUPnPDLNAGstVideoInformation *info =
- GUPNP_DLNA_GST_VIDEO_INFORMATION (object);
- GUPnPDLNAGstVideoInformationPrivate *priv = info->priv;
-
- switch (property_id) {
- case PROP_INFO:
- g_clear_pointer (&priv->info,
- gupnp_dlna_gst_discoverer_info_unref);
- priv->info =
- GST_DISCOVERER_INFO (gst_value_dup_mini_object (value));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-static void
-gupnp_dlna_gst_video_information_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GUPnPDLNAGstVideoInformation *info =
- GUPNP_DLNA_GST_VIDEO_INFORMATION (object);
- GUPnPDLNAGstVideoInformationPrivate *priv = info->priv;
-
- switch (property_id) {
- case PROP_INFO:
- gst_value_set_mini_object (value, GST_MINI_OBJECT (priv->info));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-static void
-gupnp_dlna_gst_video_information_class_init
- (GUPnPDLNAGstVideoInformationClass *gst_info_class)
-{
- GUPnPDLNAVideoInformationClass *info_class =
- GUPNP_DLNA_VIDEO_INFORMATION_CLASS (gst_info_class);
- GObjectClass *object_class = G_OBJECT_CLASS (gst_info_class);
- GParamSpec *pspec;
-
- object_class->get_property =
- gupnp_dlna_gst_video_information_get_property;
- object_class->set_property =
- gupnp_dlna_gst_video_information_set_property;
- object_class->dispose = gupnp_dlna_gst_video_information_dispose;
-
- info_class->get_bitrate = backend_get_bitrate;
- info_class->get_framerate = backend_get_framerate;
- info_class->get_height = backend_get_height;
- info_class->is_interlaced = backend_is_interlaced;
- info_class->get_level = backend_get_level;
- info_class->get_mpeg_version = backend_get_mpeg_version;
- info_class->get_pixel_aspect_ratio = backend_get_pixel_aspect_ratio;
- info_class->get_profile = backend_get_profile;
- info_class->is_system_stream = backend_is_system_stream;
- info_class->get_width = backend_get_width;
- info_class->get_mime = backend_get_mime;
-
- pspec = gst_param_spec_mini_object ("info",
- "info",
- "discoverer info",
- GST_TYPE_DISCOVERER_INFO,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT);
- g_object_class_install_property (object_class,
- PROP_INFO,
- pspec);
-
- g_type_class_add_private (gst_info_class,
- sizeof (GUPnPDLNAGstVideoInformationPrivate));
-}
-
-static void
-gupnp_dlna_gst_video_information_init (GUPnPDLNAGstVideoInformation *self)
-{
- GUPnPDLNAGstVideoInformationPrivate *priv = G_TYPE_INSTANCE_GET_PRIVATE
- (self,
- GUPNP_TYPE_DLNA_GST_VIDEO_INFORMATION,
- GUPnPDLNAGstVideoInformationPrivate);
-
- priv->info = NULL;
- priv->stream_list = NULL;
- priv->video_info = NULL;
- priv->caps = NULL;
- self->priv = priv;
-}
-
-GUPnPDLNAGstVideoInformation *
-gupnp_dlna_gst_video_information_new_from_discoverer_info
- (GstDiscovererInfo *info)
-{
- GList* video_list;
- GUPnPDLNAGstVideoInformation *video_info = NULL;
-
- g_return_val_if_fail (GST_IS_DISCOVERER_INFO (info), NULL);
-
- video_list = gst_discoverer_info_get_video_streams (info);
-
- if (video_list) {
- if (!gst_discoverer_video_info_is_image
- (GST_DISCOVERER_VIDEO_INFO (video_list->data)))
- video_info = GUPNP_DLNA_GST_VIDEO_INFORMATION
- (g_object_new
- (GUPNP_TYPE_DLNA_GST_VIDEO_INFORMATION,
- "info", info,
- NULL));
- gst_discoverer_stream_info_list_free (video_list);
- }
-
- return video_info;
-}