summaryrefslogtreecommitdiff
path: root/TODO
blob: 8c510d87f2957107382428a40a4a52791ef2e158 (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
  * MediaExport
    * 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
    * Find a way to handle images properly
      * Will be done automagically by
      * https://bugzilla.gnome.org/show_bug.cgi?id=626531

  * Unify ImportResource and HTTPPost.

  * 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.
     → How to handle devices that query a lot of byte ranges in parallel (LG
     blueray player e.g.)

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

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

  * Generate default rygel.conf from rygel.conf.xml?

  * 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.
      * Probably next to impossible since that would need a byte ←→ time
        mapping

  * 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