-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
62 lines (43 loc) · 2.32 KB
/
TODO
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
This is a list of things that need to be addressed yet.
In gupnp-dlna:
----
* Encoding still needs quite a bit of testing.
* Speaking of testing, some automated tests would be nice. Right now, there are
a bunch of corner cases in tests/xml which can be run through the parser with
tests/dlna-profile-parser, and we make sure it doesn't crash.
* A set of (non-copyright-encombered) media for each profile would be aces. One
way of getting this would be to use encodebin once the issues above are
resolved, but these must go through some manual verification as well.
* We don't have a way of checking the system bitratem.
* We're not checking channel maps, or verifying that 6 channels is actually
5.1, etc.
* It would be nice to have the bitrate check to be intelligent enough to work
with either bitrate or maximum-bitrate, whichever is available. For example,
if the restriction specifies that bitrate = 1-128000, and the stream has no
bitrate tag, but does have maximum-bitrate = 112000, it should be matched
anyway.
* And, of course, MOAR PROFILES!!111!
Outside gupnp-dlna (mostly GStreamer):
----
* Bitrate for AAC ADTS streams - there is no stream header, and guessing the
bitrate based on the first few frames (as is done in aacparse), can be wildly
inaccurate.
* HE-AAC support. There isn't any code around for HE-AAC support at all. We
need to detect both implicitly and explicitly signaled HE-AAC before we can
support these streams. There's a detailed explanation of the problem at:
https://bugzilla.gnome.org/show_bug.cgi?id=612312#c7
* Encoding needs a way for properties such as bitrate to be passed to the
encoder from encodebin. Edward has a plan for this.
* Bitrate/profile/level are not exported by MPEG-TS streams.
More on encoding
----
Jotting down discussion on the encoding API. This is not necessarily final.
1. Rygel fetches list of DLNA profile names that it should offer to transcode
to from config
2. Rygel asks gupnp-dlna for list of all supported profiles
3. Rygel filters that list against the profiles that config has asked for
4. Rygel sorts the filtered list by "distance" from the streams
GUPnPDLNAInformation
Here distance is a metric of transcoding "difficulty" (shorter distance =>
easier to transcode). Basically:
transmuxing < audio transcode < video transcode < audio+video transcode