DIY DVR (PVR ?)
No, not the mythTV variety, but the real deal.
I've been messing with uCLinux on various chip, which led to a vague daydream that I sketched out on the train today.
These are my notes on a personal DVR. I say personal because its design for MY needs, and not the typical user. It also happens that no commercial DVR will meet these specs without being mired in lawsuits (see replayTV).
Why an embedded solution and not MythTV? I've had mythtv boxes, they can be a lot of fun, and a lot of frustration. Mostly, I don't have room for a second computer, I don't want to use a ton of energy to record a few programs, and no matter where it ends up in my apartment, I will be able to hear it at night.
I already watch all my TV on the computer. Either by TV tuner or Xvid. I don't need a Tivo style DVR that will play back content on a TV with a nice menu display. I need a mass storage device that records TV shows.
I want Xvid. MPEG2 is huge. Its also kinda ugly. I really really like the look of the XVID codec. It takes a reasonable amount of space for a decent encode (~178 meg per ~20 minutes HDTV).
I want multiple tuners...I mean, what if there are two (or five) programs to record simultaneously?
A motherboard with 32 bit CPU running uClinux (probably a chip from Freescale). These usually have USB and an ethernet MAC (but no PHY).
USB 2.0 mass storage device emulation on the USB port. This way the unit can be hooked up to a PC for easy video extraction. This might also have some configuration abilities, but that would require a custom mass storage controller driver - YUCK!
Ethernet with HTTP server for show scheduling.
IDE interface to a big hard drive.
The tuners and encoders would be on add-in cards. The add-in cards would have:
1. A tv tuner.
2. A DSP with xvid encoding.
3. Probably a small uC to control the DSP and tuner.
Whats already in my knowledge domain (stuff that I already know about -or- could I really do it?):
1. I've been messing with uClinux for a while. What fun.
2. USB mass storage controller implementations are numerous. check.
3. Embedded HTTP server - check. But I have not routed a PCB using an external PHY. This looks messy. Perhaps a ENC28J60 instead?
4. I've been reading up on some XVID DSP implementations. There are also some commercial MP4 chips, but I bet they're pricey!
5. I picked up a bare PAL tuner at the surplus shop. Time to play.
There are a few things that make this project easier than a Tivo clone. There is no video output. No need to do fancy display overlays synced to the incoming/decoding video stream. This is encode only - no need to load, decode, and display the XVID.
I'm kinda testing the waters on this project. I'm going to get some DSPs and try to do real-time XVID compression. Also, I need to figure out the tuner card. Any suggestions within the scope of this project would be awesome! Especially if you've worked with uClinux and have a processor recommendation.