TODO 4.76 KB
Newer Older
Jens Georg's avatar
Jens Georg committed
1
  * MediaExport
2 3 4 5 6 7
    * 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
Jens Georg's avatar
Jens Georg committed
8 9 10
    * Find a way to handle images properly
      * Will be done automagically by
      * https://bugzilla.gnome.org/show_bug.cgi?id=626531
11

12 13
  * Unify ImportResource and HTTPPost.

14 15 16 17 18
  * 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.
Jens Georg's avatar
Jens Georg committed
19 20
     → How to handle devices that query a lot of byte ranges in parallel (LG
     blueray player e.g.)
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121

  * 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 ===
Jens Georg's avatar
Jens Georg committed
122 123 124

  * See if any of sunil mohan's changes are mergable.

Jens Georg's avatar
Jens Georg committed
125
  * Generate default rygel.conf from rygel.conf.xml?
126 127 128 129 130 131 132 133 134 135

  * 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.
Jens Georg's avatar
Jens Georg committed
136 137
      * Probably next to impossible since that would need a byte ←→ time
        mapping
138 139 140 141 142 143 144 145 146 147 148 149 150 151

  * 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