Update TODO
[profile/ivi/rygel.git] / TODO
1   * MediaExport
2     * Fix coding-style/indentation everywhere.
3     * Filesystem-based cover art (Implement feeding-part of MediaArtStorageSpec)
4       * Preliminary patch exists, though ugly
5     * Add configurable filter on "Genre" to decide between Audio and Music for
6     * UPnP class
7     * check if g_file_enumerator_container can simplify harvester
8     * Find a way to handle images properly
9       * Will be done automagically by
10       * https://bugzilla.gnome.org/show_bug.cgi?id=626531
11
12   * Unify ImportResource and HTTPPost.
13
14   * Check in HTTPSeek really needed?
15
16   * Cache response(s). If user fast forwards a stream, one request completes and
17     a second will be issued with a new time offset.  It is important to keep the
18     latency of starting the new request small.
19      → How to handle devices that query a lot of byte ranges in parallel (LG
20      blueray player e.g.)
21
22   * Assign priorities to gstreamer threads
23     (See gstreamer/tests/examples/streams/stream-status.c)
24
25   * rygel copies config file to user's home dir if not already there.
26     * Copy code from UI.
27
28   * Transcoding:
29     * Use h264 instead of mpeg2 video?
30
31   * UI:
32     * Kill preferences UI
33       * Move UI components to gnome-user-share (bastien will do this, really?)
34       * Remove rygel-preferences (code and UI file).
35       * Remove unneeded API from UserConfig.
36       * Remove related stuff from this TODO file.
37
38   * MediaItem.add_resource() should take a res (and renamed) rather than
39     taking a didl_item and returning a res.
40
41   * Tracker
42     * More suitable name for SearchContainer (QueryContainer?)
43     * Async creation of containers.
44     * Fetch as much metadata from added item as possible.
45     * Use tracker:id for IDs.
46     * Complete search implementation.
47       * Deal with number search expressions.
48       * Deal with logical expressions too.
49
50   * Document plugin API.
51
52   * Use methods (with errors) in Player's API to set props.
53
54   * Player's APIs should be async.
55
56   * Make all GIO calls async
57
58   * Replace magic keywords in model description as well.
59
60   * Get rid of 'handle_error' in most places.
61
62   * Unit tests
63     * HTTPGetHandler
64       * HTTPIdentityHandler
65       * HTTPTranscodeHandler
66     * UserConfig
67       * config file not available
68
69   * MediaProviderSpec/External
70     * Fix search: complete prop translation.
71     * search: What about multvalued props?
72     * Make use of "*" filter.
73
74   * How to hide ContentDirectoryError?
75
76   * mpris
77     * use icons for media objects.
78
79   * Playbin
80     * configuration options to set gst playbin props?
81
82   * Handle all provided metadata in CreateObject.
83
84   * Put common code in item and container into object (e.g upnp_class)
85
86   * Totem plugin that implements MediaRenderer spec.
87
88   * ScheduledRecording (ScheduledRecording spec, especially section 2.9.2.2.1)
89     * Add MediaItem.ChannelID prop.
90     * MediaItem.ChannelID prop gets serialized into DIDL.
91     * Skeleton ScheduledRecording service implementation
92     * RecordSchedule : MediaObject
93     * RecordTask : MediaObject
94     * Implement ScheduledRecording and RecordingBrowse classes (only allow
95       single RecordTask in each RecordSchedule)
96     * Make ScheduledRecording and ContentDir derive from a common class
97     (Browsable?). Same goes for RecordingBrowse and ContentDirBrowse.
98
99   * Move common code (construction and serializating) to MediaObject.
100
101   * Move the res field and it's manipulation to MediaObject.
102
103   * ScheduledRecording
104     * export EPG hierarchy
105       * EPG container
106       * EPG item
107
108   * Tracker:
109     * MetadataValues:
110       * Document delegate functions.
111     * Do something about total_count param of search (using COUNT?)
112     * Missing metadata:
113       * Video: resolution info, author, framerate, bitrate etc.
114       * Image: album.
115     * Use ~/.face as icon if available.
116     * Remove redundant "Item" from item class names.
117     * share playlists and other categories?
118
119   * Internal res:
120     * Provide IP.
121
122   * Provide APIs for D-Bus service-based plugins (external,mpris,tracker).
123
124 === Doubtful / issues ===
125
126   * See if any of sunil mohan's changes are mergable.
127
128   * Generate default rygel.conf from rygel.conf.xml?
129
130   * Use cached props instead of Properties.get*() for cleaner code. issue: How
131     to deal with optional properties on MediaServer2?
132
133   * move contents of src dir a level up?
134
135   * Pass a function to HTTPServer and HTTPRequest for item search, rather than
136     ContentDir itself?
137
138   * Implement DLNA's time seeking for non-transcoded contents as well.
139       * Probably next to impossible since that would need a byte ←→ time
140         mapping
141
142   * remove project prefix from file names?
143
144   * use soup_buffer_new_with_owner() to save memory?
145
146   * UTF16 conversion to UTF8.
147
148   * mark the plugins using %h option.
149
150   * listen to hostname changes and re-create plugins that use %h magic.
151
152 === Wishes ===
153
154   * http://zee-nix.blogspot.com/2008/10/rygel-gnome-upnp-media-server.html