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