Compressing DVI stream

Hi,

I want to know what approach you would recommend to compress an incoming DVI data stream (data width 24 bit, pixel clock

25-165MHz) from 24 bit colour depth to 16 bit colour depth.

The DVI data are stored as 64 bit chunks into DDR memory at 133MHz. For higher resolutions (fPIX > fDDR) I would like to reduce the colour depth so that performance (frame rate) at the read side of the DDR memory (image display) is not downgraded in such a way that moved images judder.

Are there algorithms for parallel data processing (24bit/16bit) you can recommend ?

Any hints are appreciated.

Rgds Andr=E9

Reply to
ALuPin
Loading thread data ...

The best way to compress it would be a 3D wavelet like is done in MP4. Buy a core for it. Or if you're company is like mine and cannot compute the idea that time == money, code it yourself. You don't need to encode the output, though. Just Z-order the result, quantize all the data, and RLE the result of that. However, as that is a scatter-gather algorithm, I have trouble recommending that you program it in gates. However, two PPCs might be able to pull it off quickly enough. Get the GPL source code from here:

formatting link

There are plenty of JPEG or MPEG2 cores around. You could modify one to do 16 bit color fairly easily. Or there again, Q up 8x8pix (or larger) blocks of image data, run the DCT, z-order it, quantize it, and RLE the result. Don't worry about the huffman coding portion of the JPEG.

Reply to
Brannon

You could just do 5/6/5 color - 16 bit - rather than 24 bit color. Do you intend to use a compressor/decompressor on each end for real-time display? Is memory your problem or is it strictly bandwidth? Dual-DVI links are also available to supply double the bandwitdh.

I want to know what approach you would recommend to compress an incoming DVI data stream (data width 24 bit, pixel clock

25-165MHz) from 24 bit colour depth to 16 bit colour depth.

The DVI data are stored as 64 bit chunks into DDR memory at 133MHz. For higher resolutions (fPIX > fDDR) I would like to reduce the colour depth so that performance (frame rate) at the read side of the DDR memory (image display) is not downgraded in such a way that moved images judder.

Are there algorithms for parallel data processing (24bit/16bit) you can recommend ?

Any hints are appreciated.

Rgds André

Reply to
John_H

Throwing away three bits of R and B and two of G is the traditional one. If you've got enough time per pixel, a way of improving the quality would be to remember the error you've made at one pixel and apply it to the next before correcting that - this produces dithering patterns instead of areas of uniformly the wrong colour. But that's not particularly parallelisable.

That seems a rather odd size if it's coming in as 24-bit colour depth, but I suppose it's the accepted bit width for DVI; would it work to use 48-bit chunks instead to avoid having shifting logic to deal with blocks of 2+2/3 pixels?

Tom

Reply to
Thomas Womack

Hi,

You might consider converting the input (RGB?) data to YUV and downsampling the resulting chroma channels to either 4:2:0 (12 bits/pixel) or 4:2:2 (16 bits/pixel) format.

The conversion can be implemented efficiently using distributed arithmetic (or directly if you have multipliers to spare), though you should think carefully about chroma buffering requirements when going back to RGB for display.

This assumes you have a 24 bit display to drive and want good quality through the "compression" process. If not dropping bits as other posters have suggested is a nice simple solution.

Cheers,

Andy.

Reply to
Andy Ray

To reduce the color depth, you just throw away some of the low order bits of the color samples. To get from 24-bit to 15-bit, you throw away the low order three bits of each sample. For 16-bit, you can keep one extra bit of one of the colors; check the interface specs for 16-bit to see how the bits are allocated.

Reply to
Eric Smith

Hi,

thank you for your comments.

The system is already working, so hardware should not be changed:

24bit display, 2 DDR Sdram memories @ 133MHz The 24bit-64bit adaption is no problem at all, adapting 16bit to 64bt would be even more comfortable.

Andy, concerning the quality of the images through the "compression process" I can state that the system is used for PC desktop applications in most of the cases.

Rgds Andr=E9

Reply to
ALuPin

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.