Blame libgupnp-av/gupnp-didl-lite-resource.c

Packit 712bc5
/*
Packit 712bc5
 * Copyright (C) 2009 Nokia Corporation.
Packit 712bc5
 * Copyright (C) 2007, 2008 OpenedHand Ltd.
Packit 712bc5
 * Copyright (C) 2012 Intel Corporation
Packit 712bc5
 *
Packit 712bc5
 * Authors: Zeeshan Ali (Khattak) <zeeshan.ali@nokia.com>
Packit 712bc5
 *                                <zeeshanak@gnome.org>
Packit 712bc5
 *          Jorn Baayen <jorn@openedhand.com>
Packit 712bc5
 *          Krzesimir Nowak <krnowak@openismus.com>
Packit 712bc5
 *
Packit 712bc5
 * This library is free software; you can redistribute it and/or
Packit 712bc5
 * modify it under the terms of the GNU Library General Public
Packit 712bc5
 * License as published by the Free Software Foundation; either
Packit 712bc5
 * version 2 of the License, or (at your option) any later version.
Packit 712bc5
 *
Packit 712bc5
 * This library is distributed in the hope that it will be useful,
Packit 712bc5
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 712bc5
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 712bc5
 * Library General Public License for more details.
Packit 712bc5
 *
Packit 712bc5
 * You should have received a copy of the GNU Library General Public
Packit 712bc5
 * License along with this library; if not, write to the
Packit 712bc5
 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Packit 712bc5
 * Boston, MA 02110-1301, USA.
Packit 712bc5
 */
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * SECTION:gupnp-didl-lite-resource
Packit 712bc5
 * @short_description: DIDL-Lite Resource
Packit 712bc5
 *
Packit 712bc5
 * #GUPnPDIDLLiteResource respresent a DIDL-Lite resource (res) element.
Packit 712bc5
 */
Packit 712bc5
Packit 712bc5
#include <string.h>
Packit 712bc5
Packit 712bc5
#include "gupnp-didl-lite-resource.h"
Packit 712bc5
#include "gupnp-didl-lite-resource-private.h"
Packit 712bc5
#include "xml-util.h"
Packit 712bc5
#include "time-utils.h"
Packit 712bc5
#include "xsd-data.h"
Packit 712bc5
Packit 712bc5
G_DEFINE_TYPE (GUPnPDIDLLiteResource,
Packit 712bc5
               gupnp_didl_lite_resource,
Packit 712bc5
               G_TYPE_OBJECT);
Packit 712bc5
Packit 712bc5
struct _GUPnPDIDLLiteResourcePrivate {
Packit 712bc5
        xmlNode     *xml_node;
Packit 712bc5
        GUPnPAVXMLDoc *xml_doc;
Packit 712bc5
        xmlNs       *dlna_ns;
Packit 712bc5
        xmlNs       *pv_ns;
Packit 712bc5
Packit 712bc5
        GUPnPProtocolInfo *protocol_info;
Packit 712bc5
};
Packit 712bc5
Packit 712bc5
enum {
Packit 712bc5
        PROP_0,
Packit 712bc5
        PROP_XML_NODE,
Packit 712bc5
        PROP_XML_DOC,
Packit 712bc5
        PROP_DLNA_NAMESPACE,
Packit 712bc5
        PROP_PV_NAMESPACE,
Packit 712bc5
Packit 712bc5
        PROP_URI,
Packit 712bc5
        PROP_IMPORT_URI,
Packit 712bc5
        PROP_PROTOCOL_INFO,
Packit 712bc5
Packit 712bc5
        PROP_SIZE,
Packit 712bc5
        PROP_SIZE64,
Packit 712bc5
        PROP_CLEAR_TEXT_SIZE,
Packit 712bc5
        PROP_DURATION,
Packit 712bc5
        PROP_BITRATE,
Packit 712bc5
        PROP_SAMPLE_FREQ,
Packit 712bc5
        PROP_BITS_PER_SAMPLE,
Packit 712bc5
        PROP_PROTECTION,
Packit 712bc5
Packit 712bc5
        PROP_AUDIO_CHANNELS,
Packit 712bc5
Packit 712bc5
        PROP_WIDTH,
Packit 712bc5
        PROP_HEIGHT,
Packit 712bc5
        PROP_COLOR_DEPTH,
Packit 712bc5
Packit 712bc5
        PROP_UPDATE_COUNT,
Packit 712bc5
        PROP_TRACK_TOTAL,
Packit 712bc5
Packit 712bc5
        PROP_SUBTITLE_FILE_TYPE,
Packit 712bc5
        PROP_SUBTITLE_FILE_URI
Packit 712bc5
};
Packit 712bc5
Packit 712bc5
static void
Packit 712bc5
get_resolution_info (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                     int                   *width,
Packit 712bc5
                     int                   *height)
Packit 712bc5
{
Packit 712bc5
        const char *resolution;
Packit 712bc5
        char **tokens;
Packit 712bc5
Packit 712bc5
        resolution = xml_util_get_attribute_content (resource->priv->xml_node,
Packit 712bc5
                                                     "resolution");
Packit 712bc5
        if (resolution == NULL)
Packit 712bc5
                return;
Packit 712bc5
Packit 712bc5
        tokens = g_strsplit (resolution, "x", -1);
Packit 712bc5
        if (tokens == NULL || tokens[0] == NULL || tokens[1] == NULL) {
Packit 712bc5
                g_warning ("Failed to resolution string '%s'\n", resolution);
Packit 712bc5
Packit 712bc5
                goto return_point;
Packit 712bc5
        }
Packit 712bc5
Packit 712bc5
        if (width)
Packit 712bc5
                *width = atoi (tokens[0]);
Packit 712bc5
        if (height)
Packit 712bc5
                *height = atoi (tokens[1]);
Packit 712bc5
Packit 712bc5
return_point:
Packit 712bc5
        g_strfreev (tokens);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
static void
Packit 712bc5
on_protocol_info_changed (GUPnPProtocolInfo        *info,
Packit 712bc5
                          G_GNUC_UNUSED GParamSpec *pspec,
Packit 712bc5
                          gpointer                  user_data)
Packit 712bc5
{
Packit 712bc5
        GUPnPDIDLLiteResource *resource = GUPNP_DIDL_LITE_RESOURCE (user_data);
Packit 712bc5
Packit 712bc5
        gupnp_didl_lite_resource_set_protocol_info (resource, info);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
static void
Packit 712bc5
gupnp_didl_lite_resource_init (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        resource->priv = G_TYPE_INSTANCE_GET_PRIVATE
Packit 712bc5
                                        (resource,
Packit 712bc5
                                         GUPNP_TYPE_DIDL_LITE_RESOURCE,
Packit 712bc5
                                         GUPnPDIDLLiteResourcePrivate);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
static void
Packit 712bc5
gupnp_didl_lite_resource_set_property (GObject      *object,
Packit 712bc5
                                       guint         property_id,
Packit 712bc5
                                       const GValue *value,
Packit 712bc5
                                       GParamSpec   *pspec)
Packit 712bc5
{
Packit 712bc5
        GUPnPDIDLLiteResource *resource;
Packit 712bc5
Packit 712bc5
        resource = GUPNP_DIDL_LITE_RESOURCE (object);
Packit 712bc5
Packit 712bc5
        switch (property_id) {
Packit 712bc5
        case PROP_XML_NODE:
Packit 712bc5
                resource->priv->xml_node = g_value_get_pointer (value);
Packit 712bc5
                break;
Packit 712bc5
        case PROP_XML_DOC:
Packit 712bc5
                resource->priv->xml_doc = g_value_dup_boxed (value);
Packit 712bc5
                break;
Packit 712bc5
        case PROP_URI:
Packit 712bc5
                gupnp_didl_lite_resource_set_uri (resource,
Packit 712bc5
                                                  g_value_get_string (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_IMPORT_URI:
Packit 712bc5
                gupnp_didl_lite_resource_set_import_uri
Packit 712bc5
                                (resource,
Packit 712bc5
                                 g_value_get_string (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_PROTOCOL_INFO:
Packit 712bc5
                gupnp_didl_lite_resource_set_protocol_info
Packit 712bc5
                                (resource,
Packit 712bc5
                                 g_value_get_object (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_SIZE:
Packit 712bc5
                gupnp_didl_lite_resource_set_size (resource,
Packit 712bc5
                                                   g_value_get_long (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_SIZE64:
Packit 712bc5
                gupnp_didl_lite_resource_set_size64 (resource,
Packit 712bc5
                                                     g_value_get_int64 (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_DLNA_NAMESPACE:
Packit 712bc5
                resource->priv->dlna_ns = g_value_get_pointer (value);
Packit 712bc5
                break;
Packit 712bc5
        case PROP_PV_NAMESPACE:
Packit 712bc5
                resource->priv->pv_ns = g_value_get_pointer (value);
Packit 712bc5
                break;
Packit 712bc5
        case PROP_CLEAR_TEXT_SIZE:
Packit 712bc5
                gupnp_didl_lite_resource_set_cleartext_size (resource,
Packit 712bc5
                                                     g_value_get_int64 (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_DURATION:
Packit 712bc5
                gupnp_didl_lite_resource_set_duration
Packit 712bc5
                                (resource,
Packit 712bc5
                                 g_value_get_long (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_BITRATE:
Packit 712bc5
                gupnp_didl_lite_resource_set_bitrate (resource,
Packit 712bc5
                                                      g_value_get_int (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_SAMPLE_FREQ:
Packit 712bc5
                gupnp_didl_lite_resource_set_sample_freq
Packit 712bc5
                                (resource,
Packit 712bc5
                                 g_value_get_int (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_BITS_PER_SAMPLE:
Packit 712bc5
                gupnp_didl_lite_resource_set_bits_per_sample
Packit 712bc5
                                (resource,
Packit 712bc5
                                 g_value_get_int (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_PROTECTION:
Packit 712bc5
                gupnp_didl_lite_resource_set_protection
Packit 712bc5
                                (resource,
Packit 712bc5
                                 g_value_get_string (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_AUDIO_CHANNELS:
Packit 712bc5
                gupnp_didl_lite_resource_set_audio_channels
Packit 712bc5
                                (resource,
Packit 712bc5
                                 g_value_get_int (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_WIDTH:
Packit 712bc5
                gupnp_didl_lite_resource_set_width (resource,
Packit 712bc5
                                                    g_value_get_int (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_HEIGHT:
Packit 712bc5
                gupnp_didl_lite_resource_set_height (resource,
Packit 712bc5
                                                     g_value_get_int (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_COLOR_DEPTH:
Packit 712bc5
                gupnp_didl_lite_resource_set_color_depth
Packit 712bc5
                                (resource,
Packit 712bc5
                                 g_value_get_int (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_UPDATE_COUNT:
Packit 712bc5
                gupnp_didl_lite_resource_set_update_count
Packit 712bc5
                                        (resource,
Packit 712bc5
                                         g_value_get_uint (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_TRACK_TOTAL:
Packit 712bc5
                gupnp_didl_lite_resource_set_track_total
Packit 712bc5
                                        (resource,
Packit 712bc5
                                         g_value_get_uint (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_SUBTITLE_FILE_TYPE:
Packit 712bc5
                gupnp_didl_lite_resource_set_subtitle_file_type
Packit 712bc5
                                        (resource,
Packit 712bc5
                                         g_value_get_string (value));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_SUBTITLE_FILE_URI:
Packit 712bc5
                gupnp_didl_lite_resource_set_subtitle_file_uri
Packit 712bc5
                                        (resource,
Packit 712bc5
                                         g_value_get_string (value));
Packit 712bc5
                break;
Packit 712bc5
        default:
Packit 712bc5
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
Packit 712bc5
                break;
Packit 712bc5
        }
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
static void
Packit 712bc5
gupnp_didl_lite_resource_get_property (GObject    *object,
Packit 712bc5
                                       guint       property_id,
Packit 712bc5
                                       GValue     *value,
Packit 712bc5
                                       GParamSpec *pspec)
Packit 712bc5
{
Packit 712bc5
        GUPnPDIDLLiteResource *resource;
Packit 712bc5
Packit 712bc5
        resource = GUPNP_DIDL_LITE_RESOURCE (object);
Packit 712bc5
Packit 712bc5
        switch (property_id) {
Packit 712bc5
        case PROP_XML_NODE:
Packit 712bc5
                g_value_set_pointer
Packit 712bc5
                        (value,
Packit 712bc5
                         gupnp_didl_lite_resource_get_xml_node (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_URI:
Packit 712bc5
                g_value_set_string
Packit 712bc5
                        (value,
Packit 712bc5
                         gupnp_didl_lite_resource_get_uri (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_IMPORT_URI:
Packit 712bc5
                g_value_set_string
Packit 712bc5
                        (value,
Packit 712bc5
                         gupnp_didl_lite_resource_get_import_uri (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_PROTOCOL_INFO:
Packit 712bc5
                g_value_set_object
Packit 712bc5
                        (value,
Packit 712bc5
                         gupnp_didl_lite_resource_get_protocol_info (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_SIZE:
Packit 712bc5
                g_value_set_long (value,
Packit 712bc5
                                  gupnp_didl_lite_resource_get_size (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_SIZE64:
Packit 712bc5
                g_value_set_int64 (value,
Packit 712bc5
                                   gupnp_didl_lite_resource_get_size64 (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_DLNA_NAMESPACE:
Packit 712bc5
                g_value_set_pointer
Packit 712bc5
                        (value,
Packit 712bc5
                         gupnp_didl_lite_resource_get_dlna_namespace (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_PV_NAMESPACE:
Packit 712bc5
                g_value_set_pointer
Packit 712bc5
                        (value,
Packit 712bc5
                         gupnp_didl_lite_resource_get_pv_namespace (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_CLEAR_TEXT_SIZE:
Packit 712bc5
                g_value_set_int64
Packit 712bc5
                         (value,
Packit 712bc5
                          gupnp_didl_lite_resource_get_cleartext_size (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_DURATION:
Packit 712bc5
                g_value_set_long
Packit 712bc5
                        (value,
Packit 712bc5
                         gupnp_didl_lite_resource_get_duration (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_BITRATE:
Packit 712bc5
                g_value_set_int
Packit 712bc5
                        (value,
Packit 712bc5
                         gupnp_didl_lite_resource_get_bitrate (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_BITS_PER_SAMPLE:
Packit 712bc5
                g_value_set_int
Packit 712bc5
                        (value,
Packit 712bc5
                         gupnp_didl_lite_resource_get_bits_per_sample
Packit 712bc5
                                                                (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_SAMPLE_FREQ:
Packit 712bc5
                g_value_set_int
Packit 712bc5
                        (value,
Packit 712bc5
                         gupnp_didl_lite_resource_get_sample_freq (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_PROTECTION:
Packit 712bc5
                g_value_set_string
Packit 712bc5
                        (value,
Packit 712bc5
                         gupnp_didl_lite_resource_get_protection (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_AUDIO_CHANNELS:
Packit 712bc5
                g_value_set_int
Packit 712bc5
                        (value,
Packit 712bc5
                         gupnp_didl_lite_resource_get_audio_channels
Packit 712bc5
                                                                (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_WIDTH:
Packit 712bc5
                g_value_set_int (value,
Packit 712bc5
                                 gupnp_didl_lite_resource_get_width (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_HEIGHT:
Packit 712bc5
                g_value_set_int
Packit 712bc5
                        (value,
Packit 712bc5
                         gupnp_didl_lite_resource_get_height (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_COLOR_DEPTH:
Packit 712bc5
                g_value_set_int
Packit 712bc5
                        (value,
Packit 712bc5
                         gupnp_didl_lite_resource_get_color_depth (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_UPDATE_COUNT:
Packit 712bc5
                g_value_set_uint
Packit 712bc5
                         (value,
Packit 712bc5
                          gupnp_didl_lite_resource_get_update_count (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_TRACK_TOTAL:
Packit 712bc5
                g_value_set_uint
Packit 712bc5
                         (value,
Packit 712bc5
                          gupnp_didl_lite_resource_get_track_total (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_SUBTITLE_FILE_TYPE:
Packit 712bc5
                g_value_set_string
Packit 712bc5
                         (value,
Packit 712bc5
                          gupnp_didl_lite_resource_get_subtitle_file_type
Packit 712bc5
                                                (resource));
Packit 712bc5
                break;
Packit 712bc5
        case PROP_SUBTITLE_FILE_URI:
Packit 712bc5
                g_value_set_string
Packit 712bc5
                         (value,
Packit 712bc5
                          gupnp_didl_lite_resource_get_subtitle_file_uri
Packit 712bc5
                                                (resource));
Packit 712bc5
                break;
Packit 712bc5
        default:
Packit 712bc5
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
Packit 712bc5
                break;
Packit 712bc5
        }
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
static void
Packit 712bc5
gupnp_didl_lite_resource_dispose (GObject *object)
Packit 712bc5
{
Packit 712bc5
        GObjectClass                 *object_class;
Packit 712bc5
        GUPnPDIDLLiteResourcePrivate *priv;
Packit 712bc5
Packit 712bc5
        priv = GUPNP_DIDL_LITE_RESOURCE (object)->priv;
Packit 712bc5
Packit 712bc5
        g_clear_pointer (&priv->xml_doc, xml_doc_unref);
Packit 712bc5
Packit 712bc5
        if (priv->protocol_info != NULL) {
Packit 712bc5
                g_object_unref (priv->protocol_info);
Packit 712bc5
                priv->protocol_info = NULL;
Packit 712bc5
        }
Packit 712bc5
Packit 712bc5
        object_class = G_OBJECT_CLASS (gupnp_didl_lite_resource_parent_class);
Packit 712bc5
        object_class->dispose (object);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
static void
Packit 712bc5
gupnp_didl_lite_resource_class_init (GUPnPDIDLLiteResourceClass *klass)
Packit 712bc5
{
Packit 712bc5
        GObjectClass *object_class;
Packit 712bc5
Packit 712bc5
        object_class = G_OBJECT_CLASS (klass);
Packit 712bc5
Packit 712bc5
        object_class->set_property = gupnp_didl_lite_resource_set_property;
Packit 712bc5
        object_class->get_property = gupnp_didl_lite_resource_get_property;
Packit 712bc5
        object_class->dispose = gupnp_didl_lite_resource_dispose;
Packit 712bc5
Packit 712bc5
        g_type_class_add_private (klass, sizeof (GUPnPDIDLLiteResourcePrivate));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:xml-node:
Packit 712bc5
         *
Packit 712bc5
         * The pointer to res node in XML document.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_XML_NODE,
Packit 712bc5
                 g_param_spec_pointer ("xml-node",
Packit 712bc5
                                       "XMLNode",
Packit 712bc5
                                       "The pointer to res node in XML"
Packit 712bc5
                                       " document.",
Packit 712bc5
                                       G_PARAM_READWRITE |
Packit 712bc5
                                       G_PARAM_CONSTRUCT_ONLY |
Packit 712bc5
                                       G_PARAM_STATIC_NAME |
Packit 712bc5
                                       G_PARAM_STATIC_NICK |
Packit 712bc5
                                       G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:xml-doc:
Packit 712bc5
         *
Packit 712bc5
         * The reference to XML document containing this object.
Packit 712bc5
         *
Packit 712bc5
         * Internal property.
Packit 712bc5
         *
Packit 712bc5
         * Stability: Private
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_XML_DOC,
Packit 712bc5
                 g_param_spec_boxed ("xml-doc",
Packit 712bc5
                                      "XMLDoc",
Packit 712bc5
                                      "The reference to XML document"
Packit 712bc5
                                      " containing this object.",
Packit 712bc5
                                      xml_doc_get_type (),
Packit 712bc5
                                      G_PARAM_WRITABLE |
Packit 712bc5
                                      G_PARAM_CONSTRUCT_ONLY |
Packit 712bc5
                                      G_PARAM_STATIC_NAME |
Packit 712bc5
                                      G_PARAM_STATIC_NICK |
Packit 712bc5
                                      G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:uri:
Packit 712bc5
         *
Packit 712bc5
         * The URI associated with this resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_URI,
Packit 712bc5
                 g_param_spec_string ("uri",
Packit 712bc5
                                      "URI",
Packit 712bc5
                                      "The URI associated with this resource",
Packit 712bc5
                                      NULL,
Packit 712bc5
                                      G_PARAM_READWRITE |
Packit 712bc5
                                      G_PARAM_STATIC_NAME |
Packit 712bc5
                                      G_PARAM_STATIC_NICK |
Packit 712bc5
                                      G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:import-uri:
Packit 712bc5
         *
Packit 712bc5
         * The Import URI associated with this resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_IMPORT_URI,
Packit 712bc5
                 g_param_spec_string ("import-uri",
Packit 712bc5
                                      "ImportURI",
Packit 712bc5
                                      "The import URI associated with this"
Packit 712bc5
                                      " resource",
Packit 712bc5
                                      NULL,
Packit 712bc5
                                      G_PARAM_READWRITE |
Packit 712bc5
                                      G_PARAM_STATIC_NAME |
Packit 712bc5
                                      G_PARAM_STATIC_NICK |
Packit 712bc5
                                      G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:protocol-info:
Packit 712bc5
         *
Packit 712bc5
         * The protocol info associated with this resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_PROTOCOL_INFO,
Packit 712bc5
                 g_param_spec_object ("protocol-info",
Packit 712bc5
                                      "ProtocolInfo",
Packit 712bc5
                                      "The protocol info associated with this"
Packit 712bc5
                                      " resource",
Packit 712bc5
                                      GUPNP_TYPE_PROTOCOL_INFO,
Packit 712bc5
                                      G_PARAM_READWRITE |
Packit 712bc5
                                      G_PARAM_STATIC_NAME |
Packit 712bc5
                                      G_PARAM_STATIC_NICK |
Packit 712bc5
                                      G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:size:
Packit 712bc5
         *
Packit 712bc5
         * The size (in bytes) of this resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_SIZE,
Packit 712bc5
                 g_param_spec_long ("size",
Packit 712bc5
                                    "Size",
Packit 712bc5
                                    "The size (in bytes) of this resource.",
Packit 712bc5
                                    -1,
Packit 712bc5
                                    G_MAXLONG,
Packit 712bc5
                                    -1,
Packit 712bc5
                                    G_PARAM_READWRITE |
Packit 712bc5
                                    G_PARAM_STATIC_NAME |
Packit 712bc5
                                    G_PARAM_STATIC_NICK |
Packit 712bc5
                                    G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:size64:
Packit 712bc5
         *
Packit 712bc5
         * The size (in bytes) of this resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_SIZE64,
Packit 712bc5
                 g_param_spec_int64 ("size64",
Packit 712bc5
                                     "Size64",
Packit 712bc5
                                     "The size (in bytes) of this resource.",
Packit 712bc5
                                     -1,
Packit 712bc5
                                     G_MAXINT64,
Packit 712bc5
                                     -1,
Packit 712bc5
                                     G_PARAM_READWRITE |
Packit 712bc5
                                     G_PARAM_STATIC_NAME |
Packit 712bc5
                                     G_PARAM_STATIC_NICK |
Packit 712bc5
                                     G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:clearTextsize:
Packit 712bc5
         *
Packit 712bc5
         * The size (in bytes) of this resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_CLEAR_TEXT_SIZE,
Packit 712bc5
                 g_param_spec_int64 ("cleartext-size",
Packit 712bc5
                                    "ClearTextSize",
Packit 712bc5
                                    "The clear text size (in bytes) of this resource.",
Packit 712bc5
                                    -1,
Packit 712bc5
                                    G_MAXLONG,
Packit 712bc5
                                    -1,
Packit 712bc5
                                    G_PARAM_READWRITE |
Packit 712bc5
                                    G_PARAM_STATIC_NAME |
Packit 712bc5
                                    G_PARAM_STATIC_NICK |
Packit 712bc5
                                    G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:dlna-namespace:
Packit 712bc5
         *
Packit 712bc5
         * Pointer to the DLNA metadata namespace registered with the
Packit 712bc5
         * resource object.
Packit 712bc5
         *
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_DLNA_NAMESPACE,
Packit 712bc5
                 g_param_spec_pointer ("dlna-namespace",
Packit 712bc5
                                       "XML namespace",
Packit 712bc5
                                       "Pointer to the DLNA metadata namespace "
Packit 712bc5
                                       "registered with the resource.",
Packit 712bc5
                                       G_PARAM_READWRITE |
Packit 712bc5
                                       G_PARAM_CONSTRUCT_ONLY |
Packit 712bc5
                                       G_PARAM_STATIC_NAME |
Packit 712bc5
                                       G_PARAM_STATIC_NICK |
Packit 712bc5
                                       G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:pv-namespace:
Packit 712bc5
         *
Packit 712bc5
         * Pointer to the PV metadata namespace registered with the
Packit 712bc5
         * resource object.
Packit 712bc5
         *
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_PV_NAMESPACE,
Packit 712bc5
                 g_param_spec_pointer ("pv-namespace",
Packit 712bc5
                                       "XML namespace",
Packit 712bc5
                                       "Pointer to the PV metadata namespace "
Packit 712bc5
                                       "registered with the resource.",
Packit 712bc5
                                       G_PARAM_READWRITE |
Packit 712bc5
                                       G_PARAM_CONSTRUCT_ONLY |
Packit 712bc5
                                       G_PARAM_STATIC_STRINGS));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:duration:
Packit 712bc5
         *
Packit 712bc5
         * The duration (in seconds) of this resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_DURATION,
Packit 712bc5
                 g_param_spec_long ("duration",
Packit 712bc5
                                    "Duration",
Packit 712bc5
                                    "The duration (in seconds) of this"
Packit 712bc5
                                    " resource.",
Packit 712bc5
                                    -1,
Packit 712bc5
                                    G_MAXLONG,
Packit 712bc5
                                    -1,
Packit 712bc5
                                    G_PARAM_READWRITE |
Packit 712bc5
                                    G_PARAM_STATIC_NAME |
Packit 712bc5
                                    G_PARAM_STATIC_NICK |
Packit 712bc5
                                    G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:bitrate:
Packit 712bc5
         *
Packit 712bc5
         * The bitrate of this resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_BITRATE,
Packit 712bc5
                 g_param_spec_int ("bitrate",
Packit 712bc5
                                   "Bitrate",
Packit 712bc5
                                   "The bitrate of this resource.",
Packit 712bc5
                                   -1,
Packit 712bc5
                                   G_MAXINT,
Packit 712bc5
                                   -1,
Packit 712bc5
                                   G_PARAM_READWRITE |
Packit 712bc5
                                   G_PARAM_STATIC_NAME |
Packit 712bc5
                                   G_PARAM_STATIC_NICK |
Packit 712bc5
                                   G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:sample-freq:
Packit 712bc5
         *
Packit 712bc5
         * The sample frequency of this resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_SAMPLE_FREQ,
Packit 712bc5
                 g_param_spec_int ("sample-freq",
Packit 712bc5
                                   "SampleFrequency",
Packit 712bc5
                                   "The sample frequency of this resource.",
Packit 712bc5
                                   -1,
Packit 712bc5
                                   G_MAXINT,
Packit 712bc5
                                   -1,
Packit 712bc5
                                   G_PARAM_READWRITE |
Packit 712bc5
                                   G_PARAM_STATIC_NAME |
Packit 712bc5
                                   G_PARAM_STATIC_NICK |
Packit 712bc5
                                   G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:bits-per-sample:
Packit 712bc5
         *
Packit 712bc5
         * The sample size of this resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_BITS_PER_SAMPLE,
Packit 712bc5
                 g_param_spec_int ("bits-per-sample",
Packit 712bc5
                                   "BitsPerSample",
Packit 712bc5
                                   "The sample size of this resource.",
Packit 712bc5
                                   -1,
Packit 712bc5
                                   G_MAXINT,
Packit 712bc5
                                   -1,
Packit 712bc5
                                   G_PARAM_READWRITE |
Packit 712bc5
                                   G_PARAM_STATIC_NAME |
Packit 712bc5
                                   G_PARAM_STATIC_NICK |
Packit 712bc5
                                   G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:protection:
Packit 712bc5
         *
Packit 712bc5
         * The protection system used for this resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_PROTECTION,
Packit 712bc5
                 g_param_spec_string ("protection",
Packit 712bc5
                                      "Protection",
Packit 712bc5
                                      "The protection system used by this"
Packit 712bc5
                                      " resource.",
Packit 712bc5
                                      NULL,
Packit 712bc5
                                      G_PARAM_READWRITE |
Packit 712bc5
                                      G_PARAM_STATIC_NAME |
Packit 712bc5
                                      G_PARAM_STATIC_NICK |
Packit 712bc5
                                      G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:audio-channels:
Packit 712bc5
         *
Packit 712bc5
         * The number of audio channels in this resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_AUDIO_CHANNELS,
Packit 712bc5
                 g_param_spec_int ("audio-channels",
Packit 712bc5
                                   "AudioChannels",
Packit 712bc5
                                   "The number of audio channels in this"
Packit 712bc5
                                   " resource.",
Packit 712bc5
                                   -1,
Packit 712bc5
                                   G_MAXINT,
Packit 712bc5
                                   -1,
Packit 712bc5
                                   G_PARAM_READWRITE |
Packit 712bc5
                                   G_PARAM_STATIC_NAME |
Packit 712bc5
                                   G_PARAM_STATIC_NICK |
Packit 712bc5
                                   G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:width:
Packit 712bc5
         *
Packit 712bc5
         * The width of this image/video resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_WIDTH,
Packit 712bc5
                 g_param_spec_int ("width",
Packit 712bc5
                                   "Width",
Packit 712bc5
                                   "The width of this image/video resource.",
Packit 712bc5
                                   -1,
Packit 712bc5
                                   G_MAXINT,
Packit 712bc5
                                   -1,
Packit 712bc5
                                   G_PARAM_READWRITE |
Packit 712bc5
                                   G_PARAM_STATIC_NAME |
Packit 712bc5
                                   G_PARAM_STATIC_NICK |
Packit 712bc5
                                   G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:height:
Packit 712bc5
         *
Packit 712bc5
         * The height of this image/video resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_HEIGHT,
Packit 712bc5
                 g_param_spec_int ("height",
Packit 712bc5
                                   "Height",
Packit 712bc5
                                   "The height of this image/video resource.",
Packit 712bc5
                                   -1,
Packit 712bc5
                                   G_MAXINT,
Packit 712bc5
                                   -1,
Packit 712bc5
                                   G_PARAM_READWRITE |
Packit 712bc5
                                   G_PARAM_STATIC_NAME |
Packit 712bc5
                                   G_PARAM_STATIC_NICK |
Packit 712bc5
                                   G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:color-depth:
Packit 712bc5
         *
Packit 712bc5
         * The color-depth of this image/video resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                (object_class,
Packit 712bc5
                 PROP_COLOR_DEPTH,
Packit 712bc5
                 g_param_spec_int ("color-depth",
Packit 712bc5
                                   "ColorDepth",
Packit 712bc5
                                   "The color-depth of this image/video"
Packit 712bc5
                                   " resource.",
Packit 712bc5
                                   -1,
Packit 712bc5
                                   G_MAXINT,
Packit 712bc5
                                   -1,
Packit 712bc5
                                   G_PARAM_READWRITE |
Packit 712bc5
                                   G_PARAM_STATIC_NAME |
Packit 712bc5
                                   G_PARAM_STATIC_NICK |
Packit 712bc5
                                   G_PARAM_STATIC_BLURB));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:update_count:
Packit 712bc5
         *
Packit 712bc5
         * The update count of this resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                       (object_class,
Packit 712bc5
                        PROP_UPDATE_COUNT,
Packit 712bc5
                        g_param_spec_uint ("update-count",
Packit 712bc5
                                           "UpdateCount",
Packit 712bc5
                                           "The update count of this resource.",
Packit 712bc5
                                           0,
Packit 712bc5
                                           G_MAXUINT,
Packit 712bc5
                                           0,
Packit 712bc5
                                           G_PARAM_READWRITE |
Packit 712bc5
                                           G_PARAM_STATIC_NAME |
Packit 712bc5
                                           G_PARAM_STATIC_NICK |
Packit 712bc5
                                           G_PARAM_STATIC_BLURB));
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:track-total:
Packit 712bc5
         *
Packit 712bc5
         * Number of tracks in a DIDL_S or DIDL_V resource.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                       (object_class,
Packit 712bc5
                        PROP_TRACK_TOTAL,
Packit 712bc5
                        g_param_spec_uint ("track-total",
Packit 712bc5
                                           "TrackTotal",
Packit 712bc5
                                           "The number of tracks of this "
Packit 712bc5
                                           "resource.",
Packit 712bc5
                                           0,
Packit 712bc5
                                           G_MAXUINT,
Packit 712bc5
                                           0,
Packit 712bc5
                                           G_PARAM_READWRITE |
Packit 712bc5
                                           G_PARAM_STATIC_STRINGS));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:subtitle-file-type:
Packit 712bc5
         *
Packit 712bc5
         * Type of external subtitle file. Usually SRT or SMI.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                        (object_class,
Packit 712bc5
                         PROP_SUBTITLE_FILE_TYPE,
Packit 712bc5
                         g_param_spec_string ("subtitle-file-type",
Packit 712bc5
                                              "Subtitle file type",
Packit 712bc5
                                              "Type of the external subtitle "
Packit 712bc5
                                              "file",
Packit 712bc5
                                              NULL,
Packit 712bc5
                                              G_PARAM_READWRITE |
Packit 712bc5
                                              G_PARAM_STATIC_STRINGS));
Packit 712bc5
Packit 712bc5
        /**
Packit 712bc5
         * GUPnPDIDLLiteResource:subtitle-file-uri:
Packit 712bc5
         *
Packit 712bc5
         * Uri to external subtitle file.
Packit 712bc5
         **/
Packit 712bc5
        g_object_class_install_property
Packit 712bc5
                        (object_class,
Packit 712bc5
                         PROP_SUBTITLE_FILE_TYPE,
Packit 712bc5
                         g_param_spec_string ("subtitle-file-uri",
Packit 712bc5
                                              "Subtitle file uri",
Packit 712bc5
                                              "Uri of the external subtitle "
Packit 712bc5
                                              "file",
Packit 712bc5
                                              NULL,
Packit 712bc5
                                              G_PARAM_READWRITE |
Packit 712bc5
                                              G_PARAM_STATIC_STRINGS));
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_new_from_xml:
Packit 712bc5
 * @xml_node: The pointer to 'res' node in XML document
Packit 712bc5
 * @xml_doc: The reference to XML document containing this resource
Packit 712bc5
 *
Packit 712bc5
 * Creates a new #GUPnPDIDLLiteResource for the @xml_node.
Packit 712bc5
 *
Packit 712bc5
 * Return value: A new #GUPnPDIDLLiteResource object. Unref after usage.
Packit 712bc5
 **/
Packit 712bc5
GUPnPDIDLLiteResource *
Packit 712bc5
gupnp_didl_lite_resource_new_from_xml (xmlNode       *xml_node,
Packit 712bc5
                                       GUPnPAVXMLDoc *xml_doc,
Packit 712bc5
                                       xmlNs         *dlna_ns,
Packit 712bc5
                                       xmlNs         *pv_ns)
Packit 712bc5
{
Packit 712bc5
        return g_object_new (GUPNP_TYPE_DIDL_LITE_RESOURCE,
Packit 712bc5
                             "xml-node", xml_node,
Packit 712bc5
                             "xml-doc", xml_doc,
Packit 712bc5
                             "dlna-namespace", dlna_ns,
Packit 712bc5
                             "pv-namespace", pv_ns,
Packit 712bc5
                             NULL);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_xml_node:
Packit 712bc5
 * @resource: The #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the pointer to res node in XML document.
Packit 712bc5
 *
Packit 712bc5
 * Returns: (transfer none): The pointer to res node in XML document.
Packit 712bc5
 **/
Packit 712bc5
xmlNode *
Packit 712bc5
gupnp_didl_lite_resource_get_xml_node (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL);
Packit 712bc5
Packit 712bc5
        return resource->priv->xml_node;
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_dlna_namespace:
Packit 712bc5
 * @resource: The #GUPnPDIDLLiteObject
Packit 712bc5
 *
Packit 712bc5
 * Get the pointer to the DLNA metadata namespace registered with the XML
Packit 712bc5
 * document containing this object.
Packit 712bc5
 *
Packit 712bc5
 * Returns: (transfer none): The pointer to DLNA namespace in XML document.
Packit 712bc5
 **/
Packit 712bc5
xmlNsPtr
Packit 712bc5
gupnp_didl_lite_resource_get_dlna_namespace (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL);
Packit 712bc5
Packit 712bc5
        return resource->priv->dlna_ns;
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_pv_namespace:
Packit 712bc5
 * @resource: The #GUPnPDIDLLiteObject
Packit 712bc5
 *
Packit 712bc5
 * Get the pointer to the DLNA metadata namespace registered with the XML
Packit 712bc5
 * document containing this object.
Packit 712bc5
 *
Packit 712bc5
 * Returns: (transfer none): The pointer to DLNA namespace in XML document.
Packit 712bc5
 **/
Packit 712bc5
xmlNsPtr
Packit 712bc5
gupnp_didl_lite_resource_get_pv_namespace (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL);
Packit 712bc5
Packit 712bc5
        return resource->priv->pv_ns;
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_uri:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the URI associated with the @resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The of URI the @resource or %NULL.
Packit 712bc5
 **/
Packit 712bc5
const char *
Packit 712bc5
gupnp_didl_lite_resource_get_uri (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL);
Packit 712bc5
Packit 712bc5
        if (G_UNLIKELY (resource->priv->xml_node->children == NULL))
Packit 712bc5
                return NULL;
Packit 712bc5
Packit 712bc5
        return (const char *) resource->priv->xml_node->children->content;
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_import_uri:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the import URI associated with the @resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The import URI or %NULL.
Packit 712bc5
 **/
Packit 712bc5
const char *
Packit 712bc5
gupnp_didl_lite_resource_get_import_uri (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL);
Packit 712bc5
Packit 712bc5
        return xml_util_get_attribute_content (resource->priv->xml_node,
Packit 712bc5
                                               "importUri");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_protocol_info:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the protocol info associated with the @resource.
Packit 712bc5
 *
Packit 712bc5
 * Returns: (transfer none): The protocol info associated with the @resource or %NULL. The
Packit 712bc5
 * returned object must not be unrefed.
Packit 712bc5
 **/
Packit 712bc5
GUPnPProtocolInfo *
Packit 712bc5
gupnp_didl_lite_resource_get_protocol_info (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        GUPnPProtocolInfo *info;
Packit 712bc5
        const char *protocol_info;
Packit 712bc5
        GError *error;
Packit 712bc5
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL);
Packit 712bc5
Packit 712bc5
        if (resource->priv->protocol_info != NULL)
Packit 712bc5
                return resource->priv->protocol_info;
Packit 712bc5
Packit 712bc5
        protocol_info = xml_util_get_attribute_content
Packit 712bc5
                                        (resource->priv->xml_node,
Packit 712bc5
                                         "protocolInfo");
Packit 712bc5
        if (protocol_info == NULL)
Packit 712bc5
                return NULL;
Packit 712bc5
Packit 712bc5
        error = NULL;
Packit 712bc5
        info = gupnp_protocol_info_new_from_string (protocol_info, &error);
Packit 712bc5
        if (info == NULL) {
Packit 712bc5
                g_warning ("Error parsing protocolInfo '%s': %s",
Packit 712bc5
                           protocol_info,
Packit 712bc5
                           error->message);
Packit 712bc5
Packit 712bc5
                g_error_free (error);
Packit 712bc5
        }
Packit 712bc5
Packit 712bc5
        resource->priv->protocol_info = info;
Packit 712bc5
Packit 712bc5
        return info;
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_size:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the size (in bytes) of the @resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The size (in bytes) of the @resource or -1.
Packit 712bc5
 **/
Packit 712bc5
glong
Packit 712bc5
gupnp_didl_lite_resource_get_size (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
    return (glong) gupnp_didl_lite_resource_get_size64 (resource);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_size64:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the size (in bytes) of the @resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The size (in bytes) of the @resource or -1.
Packit 712bc5
 **/
Packit 712bc5
gint64
Packit 712bc5
gupnp_didl_lite_resource_get_size64 (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1);
Packit 712bc5
Packit 712bc5
        return xml_util_get_int64_attribute (resource->priv->xml_node,
Packit 712bc5
                                             "size",
Packit 712bc5
                                             -1);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_cleartext_size:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the size (in bytes) of the @resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The size (in bytes) of the @resource or -1.
Packit 712bc5
 **/
Packit 712bc5
gint64
Packit 712bc5
gupnp_didl_lite_resource_get_cleartext_size (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1);
Packit 712bc5
Packit 712bc5
        return xml_util_get_int64_attribute (resource->priv->xml_node,
Packit 712bc5
                                             "cleartextSize",
Packit 712bc5
                                             -1);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_duration:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the duration (in seconds) of the @resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The duration (in seconds) of the @resource or -1.
Packit 712bc5
 **/
Packit 712bc5
glong
Packit 712bc5
gupnp_didl_lite_resource_get_duration (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        const char *duration_str;
Packit 712bc5
        long duration;
Packit 712bc5
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1);
Packit 712bc5
Packit 712bc5
        duration_str = xml_util_get_attribute_content (resource->priv->xml_node,
Packit 712bc5
                                                       "duration");
Packit 712bc5
        duration = seconds_from_time (duration_str);
Packit 712bc5
Packit 712bc5
        return duration;
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_bitrate:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the bitrate (in bytes per second) of the @resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The bitrate (in bytes per second) of the @resource or -1.
Packit 712bc5
 **/
Packit 712bc5
int
Packit 712bc5
gupnp_didl_lite_resource_get_bitrate (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1);
Packit 712bc5
Packit 712bc5
        return xml_util_get_long_attribute (resource->priv->xml_node,
Packit 712bc5
                                            "bitrate",
Packit 712bc5
                                            -1);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_sample_freq:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the sample frequency of the @resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The sample frequency of the @resource or -1.
Packit 712bc5
 **/
Packit 712bc5
int
Packit 712bc5
gupnp_didl_lite_resource_get_sample_freq (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1);
Packit 712bc5
Packit 712bc5
        return xml_util_get_long_attribute (resource->priv->xml_node,
Packit 712bc5
                                            "sampleFrequency",
Packit 712bc5
                                            -1);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_bits_per_sample:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the sample size of the @resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The number of bits per sample of the @resource or -1.
Packit 712bc5
 **/
Packit 712bc5
int
Packit 712bc5
gupnp_didl_lite_resource_get_bits_per_sample (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1);
Packit 712bc5
Packit 712bc5
        return xml_util_get_long_attribute (resource->priv->xml_node,
Packit 712bc5
                                            "bitsPerSample",
Packit 712bc5
                                            -1);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_protection:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the protection system used by the @resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The protection system in use by the @resource or %NULL.
Packit 712bc5
 **/
Packit 712bc5
const char *
Packit 712bc5
gupnp_didl_lite_resource_get_protection (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL);
Packit 712bc5
Packit 712bc5
        return xml_util_get_attribute_content (resource->priv->xml_node,
Packit 712bc5
                                               "protection");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_audio_channels:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the number of audio channels in the @resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The number of audio channels in the @resource or -1.
Packit 712bc5
 **/
Packit 712bc5
int
Packit 712bc5
gupnp_didl_lite_resource_get_audio_channels (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1);
Packit 712bc5
Packit 712bc5
        return xml_util_get_long_attribute (resource->priv->xml_node,
Packit 712bc5
                                            "nrAudioChannels",
Packit 712bc5
                                            -1);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_width:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the width of this image/video resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The width of this image/video resource or -1.
Packit 712bc5
 **/
Packit 712bc5
int
Packit 712bc5
gupnp_didl_lite_resource_get_width (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        int width = -1;
Packit 712bc5
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1);
Packit 712bc5
Packit 712bc5
        get_resolution_info (resource, &width, NULL);
Packit 712bc5
Packit 712bc5
        return width;
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_height:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the height of this image/video resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The height of the @resource or -1.
Packit 712bc5
 **/
Packit 712bc5
int
Packit 712bc5
gupnp_didl_lite_resource_get_height (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        int height = -1;
Packit 712bc5
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1);
Packit 712bc5
Packit 712bc5
        get_resolution_info (resource, NULL, &height);
Packit 712bc5
Packit 712bc5
        return height;
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_color_depth:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the color-depth of this image/video resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The color depth of the @resource or -1.
Packit 712bc5
 **/
Packit 712bc5
int
Packit 712bc5
gupnp_didl_lite_resource_get_color_depth (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1);
Packit 712bc5
Packit 712bc5
        return xml_util_get_long_attribute (resource->priv->xml_node,
Packit 712bc5
                                            "colorDepth",
Packit 712bc5
                                            -1);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_update_count:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the update count of this resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The update count of the @resource.
Packit 712bc5
 **/
Packit 712bc5
guint
Packit 712bc5
gupnp_didl_lite_resource_get_update_count (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), 0);
Packit 712bc5
Packit 712bc5
        return xml_util_get_uint_attribute (resource->priv->xml_node,
Packit 712bc5
                                            "updateCount",
Packit 712bc5
                                            -1);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_track_total:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Get the total track count of this resource.
Packit 712bc5
 *
Packit 712bc5
 * Return value: The total track count of the @resource.
Packit 712bc5
 **/
Packit 712bc5
guint
Packit 712bc5
gupnp_didl_lite_resource_get_track_total (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), 0);
Packit 712bc5
Packit 712bc5
        return xml_util_get_uint_attribute (resource->priv->xml_node,
Packit 712bc5
                                            "trackTotal",
Packit 712bc5
                                            -1);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_update_count_is_set:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Check whether the update count property of this resource is set.
Packit 712bc5
 *
Packit 712bc5
 * Return value: %TRUE if set, otherwise %FALSE.
Packit 712bc5
 **/
Packit 712bc5
gboolean
Packit 712bc5
gupnp_didl_lite_resource_update_count_is_set (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        const char *content;
Packit 712bc5
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), FALSE);
Packit 712bc5
Packit 712bc5
        content = xml_util_get_attribute_content (resource->priv->xml_node,
Packit 712bc5
                                                  "updateCount");
Packit 712bc5
        return content != NULL;
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_track_total_is_set:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Check whether the total track count property of this resource is set.
Packit 712bc5
 *
Packit 712bc5
 * Return value: %TRUE if set, otherwise %FALSE.
Packit 712bc5
 **/
Packit 712bc5
gboolean
Packit 712bc5
gupnp_didl_lite_resource_track_total_is_set (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        const char *content;
Packit 712bc5
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), FALSE);
Packit 712bc5
Packit 712bc5
        content = xml_util_get_attribute_content (resource->priv->xml_node,
Packit 712bc5
                                                  "trackTotal");
Packit 712bc5
        return content != NULL;
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_uri:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @uri: The URI as string
Packit 712bc5
 *
Packit 712bc5
 * Set the URI associated with the @resource.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_uri (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                  const char            *uri)
Packit 712bc5
{
Packit 712bc5
        xmlChar *escaped;
Packit 712bc5
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
        g_return_if_fail (uri != NULL);
Packit 712bc5
Packit 712bc5
        escaped = xmlEncodeSpecialChars (resource->priv->xml_doc->doc,
Packit 712bc5
                                         (const unsigned char *) uri);
Packit 712bc5
        xmlNodeSetContent (resource->priv->xml_node, escaped);
Packit 712bc5
        xmlFree (escaped);
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "uri");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_import_uri:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @import_uri: The URI as string
Packit 712bc5
 *
Packit 712bc5
 * Set the import URI associated with the @resource.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_import_uri (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                         const char            *import_uri)
Packit 712bc5
{
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        xmlSetProp (resource->priv->xml_node,
Packit 712bc5
                    (unsigned char *) "importUri",
Packit 712bc5
                    (unsigned char *) import_uri);
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "import-uri");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_protocol_info:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @info: The protocol string
Packit 712bc5
 *
Packit 712bc5
 * Set the protocol info associated with the @resource.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_protocol_info (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                            GUPnPProtocolInfo     *info)
Packit 712bc5
{
Packit 712bc5
        char *str;
Packit 712bc5
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
        g_return_if_fail (GUPNP_IS_PROTOCOL_INFO (info));
Packit 712bc5
Packit 712bc5
        str = gupnp_protocol_info_to_string (info);
Packit 712bc5
        xmlSetProp (resource->priv->xml_node,
Packit 712bc5
                    (unsigned char *) "protocolInfo",
Packit 712bc5
                    (unsigned char *) str);
Packit 712bc5
        g_free (str);
Packit 712bc5
Packit 712bc5
        /* Get a ref first in case it's the same object that we already have */
Packit 712bc5
        g_object_ref (info);
Packit 712bc5
        if (resource->priv->protocol_info != NULL)
Packit 712bc5
                g_object_unref (resource->priv->protocol_info);
Packit 712bc5
        resource->priv->protocol_info = info;
Packit 712bc5
Packit 712bc5
        /* We need to listen to changes to properties so we update the
Packit 712bc5
         * corresponding xml property.
Packit 712bc5
         */
Packit 712bc5
        g_signal_handlers_disconnect_by_func (info,
Packit 712bc5
                                              on_protocol_info_changed,
Packit 712bc5
                                              resource);
Packit 712bc5
        g_signal_connect (info,
Packit 712bc5
                          "notify",
Packit 712bc5
                          G_CALLBACK (on_protocol_info_changed),
Packit 712bc5
                          resource);
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "protocol-info");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_size:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @size: The size (in bytes)
Packit 712bc5
 *
Packit 712bc5
 * Set the size (in bytes) of the @resource. Passing a negative number will
Packit 712bc5
 * unset this property.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_size (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                   glong                  size)
Packit 712bc5
{
Packit 712bc5
        gupnp_didl_lite_resource_set_size64 (resource, size);
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_size64:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @size: The size (in bytes)
Packit 712bc5
 *
Packit 712bc5
 * Set the size (in bytes) of the @resource. Passing a negative number will
Packit 712bc5
 * unset this property.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_size64 (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                     gint64                 size)
Packit 712bc5
{
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        if (size < 0)
Packit 712bc5
                xmlUnsetProp (resource->priv->xml_node,
Packit 712bc5
                              (unsigned char *) "size");
Packit 712bc5
        else {
Packit 712bc5
                char *str;
Packit 712bc5
Packit 712bc5
                str = g_strdup_printf ("%" G_GINT64_FORMAT, size);
Packit 712bc5
                xmlSetProp (resource->priv->xml_node,
Packit 712bc5
                            (unsigned char *) "size",
Packit 712bc5
                            (unsigned char *) str);
Packit 712bc5
                g_free (str);
Packit 712bc5
        }
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "size64");
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "size");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_cleartext_size:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @cleartext_size: The size (in bytes)
Packit 712bc5
 *
Packit 712bc5
 * Set the size (in bytes) of the @resource. Passing a negative number will
Packit 712bc5
 * unset this property.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_cleartext_size
Packit 712bc5
                                        (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                         gint64                 cleartext_size)
Packit 712bc5
{
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        if (cleartext_size < 0)
Packit 712bc5
                xmlUnsetNsProp (resource->priv->xml_node,
Packit 712bc5
                                resource->priv->dlna_ns,
Packit 712bc5
                                (unsigned char *) "cleartextSize");
Packit 712bc5
        else {
Packit 712bc5
                char *str;
Packit 712bc5
                str = g_strdup_printf ("%" G_GINT64_FORMAT, cleartext_size);
Packit 712bc5
                xml_util_get_ns (resource->priv->xml_doc->doc,
Packit 712bc5
                                 GUPNP_XML_NAMESPACE_DLNA,
Packit 712bc5
                                 &(resource->priv->dlna_ns));
Packit 712bc5
Packit 712bc5
                xmlSetNsProp (resource->priv->xml_node,
Packit 712bc5
                              resource->priv->dlna_ns,
Packit 712bc5
                              (unsigned char *) "cleartextSize",
Packit 712bc5
                              (unsigned char *) str);
Packit 712bc5
Packit 712bc5
                g_free (str);
Packit 712bc5
        }
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "cleartext-size");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_duration:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @duration: The duration (in seconds)
Packit 712bc5
 *
Packit 712bc5
 * Set the duration (in seconds) of the @resource. Passing a negative number
Packit 712bc5
 * will unset this property.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_duration (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                       glong                  duration)
Packit 712bc5
{
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        if (duration < 0)
Packit 712bc5
                xmlUnsetProp (resource->priv->xml_node,
Packit 712bc5
                              (unsigned char *) "duration");
Packit 712bc5
        else {
Packit 712bc5
                char *str;
Packit 712bc5
Packit 712bc5
                str = seconds_to_time (duration);
Packit 712bc5
                xmlSetProp (resource->priv->xml_node,
Packit 712bc5
                            (unsigned char *) "duration",
Packit 712bc5
                            (unsigned char *) str);
Packit 712bc5
                g_free (str);
Packit 712bc5
        }
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "duration");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_bitrate:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @bitrate: The bitrate
Packit 712bc5
 *
Packit 712bc5
 * Set the bitrate (in bytes per second) of the @resource. Passing a negative
Packit 712bc5
 * number will unset this property.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_bitrate (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                      int                    bitrate)
Packit 712bc5
{
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        if (bitrate < 0)
Packit 712bc5
                xmlUnsetProp (resource->priv->xml_node,
Packit 712bc5
                              (unsigned char *) "bitrate");
Packit 712bc5
        else {
Packit 712bc5
                char *str;
Packit 712bc5
Packit 712bc5
                str = g_strdup_printf ("%d", bitrate);
Packit 712bc5
                xmlSetProp (resource->priv->xml_node,
Packit 712bc5
                            (unsigned char *) "bitrate",
Packit 712bc5
                            (unsigned char *) str);
Packit 712bc5
                g_free (str);
Packit 712bc5
        }
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "bitrate");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_sample_freq:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @sample_freq: The sample frequency
Packit 712bc5
 *
Packit 712bc5
 * Set the sample frequency of the @resource. Passing a negative number will
Packit 712bc5
 * unset this property.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_sample_freq (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                          int                    sample_freq)
Packit 712bc5
{
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        if (sample_freq < 0)
Packit 712bc5
                xmlUnsetProp (resource->priv->xml_node,
Packit 712bc5
                              (unsigned char *) "sampleFrequency");
Packit 712bc5
        else {
Packit 712bc5
                char *str;
Packit 712bc5
Packit 712bc5
                str = g_strdup_printf ("%d", sample_freq);
Packit 712bc5
                xmlSetProp (resource->priv->xml_node,
Packit 712bc5
                            (unsigned char *) "sampleFrequency",
Packit 712bc5
                            (unsigned char *) str);
Packit 712bc5
                g_free (str);
Packit 712bc5
        }
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "sample-freq");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_bits_per_sample:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @sample_size: The number of bits per sample
Packit 712bc5
 *
Packit 712bc5
 * Set the sample size of the @resource. Passing a negative number will unset
Packit 712bc5
 * this property.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_bits_per_sample
Packit 712bc5
                                        (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                         int                    sample_size)
Packit 712bc5
{
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        if (sample_size < 0)
Packit 712bc5
                xmlUnsetProp (resource->priv->xml_node,
Packit 712bc5
                              (unsigned char *) "bitsPerSample");
Packit 712bc5
        else {
Packit 712bc5
                char *str;
Packit 712bc5
Packit 712bc5
                str = g_strdup_printf ("%d", sample_size);
Packit 712bc5
                xmlSetProp (resource->priv->xml_node,
Packit 712bc5
                            (unsigned char *) "bitsPerSample",
Packit 712bc5
                            (unsigned char *) str);
Packit 712bc5
                g_free (str);
Packit 712bc5
        }
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "bits-per-sample");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_protection:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @protection: The protection system identifier as string
Packit 712bc5
 *
Packit 712bc5
 * Set the protection system used by the @resource. Passing a negative number
Packit 712bc5
 * will unset this property.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_protection (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                         const char            *protection)
Packit 712bc5
{
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        xmlSetProp (resource->priv->xml_node,
Packit 712bc5
                    (unsigned char *) "protection",
Packit 712bc5
                    (unsigned char *) protection);
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "protection");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_audio_channels:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @n_channels: The number of channels
Packit 712bc5
 *
Packit 712bc5
 * Set the number of audio channels in the @resource. Passing a negative number
Packit 712bc5
 * will unset this property.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_audio_channels (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                             int                    n_channels)
Packit 712bc5
{
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        if (n_channels < 0)
Packit 712bc5
                xmlUnsetProp (resource->priv->xml_node,
Packit 712bc5
                              (unsigned char *) "nrAudioChannels");
Packit 712bc5
        else {
Packit 712bc5
                char *str;
Packit 712bc5
Packit 712bc5
                str = g_strdup_printf ("%d", n_channels);
Packit 712bc5
                xmlSetProp (resource->priv->xml_node,
Packit 712bc5
                            (unsigned char *) "nrAudioChannels",
Packit 712bc5
                            (unsigned char *) str);
Packit 712bc5
                g_free (str);
Packit 712bc5
        }
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "audio-channels");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_width:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @width: The width
Packit 712bc5
 *
Packit 712bc5
 * Set the width of this image/video resource. Setting both width and height to
Packit 712bc5
 * a negative number will unset the resolution property.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_width (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                     int                   width)
Packit 712bc5
{
Packit 712bc5
        char *resolution;
Packit 712bc5
        int height = -1;
Packit 712bc5
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        get_resolution_info (resource, NULL, &height);
Packit 712bc5
Packit 712bc5
        if (width < 0 && height < 0)
Packit 712bc5
                xmlUnsetProp (resource->priv->xml_node,
Packit 712bc5
                              (unsigned char *) "resolution");
Packit 712bc5
        else {
Packit 712bc5
                resolution = g_strdup_printf ("%dx%d", width, height);
Packit 712bc5
                xmlSetProp (resource->priv->xml_node,
Packit 712bc5
                            (unsigned char *) "resolution",
Packit 712bc5
                            (unsigned char *) resolution);
Packit 712bc5
                g_free (resolution);
Packit 712bc5
        }
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "width");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_height:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @height: The height
Packit 712bc5
 *
Packit 712bc5
 * Set the height of this image/video resource. Setting both width and height to
Packit 712bc5
 * a negative number will unset the resolution property.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_height (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                     int                    height)
Packit 712bc5
{
Packit 712bc5
        int width = -1;
Packit 712bc5
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        get_resolution_info (resource, &width, NULL);
Packit 712bc5
Packit 712bc5
        if (width < 0 && height < 0)
Packit 712bc5
                xmlUnsetProp (resource->priv->xml_node,
Packit 712bc5
                              (unsigned char *) "resolution");
Packit 712bc5
        else {
Packit 712bc5
                char *resolution;
Packit 712bc5
Packit 712bc5
                resolution = g_strdup_printf ("%dx%d", width, height);
Packit 712bc5
                xmlSetProp (resource->priv->xml_node,
Packit 712bc5
                                (unsigned char *) "resolution",
Packit 712bc5
                                (unsigned char *) resolution);
Packit 712bc5
                g_free (resolution);
Packit 712bc5
        }
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "height");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_color_depth:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @color_depth: The color-depth
Packit 712bc5
 *
Packit 712bc5
 * Set the color-depth of this image/video resource. Passing a negative number
Packit 712bc5
 * will unset this property.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_color_depth (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                          int                    color_depth)
Packit 712bc5
{
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        if (color_depth < 0)
Packit 712bc5
                xmlUnsetProp (resource->priv->xml_node,
Packit 712bc5
                              (unsigned char *) "colorDepth");
Packit 712bc5
        else {
Packit 712bc5
                char *str;
Packit 712bc5
Packit 712bc5
                str = g_strdup_printf ("%d", color_depth);
Packit 712bc5
                xmlSetProp (resource->priv->xml_node,
Packit 712bc5
                            (unsigned char *) "colorDepth",
Packit 712bc5
                            (unsigned char *) str);
Packit 712bc5
                g_free (str);
Packit 712bc5
        }
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "color-depth");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_update_count:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @update_count: The update_count
Packit 712bc5
 *
Packit 712bc5
 * Set the update count of this resource.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_update_count (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                          guint                  update_count)
Packit 712bc5
{
Packit 712bc5
        char *str;
Packit 712bc5
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        str = g_strdup_printf ("%u", update_count);
Packit 712bc5
        xmlSetProp (resource->priv->xml_node,
Packit 712bc5
                    (unsigned char *) "updateCount",
Packit 712bc5
                    (unsigned char *) str);
Packit 712bc5
        g_free (str);
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "update-count");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_track_total:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @track_total: The total number of tracks in this resource
Packit 712bc5
 *
Packit 712bc5
 * Set the total number of tracks in this resource.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_track_total (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                          guint                  track_total)
Packit 712bc5
{
Packit 712bc5
        char *str;
Packit 712bc5
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        xml_util_get_ns (resource->priv->xml_doc->doc,
Packit 712bc5
                         GUPNP_XML_NAMESPACE_DLNA,
Packit 712bc5
                         &(resource->priv->dlna_ns));
Packit 712bc5
Packit 712bc5
        str = g_strdup_printf ("%u", track_total);
Packit 712bc5
        xmlSetNsProp (resource->priv->xml_node,
Packit 712bc5
                      resource->priv->dlna_ns,
Packit 712bc5
                      (unsigned char *) "trackTotal",
Packit 712bc5
                      (unsigned char *) str);
Packit 712bc5
        g_free (str);
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "track-total");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_unset_update_count:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Unset the update count of this resource.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_unset_update_count (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        xmlUnsetProp (resource->priv->xml_node,
Packit 712bc5
                      (unsigned char *) "updateCount");
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "update-count");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_unset_track_total:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Unset the total track count of this resource.
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_unset_track_total (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        xmlUnsetNsProp (resource->priv->xml_node,
Packit 712bc5
                        resource->priv->dlna_ns,
Packit 712bc5
                        (unsigned char *) "trackTotal");
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "track-total");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_subtitle_file_uri:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Returns: The content of the subtitleFileUri property or %NULL when not set.
Packit 712bc5
 *
Packit 712bc5
 * Since: 0.12.4
Packit 712bc5
 **/
Packit 712bc5
const char *
Packit 712bc5
gupnp_didl_lite_resource_get_subtitle_file_uri
Packit 712bc5
                                        (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL);
Packit 712bc5
Packit 712bc5
        return xml_util_get_attribute_content (resource->priv->xml_node,
Packit 712bc5
                                               "subtitleFileUri");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_get_subtitle_file_type:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 *
Packit 712bc5
 * Returns: The content of the subtitleFileType property or %NULL
Packit 712bc5
 *
Packit 712bc5
 * Since: 0.12.4
Packit 712bc5
 **/
Packit 712bc5
const char *
Packit 712bc5
gupnp_didl_lite_resource_get_subtitle_file_type
Packit 712bc5
                                        (GUPnPDIDLLiteResource *resource)
Packit 712bc5
{
Packit 712bc5
        g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL);
Packit 712bc5
Packit 712bc5
        return xml_util_get_attribute_content (resource->priv->xml_node,
Packit 712bc5
                                               "subtitleFileType");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_subtitle_file_uri:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @uri: (allow-none):  An URI to an external subtitle file or %NULL to remove.
Packit 712bc5
 *
Packit 712bc5
 * Set the URI of an external subtitle file to be used with this resource.
Packit 712bc5
 * When @uri is %NULL the value is removed.
Packit 712bc5
 *
Packit 712bc5
 * Since: 0.12.4
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_subtitle_file_uri
Packit 712bc5
                                        (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                         const char            *uri)
Packit 712bc5
{
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        if (uri == NULL)
Packit 712bc5
                xmlUnsetNsProp (resource->priv->xml_node,
Packit 712bc5
                                resource->priv->pv_ns,
Packit 712bc5
                                (unsigned char *) "subtitleFileUri");
Packit 712bc5
        else {
Packit 712bc5
                xml_util_get_ns (resource->priv->xml_doc->doc,
Packit 712bc5
                                 GUPNP_XML_NAMESPACE_PV,
Packit 712bc5
                                 &(resource->priv->pv_ns));
Packit 712bc5
                xmlSetNsProp (resource->priv->xml_node,
Packit 712bc5
                              resource->priv->pv_ns,
Packit 712bc5
                              (unsigned char *) "subtitleFileUri",
Packit 712bc5
                              (unsigned char *) uri);
Packit 712bc5
        }
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "subtitle-file-uri");
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
/**
Packit 712bc5
 * gupnp_didl_lite_resource_set_subtitle_file_type:
Packit 712bc5
 * @resource: A #GUPnPDIDLLiteResource
Packit 712bc5
 * @type: (allow-none): An URI to an external subtitle file
Packit 712bc5
 *
Packit 712bc5
 * Set the type of an external subtitle file, specified via
Packit 712bc5
 * pv:subtitleFileUri using gupnp_didl_lite_resource_set_subtitle_file_uri().
Packit 712bc5
 *
Packit 712bc5
 * When @type is %NULL the value is removed.
Packit 712bc5
 *
Packit 712bc5
 * Since: 0.12.4
Packit 712bc5
 **/
Packit 712bc5
void
Packit 712bc5
gupnp_didl_lite_resource_set_subtitle_file_type
Packit 712bc5
                                        (GUPnPDIDLLiteResource *resource,
Packit 712bc5
                                         const char            *type)
Packit 712bc5
{
Packit 712bc5
        g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource));
Packit 712bc5
Packit 712bc5
        if (type == NULL)
Packit 712bc5
                xmlUnsetNsProp (resource->priv->xml_node,
Packit 712bc5
                                resource->priv->pv_ns,
Packit 712bc5
                                (unsigned char *) "subtitleFileUri");
Packit 712bc5
        else {
Packit 712bc5
                xml_util_get_ns (resource->priv->xml_doc->doc,
Packit 712bc5
                                 GUPNP_XML_NAMESPACE_PV,
Packit 712bc5
                                 &(resource->priv->pv_ns));
Packit 712bc5
Packit 712bc5
                xmlSetNsProp (resource->priv->xml_node,
Packit 712bc5
                              resource->priv->pv_ns,
Packit 712bc5
                              (unsigned char *) "subtitleFileType",
Packit 712bc5
                              (unsigned char *) type);
Packit 712bc5
        }
Packit 712bc5
Packit 712bc5
        g_object_notify (G_OBJECT (resource), "subtitle-file-type");
Packit 712bc5
}