diff options
author | Jens Georg <mail@jensge.org> | 2014-11-17 06:37:39 +0100 |
---|---|---|
committer | Jens Georg <mail@jensge.org> | 2015-02-08 13:18:41 +0100 |
commit | d50218a1ba52815a3601c67df4da130712bea501 (patch) | |
tree | 55e8cf4f7dce04a2e98102a1f24144f769a17c44 | |
parent | a9eb713a8cba0efb10d1400c48ed6243bd03d179 (diff) | |
download | rygel-d50218a1ba52815a3601c67df4da130712bea501.tar.gz |
server: Use MediaResource for playlists
Use the newly introduced MediaResource to serialize MediaContainer's
playlist resources.
Patch derived from Cablelabs's CVP-2 implementation
Signed-off-by: Jens Georg <mail@jensge.org>
-rw-r--r-- | src/librygel-server/filelist.am | 2 | ||||
-rw-r--r-- | src/librygel-server/rygel-http-get.vala | 13 | ||||
-rw-r--r-- | src/librygel-server/rygel-http-item-uri.vala | 12 | ||||
-rw-r--r-- | src/librygel-server/rygel-http-playlist-handler.vala | 81 | ||||
-rw-r--r-- | src/librygel-server/rygel-http-request.vala | 8 | ||||
-rw-r--r-- | src/librygel-server/rygel-http-resource-handler.vala | 102 | ||||
-rw-r--r-- | src/librygel-server/rygel-http-server.vala | 4 | ||||
-rw-r--r-- | src/librygel-server/rygel-media-container.vala | 199 | ||||
-rw-r--r-- | src/librygel-server/rygel-media-engine.vala | 7 | ||||
-rw-r--r-- | src/librygel-server/rygel-media-file-item.vala | 8 | ||||
-rw-r--r-- | src/librygel-server/rygel-media-object.vala | 8 | ||||
-rw-r--r-- | src/librygel-server/rygel-music-item.vala | 1 | ||||
-rw-r--r-- | src/librygel-server/rygel-object-creator.vala | 1 | ||||
-rw-r--r-- | src/librygel-server/rygel-transcode-manager.vala | 1 | ||||
-rw-r--r-- | src/librygel-server/rygel-transcoder.vala | 1 | ||||
-rw-r--r-- | src/librygel-server/rygel-video-item.vala | 1 | ||||
-rw-r--r-- | src/librygel-server/rygel-visual-item.vala | 1 |
17 files changed, 277 insertions, 173 deletions
diff --git a/src/librygel-server/filelist.am b/src/librygel-server/filelist.am index 63642701..86c8bc33 100644 --- a/src/librygel-server/filelist.am +++ b/src/librygel-server/filelist.am @@ -44,7 +44,6 @@ LIBRYGEL_SERVER_NONVAPI_SOURCE_FILES = \ rygel-http-get-handler.vala \ rygel-http-get.vala \ rygel-http-identity-handler.vala \ - rygel-http-playlist-handler.vala \ rygel-http-item-uri.vala \ rygel-http-post.vala \ rygel-http-request.vala \ @@ -52,6 +51,7 @@ LIBRYGEL_SERVER_NONVAPI_SOURCE_FILES = \ rygel-http-server.vala \ rygel-http-time-seek.vala \ rygel-http-transcode-handler.vala \ + rygel-http-resource-handler.vala \ rygel-import-resource.vala \ rygel-object-creator.vala \ rygel-reference-creator.vala \ diff --git a/src/librygel-server/rygel-http-get.vala b/src/librygel-server/rygel-http-get.vala index 19f587fe..ede92a98 100644 --- a/src/librygel-server/rygel-http-get.vala +++ b/src/librygel-server/rygel-http-get.vala @@ -66,10 +66,10 @@ internal class Rygel.HTTPGet : HTTPRequest { this.cancellable); } - if (uri.playlist_format != null && - HTTPPlaylistHandler.is_supported (uri.playlist_format)) { - this.handler = new HTTPPlaylistHandler (uri.playlist_format, - this.cancellable); + if (uri.resource_name != null) { + this.handler = new HTTPMediaResourceHandler (this.object, + uri.resource_name, + this.cancellable); } if (this.handler == null) { @@ -213,7 +213,7 @@ internal class Rygel.HTTPGet : HTTPRequest { switch (mode) { case "Streaming": - correct = (!(this.handler is HTTPPlaylistHandler)) && ( + correct = ( (this.handler is HTTPTranscodeHandler || ((this.object as MediaFileItem).streamable () && this.subtitle == null && @@ -225,8 +225,7 @@ internal class Rygel.HTTPGet : HTTPRequest { ((!(this.object as MediaFileItem).is_live_stream () && !(this.object as MediaFileItem).streamable ()) || (this.subtitle != null || - this.thumbnail != null))) || - this.handler is HTTPPlaylistHandler; + this.thumbnail != null))); break; } diff --git a/src/librygel-server/rygel-http-item-uri.vala b/src/librygel-server/rygel-http-item-uri.vala index 99e81cbb..ae03c34d 100644 --- a/src/librygel-server/rygel-http-item-uri.vala +++ b/src/librygel-server/rygel-http-item-uri.vala @@ -25,12 +25,11 @@ using Gee; -internal class Rygel.HTTPItemURI : Object { +public class Rygel.HTTPItemURI : Object { public string item_id { get; set; } public int thumbnail_index { get; set; default = -1; } public int subtitle_index { get; set; default = -1; } public string? transcode_target { get; set; default = null; } - public string? playlist_format { get; set; default = null; } public string? resource_name { get; set; default = null; } public unowned HTTPServer http_server { get; set; } @@ -54,14 +53,12 @@ internal class Rygel.HTTPItemURI : Object { int thumbnail_index = -1, int subtitle_index = -1, string? transcode_target = null, - string? playlist_format = null, string? resource_name = null) { this.item_id = object.id; this.thumbnail_index = thumbnail_index; this.subtitle_index = subtitle_index; this.transcode_target = transcode_target; this.http_server = http_server; - this.playlist_format = playlist_format; this.resource_name = resource_name; this.extension = ""; @@ -196,10 +193,6 @@ internal class Rygel.HTTPItemURI : Object { this.subtitle_index = int.parse (parts[i + 1]); break; - case "pl": - this.playlist_format = Soup.URI.decode (parts[i + 1]); - - break; case "res": this.resource_name = Soup.URI.decode (parts[i + 1]); @@ -230,9 +223,6 @@ internal class Rygel.HTTPItemURI : Object { path += "/th/" + this.thumbnail_index.to_string (); } else if (this.subtitle_index >= 0) { path += "/sub/" + this.subtitle_index.to_string (); - } else if (this.playlist_format != null) { - path += "/pl/" + Uri.escape_string - (this.playlist_format, "", true); } else if (this.resource_name != null) { path += "/res/" + Uri.escape_string (this.resource_name, "", true); diff --git a/src/librygel-server/rygel-http-playlist-handler.vala b/src/librygel-server/rygel-http-playlist-handler.vala index 6a8d5aa5..92a89078 100644 --- a/src/librygel-server/rygel-http-playlist-handler.vala +++ b/src/librygel-server/rygel-http-playlist-handler.vala @@ -21,87 +21,6 @@ */ using GUPnP; -/** - * Implementation of RygelDataSource to serve generated playlists to a client. - */ -internal class Rygel.PlaylistDatasource : Rygel.DataSource, Object { - private MediaContainer container; - private uint8[] data; - private HTTPServer server; - private ClientHacks hacks; - private SerializerType playlist_type; - - public PlaylistDatasource (SerializerType playlist_type, - MediaContainer container, - HTTPServer server, - ClientHacks? hacks) { - this.playlist_type = playlist_type; - this.container = container; - this.server = server; - this.hacks = hacks; - this.generate_data.begin (); - } - - public signal void data_ready (); - - public void start (HTTPSeek? offsets) throws Error { - if (offsets != null) { - throw new DataSourceError.SEEK_FAILED - (_("Seeking not supported")); - } - - if (this.data == null) { - this.data_ready.connect ( () => { - try { - this.start (offsets); - } catch (Error error) { } - }); - - return; - } - - Idle.add ( () => { - this.data_available (this.data); - this.done (); - - return false; - }); - } - - public void freeze () { } - - public void thaw () { } - - public void stop () { } - - public async void generate_data () { - try { - var sort_criteria = this.container.sort_criteria; - var count = this.container.child_count; - - var children = yield this.container.get_children (0, - count, - sort_criteria, - null); - - if (children != null) { - var serializer = new Serializer (this.playlist_type); - children.serialize (serializer, this.server, this.hacks); - - var xml = serializer.get_string (); - - this.data = xml.data; - this.data_ready (); - } else { - this.error (new DataSourceError.GENERAL - (_("Failed to generate playlist"))); - } - } catch (Error error) { - warning ("Could not generate playlist: %s", error.message); - this.error (error); - } - } -} /** * RygelHTTPPlaylistHandler implements a special handler for generating XML diff --git a/src/librygel-server/rygel-http-request.vala b/src/librygel-server/rygel-http-request.vala index 2d3baef4..389d3c09 100644 --- a/src/librygel-server/rygel-http-request.vala +++ b/src/librygel-server/rygel-http-request.vala @@ -25,7 +25,7 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -internal errordomain Rygel.HTTPRequestError { +public errordomain Rygel.HTTPRequestError { UNACCEPTABLE = Soup.Status.NOT_ACCEPTABLE, BAD_REQUEST = Soup.Status.BAD_REQUEST, NOT_FOUND = Soup.Status.NOT_FOUND, @@ -35,7 +35,7 @@ internal errordomain Rygel.HTTPRequestError { /** * Base class for HTTP client requests. */ -internal abstract class Rygel.HTTPRequest : GLib.Object, Rygel.StateMachine { +public abstract class Rygel.HTTPRequest : GLib.Object, Rygel.StateMachine { public unowned HTTPServer http_server; private MediaContainer root_container; public unowned Soup.Server server; @@ -89,8 +89,8 @@ internal abstract class Rygel.HTTPRequest : GLib.Object, Rygel.StateMachine { if (media_object == null || !((media_object is MediaContainer && - this.uri.playlist_format != null) || - (media_object is MediaFileItem && this.uri.playlist_format == null))) { + this.uri.resource_name != null) || + (media_object is MediaFileItem))) { throw new HTTPRequestError.NOT_FOUND (_("Requested item '%s' not found"), this.uri.item_id); diff --git a/src/librygel-server/rygel-http-resource-handler.vala b/src/librygel-server/rygel-http-resource-handler.vala new file mode 100644 index 00000000..dd87dc04 --- /dev/null +++ b/src/librygel-server/rygel-http-resource-handler.vala @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2013 Cable Television Laboratories, Inc. + * + * Author: Craig Pratt <craig@ecaspia.com> + * + * This file is part of Rygel. + * + * Rygel is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CABLE TELEVISION LABORATORIES + * INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using GUPnP; + +/** + * The HTTP handler for HTTP ContentResource requests. + */ +internal class Rygel.HTTPMediaResourceHandler : HTTPGetHandler { + private MediaObject media_object; + private string media_resource_name; + public MediaResource media_resource; + + public HTTPMediaResourceHandler (MediaObject media_object, + string media_resource_name, + Cancellable? cancellable) throws HTTPRequestError + { + this.media_object = media_object; + this.cancellable = cancellable; + this.media_resource_name = media_resource_name; + foreach (var resource in media_object.get_resource_list ()) { + if (resource.get_name () == media_resource_name) { + this.media_resource + = new MediaResource.from_resource (resource.get_name (), + resource); + } + } + if (this.media_resource == null) { + throw new HTTPRequestError.NOT_FOUND ("MediaResource %s not found", + media_resource_name); + } + } + + public override void add_response_headers (HTTPGet request) + throws HTTPRequestError { + request.http_server.set_resource_delivery_options (this.media_resource); + request.msg.response_headers.append ("Content-Type", + this.media_resource.mime_type); + + // Add contentFeatures.dlna.org + var protocol_info = this.media_resource.get_protocol_info (); + if (protocol_info != null) { + var pi_fields = protocol_info.to_string ().split (":", 4); + if (pi_fields[3] != null) { + request.msg.response_headers.append ("contentFeatures.dlna.org", + pi_fields[3]); + } + } + + // Chain-up + base.add_response_headers (request); + } + + public override HTTPResponse render_body (HTTPGet request) + throws HTTPRequestError { + try { + var src = request.object.create_stream_source_for_resource + (request, this.media_resource); + if (src == null) { + throw new HTTPRequestError.NOT_FOUND + (_("Couldn't create data source for %s"), + this.media_resource.get_name ()); + } + + return new HTTPResponse (request, this, src); + } catch (Error err) { + throw new HTTPRequestError.NOT_FOUND (err.message); + } + } + + protected override DIDLLiteResource add_resource (DIDLLiteObject didl_object, + HTTPGet request) + throws Error { + return null as DIDLLiteResource; + } +} diff --git a/src/librygel-server/rygel-http-server.vala b/src/librygel-server/rygel-http-server.vala index cfe470a9..daabf0bc 100644 --- a/src/librygel-server/rygel-http-server.vala +++ b/src/librygel-server/rygel-http-server.vala @@ -84,7 +84,7 @@ public class Rygel.HTTPServer : Rygel.TranscodeManager, Rygel.StateMachine { return; } - var uri = this.create_uri_for_object (item, -1, -1, null, null, null); + var uri = this.create_uri_for_object (item, -1, -1, null, null); item.add_resource (didl_item, uri, this.get_protocol (), uri); } @@ -120,14 +120,12 @@ public class Rygel.HTTPServer : Rygel.TranscodeManager, Rygel.StateMachine { int thumbnail_index, int subtitle_index, string? transcode_target, - string? playlist_target, string? resource_name) { var uri = new HTTPItemURI (object, this, thumbnail_index, subtitle_index, transcode_target, - playlist_target, resource_name); return uri.to_string (); diff --git a/src/librygel-server/rygel-media-container.vala b/src/librygel-server/rygel-media-container.vala index 5000084b..e739ad39 100644 --- a/src/librygel-server/rygel-media-container.vala +++ b/src/librygel-server/rygel-media-container.vala @@ -36,6 +36,88 @@ public enum Rygel.ObjectEventType { } /** + * Implementation of RygelDataSource to serve generated playlists to a client. + */ +internal class Rygel.PlaylistDatasource : Rygel.DataSource, Object { + private MediaContainer container; + private uint8[] data; + private HTTPServer server; + private ClientHacks hacks; + private SerializerType playlist_type; + + public PlaylistDatasource (SerializerType playlist_type, + MediaContainer container, + HTTPServer server, + ClientHacks? hacks) { + this.playlist_type = playlist_type; + this.container = container; + this.server = server; + this.hacks = hacks; + this.generate_data.begin (); + } + + public signal void data_ready (); + + public void start (HTTPSeek? offsets) throws Error { + if (offsets != null) { + throw new DataSourceError.SEEK_FAILED + (_("Seeking not supported")); + } + + if (this.data == null) { + this.data_ready.connect ( () => { + try { + this.start (offsets); + } catch (Error error) { } + }); + + return; + } + + Idle.add ( () => { + this.data_available (this.data); + this.done (); + + return false; + }); + } + + public void freeze () { } + + public void thaw () { } + + public void stop () { } + + public async void generate_data () { + try { + var sort_criteria = this.container.sort_criteria; + var count = this.container.child_count; + + var children = yield this.container.get_children (0, + count, + sort_criteria, + null); + + if (children != null) { + var serializer = new Serializer (this.playlist_type); + children.serialize (serializer, this.server, this.hacks); + + var xml = serializer.get_string (); + + this.data = xml.data; + this.data_ready (); + } else { + this.error (new DataSourceError.GENERAL + (_("Failed to generate playlist"))); + } + } catch (Error error) { + warning ("Could not generate playlist: %s", error.message); + this.error (error); + } + } +} + +/** * This is a container (folder) for media items and child containers. * * It provides a basic serialization implementation (to DIDLLiteWriter). @@ -77,6 +159,9 @@ public abstract class Rygel.MediaContainer : MediaObject { "+upnp:originalTrackNumber," + "+dc:title"; + private const string DIDL_S_PLAYLIST_RESNAME = "didl_s_playlist"; + private const string M3U_PLAYLIST_RESNAME = "m3u_playlist"; + public static bool equal_func (MediaContainer a, MediaContainer b) { return a.id == b.id; } @@ -209,6 +294,7 @@ public abstract class Rygel.MediaContainer : MediaObject { this.container_updated.connect (on_container_updated); this.sub_tree_updates_finished.connect (on_sub_tree_updates_finished); + this.add_playlist_resources (); } /** @@ -269,6 +355,36 @@ public abstract class Rygel.MediaContainer : MediaObject { sub_tree_update); } + + /** + * Add playlist resources to the MediaObject resource list + */ + internal void add_playlist_resources () { + { // Create the DIDL_S playlist resource + var didl_s_res = new MediaResource (DIDL_S_PLAYLIST_RESNAME); + didl_s_res.extension = "xml"; + didl_s_res.mime_type = "text/xml"; + didl_s_res.dlna_profile = "DIDL_S"; + didl_s_res.dlna_flags = DLNAFlags.CONNECTION_STALL | + DLNAFlags.BACKGROUND_TRANSFER_MODE | + DLNAFlags.INTERACTIVE_TRANSFER_MODE; + didl_s_res.uri = ""; // Established during serialization + this.get_resource_list ().add (didl_s_res); + } + + { // Create the M3U playlist resource + var m3u_res = new MediaResource (M3U_PLAYLIST_RESNAME); + m3u_res.extension = "m3u"; + m3u_res.mime_type = "audio/x-mpegurl"; + m3u_res.dlna_profile = null; + m3u_res.dlna_flags = DLNAFlags.CONNECTION_STALL | + DLNAFlags.BACKGROUND_TRANSFER_MODE | + DLNAFlags.INTERACTIVE_TRANSFER_MODE; + m3u_res.uri = ""; // Established during serialization + this.get_resource_list ().add (m3u_res); + } + } + public override DIDLLiteObject? serialize (Serializer serializer, HTTPServer http_server) throws Error { @@ -317,73 +433,38 @@ public abstract class Rygel.MediaContainer : MediaObject { didl_container.restricted = true; } - this.add_resources (http_server, didl_container); + if (this.child_count > 0) { + this.serialize_resource_list (didl_container, http_server); + } return didl_container; } - internal void add_resources (Rygel.HTTPServer http_server, - DIDLLiteContainer didl_container) - throws Error { - // Add resource with container contents serialized to DIDL_S playlist - var uri = new HTTPItemURI (this, - http_server, - -1, - -1, - null, - "DIDL_S"); - uri.extension = "xml"; - - var res = this.add_resource (didl_container, - uri.to_string (), - http_server.get_protocol ()); - if (res != null) { - res.protocol_info.mime_type = "text/xml"; - res.protocol_info.dlna_profile = "DIDL_S"; + public override DataSource? create_stream_source_for_resource + (HTTPRequest request, + MediaResource resource) + throws Error { + SerializerType playlist_type; + + switch (resource.get_name ()) { + case DIDL_S_PLAYLIST_RESNAME: + playlist_type = SerializerType.DIDL_S; + break; + case M3U_PLAYLIST_RESNAME: + playlist_type = SerializerType.M3UEXT; + break; + default: + warning (_("Unknown MediaContainer resource: %s"), resource.get_name ()); + + return null; } - // Add resource with container contents serialized to M3U playlist - uri = new HTTPItemURI (this, http_server, -1, -1, null, "M3U"); - uri.extension = "m3u"; - - res = this.add_resource (didl_container, - uri.to_string (), - http_server.get_protocol ()); - if (res != null) { - res.protocol_info.mime_type = "audio/x-mpegurl"; - } + return new PlaylistDatasource (playlist_type, + this, + request.http_server, + request.hack); } - internal override DIDLLiteResource add_resource - (DIDLLiteObject didl_object, - string? uri, - string protocol, - string? import_uri = null) - throws Error { - if (this.child_count <= 0) { - return null as DIDLLiteResource; - } - - var res = base.add_resource (didl_object, - uri, - protocol, - import_uri); - - if (uri != null) { - res.uri = uri; - } - - var protocol_info = new ProtocolInfo (); - protocol_info.mime_type = ""; - protocol_info.protocol = protocol; - protocol_info.dlna_flags = DLNAFlags.DLNA_V15 | - DLNAFlags.CONNECTION_STALL | - DLNAFlags.BACKGROUND_TRANSFER_MODE | - DLNAFlags.INTERACTIVE_TRANSFER_MODE; - res.protocol_info = protocol_info; - - return res; - } /** * The handler for the container_updated signal on this container. We only forward diff --git a/src/librygel-server/rygel-media-engine.vala b/src/librygel-server/rygel-media-engine.vala index 28d61b13..247475bd 100644 --- a/src/librygel-server/rygel-media-engine.vala +++ b/src/librygel-server/rygel-media-engine.vala @@ -105,6 +105,13 @@ public abstract class Rygel.MediaEngine : GLib.Object { */ public abstract unowned List<Transcoder>? get_transcoders (); + public virtual DataSource? create_data_source_for_resource + (MediaObject item, + MediaResource resource) + throws Error { + return this.create_data_source (resource.uri); + } + /** * Get a data source for the URI. * diff --git a/src/librygel-server/rygel-media-file-item.vala b/src/librygel-server/rygel-media-file-item.vala index a410f04a..249d2857 100644 --- a/src/librygel-server/rygel-media-file-item.vala +++ b/src/librygel-server/rygel-media-file-item.vala @@ -141,6 +141,14 @@ public abstract class Rygel.MediaFileItem : MediaItem { return MediaEngine.get_default ().create_data_source (translated_uri); } + public override DataSource? create_stream_source_for_resource + (HTTPRequest request, + MediaResource resource) + throws Error { + return MediaEngine.get_default ().create_data_source_for_resource + (this, resource); + } + public bool is_live_stream () { return this.streamable () && this.size <= 0; } diff --git a/src/librygel-server/rygel-media-object.vala b/src/librygel-server/rygel-media-object.vala index 2917c8a8..179ee06a 100644 --- a/src/librygel-server/rygel-media-object.vala +++ b/src/librygel-server/rygel-media-object.vala @@ -258,7 +258,6 @@ public abstract class Rygel.MediaObject : GLib.Object { -1, -1, null, - null, res.get_name ()); var didl_resource = didl_object.add_resource (); http_server.set_resource_delivery_options (res); @@ -279,6 +278,13 @@ public abstract class Rygel.MediaObject : GLib.Object { } } + /** + * Create a stream source for the given resource + */ + public abstract DataSource? create_stream_source_for_resource + (HTTPRequest request, + MediaResource resource) throws Error; + internal virtual void apply_didl_lite (DIDLLiteObject didl_object) { this.title = didl_object.title; diff --git a/src/librygel-server/rygel-music-item.vala b/src/librygel-server/rygel-music-item.vala index 43678f8d..9c48f5de 100644 --- a/src/librygel-server/rygel-music-item.vala +++ b/src/librygel-server/rygel-music-item.vala @@ -135,7 +135,6 @@ public class Rygel.MusicItem : AudioItem { 0, -1, null, - null, null); } } diff --git a/src/librygel-server/rygel-object-creator.vala b/src/librygel-server/rygel-object-creator.vala index 1922a49c..a6372bd3 100644 --- a/src/librygel-server/rygel-object-creator.vala +++ b/src/librygel-server/rygel-object-creator.vala @@ -79,7 +79,6 @@ private class Rygel.BaseMediaContainer : MediaContainer { throws Error { return null; } - } diff --git a/src/librygel-server/rygel-transcode-manager.vala b/src/librygel-server/rygel-transcode-manager.vala index 916ef04a..baaf60b1 100644 --- a/src/librygel-server/rygel-transcode-manager.vala +++ b/src/librygel-server/rygel-transcode-manager.vala @@ -45,7 +45,6 @@ public abstract class Rygel.TranscodeManager : GLib.Object { int thumbnail_index, int subtitle_index, string? transcode_target, - string? playlist_target, string? resource_name); public void add_resources (DIDLLiteItem didl_item, MediaFileItem item) diff --git a/src/librygel-server/rygel-transcoder.vala b/src/librygel-server/rygel-transcoder.vala index efa6152d..fb48fd30 100644 --- a/src/librygel-server/rygel-transcoder.vala +++ b/src/librygel-server/rygel-transcoder.vala @@ -83,7 +83,6 @@ public abstract class Rygel.Transcoder : GLib.Object { -1, -1, this.dlna_profile, - null, null); var res = item.add_resource (didl_item, uri, protocol); res.size = -1; diff --git a/src/librygel-server/rygel-video-item.vala b/src/librygel-server/rygel-video-item.vala index 514bbd13..c9d3a16f 100644 --- a/src/librygel-server/rygel-video-item.vala +++ b/src/librygel-server/rygel-video-item.vala @@ -195,7 +195,6 @@ public class Rygel.VideoItem : AudioItem, VisualItem { -1, index, null, - null, null); subtitle.add_didl_node (didl_item); diff --git a/src/librygel-server/rygel-visual-item.vala b/src/librygel-server/rygel-visual-item.vala index 254d61d5..2ab8897d 100644 --- a/src/librygel-server/rygel-visual-item.vala +++ b/src/librygel-server/rygel-visual-item.vala @@ -101,7 +101,6 @@ public interface Rygel.VisualItem : MediaFileItem { index, -1, null, - null, null); thumbnail.add_resource (didl_item, server.get_protocol ()); |