todo: update
[profile/ivi/rygel.git] / TODO
1   * MediaExport
2     * persist update count for containers
3     * Fix coding-style/indentation everywhere.
4     * '''Fix coding-style everywhere'''
5     * Filesystem-based cover art (Implement feeding-part of MediaArtStorageSpec)
6       * Preliminary patch exists, though ugly
7     * React to configuration changes
8     * Add configurable filter on "Genre" to decide between Audio and Music for
9     * UPnP class
10     * check if g_file_enumerator_container can simplify harvester
11     * D-Bus API
12       * Add 'title' param to AddURI?
13         * Patch needs cleaning
14       * Removing URI
15         * causes assertion failure followed by a crash if done during its
16           harvested at rygel-media-export-root-container.vala:393
17     * Find a way to handle images properly
18       * Will be done automagically by
19       * https://bugzilla.gnome.org/show_bug.cgi?id=626531
20
21   * Unify ImportResource and HTTPPost.
22
23   * Check in HTTPSeek really needed?
24
25   * Use common.m4 in tests/Makefile.am (Probably not possible).
26
27   * Cache response(s). If user fast forwards a stream, one request completes and
28     a second will be issued with a new time offset.  It is important to keep the
29     latency of starting the new request small.
30      → How to handle devices that query a lot of byte ranges in parallel (LG
31      blueray player e.g.)
32
33   * Refactor ItemCreator class (especially run method).
34
35   * Tracker
36    * Once we can depend on a certain tracker version use dlna mime from
37      tracker.
38
39   * Assign priorities to gstreamer threads
40     (See gstreamer/tests/examples/streams/stream-status.c)
41
42   * UI
43     * Make sure we restart rygel when configuration changes.
44     * Get interfaces directly from NM.
45     * Show available APs for Wifi interface.
46
47   * rygel copies config file to user's home dir if not already there.
48     * Copy code from UI.
49
50   * Start rygel as part of user session.
51     * Remove relavent code from UI code.
52
53   * Transcoding:
54     * Make use of encodebin when it's ready (update README/wiki afterwards).
55     * Use h264 instead of mpeg2 video?
56
57   * UI:
58     * Kill preferences UI
59       * Move UI components to gnome-user-share (bastien will do this, really?)
60       * Remove rygel-preferences (code and UI file).
61       * Remove unneeded API from UserConfig.
62       * Remove related stuff from this TODO file.
63
64   * MediaItem.add_resource() should take a res (and renamed) rather than
65     taking a didl_item and returning a res.
66
67   * Tracker
68     * More suitable name for SearchContainer (QueryContainer?)
69     * Async creation of containers.
70     * Fetch as much metadata from added item as possible.
71     * Use tracker:id for IDs.
72     * Complete search implementation.
73       * Deal with number search expressions.
74       * Deal with logical expressions too.
75     * Move dbus path constants to relavent interfaces.
76
77   * Document plugin API.
78
79   * Use methods (with errors) in Player's API to set props.
80
81   * Player's APIs should be async.
82
83   * Make all GIO calls async
84
85   * Replace magic keywords in model description as well.
86
87   * Get rid of 'handle_error' in most places.
88
89   * Unit tests
90     * HTTPGetHandler
91       * HTTPIdentityHandler
92       * HTTPTranscodeHandler
93     * UserConfig
94       * config file not available
95
96   * MediaProviderSpec/External
97     * incrementally browse containers at startup.
98     * Fix search: complete prop translation.
99     * search: What about multvalued props?
100     * Make use of "*" filter.
101
102   * How to hide ContentDirectoryError?
103
104   * mpris
105     * use icons for media objects.
106
107   * AVTransport
108     * Handle Next/Prev
109     * Handle GetMediaInfo_Ext
110     * Actually handle all advertized actions/variables.
111
112   * Playbin
113     * configuration options to set gst playbin props?
114
115   * Handle all provided metadata in CreateObject.
116
117   * Put common code in item and container into object (e.g upnp_class)
118
119   * Totem plugin that implements MediaRenderer spec.
120
121   * plugins should keep version of rygel they were compiled against.
122
123   * ScheduledRecording (ScheduledRecording spec, especially section 2.9.2.2.1)
124     * Add MediaItem.ChannelID prop.
125     * MediaItem.ChannelID prop gets serialized into DIDL.
126     * Skeleton ScheduledRecording service implementation
127     * RecordSchedule : MediaObject
128     * RecordTask : MediaObject
129     * Implement ScheduledRecording and RecordingBrowse classes (only allow
130       single RecordTask in each RecordSchedule)
131     * Make ScheduledRecording and ContentDir derive from a common class
132     (Browsable?). Same goes for RecordingBrowse and ContentDirBrowse.
133
134   * Move common code (construction and serializating) to MediaObject.
135
136   * Move the res field and it's manipulation to MediaObject.
137
138   * ScheduledRecording
139     * export EPG hierarchy
140       * EPG container
141       * EPG item
142
143   * Tracker:
144     * Port to libtracker-sparql.
145     * Set the pixel-aspect-ratio props.
146     * MetadataValues:
147       * Document delegate functions.
148     * Rid of choping tails.
149     * Do something about total_count param of search (using COUNT?)
150     * Missing metadata:
151       * Video: resolution info, author, framerate, bitrate etc.
152       * Image: album.
153     * Use ~/.face as icon if available.
154     * Remove redundant "Item" from item class names.
155     * share playlists and other categories?
156
157   * Internal res:
158     * Provide IP.
159
160   * Provide APIs for D-Bus service-based plugins (external,mpris,tracker).
161
162 === Doubtful / issues ===
163
164   * See if any of sunil mohan's changes are mergable.
165
166   * Generate default rygel.conf from rygel.conf.xml?
167
168   * Use cached props instead of Properties.get*() for cleaner code. issue: How
169     to deal with optional properties on MediaServer2?
170
171   * move contents of src dir a level up?
172
173   * Pass a function to HTTPServer and HTTPRequest for item search, rather than
174     ContentDir itself?
175
176   * Implement DLNA's time seeking for non-transcoded contents as well.
177       * Probably next to impossible since that would need a byte ←→ time
178         mapping
179
180   * Turn Rygel into a library?
181     * most c files put into a lib: librygel.so
182     * update pkg-config.
183
184   * remove project prefix from file names?
185
186   * use soup_buffer_new_with_owner() to save memory?
187
188   * UTF16 conversion to UTF8.
189
190   * mark the plugins using %h option.
191
192   * listen to hostname changes and re-create plugins that use %h magic.
193
194   * Port to Gio.Variant and GDBus.
195     * Asynchronous DBusService/Interface.shutdown.
196     * Remove FreeDesktop.Properties ?
197
198 === Wishes ===
199
200   * http://zee-nix.blogspot.com/2008/10/rygel-gnome-upnp-media-server.html