Updated Czech translation
[profile/ivi/rygel.git] / TODO
diff --git a/TODO b/TODO
index 4870312..8c510d8 100644 (file)
--- a/TODO
+++ b/TODO
-Before first release:
+  * 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
 
-* Implement a dummy Media Server
-* Create the GUPnPMediaProvider interface
-* Implement GUPnPMediaTracker
-* Complete Media Server by starting to use GUPnPMediaTracker
+  * Unify ImportResource and HTTPPost.
 
-Before second release:
+  * Check in HTTPSeek really needed?
 
-* Implement GUPnPMediaDb
-* Turn GUPnPMediaTracker into a plugin
-* Use GUPnPMediaDb
+  * 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