Back to All
Developer Blog

Qualcomm Linux sample apps – building blocks for AI inference and video in IoT applications (Part 1 of 2)

Our previous post in this series introduced you to Qualcomm® Linux® software, that lets you write once and use for many Qualcomm IoT system-on-chips (SoCs). We’ve released 22 initial sample apps in the Qualcomm Intelligent Multimedia SDK, which is based on Qualcomm Linux. We’ll blog about four of those apps so you can see the out-of-box experience you’ll have when developing on Linux for our IoT chipsets.

In this post we’ll explore the first two building-block applications.

1. Multi-camera streaming

The command-line application gst-multi-camera-example demonstrates streaming from two camera sensors simultaneously. It can apply side-by-side composition of the video streams to show on a display device, or it can encode and store the streams to files.

The application pipeline looks like this:

Qualcomm-image

The application supports two configurations:

  1. Composition and display – The qtimmfsrc plugin on camera 0 and camera 1 captures the data from the two camera sensors. qtivcomposer performs the composition, then waylandsink displays the streams side by side on the screen.
  2. Video encoding – The qtimmfsrc plugin on camera 0 and camera 1 captures the data from the two camera sensors and passes it to the v4l2h264enc plugin. The plugin encodes and compresses the camera streams to H.264 format, then hands them off for parsing and multiplexing using the h264parse and mp4mux plugins, respectively. Finally, the streams are handed off to the filesink plugin, which saves them as files.

Here’s an example of the output from the first configuration: Right side image is monochrome, as second camera sensor on development kit is monochrome.

Qualcomm-image

When would you use this application?

gst-multi-camera-example is a building block for capturing data from two camera sensors, with options for either composing and displaying the video streams or encoding and storing the streams to files. You can use this sample app as the basis for your own camera capture/encoding applications, including dashcams and stereo cameras.

2. Video wall – Multi-channel video decode and display

The command-line application gst-concurrent-videoplay-composition facilitates concurrent video decode and playback for AVC-coded videos. The app performs composition on multiple video streams coming from files or the network (e.g., IP cameras) for display as a video wall.

The application can take multiple (such as 4 or 8) video files as input, decode all the compressed videos, scale them and compose them as a video wall. The application requires at least one input video file, in MP4 format with an AVC codec.

The application pipeline looks like this for 4 channels:

Qualcomm-image

Each channel uses plugins to perform the following processing:

  • Reads compressed video data from a file using filesrc.
  • Demultiplexes the file with qtdemux.
  • Parses H.264 video streams using h264parse.
  • Decodes the streams using v4l2h264dec.

The decoded streams from all channels are then composed together using qtivcomposer and displayed using waylandsink.

Here’s an example of using the app gst-concurrent-videoplay-composition on 4 video streams:

Qualcomm-image

When would you use this application?

With gst-concurrent-videoplay-composition you can decode multiple compressed video streams, then compose them into a video wall; for example, in retail spaces and digital signage. As an edge box for video surveillance, you can capture input from multiple IP cameras and display it in a single screen. In a video conferencing application, you can process and display feeds from multiple people on the call, with each participant streaming a video.

Next steps

You can get those applications or the entire Qualcomm Intelligent Multimedia SDK on GitHub. And then you can start incorporating them to your own applications.

In the part 2 of this blog, we explore two applications based on the building blocks we’ve described above:

Opinions expressed in the content posted here are the personal opinions of the original authors, and do not necessarily reflect those of Qualcomm Incorporated or its subsidiaries ("Qualcomm"). The content is provided for informational purposes only and is not meant to be an endorsement or representation by Qualcomm or any other party. This site may also provide links or references to non-Qualcomm sites and resources. Qualcomm makes no representations, warranties, or other commitments whatsoever about any non-Qualcomm sites or third-party resources that may be referenced, accessible from, or linked to this site.

Snapdragon and Qualcomm branded products are products of Qualcomm Technologies, Inc. and/or its subsidiaries. 

About the Author
LK Reddy Ponnatota
LK Reddy PonnatotaSenior Director, Engineering
Qualcomm relentlessly innovates to deliver intelligent computing everywhere, helping the world tackle some of its most important challenges. Our leading-edge AI, high performance, low-power computing, and unrivaled connectivity deliver proven solutions that transform major industries. At Qualcomm, we are engineering human progress.

Stay connected

Get the latest Qualcomm and industry information delivered to your inbox.

Subscribe
Manage your subscription

© Qualcomm Technologies, Inc. and/or its affiliated companies.

Snapdragon and Qualcomm branded products are products of Qualcomm Technologies, Inc. and/or its subsidiaries. Qualcomm patented technologies are licensed by Qualcomm Incorporated.

Note: Certain services and materials may require you to accept additional terms and conditions before accessing or using those items.

References to "Qualcomm" may mean Qualcomm Incorporated, or subsidiaries or business units within the Qualcomm corporate structure, as applicable.

Qualcomm Incorporated includes our licensing business, QTL, and the vast majority of our patent portfolio. Qualcomm Technologies, Inc., a subsidiary of Qualcomm Incorporated, operates, along with its subsidiaries, substantially all of our engineering, research and development functions, and substantially all of our products and services businesses, including our QCT semiconductor business.

Materials that are as of a specific date, including but not limited to press releases, presentations, blog posts and webcasts, may have been superseded by subsequent events or disclosures.

Nothing in these materials is an offer to sell or license any of the services or materials referenced herein.