Bob Ammerman wrote: > > The problems with this RLE encoding thing are: > > 1: CVSD type data generally does not have long runs of zeros or ones in it > because of its very definition: the step size is quickly increased to the > point where it catches up and goes the other way (ie: the bit polarity > flips). Actually I suggested using RLE instead of CVSD, as a RLE system tuned to a byte-sized data unit is probably more suited to the minimal PIC approach. I'm sure you could get 2:1 with the right RLE system. At the 32kbit/sec rate you suggested and with 2:1 RLE compression you get good voice for only 2kbyte per second. That's 3.5 seconds to 7 seconds of voice on a 16F876. Plenty enough for many applications of products for the visually impaired. > 2: CVSD is a constant-bit-rate scheme. This can be very important when > transmitting over a serial link (like radio). This RLE scheme is not > constant bit-rate. You said CVSD bits change in size. That can't be a constant bitrate. ?? >Whats makes it 'Variable' is that the step size is increased whenever the >the transmitter finds itself sending a sequence of more than a couple of >consecutive zeros (or ones), > 3: CVSD is rather resilient to bit errors in the transmission path. Again > this would greatly confuse the RLE stuff. Sure, but if the goal is a simple bitstream player on a PIC, then RLE decodes very quickly and minimum PIC instructions. I think it's worth looking at all simple compression systems that work that easily. You could do STEREO 152kbit/sec audio on a 20MHz PIC which gives 32 instructions per 2 bits, output it on 2 I/O pins into RC filters... There's time in there for the 32inst timing loop, loading the data, and RLE compression on 2 bytes every 8 timing loops. Isn't that approaching CD audio sound quality? -Roman -- http://www.piclist.com hint: PICList Posts must start with ONE topic: [PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads