Electrical – linux – Video compression using low power processor

imageprocessinglinuxmicrocontrollermicroprocessorvideo

I'm trying to build a hand held camera with video recording feature.

Basic features of camera are

  • Resolution: 640×480
  • Frame rate: 25/30Hz
  • Video format from sensor: 8-bit grey scale BT.656 (Sensor with Internal compression is not possible in our application).

  • Software platform: can be Operating system based/Bare metal coding depending on the decision taken on video compression part.

  • Expected Power consumption: 1.5 Watt for Recording circuit alone.

  • Storage: SD card

I'm using an avr micro controller for all the controlling and user interface of camera. However for the video compression and storage part I'm facing difficulty.

I have read lot of processors and controllers and found following things.

  • For the processors side i found that Texas instruments Davinci,OMAP,SITARA ,NXP i.Mx, and other media processor are relevant for my application.

  • But i feel that these are overkill for my application in terms of power consumption and processing power.

  • From the micro controller side i have studied about atmel sam cortex m7 series with inbuilt video decoder and software jpeg encoder. For video playback i can use hardware video decoder.
  • This option seems OK for just snapshot storage. But for video recording i need compression. Though the power consumption is low, the processing power required for video compression is not feasible with this as per my opinion.

The video quality I'm expecting is one which is reasonable for a surveillance camera.

I feel I'm missing something quite obvious for everyone except me in this world for such a typical application.

The main constraints I have are the power consumption and size.

Could any one suggest how I can go ahead for the video recording application.

Best Answer

I suggest you look at BTC compression. A main advantage is that, once you set your parameters, you can calculate reasonable accurate how much CPU power it takes.

You still have to process 640x480x25 = 7.68 Mega pixels/sec. Thus a 64 MHZ MCU is unlikely to be able to do the job as that gives you only ~8 clock cycles per pixel. On top of that you need clock cycles to read it in and write it out. I think you need a 600 MHz ARM if you have no other hardware to support your video processing.

Then you want to 'record' the stream. Where to? You can write it to and SD card but that also uses up a good number of clock cycles.

"I feel I'm missing something quite obvious for everyone except me in this world for such a typical application." It may be typical but that does not mean it is easy.

Maybe just buy a Raspberry-Pi with camera....

Related Topic