Build ffplay and ffmpeg 2.6.2 on Mac OSX 10.10.2

Every few years we need ffmpeg and ffplay for some little job. The ffmpeg suite is my go-to swiss-army knife for whipping video into shape. Unfortunately, the compilation process is challenging. Here is a summary of the recipe I used to build these tools on OSX 10.10.2. It was not exactly straightforward. That’s why I wrote it down.

To jump to the end, the most difficult part was getting SDL-1 to build. (https://www.libsdl.org) I tried using SDL-2 with ffplay, but that combination did not compile correctly. ffplay requires SDL-1, and SDL-1 required some manual edits to get it installed.

Continue reading Build ffplay and ffmpeg 2.6.2 on Mac OSX 10.10.2

Marvell PlugComputer Plug-In

Marvell sponsored the first PlugComputer PlugIn on August 18 in Santa Clara.  This was an event to bring together PlugComputer software developers, hardware vendors and the curious to learn more about the PlugComputer and its roadmap.  There were three parallel tracks throughout the day.  Track1 was oriented toward software development in general, and Android in particular.  Track2 had a Java bent, and Track3 addressed the PlugComputer ecosystem and supply chain.

All PlugComputers are based on the ARM architecture. Last year, the first PlugComputer was released.  It was a basic computer with USB ports and Ethernet connectivity.  This year, models were shown that included built-in WiFi, BlueTooth, ZWave and Zigbee interfaces.  With this much connectivity, a PlugComputer device can be a hub for home automation control and video monitoring.  A basic PlugComputer block diagram is shown below.

Marvell is enabling the “PlugComputer Ecosystem.”  The PlugComputer represents a new device class: it is a standalone mini-server about the size of a power adaptor.  It runs Linux and uses very little power.  A PlugComputer draws about 5W and is suited to being an “always-on” computing device in the home.  By enabling multiple vendors prices can be very low allowing small software developers to deploy full internet appliances and applications.  A Plug can sell for below $100 making the possibility of an application-specific computer one that makes economic sense.  Plugs can be packaged in appealing packages too.

Most of the demo applications shown at the event were related to home automation and monitoring.  Monitoring applications fall into one of broad classes: security or energy efficiency.  For energy monitoring applications the PlugComputer offers a clear advantage in power savings over the use of a full PC: a 5W PlugComputer makes more sense for energy monitoring than a 150W PC.  For security applications, the appeal is having an always-on dedicated device.  Because the device can be managed by a service provider, a user need not be concerned about performing software installs and upgrades, the way one would need to do these things on a PC.

Software

The PlugComputer is a great device for interfacing to the physical world through its ports and radio interfaces.  With ZWave and Zigbee a PlugComputer could control the home or monitor environmental conditions including light level, temperature, air quality and humidity.

As a developer, a big concern for me is the level of software support for these various interfaces.  Because the PlugComputer runs Linux, things like Ethernet, WiFi and Bluetooth are pretty well supported with standard offerings.  Zwave and Zigbee are another matter, however.  I could not find good support for these interfaces yet.  With USB devices, support depends on the device you want to attach.  Demonstrations showed a number of USB cameras hooked up to the Plug and I was told these are fairly easy to access using packages like OpenCV.

Operating Systems

Most PlugComputers arrive with Debian pre-installed.  Other popular OS distributions are Ubuntu, Fedora and Gentoo.  A new utility, called the “Easy Plug Installer” has been released to aid developers in building a custom distribution and filesystem.  The utility lets a developer rapidly re-flash the device with any of a number of pre-configured releases.

Android

I was suprised to see the strong showing of Android support.  Android is Linux-based and can be built on the 2.6 kernel, so it makes sense it could run on the Plug.  Of course, the first question is WHY?  Android is most often run on a touch-screen handheld and the Plug has no screen and no touch or mouse input.  It did not seem a natural fit.

Large electronics manufactures want to invest in one software platform to use across all of their product offerings.  It may not seem obvious that something like a Photo Frame should run Android, but for manufacturers that make Photo Frames, BlueRay players and cellphones, they want to have one software platform across the entire product line.  The big vision for Android is that it runs on everything … including the PlugComputer.  The App distribution mechanism of Android could also help make personalizing the PlugComputer something that a consumer would actually do.

Conclusion

I thought the PlugIn was a big success.  As a software developer, I got a good sense of what is currently available for development on the Plug and what should be arriving in the next year or so.  The sessions on the Ecosystem and Supply Chain were perhaps the most interesting to me.  These demonstrated the commitment level of Marvell to the Plug and showed us the vendors investing in Plug manufacturing capabilities.  It’s an exciting platform.

Some Interesting Links

Ionics PlugComputer Site: http://www.ionicsplug.com/products.html

GlobalScale PlugComputer Site: http://www.globalscaletechnologies.com/p-22-sheevaplug-dev-kit-us.aspx

PlugComputer.org: http://plugcomputer.org

SheevaPlug PlugComputer

The SheevaPlug is a tiny Linux server from Marvell based on an ARM processor.  It comes with 512MB RAM and 512MB of SSD.  A development kit currently costs $99.  It’s about the size of a slightly-oversized wall adaptor.

SheevaPlug

It comes with an Ethernet port, and two USB ports.  One of the USB ports is intended to be used during development and for debugging, the other is for regular applications.

I was surprised to find a rather full-fledged Debian-based Linux distribution (Gentoo) on the device.  It has a  package manager (“apt”) already installed, so it is simple to install other standard applications.  I ventured off into some uncharted territory when I decided to explore using the SheevaPlug to monitor some devices that communicate via a serial interface through USB, however.

Device Drivers …

I learned something about device drivers in this experiment.  While USB is a standard interface, to expose your USB device to the OS, you need a piece of software (a driver) that understands the particular chip in the USB device.  In my case, it had a Silicon Labs UART.  On Mac OSX, Silicon Labs provides a driver that exposes a serial interface as /dev/cu.SLAB_USBtoUART when the USB device is plugged in.  On my Intel-based machine, the default OS understands this device and it appears as /dev/ttyUSB0.  I was concerned that on the ARM-based SheevaPlug, there may not be the necessary piece of software.

After a number of false starts, I found out that the original OS distribution did not understand this particular UART.  However, the Silicon Labs UART is standard enough that there is support in later revs of the kernel.  Updating the kernel and re-flashing the device was required, and then my ARM-based SheevaPlug was talking to my USB devices over /dev/ttyUSB0.

For more information about this device look here: http://plugcomputer.org.