Here's the 'secret project' I was working on lately. Got to release it since summer is coming and I *really* gotta get out and get some sun. For the time being, it seems it will works only with Kingston SD cards. Pragma validated it works and Clay "almost" with a 1G card. Anyhow, I made a video so you can check it out for yourself. More work is left to be done, but I think I will offload this to whoever is interested!
[youtube]http://www.youtube.com/watch?v=hWWsSn_QKLM[/youtube]
Here's the HEX file and demo movie. The player does not support fragmentation, so you *must* format the SD card before copying "matrix.dat" on it. Also, it must be the only file on the card (update: newer version detects the first .uzm on the card).
http://belogic.com/uzebox/files/MoviePlayer.zip
Sources are in the v4 branch. It's using the same kernel folder as Uzeamp (/kernel-4-uzeamp):
http://code.google.com/p/uzebox/source/ ... /VideoDemo
Enjoy!
Uze
Uzeamp Movie Player Demo
Re: Uzeamp Movie Player Demo
Wow, awesome . Great, great work.
- Tony
- Tony
-
- Posts: 8
- Joined: Mon Oct 20, 2008 11:03 pm
- Location: Zaragoza, Spain
Re: Uzeamp Movie Player Demo
Video with sound too?
Re: Uzeamp Movie Player Demo
Sure, at 15Khz, just like Uzeamp. Sound's good for 8 bit mono, huh?Video with sound too?
Uze
Re: Uzeamp Movie Player Demo
Finally, I can talk about this thing. I can't tell you how strange it was to see full-motion video on my Commodore 1702 monitor.
The output of the Uzebox in this case really is impressive, even with the heavy down-sampling that is required to pull it off. This worked on my Fuzebox with a 1GB Kingston card, formatted as FAT16. The current implementation will NOT understand an SDHC card or anything formatted as other than FAT16 (like FAT32).
Uze isn't kidding about the special handling of the SD card - the video needs to exist on the card in a completely contiguous run of sectors. In theory, a de-fragmentation pass would achieve the same effect, but I haven't tried that myself. In short, the FAT16 filesystem imposes a lot of overhead for looking up where all the fragments of a file are on the disk, as this lookup data is kept in the File Allocation Table sectors on the disk; so you have to constantly re-read/cache parts of the FAT in order to get anywhere. Indeed, this is like asking someone to pass you the butter, every time you take a bite of your dinner. This is exacerbated by the fact that as a block-level device, the SD card simply refuses to send data in anything less than 512 byte chunks*, so open wide.
This demo side-steps all that and simply treats the disk like a big virtual tape, since the SD card has a rather nice "keep sending me sectors of data until you say when" mode. This of course relies on a filesystem with zero fragmentation, since this ignores the FAT, hence the format-then-write process.
Anyway, the video renderer itself is ridiculously simple, as it simply sends each byte it reads from the SD card straight out the video port, at a rate of one pixel every 12 clocks. Audio is being handled in a similar fashion. IMO, the real work is being done offline, by way of pre-processing the video data to run at the Uzebox's resolution, framerate and color space.
(*CMD18 might be coerced to stop mid sector when issued CMD12, but I haven't tried it, and it's not clear from the specs if that is a reliable behavior anyway)
The output of the Uzebox in this case really is impressive, even with the heavy down-sampling that is required to pull it off. This worked on my Fuzebox with a 1GB Kingston card, formatted as FAT16. The current implementation will NOT understand an SDHC card or anything formatted as other than FAT16 (like FAT32).
Uze isn't kidding about the special handling of the SD card - the video needs to exist on the card in a completely contiguous run of sectors. In theory, a de-fragmentation pass would achieve the same effect, but I haven't tried that myself. In short, the FAT16 filesystem imposes a lot of overhead for looking up where all the fragments of a file are on the disk, as this lookup data is kept in the File Allocation Table sectors on the disk; so you have to constantly re-read/cache parts of the FAT in order to get anywhere. Indeed, this is like asking someone to pass you the butter, every time you take a bite of your dinner. This is exacerbated by the fact that as a block-level device, the SD card simply refuses to send data in anything less than 512 byte chunks*, so open wide.
This demo side-steps all that and simply treats the disk like a big virtual tape, since the SD card has a rather nice "keep sending me sectors of data until you say when" mode. This of course relies on a filesystem with zero fragmentation, since this ignores the FAT, hence the format-then-write process.
Anyway, the video renderer itself is ridiculously simple, as it simply sends each byte it reads from the SD card straight out the video port, at a rate of one pixel every 12 clocks. Audio is being handled in a similar fashion. IMO, the real work is being done offline, by way of pre-processing the video data to run at the Uzebox's resolution, framerate and color space.
(*CMD18 might be coerced to stop mid sector when issued CMD12, but I haven't tried it, and it's not clear from the specs if that is a reliable behavior anyway)
Tango D Library http://www.dsource.org/projects/tango
D Dynamic Libraries - http://www.dsource.org/projects/ddl
Enki Parser Generator - http://www.dsource.org/projects/ddl/wiki/Enki
D Programming Language - http://www.digitalmars.com/d
D Dynamic Libraries - http://www.dsource.org/projects/ddl
Enki Parser Generator - http://www.dsource.org/projects/ddl/wiki/Enki
D Programming Language - http://www.digitalmars.com/d
Re: Uzeamp Movie Player Demo
Thanks for the clarification, I'm sure that will help folks understand the trade-offs when doing this kind of software hack!
Uze
Uze
Re: Uzeamp Movie Player Demo
Cool. What video mode can this be used in.?
>J
>J
Lerc wrote:I intend to use my powerful skills of procrastination to ensure that when I get to making things, the chips will be available.
Re: Uzeamp Movie Player Demo
In mode 7 of course. A new custom mode designed just for that task.
Btw, I have commited the sources in the v4 branch. It's using the same kernel folder as Uzeamp:
http://code.google.com/p/uzebox/source/ ... /VideoDemo
Uze
Btw, I have commited the sources in the v4 branch. It's using the same kernel folder as Uzeamp:
http://code.google.com/p/uzebox/source/ ... /VideoDemo
Uze
Re: Uzeamp Movie Player Demo
mode 7 ... so I can port F-Zero now ?
Re: Uzeamp Movie Player Demo
Incredible!!, Maravellous!!
Which are the charactericts of video 7 mode?
Which are the charactericts of video 7 mode?