Video recording or playback for QCS610 SoC

This project is designed to capture and playback 4K, 1080p and 1080p video streams via TCP using GStreamer plug-ins in TurboX-C610 board.

The main objective of this project is to get familiar with the QCS610 SoC and the Thundercomm TurboX C610 development board. This project is designed to record 4K@30fps, 1080p@30fps and 1080p video streams via TCP using GSTreamer plug-ins on Thundercomm TurboX-C610 board.

EquipmentDescription
Thundercomm TurboX C610 development boardLink to purchase the development kit:
https://www.thundercomm.com/app_en/product/1593776185472315?index=1&categoryId=categorynull
USB CablesFor serial console interface, ADB and fastboot commands. USB3.0 Type C port for connecting to the board and flashing images.
Resource TitleLink or File Name (and provide file)
Thundercomm TurboX C610 Platform Linux User GuidePlease refer to technical documents section on the product page:
https://www.thundercomm.com/app_en/product/1593776185472315?index=1&categoryId=categorynull

Video recording and playback with gstreamer on Thundercomm TurboX C610
This application is for recording and playback of 4k and 1080p videos at a frame rate of 30 fps, it also supports live streaming over the network using tcp protocol. Gstreamer plugins have been used for the development of this project.

GStreamer is a framework for creating streaming media applications, and its development framework makes it possible to write many types of streaming multimedia applications. It can handle both video and audio data.

Qualcomm Technologies, Inc. (QTI) has provided its own version of GStreamer plugins. It has support for capturing 4K and 1K video frames via its multimedia framework service (qmmf). This project is designed to use a few elements from the QTI gstreamer plugin.

Dependencies

  • Host system
    Adb tool (Android debugging bridge)
    - Run command given below for installing ADB
    $sudo apt-get install android-tools-adbInstall vlc player.

Prerequisites

  1. Follow the instructions in the Thudercomm documentation to set up the Application SDK on host system.
  2. Initial Camera Environment configuration on the target device needs to be setup (after flashing the image).

Install the application SDK
To Install application SDK:

  1. Download the Application SDK from:
    https://thundercomm.s3.ap-northeast-1.amazonaws.com/shop/doc/1593776185472315/Turbox-C610_Application-SDK_v1.0.tar.gz
  2. unpack the sdk using below command
    $ tar -xzvf Turbox-C610_Application-SDK_v1.0.tar.gz
  3. Execute the below script file, it will ask the default target directory, press Enter and input ‘Y’
    $ ./oecore-x86_64-armv7ahf-neon-toolchain-nodistro.0.sh
    this completes the environment setup.

For more reference refer below document
https://www.thundercomm.com/app_en/product/1593776185472315

Environment configuration
Follow the document ‘Turbo-C610_Open Kit Software User Manual LE1.0 V2.0.pdf in the given url https://www.thundercomm.com/app_en/product/1593776185472315 and refer to section 2.10

Steps to build and run the Application:
Step-1: Enter below command to set up the environment on the host system.$ source /usr/local/oecore-x86_64/environment-setup-armv7ahf-neon-oe-linux-gnueabiStep-2: Building the binary for gstreamer video record source code, run below command on host system. $ $CC video_record.c -o video `pkg-config --cflags --libs gstreamer-1.0`Step-3 : Push the binary to the target board with adb command. $ adb push video /bin/
$ adb root
$ adb remount
$ adb shell mount -o remount,rw /
$ adb forward tcp:8900 tcp:8900
$ adb shell
/# chmod +x /bin/video
Step-4 : Execute the binary file in the target environment.

Case-1: Recording 4k resolution video at 30fps.
Execute the command below with command line argument as ‘4k’ for recording video for 4k resolution at 30fps and second command line argument path for output to store. Press ‘Ctrl +C’ to stop the recording, and the recorded video will be stored in ‘/data/video/4k.mp4’ /# video 4k /data/video/4k.mp4 Using the adb pull command we can download the video to the host system.$ adb pull /data/video/4k.mp4Case-2: Recording 1k resolution video at 30fps.
Execute the command below with command line argument as ‘1080p’ for recording the video for 1080p resolution (1920x1080) at 30fps, and second command line argument path for output to store. Press ‘Ctrl + C’ to stop the recording, and the recorded video will be stored in ‘/data/video/1080p.mp4’/# video 1080p /data/video/1080p.mp4 Using the adb pull command we can download the video to the host system.$ adb pull /data/video/1080p.mp4Case-3: Streaming 1080p video via TCP server at 30fps.
Execute the command below with command line option ‘tcp’ for live streaming and pass ip as second argument./# video tcp 127.0.0.1 Camera starts streaming 1k video via TCP server. To stop streaming we can press ‘CTRL + C’ on the keyboard.
To see the live streaming video, open the new terminal in the host system and enter below command also make sure you have installed the ‘vlc player’ on the host system.$ adb forward tcp:8900 tcp:8900
$ vlc -vvv tcp://127.0.0.1:8900
Qualcomm QCS610 is a product of Qualcomm Technologies, Inc., and/or its subsidiaries.

NameTitle Company
Rakesh Sankar
s.rakesh@globaledgesoft.com
Sr, System Architect
Global Edge Software Ltd
Ashish Tiwari
t.ashish@globaledgesoft.com
Architect
Global Edge Software Ltd
Ramsingh G
g.ramsingh@globaledgesoft.com
Senior Software Engineer
Global Edge Software Ltd
Keerthi M K
mk.keerthi@globaledgesoft.com
Software Engineer
Global Edge Software Ltd