Embedded Video Design

Thread Starter

karken

Joined Jul 16, 2017
2
I am looking for some advice on how to handle video data in an embedded system. My situation is this, I want to take the raw data from a CMOS camera and store the information to an SD card. Naturally, the raw data from the camera is uncompressed and would severely limit how much information I could store so I would assume it is common to encode the data into a more compressed form. From the research I have done it looks like h.254 is a very common codec on full blown computers, but I have no idea what is typically used in embedded systems. Additionally, how is the encoding usually handled? Do take the information and plug it straight into a micro controller and via firmware encode the stream? Do you send the data to some sort of encoding chip (if so can you show me an example) that then goes to a micro controller? Do you send the raw data to an FPGA and have that do the encoding? I have found the Di Vinci series of chips by TI and they seem like the closes thing I could find to solve this problem.

http://www.ti.com/product/tms320dm365

Also how do DSPs factor into this situation?

Any wisdom from some one who has done this before, or knows how it is typically done, would be greatly appreciated.
 

Sensacell

Joined Jun 19, 2012
3,785
(sound of crickets chirping)

You are poking into an area that few dare (need) tread.
There are probably a handful of people out there that have a clue about this, but they wont be lurking, answering questions on the web.

The investment of time and resources to mess with this stuff is very large, and the perceived value is actually very low, people just expect this stuff to work. The hardware involves nightmarish small packages with zillions of cryptic registers to set, and lots of high speed signals.

Sadly, unless you work at Apple, Sony, Samsung, etc. you probably wont get the time of day from anyone.
 

Thread Starter

karken

Joined Jul 16, 2017
2
Thanks for the links MrChips, I see that a DCI (Digital Camera Interface) will be a nice periferal on any micro controller I select. Also, I agree with Sensacell that there is amazingly little information on this topic out there. I thought that wanting to take in video information and store it in a compress, space efficient, manner would be a common task in embed systems, I guess I was wrong. All of that aside I think I have some good information to go off of in my task of storing video in an embedded system.

This is my rough outline of how I think it is done
  1. Get the data from a CMOS camer and send it to either one of TI's Di Vinci chips or select a microcontroller with a DCI peripheral.
  2. Compress the information into h.264 or MJPEG.
    • If I had to implement this in a micro controller like one of the STM32's mentioned above I would have to either roll my own encoder or find a FOSS version that did what I needed it to do
    • The Di Vinci have encoders built in
  3. Store the information onto an SD card
    • Would need the micro controller to be able to understand a file system like FAT to make my life easier
    • I haven't looked into this part too much but there seams to be a fair amount of information about this on the internet.
Those Di Vincis look really nice but how is it that I can only find one chip that dose image processing of this kind? This lack of options is what is makes me think that my approach is wrong, or there is something I am unaware of.
 

muhzd

Joined May 25, 2009
34
Hi karken,

I've been planning on doing some embedded project with SD cards myself before. I wanted to stream audio audio and video out of it and thought about data throughput. Assuming it is direct, maybe yes or not SD card interface is fast enough for your real time video data (without sram) at the desired resolution. You may wan't to work this out or already have seen it done in other examples.
There are also different modes for interfacing to SD cards. One is faster and which you'd have to pay for license for using it and the other as I recall is the slower standard SPI interface.
 
Last edited:
Top