gst-convenience: Change GstDiscoverer namespace
[gupnp:gupnp-dlna.git] / TODO
1 This is a list of things that need to be addressed yet.
2
3 In gupnp-dlna:
4 ----
5
6 * Encoding still needs quite a bit of testing.
7
8 * Speaking of testing, some automated tests would be nice. Right now, there are
9   a bunch of corner cases in tests/xml which can be run through the parser with
10   tests/dlna-profile-parser, and we make sure it doesn't crash.
11
12 * A set of (non-copyright-encombered) media for each profile would be aces. One
13   way of getting this would be to use encodebin once the issues above are
14   resolved, but these must go through some manual verification as well.
15
16 * We don't have a way of checking the system bitratem.
17
18 * We're not checking channel maps, or verifying that 6 channels is actually
19   5.1, etc.
20
21 * It would be nice to have the bitrate check to be intelligent enough to work
22   with either bitrate or maximum-bitrate, whichever is available. For example,
23   if the restriction specifies that bitrate = 1-128000, and the stream has no
24   bitrate tag, but does have maximum-bitrate = 112000, it should be matched
25   anyway.
26
27 * And, of course, MOAR PROFILES!!111!
28
29 Outside gupnp-dlna (mostly GStreamer):
30 ----
31
32 * Bitrate for AAC ADTS streams - there is no stream header, and guessing the
33   bitrate based on the first few frames (as is done in aacparse), can be wildly
34   inaccurate.
35
36 * HE-AAC support. There isn't any code around for HE-AAC support at all. We
37   need to detect both implicitly and explicitly signaled HE-AAC before we can
38   support these streams. There's a detailed explanation of the problem at:
39   https://bugzilla.gnome.org/show_bug.cgi?id=612312#c7
40
41 * Encoding needs a way for properties such as bitrate to be passed to the
42   encoder from encodebin. Edward has a plan for this.
43
44 * Bitrate/profile/level are not exported by MPEG-TS streams.
45
46
47 More on encoding
48 ----
49
50 Jotting down discussion on the encoding API. This is not necessarily final.
51
52 1. Rygel fetches list of DLNA profile names that it should offer to transcode
53    to from config
54 2. Rygel asks gupnp-dlna for list of all supported profiles
55 3. Rygel filters that list against the profiles that config has asked for
56 4. Rygel sorts the filtered list by "distance" from the streams
57    GUPnPDLNAInformation
58
59 Here distance is a metric of transcoding "difficulty" (shorter distance =>
60 easier to transcode). Basically:
61
62 transmuxing < audio transcode < video transcode < audio+video transcode