Skip to content
Commits on Source (9)
0.40.1
======
Server:
- Set albumArtUri on Videos to provide thumbnails for the PS4
MediaExport:
- Strip xml suffix when generating titles from filenames
Documentation:
- Fix generation and install location
Tracker3:
- Add section to the default configuration file
Translations:
- Various updates
Bugs fixed in this release:
- https://gitlab.gnome.org/GNOME/rygel/issues/151
- https://gitlab.gnome.org/GNOME/rygel/issues/183
- https://gitlab.gnome.org/GNOME/rygel/issues/190
All contributors to this release:
- Jens Georg <mail@jensge.org>
- Kjartan Maraas <kmaraas@gnome.org>
- Cheng-Chia Tseng <pswo10680@gmail.com>
- Juliano Camargo <julianosc@protonmail.com>
Added/updated translations:
- nb.po, courtesy of Kjartan Maraas
- pt.po, courtesy of José Vieira
- zh_TW.po, courtesy of Cheng-Chia Tseng
0.40.0
======
- Translation updates
......
#!/usr/bin/env python3
import sys
from os import environ, path, getcwd
import shutil
destdir = environ.get('MESON_INSTALL_DESTDIR_PREFIX', '')
a = path.join(sys.argv[1], 'html')
b = path.join(destdir, sys.argv[2])
print(a,b)
shutil.copytree(a, b, dirs_exist_ok=True)
......@@ -93,6 +93,15 @@ transcoders=mp3;lpcm;mp2ts;wmv;aac;avc
# is not set. DLNA wants something between 5 and 15 seconds.
image-timeout = 15
[Tracker3]
enabled=true
only-export-from=@MUSIC@;@VIDEOS@;@PICTURES@
share-pictures=true
share-videos=true
share-music=true
strict-sharing=false
title=@REALNAME@'s media on @PRETTY_HOSTNAME@
[Tracker]
enabled=true
only-export-from=@MUSIC@;@VIDEOS@;@PICTURES@
......
configure_file(input: 'librygel-core-docs.xml', output: 'librygel-core-docs.xml', copy: true)
configure_file(input: 'overview.xml', output: 'overview.xml', copy: true)
......@@ -22,22 +22,22 @@ custom_target('valadoc-core',
[
valadoc,
core_doc_common_args,
'-o', 'valadoc',
core_sources
]
)
if gtkdoc.found()
custom_target('gtkdoc-core',
subdir('gtkdoc')
gtkdoc_core_target = custom_target('gtkdoc-core',
input: core_sources,
output: 'gtkdoc',
depends : core_lib,
build_by_default : get_option('api-docs'),
command :
command:
[
valadoc,
'--doclet', 'gtkdoc',
'-o', 'gtkdoc',
core_doc_common_args,
'-X', join_paths(meson.build_root(), 'src/librygel-core/rygel-core.h'),
'-X', '-l',
......@@ -48,9 +48,8 @@ custom_target('gtkdoc-core',
)
if get_option('api-docs')
install_subdir('gtkdoc/html',
install_dir : join_paths(get_option('datadir'), 'gtk-doc/html/librygel-core'),
strip_directory : true)
meson.add_install_script(install_doc, gtkdoc_core_target,
join_paths(get_option('datadir'), 'gtk-doc/html/librygel-core'))
endif
endif
endif
configure_file(input: 'librygel-db-docs.xml', output: 'librygel-db-docs.xml', copy: true)
configure_file(input: 'overview.xml', output: 'overview.xml', copy: true)
......@@ -28,13 +28,13 @@ custom_target('valadoc-db',
[
valadoc,
db_doc_common_args,
'-o', 'valadoc',
db_sources
]
)
if gtkdoc.found()
custom_target('gtkdoc-db',
subdir('gtkdoc')
gtkdoc_db_target = custom_target('gtkdoc-db',
input: db_sources,
output: 'gtkdoc',
depends : db_lib,
......@@ -44,7 +44,6 @@ custom_target('gtkdoc-db',
valadoc,
db_doc_common_args,
'--doclet', 'gtkdoc',
'-o', 'gtkdoc',
'-X', join_paths(meson.build_root(), 'src/librygel-db/rygel-db.h'),
'-X', '-l',
'-X', join_paths(meson.build_root(), 'src/librygel-db/librygel-db-2.6.so'),
......@@ -55,9 +54,8 @@ custom_target('gtkdoc-db',
)
if get_option('api-docs')
install_subdir('gtkdoc/html',
install_dir : join_paths(get_option('datadir'), 'gtk-doc/html/librygel-db'),
strip_directory : true)
meson.add_install_script(install_doc, gtkdoc_db_target,
join_paths(get_option('datadir'), 'gtk-doc/html/librygel-db'))
endif
endif
......
......@@ -11,12 +11,12 @@
<title>Implementing GStreamer-based Renderers: Overview</title>
<para>
This library may be used to create in-process UPnP/DLNA Renderers, or Players based on GStreamer, via
This library may be used to create in-process UPnP/DLNA Renderers, or Players based on GStreamer, via
the <link linkend="RygelPlaybinRenderer">RygelPlaybinRenderer</link> class. For instance,
this may be used to add UPnP/DLNA Renderer or Player capability to an existing GStreamer-based media player application.
</para>
<para>The <link linkend="RygelPlaybinRenderer">RygelPlaybinRenderer</link> reference documentation
<para>The <link linkend="RygelPlaybinRenderer">RygelPlaybinRenderer</link> reference documentation
and these examples explain how to implement renderers.
</para>
......@@ -33,7 +33,7 @@ and connect it to a network interface, rendering the content to stdout as ASCII.
<!-- Do not indent the xi:include node. That puts spaces at the start of the code. -->
<programlisting role="C">
<xi:include href="../../../../examples/standalone-renderer-gst.c"
<xi:include href="@EXAMPLEDIR@/standalone-renderer-gst.c"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
</programlisting>
......@@ -50,7 +50,7 @@ This slightly fuller example program shows how to instantiate the renderer then
<!-- Do not indent the xi:include node. That puts spaces at the start of the code. -->
<programlisting role="C">
<xi:include href="../../../../examples/fullscreen-renderer.c"
<xi:include href="@EXAMPLEDIR@/fullscreen-renderer.c"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
</programlisting>
......
configure_file(input: 'librygel-renderer-gst-docs.xml', output: 'librygel-renderer-gst-docs.xml', configuration: conf)
configure_file(input: 'implementing-renderers-gst.xml', output: 'implementing-renderers-gst.xml', configuration: conf)
configure_file(input: 'overview.xml', output: 'overview.xml', copy: true)
......@@ -31,13 +31,13 @@ custom_target('valadoc-renderer-gst',
[
valadoc,
renderer_gst_doc_common_args,
'-o', 'valadoc',
renderer_gst_sources
]
)
if gtkdoc.found()
custom_target('gtkdoc-renderer-gst',
subdir('gtkdoc')
gtkdoc_renderer_gst_target = custom_target('gtkdoc-renderer-gst',
input: renderer_gst_sources,
output: 'gtkdoc',
depends : renderer_gst_lib,
......@@ -47,7 +47,6 @@ custom_target('gtkdoc-renderer-gst',
valadoc,
renderer_gst_doc_common_args,
'--doclet', 'gtkdoc',
'-o', 'gtkdoc',
'-X', join_paths(meson.build_root(), 'src/librygel-renderer/rygel-renderer.h'),
'-X', '-l',
'-X', join_paths(meson.build_root(), 'src/librygel-renderer/librygel-renderer-2.6.so'),
......@@ -59,9 +58,8 @@ custom_target('gtkdoc-renderer-gst',
]
)
if get_option('api-docs')
install_subdir('gtkdoc/html',
install_dir : join_paths(get_option('datadir'), 'gtk-doc/html/librygel-renderer-gst'),
strip_directory : true)
meson.add_install_script(install_doc, gtkdoc_renderer_gst_target,
join_paths(get_option('datadir'), 'gtk-doc/html/librygel-renderer-gst'))
endif
endif
endif
......@@ -14,11 +14,11 @@
<para>
This library may be used to create Rygel renderer plugins by
This library may be used to create Rygel renderer plugins by
implementing the <link linkend="RygelMediaRendererPlugin">RygelMediaRendererPlugin</link> class.
</para>
<para>The <link linkend="RygelMediaRendererPlugin">RygelMediaRendererPlugin</link> reference documentation
<para>The <link linkend="RygelMediaRendererPlugin">RygelMediaRendererPlugin</link> reference documentation
and this example explain how to implement these plugins.
</para>
......@@ -31,8 +31,8 @@ and this example explain how to implement these plugins.
<para>
This example source code shows how to implement a Rygel Renderer plugin.</para>
<para>This example implements module that provides a <link linkend="RygelMediaPlayer">RygelMediaPlayer</link>
that simply prints the addresses of any URIs provided to it by a UPnP/DLNA controller. A real Rygel renderer
<para>This example implements module that provides a <link linkend="RygelMediaPlayer">RygelMediaPlayer</link>
that simply prints the addresses of any URIs provided to it by a UPnP/DLNA controller. A real Rygel renderer
plugin's player would render the actual media content to some device. See, for instance, the
<ulink url="&url_refdocs_librygel_renderer_gst;RygelPlaybinPlayer.html">RygelPlaybinPlayer</ulink> from the
librygel-renderer-gst library, used in the <ulink url="&url_git_browse_base_src;plugins/playbin/">Rygel Playbin plugin</ulink>.
......@@ -40,22 +40,22 @@ librygel-renderer-gst library, used in the <ulink url="&url_git_browse_base_src;
<!-- Do not indent the xi:include node. That puts spaces at the start of the code. -->
<programlisting role="C">
<xi:include href="../../../../examples/renderer-plugins/C/example-renderer-plugin.h"
<xi:include href="@EXAMPLEDIR@/renderer-plugins/C/example-renderer-plugin.h"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
</programlisting>
<programlisting role="C">
<xi:include href="../../../../examples/renderer-plugins/C/example-renderer-plugin.c"
<xi:include href="@EXAMPLEDIR@/renderer-plugins/C/example-renderer-plugin.c"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
</programlisting>
<programlisting role="C">
<xi:include href="../../../../examples/renderer-plugins/C/example-player.h"
<xi:include href="@EXAMPLEDIR@/renderer-plugins/C/example-player.h"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
</programlisting>
<programlisting role="C">
<xi:include href="../../../../examples/renderer-plugins/C/example-player.c"
<xi:include href="@EXAMPLEDIR@/renderer-plugins/C/example-player.c"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
</programlisting>
......
......@@ -40,7 +40,7 @@ and connect it to a network interface.
<!-- Do not indent the xi:include node. That puts spaces at the start of the code. -->
<!--
<programlisting role="C">
<xi:include href="../../../../examples/standalone-renderer.c"
<xi:include href="@EXAMPLEDIR@/standalone-renderer.c"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
</programlisting>
......
configure_file(input: 'librygel-renderer-docs.xml', output: 'librygel-renderer-docs.xml', copy: true)
configure_file(input: 'overview.xml', output: 'overview.xml', copy: true)
configure_file(input: 'implementing-renderer-plugins.xml', output: 'implementing-renderer-plugins.xml', configuration: conf)
configure_file(input: 'implementing-renderers.xml', output: 'implementing-renderers.xml', configuration: conf)
......@@ -27,13 +27,13 @@ custom_target('valadoc-renderer',
[
valadoc,
renderer_doc_common_args,
'-o', 'valadoc',
renderer_sources
]
)
if gtkdoc.found()
custom_target('gtkdoc-renderer',
subdir('gtkdoc')
gtkdoc_renderer_target = custom_target('gtkdoc-renderer',
input: renderer_sources,
output: 'gtkdoc',
depends : renderer_lib,
......@@ -43,7 +43,6 @@ custom_target('gtkdoc-renderer',
valadoc,
renderer_doc_common_args,
'--doclet', 'gtkdoc',
'-o', 'gtkdoc',
'-X', join_paths(meson.build_root(), 'src/librygel-renderer/rygel-renderer.h'),
'-X', '-l',
'-X', join_paths(meson.build_root(), 'src/librygel-renderer/librygel-renderer-2.6.so'),
......@@ -53,9 +52,8 @@ custom_target('gtkdoc-renderer',
]
)
if get_option('api-docs')
install_subdir('gtkdoc/html',
install_dir : join_paths(get_option('datadir'), 'gtk-doc/html/librygel-renderer'),
strip_directory : true)
meson.add_install_script(install_doc, gtkdoc_renderer_target,
join_paths(get_option('datadir'), 'gtk-doc/html/librygel-renderer'))
endif
endif
endif
......@@ -11,9 +11,9 @@
<title>Implementing Media Engines: Overview</title>
<para>
This library may be used to create Rygel media engines by
This library may be used to create Rygel media engines by
implementing the <link linkend="RygelMediaEngine">RygelMediaEngine</link> class.
Rygel media engines contain knowledge about the streaming and (optionally) the
Rygel media engines contain knowledge about the streaming and (optionally) the
transcoding and seeking capabilites of the media library in use.</para>
<para>The actual media engine used by Rygel at runtime is specified
......
......@@ -12,10 +12,10 @@
<title>Implementing Server Plugins: Overview</title>
<para>
This library may be used to create Rygel server plugins by
This library may be used to create Rygel server plugins by
implementing the <link linkend="RygelMediaServerPlugin">RygelMediaServerPlugin</link> class.</para>
<para>The <link linkend="RygelMediaServerPlugin">RygelMediaServerPlugin</link> reference documentation
<para>The <link linkend="RygelMediaServerPlugin">RygelMediaServerPlugin</link> reference documentation
and these examples explain how to implement these plugins.
</para>
......@@ -32,30 +32,30 @@ This example source code shows how to implement a Rygel Server plugin.</para>
deriving from <link linkend="RygelSimpleContainer">RygelSimpleContainer</link> and adding some
hard-coded items. A real Rygel server plugin's root container, or its child items, would typically
populate themselves dynamically. For instance, they might add and remove items based on some source
such as a file system or database. See, for instance, the
such as a file system or database. See, for instance, the
<ulink url="&url_git_browse_base_src;plugins/tracker">Rygel Tracker Plugin</ulink> or the
<ulink url="&url_git_browse_base_src;plugins/media-export">Rygel MediaExport Plugin</ulink> plugins,
implemented in Vala.
</para>
<!-- Do not indent the xi:include node. That puts spaces at the start of the code. -->
<programlisting role="C">
<xi:include href="../../../../examples/server-plugins/C/example-server-plugin.h"
<programlisting language="C">
<xi:include href="@EXAMPLEDIR@/server-plugins/C/example-server-plugin.h"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
</programlisting>
<programlisting role="C">
<xi:include href="../../../../examples/server-plugins/C/example-server-plugin.c"
<programlisting language="C">
<xi:include href="@EXAMPLEDIR@/server-plugins/C/example-server-plugin.c"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
</programlisting>
<programlisting role="C">
<xi:include href="../../../../examples/server-plugins/C/example-root-container.h"
<programlisting language="C">
<xi:include href="@EXAMPLEDIR@/server-plugins/C/example-root-container.h"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
</programlisting>
<programlisting role="C">
<xi:include href="../../../../examples/server-plugins/C/example-root-container.c"
<programlisting language="C">
<xi:include href="@EXAMPLEDIR@/server-plugins/C/example-root-container.c"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
</programlisting>
......@@ -73,7 +73,7 @@ implemented in Vala.
<para>The <classname>RygelMediaExportRootContainer</classname> creates an instance of a <classname>RygelMediaExportMediaCache</classname> class and a <classname>RygelMediaExportHarvester</classname> class. The harvester finds files on the filesystem, and stores them in the media cache, which uses SQLite to keep track of them.</para>
<para><classname>RygelMediaExportRootContainer</classname> informs the media cache that it should have a child container for the media content as organised on the filesystem, and additionally some virtual folders for Music, Pictures, Video and Playlists, with further sub-divisions under these, for instance by publication year. These containers are added to the media cache via instances of the <classname>RygelMediaExportNullContainer</classname> class, but that is just to simplify the media cache API and these instances then serve no further purpose. The virtual folders are re-added whenever the filesystem's container is updated, so that they can show the updated
<para><classname>RygelMediaExportRootContainer</classname> informs the media cache that it should have a child container for the media content as organised on the filesystem, and additionally some virtual folders for Music, Pictures, Video and Playlists, with further sub-divisions under these, for instance by publication year. These containers are added to the media cache via instances of the <classname>RygelMediaExportNullContainer</classname> class, but that is just to simplify the media cache API and these instances then serve no further purpose. The virtual folders are re-added whenever the filesystem's container is updated, so that they can show the updated
content, though that is not particularly efficient.</para>
<para><classname>RygelMediaExportRootContainer</classname> then delegates its <classname>RygelMediaContainer</classname> virtual function implementations to this media cache, which in turn uses the <classname>RygelMediaExportObjectFactory</classname> to instantiate new containers for each request based on their ID. For instance, it returns a <classname>RygelMediaExportDBContainer</classname> if the requested ID indicates a virtual container, using the definition in the rest of the ID to build a suitable SQL query.</para>
......
......@@ -14,7 +14,7 @@
This library may be used to create UPnP or DLNA servers via its <link linkend="RygelMediaServer">RygelMediaServer</link> class.
</para>
<para>The <link linkend="RygelMediaServer">RygelMediaServer</link> reference documentation
<para>The <link linkend="RygelMediaServer">RygelMediaServer</link> reference documentation
and this example explains how to implement a server.
</para>
......@@ -25,13 +25,13 @@ and this example explains how to implement a server.
<!-- TODO: Find a way to mention this C example code in the RygelMediaServer valadoc comments instead. -->
<para>
This example program shows how to fill a container with media items and then instantiate a server to serve
This example program shows how to fill a container with media items and then instantiate a server to serve
them.
</para>
<!-- Do not indent the xi:include node. That puts spaces at the start of the code. -->
<programlisting role="C">
<xi:include href="../../../../examples/standalone-server.c"
<programlisting languae="C">
<xi:include href="@EXAMPLEDIR@/standalone-server.c"
parse="text"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
</programlisting>
......
configure_file(input: 'librygel-server-docs.xml', output: 'librygel-server-docs.xml', copy: true)
configure_file(input: 'implementing-media-engines.xml', output: 'implementing-media-engines.xml', copy: true)
configure_file(input: 'implementing-server-plugins.xml', output: 'implementing-server-plugins.xml', configuration: conf)
configure_file(input: 'implementing-servers.xml', output: 'implementing-servers.xml', configuration: conf)
configure_file(input: 'overview.xml', output: 'overview.xml', copy: true)
......@@ -28,13 +28,13 @@ custom_target('valadoc-server',
[
valadoc,
server_doc_common_args,
'-o', 'valadoc',
server_sources
]
)
if gtkdoc.found()
custom_target('gtkdoc-server',
subdir('gtkdoc')
gtkdoc_server_target = custom_target('gtkdoc-server',
input: server_sources,
output: 'gtkdoc',
depends : server_lib,
......@@ -44,7 +44,6 @@ custom_target('gtkdoc-server',
valadoc,
server_doc_common_args,
'--doclet', 'gtkdoc',
'-o', 'gtkdoc',
'-X', join_paths(meson.build_root(), 'src/librygel-server/rygel-server.h'),
'-X', '-l',
'-X', join_paths(meson.build_root(), 'src/librygel-server/librygel-server-2.6.so'),
......@@ -54,9 +53,8 @@ custom_target('gtkdoc-server',
]
)
if get_option('api-docs')
install_subdir('gtkdoc/html',
install_dir : join_paths(get_option('datadir'), 'gtk-doc/html/librygel-server'),
strip_directory : true)
meson.add_install_script(install_doc, gtkdoc_server_target,
join_paths(get_option('datadir'), 'gtk-doc/html/librygel-server'))
endif
endif
endif
project('rygel', 'vala', 'c', version : '0.40.0', meson_version : '>= 0.50.0')
project('rygel', 'vala', 'c', version : '0.40.1', meson_version : '>= 0.55.0')
vala = meson.get_compiler('vala')
# Check for the required vala version
......@@ -9,6 +9,8 @@ if not vala_version_found.version_compare(vala_version_required)
error('Found Vala version @0@, need @1@'.format(vala_version_found, vala_version_required))
endif
install_doc = find_program('build-aux/meson/install-gtkdoc.py')
i18n = import('i18n')
gnome = import('gnome')
......@@ -60,6 +62,7 @@ conf.set_quoted('LOCALEDIR', join_paths(get_option('prefix'), get_option('locale
conf.set_quoted('MX_EXTRACT_PATH', join_paths(rygel_libexecdir, 'mx-extract'))
conf.set_quoted('DESKTOP_DIR', join_paths(get_option('prefix'), get_option('datadir'), 'applications'))
conf.set_quoted('VERSION', meson.project_version())
conf.set('EXAMPLEDIR', join_paths(meson.current_source_dir(), 'examples'))
config_include = include_directories('.')
add_global_arguments(['-include','config.h'], language : 'c')
......