diff options
author | Regis Merlino <regis.merlino@intel.com> | 2013-06-10 15:05:20 +0200 |
---|---|---|
committer | Regis Merlino <regis.merlino@intel.com> | 2013-06-10 15:05:20 +0200 |
commit | b7a43fec95a00045277700a3ff4fd5d118157428 (patch) | |
tree | 737d655ead40aee89949dfc67d403a8399a2d90f | |
parent | 947a8d253be4b4b167a6af77937bad3efc3b9de2 (diff) | |
download | GUPnP-DLNA-b7a43fec95a00045277700a3ff4fd5d118157428.tar.gz GUPnP-DLNA-b7a43fec95a00045277700a3ff4fd5d118157428.tar.bz2 GUPnP-DLNA-b7a43fec95a00045277700a3ff4fd5d118157428.zip |
Update gupnp-dlna to 0.10.2 (34fee04)
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@ @@ -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. @@ -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 "audio-information" 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 <arun.raghavan@collabora.co.uk></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 |