Can FFmpeg be used in bare-metal embedded?

For the developers that use FFmpeg in their software.
Post Reply
riceman0
Posts: 1
Joined: Thu Apr 18, 2019 10:51 am

Can FFmpeg be used in bare-metal embedded?

Post by riceman0 » Thu Apr 18, 2019 11:06 am

Hello, we are a software team that is creating an embedded application on an STM32F7 ARM processor. By "bare metal" I mean we have no OS, no file system, etc -- we just make everything happen by writing C code against the CPU registers. We have built up a camera interface that saves RGB images to memory, and we have built a USB interface that mounts a thumb stick, and on command takes the RGB data, and saves it to a BMP format (mostly be prepending a header and then writing RGB bytes), and the user can move the USB stick to his/her PC and few the image files.

We'd like to add a function where the device can save "video" files, we'd like to stitch a bunch of images together into a file, to save to USB, and the user can click on on the PC and it will cycle through the images at about the same speed they were acquired (about 5hz).

So we would like to insert a function like the following into the process

Code: Select all

void convert_rgb_images_to_video(uint32_t ** input_array_of_pointers_to_rgb_data, uint32_t * where_to_output_video_data)
So that if the user wants to export to USB as a video, we can run the above, before calling our save-to-USB function which would save the video data instead.

So my question is, is FFmpeg suitable for this? We have a software developer who is looking at it and saying things that make me think it is not. Can it be adapted to support a simple memory-to-memory conversion like above? Does it necessarily require a Linux or Windows file system or other OS type subsystems to work? Or can it be used "bare-metal"?

Thanks for any help or thoughts. Have a great day.

richardpl
Posts: 48
Joined: Sat Aug 01, 2015 6:35 pm

Re: Can FFmpeg be used in bare-metal embedded?

Post by richardpl » Sat Apr 20, 2019 10:15 am

FFmpeg as utility needs file system.
On other hand FFmpeg libav* libs do not depend on it so everything can be handled in memory.

Post Reply