summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRegis Merlino <regis.merlino@intel.com>2013-06-10 15:05:20 +0200
committerRegis Merlino <regis.merlino@intel.com>2013-06-10 15:05:20 +0200
commitb7a43fec95a00045277700a3ff4fd5d118157428 (patch)
tree737d655ead40aee89949dfc67d403a8399a2d90f
parent947a8d253be4b4b167a6af77937bad3efc3b9de2 (diff)
downloadGUPnP-DLNA-b7a43fec95a00045277700a3ff4fd5d118157428.tar.gz
GUPnP-DLNA-b7a43fec95a00045277700a3ff4fd5d118157428.tar.bz2
GUPnP-DLNA-b7a43fec95a00045277700a3ff4fd5d118157428.zip
Update gupnp-dlna to 0.10.2 (34fee04)
-rw-r--r--Makefile.in1
-rw-r--r--NEWS29
-rwxr-xr-xconfigure117
-rw-r--r--configure.ac28
-rw-r--r--data/Makefile.am7
-rw-r--r--data/Makefile.in6
-rw-r--r--data/aac.xml6
-rw-r--r--data/mpeg-common.xml158
-rw-r--r--data/mpeg-ps.xml203
-rw-r--r--data/mpeg-ts.xml249
-rw-r--r--data/png.xml3
-rw-r--r--doc/Makefile.in1
-rw-r--r--doc/gupnp-dlna-gst/Makefile.in1
-rw-r--r--doc/gupnp-dlna-gst/html/ch01.html2
-rw-r--r--doc/gupnp-dlna-gst/html/index.html4
-rw-r--r--doc/gupnp-dlna-metadata/Makefile.in1
-rw-r--r--doc/gupnp-dlna-metadata/html/GUPnPDLNAMetadataExtractor.html27
-rw-r--r--doc/gupnp-dlna-metadata/html/ch01.html2
-rw-r--r--doc/gupnp-dlna-metadata/html/index.html4
-rw-r--r--doc/gupnp-dlna/Makefile.in1
-rw-r--r--doc/gupnp-dlna/gupnp-dlna-sections.txt1
-rw-r--r--doc/gupnp-dlna/html/GUPnPDLNAInformation.html34
-rw-r--r--doc/gupnp-dlna/html/ch01.html6
-rw-r--r--doc/gupnp-dlna/html/gupnp-dlna.devhelp21
-rw-r--r--doc/gupnp-dlna/html/index.html4
-rw-r--r--doc/gupnp-dlna/html/index.sgml1
-rw-r--r--doc/version.xml2
-rw-r--r--libgupnp-dlna/Makefile.in1
-rw-r--r--libgupnp-dlna/gupnp-dlna-information.c22
-rw-r--r--libgupnp-dlna/gupnp-dlna-information.h10
-rw-r--r--libgupnp-dlna/gupnp-dlna-profile-guesser.c21
-rw-r--r--libgupnp-dlna/metadata-backends/gstreamer/gupnp-dlna-gst-audio-information.c32
-rw-r--r--libgupnp-dlna/metadata/gupnp-dlna-metadata-extractor.c23
-rw-r--r--m4/vapigen.m46
-rw-r--r--packaging/GUPnP-DLNA.spec22
-rw-r--r--tests/Makefile.am8
-rw-r--r--tests/Makefile.in145
-rw-r--r--tools/Makefile.in1
-rw-r--r--vala/GUPnPDLNAGst-2.0.metadata1
-rw-r--r--vala/Makefile.in1
-rw-r--r--vala/gupnp-dlna-gst-2.0-custom.vala2
-rw-r--r--vala/gupnp-dlna-gst-2.0.deps3
42 files changed, 943 insertions, 254 deletions
diff --git a/Makefile.in b/Makefile.in
index 6271cb0..84846c1 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -280,6 +280,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
VAPIGEN = @VAPIGEN@
VERSION = @VERSION@
+XMLLINT = @XMLLINT@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
diff --git a/NEWS b/NEWS
index 379cac8..28ca81e 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,32 @@
+0.10.2
+======
+- Fix vapi generation with GObject-introspection >= 1.36.
+- Minor build clean-up.
+- Check the XML profiles against their schema on make check-profiles.
+- Re-enable some of the old tests on make check.
+- Fix format detection for ADTS audio streams.
+- Fix WMA bitrate detection.
+- Fix gtk-doc warnings.
+
+Profiles:
+- Fix MPEG_TS_*_EU audio profiles to include proper bitrates and audio
+ formats.
+- Remove depth matching in PNG profiles.
+- Fix AAC level for MULT5 AAC.
+- Add MPEG_TS_{SD,HD}_{EU,NA} profiles.
+- Add MPEG_PS_{NTSC,PAL} profiles.
+
+All contributors to this release:
+ Jens Georg <jensg@openismus.com>
+
+0.10.1
+======
+- Add functionality to let the meta-data back-end provide a profile on its
+ own.
+
+All contributors to this release:
+ Jens Georg <jensg@openismus.com>
+
0.10.0
======
- Various fixes for the GStreamer 0.10 meta-data back-end.
diff --git a/configure b/configure
index b9cfb00..8474811 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for gupnp-dlna 0.10.0.
+# Generated by GNU Autoconf 2.69 for gupnp-dlna 0.10.2.
#
# Report bugs to <https://bugzilla.gnome.org/enter_bug.cgi?product=gupnp&component=gupnp-dlna>.
#
@@ -651,8 +651,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='gupnp-dlna'
PACKAGE_TARNAME='gupnp-dlna'
-PACKAGE_VERSION='0.10.0'
-PACKAGE_STRING='gupnp-dlna 0.10.0'
+PACKAGE_VERSION='0.10.2'
+PACKAGE_STRING='gupnp-dlna 0.10.2'
PACKAGE_BUGREPORT='https://bugzilla.gnome.org/enter_bug.cgi?product=gupnp&component=gupnp-dlna'
PACKAGE_URL='http://www.gupnp.org/'
@@ -697,6 +697,9 @@ ac_subst_vars='am__EXEEXT_FALSE
am__EXEEXT_TRUE
LTLIBOBJS
LIBOBJS
+HAVE_XMLLINT_FALSE
+HAVE_XMLLINT_TRUE
+XMLLINT
GLIB_PREFIX
GTK_DOC_USE_REBASE_FALSE
GTK_DOC_USE_REBASE_TRUE
@@ -1465,7 +1468,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures gupnp-dlna 0.10.0 to adapt to many kinds of systems.
+\`configure' configures gupnp-dlna 0.10.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1535,7 +1538,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of gupnp-dlna 0.10.0:";;
+ short | recursive ) echo "Configuration of gupnp-dlna 0.10.2:";;
esac
cat <<\_ACEOF
@@ -1693,7 +1696,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-gupnp-dlna configure 0.10.0
+gupnp-dlna configure 0.10.2
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1971,7 +1974,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by gupnp-dlna $as_me 0.10.0, which was
+It was created by gupnp-dlna $as_me 0.10.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2792,7 +2795,7 @@ fi
# Define the identity of the package.
PACKAGE='gupnp-dlna'
- VERSION='0.10.0'
+ VERSION='0.10.2'
cat >>confdefs.h <<_ACEOF
@@ -12904,13 +12907,6 @@ $as_echo "yes" >&6; }
fi
-
-
-
-
-
-
-
# Check for g_clear_pointer
have_g_clear_pointer='no'
if test -n "$PKG_CONFIG" && \
@@ -13082,8 +13078,23 @@ fi
# vapigen
+have_vapigen=no
if test "x$found_introspection" = "xyes"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether G-I is 1.36 or newer" >&5
+$as_echo_n "checking whether G-I is 1.36 or newer... " >&6; }
+ VAPIGEN_MIN_VERSION=0.18
+ if pkg-config --atleast-version=1.36.0 gobject-introspection-1.0; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ VAPIGEN_MIN_VERSION=0.20
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
# Extract the first word of "vapigen", so it can be a program name with args.
set dummy vapigen; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -13128,11 +13139,11 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No Vala API Generator found. You will not be able to generate .vapi files." >&5
$as_echo "$as_me: WARNING: No Vala API Generator found. You will not be able to generate .vapi files." >&2;}
else
- if test -n "0.18"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking $VAPIGEN is at least version 0.18" >&5
-$as_echo_n "checking $VAPIGEN is at least version 0.18... " >&6; }
+ if test -n "$VAPIGEN_MIN_VERSION"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking $VAPIGEN is at least version $VAPIGEN_MIN_VERSION" >&5
+$as_echo_n "checking $VAPIGEN is at least version $VAPIGEN_MIN_VERSION... " >&6; }
am__vapigen_version=`$VAPIGEN --version | sed 's/Vala API Generator *//'`
- as_arg_v1=0.18
+ as_arg_v1=$VAPIGEN_MIN_VERSION
as_arg_v2="$am__vapigen_version"
awk "$as_awk_strverscmp" v1="$as_arg_v1" v2="$as_arg_v2" /dev/null
case $? in #(
@@ -13145,8 +13156,10 @@ $as_echo "yes" >&6; } ;; #(
2) :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Vala API Generator 0.18 not found." >&5
-$as_echo "$as_me: WARNING: Vala API Generator 0.18 not found." >&2;} ;; #(
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Vala API Generator $VAPIGEN_MIN_VERSION not found." >&5
+$as_echo "$as_me: WARNING: Vala API Generator $VAPIGEN_MIN_VERSION not found." >&2;}
+ VAPIGEN=""
+ ;; #(
*) :
;;
esac
@@ -13156,6 +13169,9 @@ fi
fi
+if test "x$VAPIGEN" != "x"; then :
+ have_vapigen=yes
+fi
if test "x$VAPIGEN" != "x"; then
HAVE_VAPIGEN_TRUE=
HAVE_VAPIGEN_FALSE='#'
@@ -13490,6 +13506,55 @@ fi
GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
+# Extract the first word of "xmllint", so it can be a program name with args.
+set dummy xmllint; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XMLLINT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $XMLLINT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XMLLINT="$XMLLINT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_XMLLINT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+XMLLINT=$ac_cv_path_XMLLINT
+if test -n "$XMLLINT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XMLLINT" >&5
+$as_echo "$XMLLINT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$XMLLINT" != "x"; then
+ HAVE_XMLLINT_TRUE=
+ HAVE_XMLLINT_FALSE='#'
+else
+ HAVE_XMLLINT_TRUE='#'
+ HAVE_XMLLINT_FALSE=
+fi
+
+
ac_config_files="$ac_config_files Makefile libgupnp-dlna/Makefile tools/Makefile tests/Makefile data/Makefile gupnp-dlna-2.0.pc gupnp-dlna-metadata-2.0.pc gupnp-dlna-gst-2.0.pc gupnp-dlna-gst-legacy-2.0.pc doc/Makefile doc/version.xml doc/gupnp-dlna/Makefile doc/gupnp-dlna-metadata/Makefile doc/gupnp-dlna-gst/Makefile vala/Makefile"
ac_config_files="$ac_config_files tests/test-discoverer.sh"
@@ -13667,6 +13732,10 @@ if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"
as_fn_error $? "conditional \"GTK_DOC_USE_REBASE\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${HAVE_XMLLINT_TRUE}" && test -z "${HAVE_XMLLINT_FALSE}"; then
+ as_fn_error $? "conditional \"HAVE_XMLLINT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
@@ -14064,7 +14133,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by gupnp-dlna $as_me 0.10.0, which was
+This file was extended by gupnp-dlna $as_me 0.10.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -14131,7 +14200,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-gupnp-dlna config.status 0.10.0
+gupnp-dlna config.status 0.10.2
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -15924,6 +15993,8 @@ fi
echo
echo 'Configuration status:'
echo
+echo "GObject-Introspection: $found_introspection"
+echo "VALA bindings: $have_vapigen"
echo "Default metadata backend: $with_default_metadata_backend"
echo "Default metadata backend directory: $with_default_metadata_backend_dir"
echo "Build GStreamer metadata backend: $enable_gstreamer_metadata_backend"
diff --git a/configure.ac b/configure.ac
index 42725af..374cb73 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
AC_PREREQ([2.63])
AC_INIT([gupnp-dlna],
- [0.10.0],
+ [0.10.2],
[https://bugzilla.gnome.org/enter_bug.cgi?product=gupnp&component=gupnp-dlna],
[gupnp-dlna],
[http://www.gupnp.org/])
@@ -167,13 +167,6 @@ PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.32])
PKG_CHECK_MODULES([GOBJECT], [gobject-2.0])
PKG_CHECK_MODULES([GMODULE], [gmodule-2.0])
-AC_SUBST(GLIB_CFLAGS)
-AC_SUBST(GLIB_LIBS)
-AC_SUBST(GOBJECT_CFLAGS)
-AC_SUBST(GOBJECT_LIBS)
-AC_SUBST(GMODULE_CFLAGS)
-AC_SUBST(GMODULE_LIBS)
-
# Check for g_clear_pointer
have_g_clear_pointer='no'
PKG_CHECK_EXISTS([glib-2.0 >= 2.34],
@@ -222,11 +215,22 @@ fi
GOBJECT_INTROSPECTION_CHECK([0.6.4])
# vapigen
+have_vapigen=no
AS_IF([test "x$found_introspection" = "xyes"],
[
- VALA_PROG_VAPIGEN([0.18])
+ dnl output of g-i >= 1.36.0 needs vapigen >= 0.20 to process
+ AC_MSG_CHECKING([whether G-I is 1.36 or newer])
+ VAPIGEN_MIN_VERSION=0.18
+ AS_IF([pkg-config --atleast-version=1.36.0 gobject-introspection-1.0],
+ [
+ AC_MSG_RESULT([yes])
+ VAPIGEN_MIN_VERSION=0.20
+ ],[AC_MSG_RESULT([no])]
+ )
+ GUPNP_PROG_VAPIGEN([$VAPIGEN_MIN_VERSION])
]
)
+AS_IF([test "x$VAPIGEN" != "x"], [have_vapigen=yes])
AM_CONDITIONAL([HAVE_VAPIGEN], [test "x$VAPIGEN" != "x"])
GTK_DOC_CHECK([1.11],[--flavour no-tmpl])
@@ -234,6 +238,10 @@ GTK_DOC_CHECK([1.11],[--flavour no-tmpl])
GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
AC_SUBST(GLIB_PREFIX)
+dnl xmllint for schema validation
+AC_PATH_PROG([XMLLINT],[xmllint])
+AM_CONDITIONAL([HAVE_XMLLINT], [test "x$XMLLINT" != "x"])
+
AC_CONFIG_FILES([
Makefile
libgupnp-dlna/Makefile
@@ -258,6 +266,8 @@ AC_OUTPUT
echo
echo 'Configuration status:'
echo
+echo "GObject-Introspection: $found_introspection"
+echo "VALA bindings: $have_vapigen"
echo "Default metadata backend: $with_default_metadata_backend"
echo "Default metadata backend directory: $with_default_metadata_backend_dir"
echo "Build GStreamer metadata backend: $enable_gstreamer_metadata_backend"
diff --git a/data/Makefile.am b/data/Makefile.am
index 0043f46..d7ce2bd 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -11,6 +11,8 @@ dlnaprofiles = mp3.xml \
mpeg1.xml \
avc.xml \
mpeg-ts.xml \
+ mpeg-ps.xml \
+ mpeg-common.xml \
mpeg4.xml \
jpeg.xml \
png.xml
@@ -18,4 +20,9 @@ dlnaprofiles = mp3.xml \
dlnadir = $(shareddir)/dlna-profiles
dlna_DATA = $(dlnaschemas) $(dlnaprofiles)
+if HAVE_XMLLINT
+check-profiles: $(dlnaprofiles) $(dlnaschemas)
+ $(XMLLINT) --relaxng $(dlnaschemas) $(dlnaprofiles) >/dev/null
+endif
+
EXTRA_DIST = $(dlnaschemas) $(dlnaprofiles)
diff --git a/data/Makefile.in b/data/Makefile.in
index 516f600..ad7fba2 100644
--- a/data/Makefile.in
+++ b/data/Makefile.in
@@ -213,6 +213,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
VAPIGEN = @VAPIGEN@
VERSION = @VERSION@
+XMLLINT = @XMLLINT@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
@@ -277,6 +278,8 @@ dlnaprofiles = mp3.xml \
mpeg1.xml \
avc.xml \
mpeg-ts.xml \
+ mpeg-ps.xml \
+ mpeg-common.xml \
mpeg4.xml \
jpeg.xml \
png.xml
@@ -500,6 +503,9 @@ uninstall-am: uninstall-dlnaDATA
uninstall uninstall-am uninstall-dlnaDATA
+@HAVE_XMLLINT_TRUE@check-profiles: $(dlnaprofiles) $(dlnaschemas)
+@HAVE_XMLLINT_TRUE@ $(XMLLINT) --relaxng $(dlnaschemas) $(dlnaprofiles) >/dev/null
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/data/aac.xml b/data/aac.xml
index d6267a5..9aa8976 100644
--- a/data/aac.xml
+++ b/data/aac.xml
@@ -37,6 +37,12 @@
<restriction id="AAC-MULT5" type="audio">
<parent name="AAC" />
+ <field name="level" type="string">
+ <value>1</value>
+ <value>2</value>
+ <value>4</value>
+ </field>
+
<field name="channels" type="int">
<!-- Technically the profile supports upto 5.1, not 6 -->
<range min="1" max="6" />
diff --git a/data/mpeg-common.xml b/data/mpeg-common.xml
new file mode 100644
index 0000000..3c98a02
--- /dev/null
+++ b/data/mpeg-common.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0"?>
+
+<dlna-profiles>
+ <include ref="common.xml" />
+
+ <restrictions>
+ <!-- SD resolutions -->
+ <!-- NA region -->
+ <restriction id="720x480" type="video">
+ <parent name="525_D1" />
+ <field name="framerate" type="fraction">
+ <value>30000/1001</value>
+ </field>
+ <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
+ <value>32/27</value>
+ <value>8/9</value>
+ </field>
+ </restriction>
+
+ <restriction id="704x480" type="video">
+ <parent name="525_4SIF" />
+ <field name="framerate" type="fraction">
+ <value>24000/1001</value> <!-- Note: only valid for interlaced=false -->
+ <value>24/1</value>
+ <value>30000/1001</value>
+ <value>30/1</value>
+ <value>60000/1001</value> <!-- Note: only valid for interlaced=false -->
+ <value>60/1</value> <!-- Note: only valid for interlaced=false -->
+ </field>
+ <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
+ <value>40/33</value>
+ <value>10/11</value>
+ </field>
+ </restriction>
+
+ <restriction id="640x480" type="video">
+ <parent name="VGA" />
+ <field name="framerate" type="fraction">
+ <value>24000/1001</value> <!-- Note: only valid for interlaced=false -->
+ <value>24/1</value>
+ <value>30000/1001</value>
+ <value>30/1</value>
+ <value>60000/1001</value> <!-- Note: only valid for interlaced=false -->
+ <value>60/1</value> <!-- Note: only valid for interlaced=false -->
+ </field>
+ <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
+ <value>1/1</value>
+ <value>4/3</value>
+ </field>
+ </restriction>
+
+ <restriction id="544x480" type="video">
+ <parent name="525_3/4D1" />
+ <field name="framerate" type="fraction">
+ <value>30000/1001</value>
+ </field>
+ <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
+ <value>80/51</value>
+ <value>20/17</value>
+ </field>
+ </restriction>
+
+ <restriction id="480x480" type="video">
+ <parent name="525_2/3D1" />
+ <field name="framerate" type="fraction">
+ <value>30000/1001</value>
+ </field>
+ <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
+ <value>16/9</value>
+ <value>4/3</value>
+ </field>
+ </restriction>
+
+ <restriction id="352x480" type="video">
+ <parent name="525_1/2D1" />
+ <field name="framerate" type="fraction">
+ <value>30000/1001</value>
+ </field>
+ <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
+ <value>80/33</value>
+ <value>20/11</value>
+ </field>
+ </restriction>
+
+ <restriction id="352x240" type="video">
+ <parent name="525SIF" />
+ <field name="framerate" type="fraction">
+ <value>30000/1001</value>
+ </field>
+ <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
+ <value>16/11</value>
+ <value>12/11</value>
+ </field>
+ </restriction>
+
+
+ <!-- EU region -->
+ <restriction id="EU_FPS" type="video">
+ <field name="framerate" type="fraction">
+ <value>25/1</value>
+ </field>
+ </restriction>
+
+ <restriction id="720x576" type="video">
+ <parent name="625_D1" />
+ <parent name="EU_FPS" />
+ <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
+ <value>64/45</value>
+ <value>16/15</value>
+ </field>
+ </restriction>
+
+ <restriction id="704x576" type="video">
+ <parent name="625_4SIF" />
+ <parent name="EU_FPS" />
+ <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
+ <value>64/45</value>
+ <value>16/15</value>
+ </field>
+ </restriction>
+
+ <restriction id="544x576" type="video">
+ <parent name="625_3/4D1" />
+ <parent name="EU_FPS" />
+ <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
+ <value>32/17</value>
+ <value>24/17</value>
+ </field>
+ </restriction>
+
+ <restriction id="480x576" type="video">
+ <parent name="625_2/3D1" />
+ <parent name="EU_FPS" />
+ <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
+ <value>32/15</value>
+ <value>8/5</value>
+ </field>
+ </restriction>
+
+ <restriction id="352x576" type="video">
+ <parent name="625_1/2D1" />
+ <parent name="EU_FPS" />
+ <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
+ <value>32/11</value>
+ <value>24/11</value>
+ </field>
+ </restriction>
+
+ <restriction id="352x288" type="video">
+ <parent name="CIF" />
+ <parent name="EU_FPS" />
+ <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
+ <value>16/11</value>
+ <value>12/11</value>
+ </field>
+ </restriction>
+ </restrictions>
+</dlna-profiles>
diff --git a/data/mpeg-ps.xml b/data/mpeg-ps.xml
new file mode 100644
index 0000000..266e915
--- /dev/null
+++ b/data/mpeg-ps.xml
@@ -0,0 +1,203 @@
+<?xml version="1.0"?>
+
+<dlna-profiles>
+ <include ref="common.xml" />
+ <include ref="mpeg-common.xml" />
+
+ <restrictions>
+ <restriction id="MPEG_PS" type="container">
+ <field name="name" type="string">
+ <value>video/mpeg</value>
+ </field>
+ <field name="systemstream" type="boolean">
+ <value>true</value>
+ </field>
+ <field name="mpegversion" type="int">
+ <value>2</value>
+ </field>
+ </restriction>
+
+ <restriction id="MPEG_PS_VIDEO" type="video">
+ <field name="name" type="string">
+ <value>video/mpeg</value>
+ </field>
+ <field name="systemstream" type="boolean">
+ <value>false</value>
+ </field>
+ <field name="mpegversion" type="int">
+ <value>2</value>
+ </field>
+ <field name="profile" type="string">
+ <value>simple</value>
+ <value>main</value>
+ </field>
+ <field name="level" type="string">
+ <value>low</value>
+ <value>main</value>
+ </field>
+ <field name="bitrate" type="int" used="in-strict">
+ <range min="1" max="9800000" />
+ </field>
+ </restriction>
+
+ <restriction id="MPEG_PS_AUDIO" type="audio">
+ <field name="rate" type="int">
+ <value>48000</value>
+ </field>
+ </restriction>
+ </restrictions>
+
+ <dlna-profile name="MPEG_PS_PAL" mime="video/mpeg">
+ <parent name="MPEG_PS" />
+
+ <restriction type="audio">
+ <parent name="MPEG_PS_AUDIO" />
+ <field name="name" type="string">
+ <value>audio/x-ac3</value>
+ </field>
+ </restriction>
+
+ <restriction type="audio">
+ <parent name="MPEG_PS_AUDIO" />
+
+ <field name="name" type="string">
+ <value>audio/x-private1-ac3</value>
+ </field>
+ </restriction>
+
+ <restriction type="audio">
+ <parent name="MPEG_PS_AUDIO" />
+
+ <field name="name" type="string">
+ <value>audio/ac3</value>
+ </field>
+ </restriction>
+
+ <restriction type="audio">
+ <parent name="MPEG_PS_AUDIO" />
+
+ <field name="name" type="string">
+ <value>audio/mpeg</value>
+ </field>
+ <field name="mpegversion" type="int">
+ <value>1</value>
+ <value>2</value>
+ </field>
+ </restriction>
+
+ <restriction type="audio">
+ <parent name="MPEG_PS_AUDIO" />
+
+ <field name="name" type="string">
+ <value>audio/x-private1-lpcm</value>
+ </field>
+ </restriction>
+
+ <restriction type="video">
+ <parent name="MPEG_PS_VIDEO" />
+ <parent name="720x576" />
+ </restriction>
+
+ <restriction type="video">
+ <parent name="MPEG_PS_VIDEO" />
+ <parent name="704x576" />
+ </restriction>
+
+ <restriction type="video">
+ <parent name="MPEG_PS_VIDEO" />
+ <parent name="544x576" />
+ </restriction>
+
+ <restriction type="video">
+ <parent name="MPEG_PS_VIDEO" />
+ <parent name="480x576" />
+ </restriction>
+
+ <restriction type="video">
+ <parent name="MPEG_PS_VIDEO" />
+ <parent name="352x576" />
+ </restriction>
+
+ <restriction type="video">
+ <parent name="MPEG_PS_VIDEO" />
+ <parent name="352x288" />
+ </restriction>
+ </dlna-profile>
+
+ <dlna-profile name="MPEG_PS_NTSC" mime="video/mpeg">
+ <parent name="MPEG_PS" />
+
+ <restriction type="audio">
+ <parent name="MPEG_PS_AUDIO" />
+ <field name="name" type="string">
+ <value>audio/x-ac3</value>
+ </field>
+ </restriction>
+
+ <restriction type="audio">
+ <parent name="MPEG_PS_AUDIO" />
+
+ <field name="name" type="string">
+ <value>audio/x-private1-ac3</value>
+ </field>
+ </restriction>
+
+ <restriction type="audio">
+ <parent name="MPEG_PS_AUDIO" />
+
+ <field name="name" type="string">
+ <value>audio/ac3</value>
+ </field>
+ </restriction>
+
+ <restriction type="audio">
+ <parent name="MPEG_PS_AUDIO" />
+
+ <field name="name" type="string">
+ <value>audio/mpeg</value>
+ </field>
+ <field name="mpegversion" type="int">
+ <value>1</value>
+ <value>2</value>
+ </field>
+ </restriction>
+
+ <restriction type="audio">
+ <parent name="MPEG_PS_AUDIO" />
+
+ <field name="name" type="string">
+ <value>audio/x-private1-lpcm</value>
+ </field>
+ </restriction>
+
+ <restriction type="video">
+ <parent name="MPEG_PS_VIDEO" />
+ <parent name="720x480" />
+ </restriction>
+
+ <restriction type="video">
+ <parent name="MPEG_PS_VIDEO" />
+ <parent name="704x480" />
+ </restriction>
+
+ <restriction type="video">
+ <parent name="MPEG_PS_VIDEO" />
+ <parent name="480x480" />
+ </restriction>
+
+ <restriction type="video">
+ <parent name="MPEG_PS_VIDEO" />
+ <parent name="544x480" />
+ </restriction>
+
+ <restriction type="video">
+ <parent name="MPEG_PS_VIDEO" />
+ <parent name="352x480" />
+ </restriction>
+
+ <restriction type="video">
+ <parent name="MPEG_PS_VIDEO" />
+ <parent name="352x240" />
+ </restriction>
+ </dlna-profile>
+</dlna-profiles>
diff --git a/data/mpeg-ts.xml b/data/mpeg-ts.xml
index 5e2ad7e..ab0b549 100644
--- a/data/mpeg-ts.xml
+++ b/data/mpeg-ts.xml
@@ -2,9 +2,10 @@
<dlna-profiles>
<include ref="common.xml" />
+ <include ref="mpeg-common.xml" />
<restrictions>
- <restriction id="MPEG_TS" type="container">
+ <restriction id="MPEG_TS_ISO" type="container">
<field name="name" type="string">
<value>video/mpegts</value>
</field>
@@ -16,10 +17,20 @@
</field>
</restriction>
- <restriction id="MPEG_TS_AUDIO" type="audio">
- <field name="rate" type="int">
- <value>48000</value>
+ <!-- TS with 192 byte packet size and all zero timestamps -->
+ <restriction id="MPEG_TS" type="container">
+ <field name="name" type="string">
+ <value>video/mpegts</value>
+ </field>
+ <field name="systemstream" type="boolean">
+ <value>true</value>
+ </field>
+ <field name="packetsize" type="int">
+ <value>192</value>
</field>
+ </restriction>
+
+ <restriction id="MPEG_TS_AUDIO_BASE" type="audio">
<field name="channels" type="int">
<range min="1" max="6" />
</field>
@@ -28,6 +39,24 @@
</field>
</restriction>
+ <!-- audio rate restrictions for non-EU TS streams -->
+ <restriction id="MPEG_TS_AUDIO" type="audio">
+ <parent name="MPEG_TS_AUDIO_BASE" />
+ <field name="rate" type="int">
+ <value>48000</value>
+ </field>
+ </restriction>
+
+ <!-- audio rate restrictions for EU TS streams -->
+ <restriction id="MPEG_TS_AUDIO_EU" type="audio">
+ <parent name="MPEG_TS_AUDIO_BASE"/>
+ <field name="rate" type="int">
+ <value>32000</value>
+ <value>44100</value>
+ <value>48000</value>
+ </field>
+ </restriction>
+
<restriction id="MPEG_TS_VIDEO" type="video">
<field name="name" type="string">
<value>video/mpeg</value>
@@ -55,136 +84,6 @@
</field>
</restriction>
- <!-- SD resolutions -->
- <!-- NA region -->
- <restriction id="720x480" type="video">
- <parent name="525_D1" />
- <field name="framerate" type="fraction">
- <value>30000/1001</value>
- </field>
- <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
- <value>32/27</value>
- <value>8/9</value>
- </field>
- </restriction>
-
- <restriction id="704x480" type="video">
- <parent name="525_4SIF" />
- <field name="framerate" type="fraction">
- <value>24000/1001</value> <!-- Note: only valid for interlaced=false -->
- <value>24/1</value>
- <value>30000/1001</value>
- <value>30/1</value>
- <value>60000/1001</value> <!-- Note: only valid for interlaced=false -->
- <value>60/1</value> <!-- Note: only valid for interlaced=false -->
- </field>
- <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
- <value>40/33</value>
- <value>10/11</value>
- </field>
- </restriction>
-
- <restriction id="640x480" type="video">
- <parent name="VGA" />
- <field name="framerate" type="fraction">
- <value>24000/1001</value> <!-- Note: only valid for interlaced=false -->
- <value>24/1</value>
- <value>30000/1001</value>
- <value>30/1</value>
- <value>60000/1001</value> <!-- Note: only valid for interlaced=false -->
- <value>60/1</value> <!-- Note: only valid for interlaced=false -->
- </field>
- <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
- <value>1/1</value>
- <value>4/3</value>
- </field>
- </restriction>
-
- <restriction id="544x480" type="video">
- <parent name="525_3/4D1" />
- <field name="framerate" type="fraction">
- <value>30000/1001</value>
- </field>
- <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
- <value>80/51</value>
- <value>20/17</value>
- </field>
- </restriction>
-
- <restriction id="480x480" type="video">
- <parent name="525_2/3D1" />
- <field name="framerate" type="fraction">
- <value>30000/1001</value>
- </field>
- <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
- <value>16/9</value>
- <value>4/3</value>
- </field>
- </restriction>
-
- <restriction id="352x480" type="video">
- <parent name="525_1/2D1" />
- <field name="framerate" type="fraction">
- <value>30000/1001</value>
- </field>
- <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
- <value>80/33</value>
- <value>20/11</value>
- </field>
- </restriction>
-
- <!-- EU region -->
- <restriction id="EU_FPS" type="video">
- <field name="framerate" type="fraction">
- <value>25/1</value>
- </field>
- </restriction>
-
- <restriction id="720x576" type="video">
- <parent name="625_D1" />
- <parent name="EU_FPS" />
- <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
- <value>64/45</value>
- <value>16/15</value>
- </field>
- </restriction>
-
- <restriction id="544x576" type="video">
- <parent name="625_3/4D1" />
- <parent name="EU_FPS" />
- <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
- <value>32/17</value>
- <value>24/17</value>
- </field>
- </restriction>
-
- <restriction id="480x576" type="video">
- <parent name="625_2/3D1" />
- <parent name="EU_FPS" />
- <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
- <value>32/15</value>
- <value>8/5</value>
- </field>
- </restriction>
-
- <restriction id="352x576" type="video">
- <parent name="625_1/2D1" />
- <parent name="EU_FPS" />
- <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
- <value>32/11</value>
- <value>24/11</value>
- </field>
- </restriction>
-
- <restriction id="352x288" type="video">
- <parent name="CIF" />
- <parent name="EU_FPS" />
- <field name="pixel-aspect-ratio" type="fraction" used="in-strict">
- <value>16/11</value>
- <value>12/11</value>
- </field>
- </restriction>
-
<!-- HD resolutions -->
<restriction id="MPEG_TS_1920x1080" type="video">
<parent name="1920x1080" />
@@ -252,15 +151,15 @@
</restriction>
</restrictions>
- <dlna-profile name="MPEG_TS_SD_NA_ISO" mime="video/mpeg">
+ <dlna-profile id="MPEG_TS_SD_NA_BASE">
<!-- Note: We have no way to restrict the system bitrate yet -->
- <parent name="MPEG_TS" />
+ <parent name="MPEG_TS_ISO" />
<restriction type="audio">
<parent name="MPEG_TS_AUDIO" />
<field name="name" type="string">
- <value>audio/x-ac3</value>
+ <value>audio/x-ac3</value>
</field>
</restriction>
@@ -268,7 +167,7 @@
<parent name="MPEG_TS_AUDIO" />
<field name="name" type="string">
- <value>audio/x-private1-ac3</value>
+ <value>audio/x-private1-ac3</value>
</field>
</restriction>
@@ -276,7 +175,7 @@
<parent name="MPEG_TS_AUDIO" />
<field name="name" type="string">
- <value>audio/ac3</value>
+ <value>audio/ac3</value>
</field>
</restriction>
@@ -311,31 +210,41 @@
</restriction>
</dlna-profile>
- <dlna-profile name="MPEG_TS_SD_EU_ISO" mime="video/mpeg">
+ <dlna-profile id="MPEG_TS_SD_EU_BASE">
<!-- Note: We have no way to restrict the system bitrate yet -->
- <parent name="MPEG_TS" />
+ <restriction type="audio">
+ <parent name="MPEG_TS_AUDIO_EU" />
+
+ <field name="name" type="string">
+ <value>audio/x-ac3</value>
+ </field>
+ </restriction>
<restriction type="audio">
- <parent name="MPEG_TS_AUDIO" />
+ <parent name="MPEG_TS_AUDIO_EU" />
<field name="name" type="string">
- <value>audio/x-ac3</value>
+ <value>audio/x-private1-ac3</value>
</field>
</restriction>
<restriction type="audio">
- <parent name="MPEG_TS_AUDIO" />
+ <parent name="MPEG_TS_AUDIO_EU" />
<field name="name" type="string">
- <value>audio/x-private1-ac3</value>
+ <value>audio/ac3</value>
</field>
</restriction>
<restriction type="audio">
- <parent name="MPEG_TS_AUDIO" />
+ <parent name="MPEG_TS_AUDIO_EU" />
<field name="name" type="string">
- <value>audio/ac3</value>
+ <value>audio/mpeg</value>
+ </field>
+ <field name="mpegversion" type="int">
+ <value>1</value>
+ <value>2</value>
</field>
</restriction>
@@ -365,9 +274,9 @@
</restriction>
</dlna-profile>
- <dlna-profile name="MPEG_TS_HD_NA_ISO" mime="video/mpeg">
- <parent name="MPEG_TS" />
+
+ <dlna-profile id="MPEG_TS_HD_NA_BASE">
<restriction type="audio">
<parent name="MPEG_TS_AUDIO" />
@@ -412,4 +321,46 @@
<parent name="1280x1080" />
</restriction>
</dlna-profile>
+
+ <dlna-profile name="MPEG_TS_SD_NA" mime="video/vnd.dlna.mpeg-tts" base-profile="MPEG_TS_SD_NA_BASE">
+ <!-- Note: We have no way to restrict the system bitrate yet -->
+ <restriction type="container">
+ <parent name="MPEG_TS" />
+ </restriction>
+ </dlna-profile>
+
+ <dlna-profile name="MPEG_TS_SD_NA_ISO" mime="video/mpeg" base-profile="MPEG_TS_SD_NA_BASE">
+ <!-- Note: We have no way to restrict the system bitrate yet -->
+ <restriction type="container">
+ <parent name="MPEG_TS_ISO" />
+ </restriction>
+ </dlna-profile>
+
+ <dlna-profile name="MPEG_TS_HD_NA" mime="video/vnd.dlna.mpeg-tts" base-profile="MPEG_TS_HD_NA_BASE">
+ <!-- Note: We have no way to restrict the system bitrate yet -->
+ <restriction type="container">
+ <parent name="MPEG_TS" />
+ </restriction>
+ </dlna-profile>
+
+ <dlna-profile name="MPEG_TS_HD_NA_ISO" mime="video/mpeg" base-profile="MPEG_TS_HD_NA_BASE">
+ <!-- Note: We have no way to restrict the system bitrate yet -->
+ <restriction type="container">
+ <parent name="MPEG_TS_ISO" />
+ </restriction>
+ </dlna-profile>
+
+ <dlna-profile name="MPEG_TS_SD_EU" mime="video/vnd.dlna.mpeg-tts" base-profile="MPEG_TS_SD_EU_BASE">
+ <!-- Note: We have no way to restrict the system bitrate yet -->
+ <restriction type="container">
+ <parent name="MPEG_TS" />
+ </restriction>
+ </dlna-profile>
+
+ <dlna-profile name="MPEG_TS_SD_EU_ISO" mime="video/mpeg" base-profile="MPEG_TS_SD_EU_BASE">
+ <!-- Note: We have no way to restrict the system bitrate yet -->
+ <restriction type="container">
+ <parent name="MPEG_TS_ISO" />
+ </restriction>
+ </dlna-profile>
</dlna-profiles>
diff --git a/data/png.xml b/data/png.xml
index 501ab3e..c130b11 100644
--- a/data/png.xml
+++ b/data/png.xml
@@ -65,6 +65,7 @@
<field name="width" type="int">
<range min="1" max="4096" />
</field>
+ <!-- bgo#689355
<field name="depth" type="int" used="in-strict">
<value>1</value>
<value>2</value>
@@ -73,7 +74,7 @@
<value>16</value>
<value>24</value>
<value>32</value>
- </field>
+ </field> -->
</restriction>
</dlna-profile>
</dlna-profiles>
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 520740c..e20369e 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -223,6 +223,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
VAPIGEN = @VAPIGEN@
VERSION = @VERSION@
+XMLLINT = @XMLLINT@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
diff --git a/doc/gupnp-dlna-gst/Makefile.in b/doc/gupnp-dlna-gst/Makefile.in
index aeaf05d..c7c8e50 100644
--- a/doc/gupnp-dlna-gst/Makefile.in
+++ b/doc/gupnp-dlna-gst/Makefile.in
@@ -189,6 +189,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
VAPIGEN = @VAPIGEN@
VERSION = @VERSION@
+XMLLINT = @XMLLINT@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
diff --git a/doc/gupnp-dlna-gst/html/ch01.html b/doc/gupnp-dlna-gst/html/ch01.html
index 8ee29a2..1240117 100644
--- a/doc/gupnp-dlna-gst/html/ch01.html
+++ b/doc/gupnp-dlna-gst/html/ch01.html
@@ -24,7 +24,7 @@
</table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="idp4203888"></a>GUPnP DLNA Gstreamer</h2></div></div></div>
+<a name="idp217216"></a>GUPnP DLNA Gstreamer</h2></div></div></div>
<div class="toc"><dl><dt>
<span class="refentrytitle"><a href="gupnp-dlna-gst-gupnp-dlna-gst-utils.html">gupnp-dlna-gst-utils</a></span><span class="refpurpose"></span>
</dt></dl></div>
diff --git a/doc/gupnp-dlna-gst/html/index.html b/doc/gupnp-dlna-gst/html/index.html
index cc740ee..668f29b 100644
--- a/doc/gupnp-dlna-gst/html/index.html
+++ b/doc/gupnp-dlna-gst/html/index.html
@@ -14,11 +14,11 @@
<div class="titlepage">
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GUPnP DLNA Gstreamer Reference Manual</p></th></tr></table></div>
-<div><p class="releaseinfo">Version 0.10.0
+<div><p class="releaseinfo">Version 0.10.2
</p></div>
<div><p class="copyright">Copyright © 2013 Intel Corporation</p></div>
<div><div class="legalnotice">
-<a name="idp202352"></a><p>
+<a name="idp4249136"></a><p>
Permission is granted to copy, distribute and/or modify this
document under the terms of the <em class="citetitle">GNU Free
Documentation License</em>, Version 1.1 or any later
diff --git a/doc/gupnp-dlna-metadata/Makefile.in b/doc/gupnp-dlna-metadata/Makefile.in
index 6051dd4..13132ae 100644
--- a/doc/gupnp-dlna-metadata/Makefile.in
+++ b/doc/gupnp-dlna-metadata/Makefile.in
@@ -189,6 +189,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
VAPIGEN = @VAPIGEN@
VERSION = @VERSION@
+XMLLINT = @XMLLINT@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
diff --git a/doc/gupnp-dlna-metadata/html/GUPnPDLNAMetadataExtractor.html b/doc/gupnp-dlna-metadata/html/GUPnPDLNAMetadataExtractor.html
index 85775d2..ded22de 100644
--- a/doc/gupnp-dlna-metadata/html/GUPnPDLNAMetadataExtractor.html
+++ b/doc/gupnp-dlna-metadata/html/GUPnPDLNAMetadataExtractor.html
@@ -80,27 +80,32 @@ media.</p>
get needed metadata for profile matching. This class itself does
not implement any metadata extraction features. For that it is
expected to provide a plugin which:
-1. Provides a <a class="link" href="GUPnPDLNAMetadataExtractor.html" title="GUPnPDLNAMetadataExtractor"><span class="type">GUPnPDLNAMetadataExtractor</span></a> subclass implementation.
-2. Exports a <code class="function">gupnp_dlna_get_default_extractor()</code> which takes no
-parameters and returns a <a class="link" href="GUPnPDLNAMetadataExtractor.html" title="GUPnPDLNAMetadataExtractor"><span class="type">GUPnPDLNAMetadataExtractor</span></a>.
+</p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem"><p>Provides a <a class="link" href="GUPnPDLNAMetadataExtractor.html" title="GUPnPDLNAMetadataExtractor"><span class="type">GUPnPDLNAMetadataExtractor</span></a> subclass implementation.</p></li>
+<li class="listitem"><p>Exports a <code class="function">gupnp_dlna_get_default_extractor</code>() which
+takes no parameters and returns a <a class="link" href="GUPnPDLNAMetadataExtractor.html" title="GUPnPDLNAMetadataExtractor"><span class="type">GUPnPDLNAMetadataExtractor</span></a>.</p></li>
+</ul></div>
+<p>
</p>
<p>
<a href="http://library.gnome.org/devel/glib/unstable/glib-Dynamic-Loading-of-Modules.html#GModule"><span class="type">GModule</span></a> is used for loading the plugin, so <a href="http://library.gnome.org/devel/glib/unstable/glib-Dynamic-Loading-of-Modules.html#GModule"><span class="type">GModule</span></a>'s features can
-be used also (like exporting <code class="function">g_module_check_init()</code> to initialize
-multimedia framework used for extracting metadata).
+be used also (like exporting <code class="function">g_module_check_init</code>() to
+initialize the multimedia framework used for extracting metadata).
</p>
<p>
Default plugin directory and default plugin file is set during
configuration stage, but it can be overriden during runtime by
-setting respectively <code class="literal">GUPNP_DLNA_METADATA_BACKEND</code> and
-<code class="literal">GUPNP_DLNA_METADATA_BACKEND_DIR</code> environment variables before the
-plugin is loaded (i.e. before <a href="../gupnp-dlna/GUPnPDLNAProfileGuesser.html"><span class="type">GUPnPDLNAProfileGuesser</span></a> is used for
+setting respectively <code class="envar">GUPNP_DLNA_METADATA_BACKEND</code> and
+<code class="envar">GUPNP_DLNA_METADATA_BACKEND_DIR</code> environment variables before
+the plugin is loaded (i.e. before <a href="../gupnp-dlna/GUPnPDLNAProfileGuesser.html"><span class="type">GUPnPDLNAProfileGuesser</span></a> is used for
guessing profile).
</p>
<p>
-The <code class="literal">GUPNP_DLNA_METADATA_BACKEND</code> environment variable should hold a
-name like "gstreamer", so libgstreamer.so will be loaded. For
-determining a plugin filename <a href="http://library.gnome.org/devel/glib/unstable/glib-Dynamic-Loading-of-Modules.html#g-module-build-path"><code class="function">g_module_build_path()</code></a> is used.
+The <code class="envar">GUPNP_DLNA_METADATA_BACKEND</code> environment variable should
+hold a name like <strong class="userinput"><code>"gstreamer"</code></strong>, so
+<code class="filename">libgstreamer.so</code> will be loaded. For determining a
+plugin filename <a href="http://library.gnome.org/devel/glib/unstable/glib-Dynamic-Loading-of-Modules.html#g-module-build-path"><code class="function">g_module_build_path()</code></a> is used.
</p>
<p>
If subclassing <a class="link" href="GUPnPDLNAMetadataExtractor.html" title="GUPnPDLNAMetadataExtractor"><span class="type">GUPnPDLNAMetadataExtractor</span></a> then also
diff --git a/doc/gupnp-dlna-metadata/html/ch01.html b/doc/gupnp-dlna-metadata/html/ch01.html
index 2b73b2b..2cd07c5 100644
--- a/doc/gupnp-dlna-metadata/html/ch01.html
+++ b/doc/gupnp-dlna-metadata/html/ch01.html
@@ -24,7 +24,7 @@
</table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="idp3269872"></a>GUPnP DLNA Metadata</h2></div></div></div>
+<a name="idp4154192"></a>GUPnP DLNA Metadata</h2></div></div></div>
<div class="toc"><dl><dt>
<span class="refentrytitle"><a href="GUPnPDLNAMetadataExtractor.html">GUPnPDLNAMetadataExtractor</a></span><span class="refpurpose"> — Base class for extracting metadata for given
media.</span>
diff --git a/doc/gupnp-dlna-metadata/html/index.html b/doc/gupnp-dlna-metadata/html/index.html
index 2781ab9..aa555ad 100644
--- a/doc/gupnp-dlna-metadata/html/index.html
+++ b/doc/gupnp-dlna-metadata/html/index.html
@@ -14,11 +14,11 @@
<div class="titlepage">
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GUPnP DLNA Reference Manual</p></th></tr></table></div>
-<div><p class="releaseinfo">Version 0.10.0
+<div><p class="releaseinfo">Version 0.10.2
</p></div>
<div><p class="copyright">Copyright © 2012 Intel Corporation</p></div>
<div><div class="legalnotice">
-<a name="idp4034896"></a><p>
+<a name="idp201664"></a><p>
Permission is granted to copy, distribute and/or modify this
document under the terms of the <em class="citetitle">GNU Free
Documentation License</em>, Version 1.1 or any later
diff --git a/doc/gupnp-dlna/Makefile.in b/doc/gupnp-dlna/Makefile.in
index 80a02fa..40776cf 100644
--- a/doc/gupnp-dlna/Makefile.in
+++ b/doc/gupnp-dlna/Makefile.in
@@ -189,6 +189,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
VAPIGEN = @VAPIGEN@
VERSION = @VERSION@
+XMLLINT = @XMLLINT@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
diff --git a/doc/gupnp-dlna/gupnp-dlna-sections.txt b/doc/gupnp-dlna/gupnp-dlna-sections.txt
index a9c3a4a..2991c15 100644
--- a/doc/gupnp-dlna/gupnp-dlna-sections.txt
+++ b/doc/gupnp-dlna/gupnp-dlna-sections.txt
@@ -107,6 +107,7 @@ GUPnPDLNAInformationClass
gupnp_dlna_information_get_audio_information
gupnp_dlna_information_get_container_information
gupnp_dlna_information_get_image_information
+gupnp_dlna_information_get_profile_name
gupnp_dlna_information_get_uri
gupnp_dlna_information_get_video_information
<SUBSECTION Standard>
diff --git a/doc/gupnp-dlna/html/GUPnPDLNAInformation.html b/doc/gupnp-dlna/html/GUPnPDLNAInformation.html
index 4aff246..02c43b6 100644
--- a/doc/gupnp-dlna/html/GUPnPDLNAInformation.html
+++ b/doc/gupnp-dlna/html/GUPnPDLNAInformation.html
@@ -50,6 +50,8 @@ metadata informations.</p>
(<em class="parameter"><code><a class="link" href="GUPnPDLNAInformation.html" title="GUPnPDLNAInformation"><span class="type">GUPnPDLNAInformation</span></a> *info</code></em>);
<a class="link" href="GUPnPDLNAImageInformation.html" title="GUPnPDLNAImageInformation"><span class="returnvalue">GUPnPDLNAImageInformation</span></a> * <a class="link" href="GUPnPDLNAInformation.html#gupnp-dlna-information-get-image-information" title="gupnp_dlna_information_get_image_information ()">gupnp_dlna_information_get_image_information</a>
(<em class="parameter"><code><a class="link" href="GUPnPDLNAInformation.html" title="GUPnPDLNAInformation"><span class="type">GUPnPDLNAInformation</span></a> *info</code></em>);
+const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="GUPnPDLNAInformation.html#gupnp-dlna-information-get-profile-name" title="gupnp_dlna_information_get_profile_name ()">gupnp_dlna_information_get_profile_name</a>
+ (<em class="parameter"><code><a class="link" href="GUPnPDLNAInformation.html" title="GUPnPDLNAInformation"><span class="type">GUPnPDLNAInformation</span></a> *info</code></em>);
const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * <a class="link" href="GUPnPDLNAInformation.html#gupnp-dlna-information-get-uri" title="gupnp_dlna_information_get_uri ()">gupnp_dlna_information_get_uri</a> (<em class="parameter"><code><a class="link" href="GUPnPDLNAInformation.html" title="GUPnPDLNAInformation"><span class="type">GUPnPDLNAInformation</span></a> *info</code></em>);
<a class="link" href="GUPnPDLNAVideoInformation.html" title="GUPnPDLNAVideoInformation"><span class="returnvalue">GUPnPDLNAVideoInformation</span></a> * <a class="link" href="GUPnPDLNAInformation.html#gupnp-dlna-information-get-video-information" title="gupnp_dlna_information_get_video_information ()">gupnp_dlna_information_get_video_information</a>
(<em class="parameter"><code><a class="link" href="GUPnPDLNAInformation.html" title="GUPnPDLNAInformation"><span class="type">GUPnPDLNAInformation</span></a> *info</code></em>);
@@ -108,7 +110,10 @@ that "uri" with a URI to media file is passed to <a href="http://library.gnome.o
GUPnPDLNAVideoInformation *
(* get_video_information) (GUPnPDLNAInformation *info);
- gpointer _reserved[12];
+ const gchar *
+ (* get_profile_name) (GUPnPDLNAInformation *info);
+
+ gpointer _reserved[11];
} GUPnPDLNAInformationClass;
</pre>
<div class="variablelist"><table border="0">
@@ -139,7 +144,12 @@ to get an image information.</td>
to get a video information.</td>
</tr>
<tr>
-<td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> <em class="structfield"><code><a name="GUPnPDLNAInformationClass.-reserved"></a>_reserved</code></em>[12];</span></p></td>
+<td><p><span class="term"><em class="structfield"><code><a name="GUPnPDLNAInformationClass.get-profile-name"></a>get_profile_name</code></em> ()</span></p></td>
+<td>This is called by <a class="link" href="GUPnPDLNAProfileGuesser.html" title="GUPnPDLNAProfileGuesser"><span class="type">GUPnPDLNAProfileGuesser</span></a> to
+get the name of the DLNA profile assigned with this information.</td>
+</tr>
+<tr>
+<td><p><span class="term"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> <em class="structfield"><code><a name="GUPnPDLNAInformationClass.-reserved"></a>_reserved</code></em>[11];</span></p></td>
<td>Padding. Ignore it.</td>
</tr>
</tbody>
@@ -219,6 +229,26 @@ image files).
</div>
<hr>
<div class="refsect2">
+<a name="gupnp-dlna-information-get-profile-name"></a><h3>gupnp_dlna_information_get_profile_name ()</h3>
+<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * gupnp_dlna_information_get_profile_name
+ (<em class="parameter"><code><a class="link" href="GUPnPDLNAInformation.html" title="GUPnPDLNAInformation"><span class="type">GUPnPDLNAInformation</span></a> *info</code></em>);</pre>
+<div class="variablelist"><table border="0">
+<col align="left" valign="top">
+<tbody>
+<tr>
+<td><p><span class="term"><em class="parameter"><code>info</code></em> :</span></p></td>
+<td>A <a class="link" href="GUPnPDLNAInformation.html" title="GUPnPDLNAInformation"><span class="type">GUPnPDLNAInformation</span></a> object.</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
+<td>The name of a DLNA profile or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
<a name="gupnp-dlna-information-get-uri"></a><h3>gupnp_dlna_information_get_uri ()</h3>
<pre class="programlisting">const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> * gupnp_dlna_information_get_uri (<em class="parameter"><code><a class="link" href="GUPnPDLNAInformation.html" title="GUPnPDLNAInformation"><span class="type">GUPnPDLNAInformation</span></a> *info</code></em>);</pre>
<div class="variablelist"><table border="0">
diff --git a/doc/gupnp-dlna/html/ch01.html b/doc/gupnp-dlna/html/ch01.html
index f4cf684..0e606f1 100644
--- a/doc/gupnp-dlna/html/ch01.html
+++ b/doc/gupnp-dlna/html/ch01.html
@@ -24,7 +24,7 @@
</table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="idp4453056"></a>GUPnP DLNA</h2></div></div></div>
+<a name="idp4199680"></a>GUPnP DLNA</h2></div></div></div>
<div class="toc"><dl>
<dt>
<span class="refentrytitle"><a href="GUPnPDLNAProfileGuesser.html">GUPnPDLNAProfileGuesser</a></span><span class="refpurpose"> — Utility API for discovering DLNA profile for
@@ -376,6 +376,10 @@ for DLNA profiles matching.</span>
</dt>
<dd></dd>
<dt>
+<a class="link" href="GUPnPDLNAInformation.html#gupnp-dlna-information-get-profile-name" title="gupnp_dlna_information_get_profile_name ()">gupnp_dlna_information_get_profile_name</a>, function in <a class="link" href="GUPnPDLNAInformation.html" title="GUPnPDLNAInformation">GUPnPDLNAInformation</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="GUPnPDLNAInformation.html#gupnp-dlna-information-get-uri" title="gupnp_dlna_information_get_uri ()">gupnp_dlna_information_get_uri</a>, function in <a class="link" href="GUPnPDLNAInformation.html" title="GUPnPDLNAInformation">GUPnPDLNAInformation</a>
</dt>
<dd></dd>
diff --git a/doc/gupnp-dlna/html/gupnp-dlna.devhelp2 b/doc/gupnp-dlna/html/gupnp-dlna.devhelp2
index d65c020..16399a0 100644
--- a/doc/gupnp-dlna/html/gupnp-dlna.devhelp2
+++ b/doc/gupnp-dlna/html/gupnp-dlna.devhelp2
@@ -53,6 +53,7 @@
<keyword type="function" name="gupnp_dlna_information_get_audio_information ()" link="GUPnPDLNAInformation.html#gupnp-dlna-information-get-audio-information"/>
<keyword type="function" name="gupnp_dlna_information_get_container_information ()" link="GUPnPDLNAInformation.html#gupnp-dlna-information-get-container-information"/>
<keyword type="function" name="gupnp_dlna_information_get_image_information ()" link="GUPnPDLNAInformation.html#gupnp-dlna-information-get-image-information"/>
+ <keyword type="function" name="gupnp_dlna_information_get_profile_name ()" link="GUPnPDLNAInformation.html#gupnp-dlna-information-get-profile-name"/>
<keyword type="function" name="gupnp_dlna_information_get_uri ()" link="GUPnPDLNAInformation.html#gupnp-dlna-information-get-uri"/>
<keyword type="function" name="gupnp_dlna_information_get_video_information ()" link="GUPnPDLNAInformation.html#gupnp-dlna-information-get-video-information"/>
<keyword type="property" name="The &quot;audio-information&quot; property" link="GUPnPDLNAInformation.html#GUPnPDLNAInformation--audio-information"/>
diff --git a/doc/gupnp-dlna/html/index.html b/doc/gupnp-dlna/html/index.html
index cf9a106..bc43608 100644
--- a/doc/gupnp-dlna/html/index.html
+++ b/doc/gupnp-dlna/html/index.html
@@ -14,14 +14,14 @@
<div class="titlepage">
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GUPnP DLNA Reference Manual</p></th></tr></table></div>
-<div><p class="releaseinfo">Version 0.10.0
+<div><p class="releaseinfo">Version 0.10.2
</p></div>
<div><p class="copyright">Copyright © 2010 Arun Raghavan &lt;arun.raghavan@collabora.co.uk&gt;</p></div>
<div><p class="copyright">Copyright © 2010 Collabora Multimedia</p></div>
<div><p class="copyright">Copyright © 2010 Nokia Corporation</p></div>
<div><p class="copyright">Copyright © 2012 Intel Corporation</p></div>
<div><div class="legalnotice">
-<a name="idp4121568"></a><p>
+<a name="idp160896"></a><p>
Permission is granted to copy, distribute and/or modify this
document under the terms of the <em class="citetitle">GNU Free
Documentation License</em>, Version 1.1 or any later
diff --git a/doc/gupnp-dlna/html/index.sgml b/doc/gupnp-dlna/html/index.sgml
index 14a6e9b..314e65d 100644
--- a/doc/gupnp-dlna/html/index.sgml
+++ b/doc/gupnp-dlna/html/index.sgml
@@ -55,6 +55,7 @@
<ANCHOR id="gupnp-dlna-information-get-audio-information" href="gupnp-dlna/GUPnPDLNAInformation.html#gupnp-dlna-information-get-audio-information">
<ANCHOR id="gupnp-dlna-information-get-container-information" href="gupnp-dlna/GUPnPDLNAInformation.html#gupnp-dlna-information-get-container-information">
<ANCHOR id="gupnp-dlna-information-get-image-information" href="gupnp-dlna/GUPnPDLNAInformation.html#gupnp-dlna-information-get-image-information">
+<ANCHOR id="gupnp-dlna-information-get-profile-name" href="gupnp-dlna/GUPnPDLNAInformation.html#gupnp-dlna-information-get-profile-name">
<ANCHOR id="gupnp-dlna-information-get-uri" href="gupnp-dlna/GUPnPDLNAInformation.html#gupnp-dlna-information-get-uri">
<ANCHOR id="gupnp-dlna-information-get-video-information" href="gupnp-dlna/GUPnPDLNAInformation.html#gupnp-dlna-information-get-video-information">
<ANCHOR id="GUPnPDLNAInformation.property-details" href="gupnp-dlna/GUPnPDLNAInformation.html#GUPnPDLNAInformation.property-details">
diff --git a/doc/version.xml b/doc/version.xml
index 78bc1ab..5eef0f1 100644
--- a/doc/version.xml
+++ b/doc/version.xml
@@ -1 +1 @@
-0.10.0
+0.10.2
diff --git a/libgupnp-dlna/Makefile.in b/libgupnp-dlna/Makefile.in
index ed25e4c..536212e 100644
--- a/libgupnp-dlna/Makefile.in
+++ b/libgupnp-dlna/Makefile.in
@@ -479,6 +479,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
VAPIGEN = @VAPIGEN@
VERSION = @VERSION@
+XMLLINT = @XMLLINT@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
diff --git a/libgupnp-dlna/gupnp-dlna-information.c b/libgupnp-dlna/gupnp-dlna-information.c
index 7d1ea8d..37fb023 100644
--- a/libgupnp-dlna/gupnp-dlna-information.c
+++ b/libgupnp-dlna/gupnp-dlna-information.c
@@ -60,6 +60,12 @@ enum {
PROP_VIDEO_INFO
};
+static const gchar *
+gupnp_dlna_information_get_profile_name_default (GUPnPDLNAInformation *info G_GNUC_UNUSED)
+{
+ return NULL;
+}
+
static void
gupnp_dlna_information_dispose (GObject *object)
{
@@ -162,6 +168,7 @@ gupnp_dlna_information_class_init (GUPnPDLNAInformationClass *info_class)
info_class->get_image_information = NULL;
info_class->get_video_information = NULL;
info_class->get_audio_information = NULL;
+ info_class->get_profile_name = gupnp_dlna_information_get_profile_name_default;
/**
* GUPnPDLNAInformation:uri:
@@ -394,6 +401,21 @@ gupnp_dlna_information_get_video_information (GUPnPDLNAInformation *info)
}
/**
+ * gupnp_dlna_information_get_profile_name:
+ * @info: A #GUPnPDLNAInformation object.
+ *
+ * Returns: (transfer none): The name of a DLNA profile or %NULL.
+ */
+const gchar *
+gupnp_dlna_information_get_profile_name (GUPnPDLNAInformation *info)
+{
+ g_return_val_if_fail (GUPNP_IS_DLNA_INFORMATION (info), NULL);
+
+ return GUPNP_DLNA_INFORMATION_GET_CLASS (info)->get_profile_name (info);
+}
+
+
+/**
* gupnp_dlna_information_get_uri:
* @info: A #GUPnPDLNAInformation object.
*
diff --git a/libgupnp-dlna/gupnp-dlna-information.h b/libgupnp-dlna/gupnp-dlna-information.h
index 88e6736..e9c6bf3 100644
--- a/libgupnp-dlna/gupnp-dlna-information.h
+++ b/libgupnp-dlna/gupnp-dlna-information.h
@@ -74,6 +74,8 @@ typedef struct {
* to get an image information.
* @get_video_information: This is called by #GUPnPDLNAProfileGuesser
* to get a video information.
+ * @get_profile_name: This is called by #GUPnPDLNAProfileGuesser to
+ * get the name of the DLNA profile assigned with this information.
* @_reserved: Padding. Ignore it.
*/
typedef struct {
@@ -91,7 +93,10 @@ typedef struct {
GUPnPDLNAVideoInformation *
(* get_video_information) (GUPnPDLNAInformation *info);
- gpointer _reserved[12];
+ const gchar *
+ (* get_profile_name) (GUPnPDLNAInformation *info);
+
+ gpointer _reserved[11];
} GUPnPDLNAInformationClass;
GType
@@ -110,6 +115,9 @@ GUPnPDLNAVideoInformation*
gupnp_dlna_information_get_video_information (GUPnPDLNAInformation *info);
const gchar *
+gupnp_dlna_information_get_profile_name (GUPnPDLNAInformation *info);
+
+const gchar *
gupnp_dlna_information_get_uri (GUPnPDLNAInformation *info);
G_END_DECLS
diff --git a/libgupnp-dlna/gupnp-dlna-profile-guesser.c b/libgupnp-dlna/gupnp-dlna-profile-guesser.c
index b7738d5..ef9ce94 100644
--- a/libgupnp-dlna/gupnp-dlna-profile-guesser.c
+++ b/libgupnp-dlna/gupnp-dlna-profile-guesser.c
@@ -374,6 +374,13 @@ gupnp_dlna_profile_guesser_guess_profile_sync
return profile;
}
+static gint
+compare_profile_name (GUPnPDLNAProfile *profile, const char *name)
+{
+ return g_ascii_strcasecmp (gupnp_dlna_profile_get_name (profile),
+ name);
+}
+
/**
* gupnp_dlna_profile_guesser_guess_profile_from_info:
* @guesser: The #GUPnPDLNAProfileGuesser object.
@@ -394,6 +401,7 @@ gupnp_dlna_profile_guesser_guess_profile_from_info
GUPnPDLNAAudioInformation *audio_info;
GUPnPDLNAImageInformation *image_info;
GUPnPDLNAProfile *profile;
+ const gchar *profile_name;
g_return_val_if_fail (GUPNP_IS_DLNA_PROFILE_GUESSER (guesser), NULL);
g_return_val_if_fail (GUPNP_IS_DLNA_INFORMATION (info), NULL);
@@ -402,6 +410,19 @@ gupnp_dlna_profile_guesser_guess_profile_from_info
video_info = gupnp_dlna_information_get_video_information (info);
audio_info = gupnp_dlna_information_get_audio_information (info);
image_info = gupnp_dlna_information_get_image_information (info);
+ profile_name = gupnp_dlna_information_get_profile_name (info);
+
+ if (profile_name) {
+ GList *it = NULL;
+ it = g_list_find_custom (profiles,
+ profile_name,
+ (GCompareFunc) compare_profile_name);
+ if (it != NULL)
+ return it->data;
+ else
+ g_warning ("Profile '%s' provided by back-end not known to GUPnP-DLNA",
+ profile_name);
+ }
if (image_info)
profile = gupnp_dlna_profile_guesser_impl_guess_image_profile
diff --git a/libgupnp-dlna/metadata-backends/gstreamer/gupnp-dlna-gst-audio-information.c b/libgupnp-dlna/metadata-backends/gstreamer/gupnp-dlna-gst-audio-information.c
index a6ea58d..e453d90 100644
--- a/libgupnp-dlna/metadata-backends/gstreamer/gupnp-dlna-gst-audio-information.c
+++ b/libgupnp-dlna/metadata-backends/gstreamer/gupnp-dlna-gst-audio-information.c
@@ -50,6 +50,8 @@ get_audio_info (GUPnPDLNAGstAudioInformation *gst_info)
if (!priv->audio_info) {
GList *iter;
+ gboolean adts_hack = FALSE;
+ int stream_count = 0;
if (!priv->stream_list) {
priv->stream_list =
@@ -58,16 +60,38 @@ get_audio_info (GUPnPDLNAGstAudioInformation *gst_info)
return NULL;
}
+ /* For ADTS files we get two audio streams and the important
+ * information is only on the "outer" stream which is the
+ * second stream in the stream list. If we only have audio
+ * streams, we skip the first audio stream we see
+ *
+ * Works around
+ * https://bugzilla.gnome.org/show_bug.cgi?id=699212
+ */
+ iter = gst_discoverer_info_get_audio_streams (priv->info);
+ stream_count = g_list_length (priv->stream_list);
+
+ adts_hack = (stream_count == g_list_length (iter)) &&
+ stream_count == 2;
+
for (iter = priv->stream_list; iter; iter = iter->next) {
GstDiscovererStreamInfo *stream =
GST_DISCOVERER_STREAM_INFO (iter->data);
GType stream_type = G_TYPE_FROM_INSTANCE (stream);
+ /* copy caps from other stream */
+ if (adts_hack && !iter->next) {
+ priv->caps = gst_discoverer_stream_info_get_caps (stream);
+
+ continue;
+ }
+
if (stream_type == GST_TYPE_DISCOVERER_AUDIO_INFO) {
priv->audio_info =
GST_DISCOVERER_AUDIO_INFO (stream);
- break;
+ if (!adts_hack)
+ break;
}
}
}
@@ -79,10 +103,10 @@ static GstCaps *
get_caps (GUPnPDLNAGstAudioInformation *gst_info)
{
GUPnPDLNAGstAudioInformationPrivate *priv = gst_info->priv;
+ GstDiscovererStreamInfo *info = GST_DISCOVERER_STREAM_INFO (get_audio_info (gst_info));
if (!priv->caps)
- priv->caps = gst_discoverer_stream_info_get_caps
- (GST_DISCOVERER_STREAM_INFO (get_audio_info (gst_info)));
+ priv->caps = gst_discoverer_stream_info_get_caps (info);
return priv->caps;
}
@@ -123,6 +147,8 @@ backend_get_bitrate (GUPnPDLNAAudioInformation *self)
if (data > 0 && data <= G_MAXINT) {
value.state = GUPNP_DLNA_VALUE_STATE_SET;
value.value = (gint) data;
+ } else {
+ value = get_int_value (gst_info, "bitrate");
}
return value;
diff --git a/libgupnp-dlna/metadata/gupnp-dlna-metadata-extractor.c b/libgupnp-dlna/metadata/gupnp-dlna-metadata-extractor.c
index 2337548..3ae248f 100644
--- a/libgupnp-dlna/metadata/gupnp-dlna-metadata-extractor.c
+++ b/libgupnp-dlna/metadata/gupnp-dlna-metadata-extractor.c
@@ -30,24 +30,25 @@
* get needed metadata for profile matching. This class itself does
* not implement any metadata extraction features. For that it is
* expected to provide a plugin which:
- * 1. Provides a #GUPnPDLNAMetadataExtractor subclass implementation.
- * 2. Exports a gupnp_dlna_get_default_extractor() which takes no
- * parameters and returns a #GUPnPDLNAMetadataExtractor.
+ * - Provides a #GUPnPDLNAMetadataExtractor subclass implementation.
+ * - Exports a <function>gupnp_dlna_get_default_extractor</function>() which
+ * takes no parameters and returns a #GUPnPDLNAMetadataExtractor.
*
* #GModule is used for loading the plugin, so #GModule's features can
- * be used also (like exporting g_module_check_init() to initialize
- * multimedia framework used for extracting metadata).
+ * be used also (like exporting <function>g_module_check_init</function>() to
+ * initialize the multimedia framework used for extracting metadata).
*
* Default plugin directory and default plugin file is set during
* configuration stage, but it can be overriden during runtime by
- * setting respectively %GUPNP_DLNA_METADATA_BACKEND and
- * %GUPNP_DLNA_METADATA_BACKEND_DIR environment variables before the
- * plugin is loaded (i.e. before #GUPnPDLNAProfileGuesser is used for
+ * setting respectively <envar>GUPNP_DLNA_METADATA_BACKEND</envar> and
+ * <envar>GUPNP_DLNA_METADATA_BACKEND_DIR</envar> environment variables before
+ * the plugin is loaded (i.e. before #GUPnPDLNAProfileGuesser is used for
* guessing profile).
*
- * The %GUPNP_DLNA_METADATA_BACKEND environment variable should hold a
- * name like "gstreamer", so libgstreamer.so will be loaded. For
- * determining a plugin filename g_module_build_path() is used.
+ * The <envar>GUPNP_DLNA_METADATA_BACKEND</envar> environment variable should
+ * hold a name like <userinput>"gstreamer"</userinput>, so
+ * <filename>libgstreamer.so</filename> will be loaded. For determining a
+ * plugin filename g_module_build_path() is used.
*
* If subclassing #GUPnPDLNAMetadataExtractor then also
* #GUPnPDLNAInformation, #GUPnPDLNAAudioInformation,
diff --git a/m4/vapigen.m4 b/m4/vapigen.m4
index df6395d..c909726 100644
--- a/m4/vapigen.m4
+++ b/m4/vapigen.m4
@@ -26,7 +26,7 @@ dnl dropped everything but VALA_PROG_VAPIGEN - Jens Georg <mail@jensge.org>
#
# VALA_PROG_VAPIGEN([MINIMUM-VERSION])
# ------------------------------------
-AC_DEFUN([VALA_PROG_VAPIGEN],
+AC_DEFUN([GUPNP_PROG_VAPIGEN],
[AC_PATH_PROG([VAPIGEN], [vapigen], [])
AS_IF([test -z "$VAPIGEN"],
[AC_MSG_WARN([No Vala API Generator found. You will not be able to generate .vapi files.])],
@@ -37,5 +37,7 @@ AC_DEFUN([VALA_PROG_VAPIGEN],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
- AC_MSG_WARN([Vala API Generator $1 not found.])])])])
+ AC_MSG_WARN([Vala API Generator $1 not found.])
+ VAPIGEN=""
+ ])])])
])
diff --git a/packaging/GUPnP-DLNA.spec b/packaging/GUPnP-DLNA.spec
index 75ea49d..8bafbb2 100644
--- a/packaging/GUPnP-DLNA.spec
+++ b/packaging/GUPnP-DLNA.spec
@@ -7,7 +7,7 @@
Name: gupnp-dlna
Summary: Utility library for easing DLNA-related tasks
-Version: 0.10.0
+Version: 0.10.2
Release: 0
Group: Applications/Multimedia
License: LGPLv2.1
@@ -17,8 +17,8 @@ Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(libxml-2.0)
-BuildRequires: pkgconfig(gstreamer-0.10)
-BuildRequires: pkgconfig(gstreamer-plugins-base-0.10)
+BuildRequires: pkgconfig(gstreamer-1.0)
+BuildRequires: pkgconfig(gstreamer-plugins-base-1.0)
%description
@@ -51,7 +51,7 @@ Files for development with gupnp-dlna
# >> build pre
# << build pre
-%configure --disable-static --disable-gstreamer-metadata-backend --enable-legacy-gstreamer-metadata-backend --with-default-metadata-backend=gstreamer-legacy
+%configure --disable-static
make %{?jobs:-j%jobs}
# >> build post
@@ -82,8 +82,8 @@ rm -rf $RPM_BUILD_ROOT%{_datadir}/gtk-doc
%{_bindir}/gupnp-dlna-info-2.0
%{_bindir}/gupnp-dlna-ls-profiles-2.0
%{_libdir}/libgupnp-dlna-2.0.so.*
-%{_libdir}/libgupnp-dlna-gst-legacy-2.0.so.*
-%{_libdir}/gupnp-dlna/libgstreamer-legacy.so
+%{_libdir}/libgupnp-dlna-gst-2.0.so.*
+%{_libdir}/gupnp-dlna/libgstreamer.so
%{_datadir}/gupnp-dlna-2.0/dlna-profiles/aac.xml
%{_datadir}/gupnp-dlna-2.0/dlna-profiles/ac3.xml
%{_datadir}/gupnp-dlna-2.0/dlna-profiles/amr.xml
@@ -98,6 +98,8 @@ rm -rf $RPM_BUILD_ROOT%{_datadir}/gtk-doc
%{_datadir}/gupnp-dlna-2.0/dlna-profiles/mpeg4.xml
%{_datadir}/gupnp-dlna-2.0/dlna-profiles/png.xml
%{_datadir}/gupnp-dlna-2.0/dlna-profiles/wma.xml
+%{_datadir}/gupnp-dlna-2.0/dlna-profiles/mpeg-common.xml
+%{_datadir}/gupnp-dlna-2.0/dlna-profiles/mpeg-ps.xml
# << files
@@ -107,7 +109,7 @@ rm -rf $RPM_BUILD_ROOT%{_datadir}/gtk-doc
%{_includedir}/gupnp-dlna-2.0/libgupnp-dlna/gupnp-dlna.h
%{_includedir}/gupnp-dlna-2.0/libgupnp-dlna/gupnp-dlna-audio-information.h
%{_includedir}/gupnp-dlna-2.0/libgupnp-dlna/gupnp-dlna-container-information.h
-%{_includedir}/gupnp-dlna-2.0/libgupnp-dlna/gupnp-dlna-gst-legacy-utils.h
+%{_includedir}/gupnp-dlna-2.0/libgupnp-dlna/gupnp-dlna-gst-utils.h
%{_includedir}/gupnp-dlna-2.0/libgupnp-dlna/gupnp-dlna-g-values.h
%{_includedir}/gupnp-dlna-2.0/libgupnp-dlna/gupnp-dlna-image-information.h
%{_includedir}/gupnp-dlna-2.0/libgupnp-dlna/gupnp-dlna-information.h
@@ -120,9 +122,9 @@ rm -rf $RPM_BUILD_ROOT%{_datadir}/gtk-doc
%{_includedir}/gupnp-dlna-2.0/libgupnp-dlna/metadata/gupnp-dlna-metadata-extractor.h
%{_libdir}/pkgconfig/gupnp-dlna-2.0.pc
%{_libdir}/pkgconfig/gupnp-dlna-metadata-2.0.pc
-%{_libdir}/pkgconfig/gupnp-dlna-gst-legacy-2.0.pc
+%{_libdir}/pkgconfig/gupnp-dlna-gst-2.0.pc
%{_libdir}/libgupnp-dlna-2.0.so
-%{_libdir}/libgupnp-dlna-gst-legacy-2.0.so
-%{_libdir}/gupnp-dlna/libgstreamer-legacy.so
+%{_libdir}/libgupnp-dlna-gst-2.0.so
+%{_libdir}/gupnp-dlna/libgstreamer.so
# << files devel
diff --git a/tests/Makefile.am b/tests/Makefile.am
index a916937..323f190 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,4 +1,10 @@
-noinst_PROGRAMS = sets
+TESTS_ENVIRONMENT = \
+ G_SLICE=debug-blocks \
+ LD_LIBRARY_PATH=$(top_builddir)/libgupnp-dlna/.libs:$(LD_LIBRARY_PATH) \
+ MEDIA_DIR="$(srcdir)/media" FILE_LIST="$(srcdir)/media/media-list.txt" ${SHELL}
+TESTS = $(check_PROGRAMS) test-discoverer.sh
+
+check_PROGRAMS = sets
sets_SOURCES = \
sets.c
diff --git a/tests/Makefile.in b/tests/Makefile.in
index c6fa6dc..3477951 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -14,7 +14,6 @@
# PARTICULAR PURPOSE.
@SET_MAKE@
-
VPATH = @srcdir@
am__make_dryrun = \
{ \
@@ -51,7 +50,7 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-noinst_PROGRAMS = sets$(EXEEXT)
+check_PROGRAMS = sets$(EXEEXT)
subdir = tests
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(srcdir)/test-discoverer.sh.in
@@ -67,7 +66,6 @@ mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = test-discoverer.sh
CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
am_sets_OBJECTS = sets-sets.$(OBJEXT)
sets_OBJECTS = $(am_sets_OBJECTS)
am__DEPENDENCIES_1 =
@@ -115,6 +113,8 @@ am__can_run_installinfo = \
esac
ETAGS = etags
CTAGS = ctags
+am__tty_colors = \
+red=; grn=; lgn=; blu=; std=
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -220,6 +220,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
VAPIGEN = @VAPIGEN@
VERSION = @VERSION@
+XMLLINT = @XMLLINT@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
@@ -272,6 +273,12 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+TESTS_ENVIRONMENT = \
+ G_SLICE=debug-blocks \
+ LD_LIBRARY_PATH=$(top_builddir)/libgupnp-dlna/.libs:$(LD_LIBRARY_PATH) \
+ MEDIA_DIR="$(srcdir)/media" FILE_LIST="$(srcdir)/media/media-list.txt" ${SHELL}
+
+TESTS = $(check_PROGRAMS) test-discoverer.sh
sets_SOURCES = \
sets.c
@@ -329,8 +336,8 @@ $(am__aclocal_m4_deps):
test-discoverer.sh: $(top_builddir)/config.status $(srcdir)/test-discoverer.sh.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-clean-noinstPROGRAMS:
- @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+clean-checkPROGRAMS:
+ @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
rm -f $$list || exit $$?; \
test -n "$(EXEEXT)" || exit 0; \
@@ -442,6 +449,99 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ $(am__tty_colors); \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=XPASS; \
+ ;; \
+ *) \
+ col=$$grn; res=PASS; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *[\ \ ]$$tst[\ \ ]*) \
+ xfail=`expr $$xfail + 1`; \
+ col=$$lgn; res=XFAIL; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ col=$$red; res=FAIL; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ col=$$blu; res=SKIP; \
+ fi; \
+ echo "$${col}$$res$${std}: $$tst"; \
+ done; \
+ if test "$$all" -eq 1; then \
+ tests="test"; \
+ All=""; \
+ else \
+ tests="tests"; \
+ All="All "; \
+ fi; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="$$All$$all $$tests passed"; \
+ else \
+ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
+ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all $$tests failed"; \
+ else \
+ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
+ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ if test "$$skip" -eq 1; then \
+ skipped="($$skip test was not run)"; \
+ else \
+ skipped="($$skip tests were not run)"; \
+ fi; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ if test "$$failed" -eq 0; then \
+ col="$$grn"; \
+ else \
+ col="$$red"; \
+ fi; \
+ echo "$${col}$$dashes$${std}"; \
+ echo "$${col}$$banner$${std}"; \
+ test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
+ test -z "$$report" || echo "$${col}$$report$${std}"; \
+ echo "$${col}$$dashes$${std}"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -473,8 +573,10 @@ distdir: $(DISTFILES)
fi; \
done
check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check-TESTS
check: check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
@@ -508,7 +610,7 @@ maintainer-clean-generic:
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
mostlyclean-am
distclean: distclean-am
@@ -577,20 +679,21 @@ ps-am:
uninstall-am:
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstPROGRAMS ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags uninstall uninstall-am
+.MAKE: check-am install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-checkPROGRAMS clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 5d22ee7..c2a5186 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -228,6 +228,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
VAPIGEN = @VAPIGEN@
VERSION = @VERSION@
+XMLLINT = @XMLLINT@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
diff --git a/vala/GUPnPDLNAGst-2.0.metadata b/vala/GUPnPDLNAGst-2.0.metadata
new file mode 100644
index 0000000..bab0e14
--- /dev/null
+++ b/vala/GUPnPDLNAGst-2.0.metadata
@@ -0,0 +1 @@
+utils_information_from_discoverer_info cheader_filename="libgupnp-dlna/gupnp-dlna-gst-utils.h"
diff --git a/vala/Makefile.in b/vala/Makefile.in
index 97d1fc6..179a8d9 100644
--- a/vala/Makefile.in
+++ b/vala/Makefile.in
@@ -229,6 +229,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
VAPIGEN = @VAPIGEN@
VERSION = @VERSION@
+XMLLINT = @XMLLINT@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
diff --git a/vala/gupnp-dlna-gst-2.0-custom.vala b/vala/gupnp-dlna-gst-2.0-custom.vala
new file mode 100644
index 0000000..1ff1a6e
--- /dev/null
+++ b/vala/gupnp-dlna-gst-2.0-custom.vala
@@ -0,0 +1,2 @@
+namespace GUPnP.DLNA.Gst {
+}
diff --git a/vala/gupnp-dlna-gst-2.0.deps b/vala/gupnp-dlna-gst-2.0.deps
new file mode 100644
index 0000000..3ed2cd4
--- /dev/null
+++ b/vala/gupnp-dlna-gst-2.0.deps
@@ -0,0 +1,3 @@
+gupnp-dlna-2.0
+gstreamer-1.0
+gstreamer-pbutils-1.0