summaryrefslogtreecommitdiff
path: root/TODO
blob: 22acaab06482038ab07644dfb4f5d30f9bf5f76b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
  * MediaDB:
    * Refactor the beast
    * Some of the new classes need to be 'internal'.
    * persist update count for containers
    * More errors needed in MediaDBError
    * Remove generic save*() & get*()
    * Fix coding-style/indentation everywhere.
    * DB tables should directly correspond/map to class hierarchy & naming
    * scheme.

  * MetadataExtractor
    * Find a way to handle images properly
      * Will be done automagically by
      * https://bugzilla.gnome.org/show_bug.cgi?id=626531

  * MediaExport
    * '''Fix coding-style everywhere'''
    * Filesystem-based cover art (Implement feeding-part of MediaArtStorageSpec)
      * Preliminary patch exists, though ugly
    * React to configuration changes
    * Add configurable filter on "Genre" to decide between Audio and Music for
    * UPnP class
    * check if g_file_enumerator_container can simplify harvester
    * D-Bus API
      * Add 'title' param to AddURI?
        * Patch needs cleaning
      * Removing URI
        * causes assertion failure followed by a crash if done during its
          harvested at rygel-media-export-root-container.vala:393

  * Unify ImportResource and HTTPPost.

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

  * Check in HTTPSeek really needed?

  * crash on trying to trancode ogg to wmv.

  * Always build/run tests if configured with '--enable-tests'.

  * autogen passes '--enable-tests' to configure by default.

  * Use common.m4 in tests/Makefile.am (Probably not possible).

  * 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.

  * Refactor ItemCreator class (especially run method).

  * Tracker
   * Get mime-type from gupnp-dlna when dlna pn is known.
        OR
   * Make sure tracker uses mime from gupnp-dlna.

  * Assign priorities to gstreamer threads
    (See gstreamer/tests/examples/streams/stream-status.c)

  * UI
    * Make sure we restart rygel when configuration changes.
    * Fix tooltips.
    * Get interfaces directly from NM.
    * Show available APs for Wifi interface.

  * rygel copies config file to user's home dir if not already there.
    * Copy code from UI.

  * Start rygel as part of user session.
    * Remove relavent code from UI code.

  * XBox hacks:
    * Split in XBox hacks and ContentDirectory:1 hacks
    * Config for device hacks user-agent.

  * Transcoding:
    * Make use of encodebin when it's ready (update README/wiki afterwards).
    * Use h264 instead of mpeg2 video?

  * 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.
    * Move dbus path constants to relavent interfaces.

  * 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.

  * save_modified_desc is in two classes.

  * Unit tests
    * HTTPGetHandler
      * HTTPIdentityHandler
      * HTTPTranscodeHandler
    * UserConfig
      * config file not available

  * MediaProviderSpec/External
    * incrementally browse containers at startup.
    * Fix search: complete prop translation.
    * search: What about multvalued props?
    * Make use of "*" filter.

  * How to hide ContentDirectoryError?

  * mpris
    * use icons for media objects.

  * AVTransport
    * Handle Next/Prev
    * Handle GetMediaInfo_Ext
    * Actually handle all advertized actions/variables.

  * 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.

  * plugins should keep version of rygel they were compiled against.

  * 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:
    * Port to libtracker-sparql.
    * Set the pixel-aspect-ratio props.
    * MetadataValues:
      * Document delegate functions.
    * Rid of choping tails.
    * 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 ===

  * 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.

  * Turn Rygel into a library?
    * most c files put into a lib: librygel.so
    * update pkg-config.

  * 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.

  * Port to Gio.Variant and GDBus.
    * Asynchronous DBusService/Interface.shutdown.
    * Remove FreeDesktop.Properties ?

=== Wishes ===

  * http://zee-nix.blogspot.com/2008/10/rygel-gnome-upnp-media-server.html