Update gupnp-dlna to 0.10.2 (34fee04)
authorRegis Merlino <regis.merlino@intel.com>
Mon, 10 Jun 2013 13:05:20 +0000 (15:05 +0200)
committerRegis Merlino <regis.merlino@intel.com>
Mon, 10 Jun 2013 13:05:20 +0000 (15:05 +0200)
42 files changed:
Makefile.in
NEWS
configure
configure.ac
data/Makefile.am
data/Makefile.in
data/aac.xml
data/mpeg-common.xml [new file with mode: 0644]
data/mpeg-ps.xml [new file with mode: 0644]
data/mpeg-ts.xml
data/png.xml
doc/Makefile.in
doc/gupnp-dlna-gst/Makefile.in
doc/gupnp-dlna-gst/html/ch01.html
doc/gupnp-dlna-gst/html/index.html
doc/gupnp-dlna-metadata/Makefile.in
doc/gupnp-dlna-metadata/html/GUPnPDLNAMetadataExtractor.html
doc/gupnp-dlna-metadata/html/ch01.html
doc/gupnp-dlna-metadata/html/index.html
doc/gupnp-dlna/Makefile.in
doc/gupnp-dlna/gupnp-dlna-sections.txt
doc/gupnp-dlna/html/GUPnPDLNAInformation.html
doc/gupnp-dlna/html/ch01.html
doc/gupnp-dlna/html/gupnp-dlna.devhelp2
doc/gupnp-dlna/html/index.html
doc/gupnp-dlna/html/index.sgml
doc/version.xml
libgupnp-dlna/Makefile.in
libgupnp-dlna/gupnp-dlna-information.c
libgupnp-dlna/gupnp-dlna-information.h
libgupnp-dlna/gupnp-dlna-profile-guesser.c
libgupnp-dlna/metadata-backends/gstreamer/gupnp-dlna-gst-audio-information.c
libgupnp-dlna/metadata/gupnp-dlna-metadata-extractor.c
m4/vapigen.m4
packaging/GUPnP-DLNA.spec
tests/Makefile.am
tests/Makefile.in
tools/Makefile.in
vala/GUPnPDLNAGst-2.0.metadata [new file with mode: 0644]
vala/Makefile.in
vala/gupnp-dlna-gst-2.0-custom.vala [new file with mode: 0644]
vala/gupnp-dlna-gst-2.0.deps [new file with mode: 0644]

index 6271cb0..84846c1 100644 (file)
@@ -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 (file)
--- 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.
index b9cfb00..8474811 100755 (executable)
--- 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" && \
 
 
 # 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
   { $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='#'
 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"
index 42725af..374cb73 100644 (file)
@@ -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"
index 0043f46..d7ce2bd 100644 (file)
@@ -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)
index 516f600..ad7fba2 100644 (file)
@@ -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:
index d6267a5..9aa8976 100644 (file)
     <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 (file)
index 0000000..3c98a02
--- /dev/null
@@ -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 (file)
index 0000000..266e915
--- /dev/null
@@ -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>
index 5e2ad7e..ab0b549 100644 (file)
@@ -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>
       </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>
       </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>
       </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" />
     </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>
 
       <parent name="MPEG_TS_AUDIO" />
 
       <field name="name" type="string">
-       <value>audio/x-private1-ac3</value>
+        <value>audio/x-private1-ac3</value>
       </field>
     </restriction>
 
       <parent name="MPEG_TS_AUDIO" />
 
       <field name="name" type="string">
-       <value>audio/ac3</value>
+        <value>audio/ac3</value>
       </field>
     </restriction>
 
     </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>
 
     </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" />
 
       <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>
index 501ab3e..c130b11 100644 (file)
@@ -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>
index 520740c..e20369e 100644 (file)
@@ -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@
index aeaf05d..c7c8e50 100644 (file)
@@ -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@
index 8ee29a2..1240117 100644 (file)
@@ -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>
index cc740ee..668f29b 100644 (file)
 <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
index 6051dd4..13132ae 100644 (file)
@@ -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@
index 85775d2..ded22de 100644 (file)
@@ -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
index 2b73b2b..2cd07c5 100644 (file)
@@ -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>
index 2781ab9..aa555ad 100644 (file)
 <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
index 80a02fa..40776cf 100644 (file)
@@ -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@
index a9c3a4a..2991c15 100644 (file)
@@ -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>
index 4aff246..02c43b6 100644 (file)
@@ -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">
index f4cf684..0e606f1 100644 (file)
@@ -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>
index d65c020..16399a0 100644 (file)
@@ -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"/>
index cf9a106..bc43608 100644 (file)
 <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
index 14a6e9b..314e65d 100644 (file)
@@ -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">
index 78bc1ab..5eef0f1 100644 (file)
@@ -1 +1 @@
-0.10.0
+0.10.2
index ed25e4c..536212e 100644 (file)
@@ -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@
index 7d1ea8d..37fb023 100644 (file)
@@ -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.
  *
index 88e6736..e9c6bf3 100644 (file)
@@ -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
index b7738d5..ef9ce94 100644 (file)
@@ -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
index a6ea58d..e453d90 100644 (file)
@@ -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;
index 2337548..3ae248f 100644 (file)
  * 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,
index df6395d..c909726 100644 (file)
@@ -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=""
+           ])])])
 ])
index 75ea49d..8bafbb2 100644 (file)
@@ -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
 
index a916937..323f190 100644 (file)
@@ -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
index c6fa6dc..3477951 100644 (file)
@@ -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.
index 5d22ee7..c2a5186 100644 (file)
@@ -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 (file)
index 0000000..bab0e14
--- /dev/null
@@ -0,0 +1 @@
+utils_information_from_discoverer_info cheader_filename="libgupnp-dlna/gupnp-dlna-gst-utils.h"
index 97d1fc6..179a8d9 100644 (file)
@@ -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 (file)
index 0000000..1ff1a6e
--- /dev/null
@@ -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 (file)
index 0000000..3ed2cd4
--- /dev/null
@@ -0,0 +1,3 @@
+gupnp-dlna-2.0
+gstreamer-1.0
+gstreamer-pbutils-1.0