Making HDHR Work My Way

So, I have been using Plex DVR paired with two SiliconDust HDHomeruns. For the most part, the combination has been working great – especially considering that Plex DVR is still in beta. Here is my earlier write up about the whole setup. There was one thing bugging me and it is more with the SiliconDust Extend units than Plex DVR.

The SiliconDust Extend units differ from the other HDHR models (Connect and Prime) in that it has built-in hardware to transcode MPEG-2 streams to AVC H264. I need this functionality because the passively cooled Plex server I built (Atom-powered) is not powerful enough to transcode videos for viewing on an Apple TV. The functionality works fine, but there are some drawbacks. Before going into the drawbacks, it’s good to see what transcode profiles there are on the Extend. (source):

Native (none) 1920x1080 60fps ~16Mb/s

Heavy 1920x1080 60fps ~7Mb/s

Mobile 1280x720 30fps ~3Mb/s

Internet720 1280x720 30fps ~3Mb/s

Internet480 848x480 30fps ~2Mb/s

Internet360 640x360 30fps ~1.5Mb/s

Internet240 432x240 30fps ~1Mb/s

HDHomeRun Extend Settings in Plex

  • Native (“Original quality” setting for the HDHomeRun Extend in Plex) does not do anything to the incoming stream. The HDHR passes through what it gets from the antenna (MPEG-2 stream, untouched) to the client. This is what the Connect does too.
  • Heavy (“Highest quality” setting for the HDHomeRun Extend in Plex) leaves framerates and frames untouched, but transcodes the video to AVC H.264 format.
  • Mobile (“High quality (30fps limit)” setting for the HDHomeRun Extend in Plex) does a lot of stuff, so I will break it out next.

For the “Mobile” transcode profile, the Extend does a few things:

  • For interlaced sources (480i/1080i), it drops one of the two interlaced frames to compress the frame horizontally and making it progressive.
  • For 1080i sources, it compresses the frame down to fit into a 720p frame.
  • For 720p60 content, it drops every other full frame converting 720p60 videos into a 720p30 videos.
  • For all video streams, it compresses the video down to around 3Mbps.

None of the modes are perfect for me. Plex player (at least on Apple TV and in a web browser) does not de-interlace videos, so the Heavy setting does not help when channels are interlaced. But, Heavy setting is great for native progressive streams because it allows for the full stream to come through with no added compression.

The Mobile setting de-interaces everything, so it makes interlaced videos viewable on Plex apps which do not do de-interlacing (like the Apple TV 4 app). The Mobile setting though applies heavy compression to the video stream and this creates compression artifacts – a good example of this is when Stephen Colbert first steps out onto the stage for The Late Show, compression artifacts are everywhere. The Mobile setting also creates weird motion artifacts when it converts 720p60 video to 720p30 and that sometimes creates stuttering during panning shots.

What would be good is if SiliconDust would implement a transcode profile that sits right between Heavy and Mobile that does only one thing: De-interlaces video. 480i/1080i videos are de-interlaced and no extra compression is applied. 720p video (whether it is 30 or 60fps) is left completely untouched.

For now though, since I have two Extends, I figured out a way to get to somewhere near what I described. I have partitioned the Extends so that one records only interlaced channels and the other records only progressive channels. Interlaced channels are recoded using an Extend with the Mobile profile. Progressive channels are recorded using the other Extend with the Heavy profile.

With this setup, at least the 720p videos are converted to AVC H264 and then left untouched. No frames are stripped out, no extra compression is added. The 480i/1080i videos still suffer from being overly compressed, but at least they will be watchable in Plex because they are de-interlaced.

In the San Jose, CA area about half the channels I have in Plex DVR are interlaced:

Interlaced:

  • 5.1 (KPIX/CBS) 1080i
  • 9.1 (KQED/PBS) 1080i
  • 11.2 (KNTV/Cozi) 480i - Great for old TV shows like Quantum Leap.
  • 36.4 (KICU/Heroes & Icons) 480i - All Star Trek, need I say more?
  • 44.1 (KBCW/CW) 1080i

Progressive:

  • 2.1 (KTVU/FOX) 720p
  • 4.1 (KRON/MyNetworkTV) 720p
  • 7.1 (KGO-TV/ABC) 720p
  • 11.3 (KNTV/NBC) 720p - This is the 720p signal coming off Mt. Allison. Its sister channel 11.1 is broadcast in 1080i.
  • 36.1 (KICU/Independent) 720p - Has good old movies all the time.
  • 65.1 (ION) 720p

This is a good workable solution for the time-being. Maybe one day SiliconDust will add the profile that I described.