* MediaExport * Fix coding-style/indentation everywhere. * Filesystem-based cover art (Implement feeding-part of MediaArtStorageSpec) * Preliminary patch exists, though ugly * Add configurable filter on "Genre" to decide between Audio and Music for * UPnP class * check if g_file_enumerator_container can simplify harvester * Find a way to handle images properly * Will be done automagically by * https://bugzilla.gnome.org/show_bug.cgi?id=626531 * Unify ImportResource and HTTPPost. * Check in HTTPSeek really needed? * Cache response(s). If user fast forwards a stream, one request completes and a second will be issued with a new time offset. It is important to keep the latency of starting the new request small. → How to handle devices that query a lot of byte ranges in parallel (LG blueray player e.g.) * Assign priorities to gstreamer threads (See gstreamer/tests/examples/streams/stream-status.c) * rygel copies config file to user's home dir if not already there. * Copy code from UI. * UI: * Kill preferences UI * Move UI components to gnome-user-share (bastien will do this, really?) * Remove rygel-preferences (code and UI file). * Remove unneeded API from UserConfig. * Remove related stuff from this TODO file. * MediaItem.add_resource() should take a res (and renamed) rather than taking a didl_item and returning a res. * Tracker * More suitable name for SearchContainer (QueryContainer?) * Async creation of containers. * Fetch as much metadata from added item as possible. * Use tracker:id for IDs. * Complete search implementation. * Deal with number search expressions. * Deal with logical expressions too. * Document plugin API. * Use methods (with errors) in Player's API to set props. * Player's APIs should be async. * Make all GIO calls async * Replace magic keywords in model description as well. * Get rid of 'handle_error' in most places. * Unit tests * HTTPGetHandler * HTTPIdentityHandler * HTTPTranscodeHandler * UserConfig * config file not available * MediaProviderSpec/External * Fix search: complete prop translation. * search: What about multvalued props? * Make use of "*" filter. * How to hide ContentDirectoryError? * mpris * use icons for media objects. * Playbin * configuration options to set gst playbin props? * Handle all provided metadata in CreateObject. * Put common code in item and container into object (e.g upnp_class) * Totem plugin that implements MediaRenderer spec. * ScheduledRecording (ScheduledRecording spec, especially section 2.9.2.2.1) * Add MediaItem.ChannelID prop. * MediaItem.ChannelID prop gets serialized into DIDL. * Skeleton ScheduledRecording service implementation * RecordSchedule : MediaObject * RecordTask : MediaObject * Implement ScheduledRecording and RecordingBrowse classes (only allow single RecordTask in each RecordSchedule) * Make ScheduledRecording and ContentDir derive from a common class (Browsable?). Same goes for RecordingBrowse and ContentDirBrowse. * Move common code (construction and serializating) to MediaObject. * Move the res field and it's manipulation to MediaObject. * ScheduledRecording * export EPG hierarchy * EPG container * EPG item * Tracker: * MetadataValues: * Document delegate functions. * Do something about total_count param of search (using COUNT?) * Missing metadata: * Video: resolution info, author, framerate, bitrate etc. * Image: album. * Use ~/.face as icon if available. * Remove redundant "Item" from item class names. * share playlists and other categories? * Internal res: * Provide IP. * Provide APIs for D-Bus service-based plugins (external,mpris,tracker). === Doubtful / issues === * See if any of sunil mohan's changes are mergable. * Generate default rygel.conf from rygel.conf.xml? * Use cached props instead of Properties.get*() for cleaner code. issue: How to deal with optional properties on MediaServer2? * move contents of src dir a level up? * Pass a function to HTTPServer and HTTPRequest for item search, rather than ContentDir itself? * Implement DLNA's time seeking for non-transcoded contents as well. * Probably next to impossible since that would need a byte ←→ time mapping * remove project prefix from file names? * use soup_buffer_new_with_owner() to save memory? * UTF16 conversion to UTF8. * mark the plugins using %h option. * listen to hostname changes and re-create plugins that use %h magic. === Wishes === * http://zee-nix.blogspot.com/2008/10/rygel-gnome-upnp-media-server.html