CallbackReader.ReadSegment() -> ReadSegmentAsync().
Cleanup CallbackReader's Dispose.
Call the right Debug.WriteLine() overload.
Use the URI after redirection when determining the content type.
Return a result class from HttpHeaderReader instead of a 3-tuple.
Remove unused code from desktop's TsMediaManagerBuilder.
Use IMediaStreamFascade in Simulator.
Provide a way to specify the content type, bypassing the detection logic.
Add an ExtendedMessage() extension method for Exception that recurses through AggregateExceptions and includes both the exception type and exception message.
Change how the simulator starts.
Use ExtendedMessage() when reporting AsyncFifoWorker work exceptions.
Put quotes around the URLs in WebContentTypeDetector's log messages.
Make TsMediaManager's logging less chatty.
Simplify .DisposeReaders().
Have the aggregate exception use the exception's message.
Use the right Debug.WriteLine() overload.
Give the IProgramManager to PlaylistSegmentManager instead of the ISubProgram.
Use ICollection<Uri> instead of IEnumerable<Uri> to make it clear that multiple enumerations can and will happen.
Remove the old LoadSubProgram (actually, typoed "LoasdSubProgram()"...).
NasaTv shouldn't crash if tapped after stopping playback.
Some streams seem to have trouble with audio or video PIDs disappearing for short periods of time.  We now keep old handlers around to reuse them if the same PID/type shows up again instead of creating new ones.
Rename SimulatedMediaElementManager's OpenMedia/PlayMedia to OpenMediaAsync/PlayMediaAsync.
Use SimulatedMediaStreamSource.Post(HandleSamples) instead of going through CheckForSamples.