HDTV wishlist for MythTV
I have been building an HDTV PVR with MythTV and the pcHDTV tuner
card. It's been a major adventure, not yet ready for prime time, but
it's lead me to have some thoughts about things you want to think about
in a PVR that particularly relate to HDTV.
Suggesting new features is of course a somewhat futile activity. In open
source, the usually and appropriate answer is "why don't you go code up
this feature and add it?" In commercial products, most people feel
even the Tivo is too complex and they are correctly loathe to add
new features that complicate the user interface. So I make a priority
note on all of these.
If you are not familiar with certain linux video issues, some of this
will sound like gibberish.
Tolerate HDTV tuning problems
pcHDTV users are probably the only folks using MythTV with an
over the air antenna. In this case, signals can come in and
out, you might not be able to tune a channel and later you can.
Right now, failure to tune aborts a recording, and makes it hard
to restart. I think it's fixed now but for a while turning to
an empty channel crashed mythfrontend.
Priority: Fairly high, this is a bug fix really.
You have different transcoding desires based on the resolution at
which you recorded a program. You may wish to transcode your
480i to one resolution, your 480p to another, your 720p to another
and so on. However, since almost all available HDTVs only display
1280x720 resolution, you may definitely want to scale 1080i shows
down to that size (possibly with some deinterlace).
HDTV shows are big and you are keen to preserve space but you also
love quality. So it really becomes worthwhile to offer "transcode
to save space instead of delete" function, which predicts space
needs and transcodes down programs -- perhaps even in stages --
before needing to delete them. Watch it quickly and it's in
full resolution, later it's lower. Or just do it by time, based
on the class of recording. Ie. transcode down to a lower level
after a few days, further after a week.
Priority: Some of this can be done with minimal UI, so is good.
Some UI is needed because transcode with fixed resolution is not
very useful on an HD system (though at a basic level you can
pretty simply put in a check never to transcode to a larger
resolution if that's not already there.)
Realize CPU limitations
Decoding HDTV is intensive and can suck up a 3ghz level machine
almost entirely. Thus better XvMC support is in high demand.
However, some other features can be tuned to realize the CPU
problems. For example, de-interlacing and other filters should
turn themselves off automatically if they notice very high CPU
usage -- or simply if they notice the playback getting behind
at all. In general, if the system notices playback getting behind,
or dropping lots of frames, it should take whatever steps it can to
stop this. Even dropping quality, if it can be done adaptively
(ie. when CPU becomes available again or we get into a section that
is easy to decode because it is EDTV, turn things back on.
Priority: Medium. No UI needed here, but sometimes it's a simpler
answer to just let Moore's law fix it.
HDTV aware commercial detection
The fact that the screen switches from full widescreen to having
two fixed bars on the sides during commercials is, at least for
now, a major, major clue in detecting commercials. It's not
100% effective, so you can't use it exclusively, but it's close.
(Letterbox detection might also help for all TV but more and more
ads are being letterboxed.)
Priority: Zero UI needed, but not a crushing problem.
Be aware of aspect ratio mis-fits and use them.
Often these days there are black bars on the screen. Either L and R
for viewing SDTV on a widescreen, or top and bottom for letterbox.
If you see this happening, use that real estate for on screen displays,
including control, captions, subtitles etc. Consider a mode for
an always-on OSD with basic info (but unobtrusive, a very neutral
gray bar along the side showing position, channel, time etc.
Priority: Minimal UI needed (Just "do you want permanent OSD where
screen real estate permits it" checkbox) but not a crushing problem.
Pass necessary screen and aspect ratio to mplayer for DVD playback
In mythdvd, the aspect ratio information on the TV doesn't seem to
be always making it to mplayer. Also if you invoke
mythfrontend -display :0.1, this parameter is not inherited.
(I guess you can do export DISPLAY=:0.1;mythfrontend)
Priority: Minor Bugfix
Consider Two screen operation.
Today screens and multi-head video cards are cheap, and this
makes extra sense with an HDTV. Consider what you can do
with two screens. Video on the HDTV of course, but permanent
OSD on the other screen? Or PIP?
Priority: Hard to say
New HDTVs are coming with firewire/1394 links, what is called
DTVLink. You can stream mpeg2 to the TV over the firewire,
or Camcorder DV format. Talk about ideal -- no need for even
a video card in the PC, and you can now do an HDPVR with an
old, slow machine. Of course, doing the menus etc. is something
I'm not as sure about with firewire video. Thus a 2nd screen until
it is easy to do that. This of course will generate the highest
quality image possible, you are feeding the delayed bits to the TV
it would have tuned if you had watched live.
Another 2nd screen option would be to take advantage of the fact
that DTVLink is a smart input -- the link is able switch viewing
from another input to the DTV stream and back again. So you can
do menus on one "screen" (going into the TV via ordinary inputs)
and switch to streamed mpeg. No OSD though.
To me this is the "pure" DVR. It records the digital stream,
and plays it back, and the decoding is done at the last step
before viewing. Though DVI is fairly close but not if you
do things like resolution changes etc. Add an ability to merge
text on top of the video and you have the pure PVR.
Priority: Higher as more TVs with 1394 come on the market.
Pay attention to AC-3 (6 channel audio) issues
Some of this stuff isn't as well tested and documented because
most people don't encounter it until they tune HDTV (or perhaps
some satellite boxes.)
Record all the time.
One of the important features of the Tivo is that it is recording
into the live buffer or a program's file all the time.
It never, ever stops. No matter what you do (other than change
channel) you can always go back to your live program. When you
sit down to first turn it on, you can go back into the buffer
of the channel it happened to be on.
With a DTV tuner (or a hardware mpeg encoder like wintv-pvr-x50)
there is almost no CPU cost to recording.
Plus it means if somebody says "watch live TV" it starts almost
right away, instead of waiting about 5 seconds.
And unlike the Tivo, don't erase the buffer just because I
change channels. Hey, why not let me go back in time to the
prior channel? Possibly pop up a warning about it based on a
flag in the stream. Then you can possibly change the nature
of the warning on channel change when behind in the buffer.
(BTW that warning should not be issued if you are only a few
seconds behind in the buffer.)
Priority: High -- this is a major function of the Tivo (to which
you will always be compared) which is missing. It's way to easy
to screw up your watching now and lose a program.
Realize that you can record 2 sub-channels of the same HD or QAM
OK, I admit this one isn't likely to be easy, but an HD tuner
card is always receiving all the sub-channels of a DTV station.
Where I live PBS runs 4 different channels at once.
So I have to admit, a fancy tuner allocator able to make use of
his may be more work than it's worth. But you can improve
live TV channel change quite a bit here, make it close to
instantaneous, among the sub-channels at least. (Yes, even
though you are playing 3 seconds behind real time you can still
make it instantaneous.)
Realize that programs air in different qualities.
Yes, you can make one tuner more important than another, but
if a show airs twice either on different tuners or just on
different channels (such as the HD and SD versions of the same
channel) unless you say otherwise you would be disappointed if
the scheduler picked up the SD version and decided not to get
the HD one because it found the SD one.
Priority: low to medium
Show HD programs in the guide with a special colour or icon
Nice to quickly see this while browsing.
Priority: medium, because it's trivial