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
