How to develop Gstreamer-based video conferencing apps for RDK & Linux set-top boxes

gstreamer zoom video conference

CNXSoft: This is a guest post by Promwad that explains the basic steps to develop a video conferencing app with Gstreamer on TV boxes running Linux. The COVID-19 pandemic has become a catalyst for new online services. For example, Zoom became so successful that it overtook IBM in terms of capitalization this month. The software engineers at Promwad were inspired by this success and decided to go even further: what about implementing video conferencing on Smart TV and STBs? Then the users of such an application will have an opportunity to communicate not only at work but also to enjoy remote meetings with friends, cheer for a soccer team, watch a movie together, or do sports with a coach. For some reason, most digital TV operators do not have such a service, although, from an engineering point of view, all these features can be implemented on set-top boxes based on […]

FFmpeg 3.1 adds support for OpenMAX encoding on Raspberry Pi, VA-API H.264 & H.265 Encoding, and more

FFmpeg is an open source multimedia framework used by many open source, as well as closed source, projects to handle audio and video containers parsing, hardware or software video decoding / encoding, and more. I also used it a few months ago to test H.265 hardware encoding with an Nvidia GPU using the development branch, but the developers have now released FFmpeg 3.1 “Laplace”, so it’s possible to use a stable release to perform H.265 hardware encoding. Some of the most noticeable features of the new version include: Generic OpenMAX IL H.264 & MPEG4 encoders for Raspberry Pi VA-API accelerated H.264/HEVC/MJPEG encoding VAAPI-accelerated format conversion and scaling Native Android MediaCodec API H.264 decoding CUDA (CUVID) HEVC & H.264 decoders CUDA accelerated format conversion and scaling DXVA2 accelerated HEVC Main10 decoding on Windows Many new muxers/demuxers A variety of new filters The complete list of changes for FFmpeg 3.1 can be […]

libavg on Raspberry Pi

libavg development team has recently announced a beta port of their multimedia library to the Raspberry Pi. libavg is a high-level development platform for media-centric applications using Python as scripting language and written in C++. I came to know this platform as I tried Xibo Digital Signage, and I tested it on ARM platforms. Up to know this would only work using software rendering/decoding, and everything was painfully slow on ARM, but libavg developers are now making use of OpenGL ES to boost graphics speed. More work is needed, and they intend to eventually support features such as hardware video decoding (OpenMAX possibly via gstreamer) and compressed textures. Installing libavg on Raspberry Pi. Pre-built packages are available for Raspberry, so installation is pretty straight forward:

Running Samples Apps 32 samples are located in /usr/local/lib/python2.7/dist-packages/libavg/samples/ directory, and they rely on X11, so first start LXDE:

Open a serial console (LXTerminal) […]

XBMC for Android With Hardware Video Decoding on Telechips TCC8925 Processor

Taehyun Kim, a developer working for Inisoft (Korea), has been working on video hardware acceleration on Diceplayer for Telechips TCC8925 processor (The one used in CX-01 and Zero Devices Z900) and call this player from XBMC. He has uploaded a video to demo his progress and that’s pretty impressive. You can try it yourself by downloading and installing the following apps: xbmckor-armeabi-v7a-20120821.apk (Korean version). [Update: Kim has also uploaded the English version]. Diceplayer – Free app via Google Play You’ll also need to create a file called playercorefactory.xml in /sdcard/Android/data/org.xbmc.xbmc/files/.xbmc/userdata directory with the following content: <playercorefactory> <players> <player name=”MPC-HC” type=”ExternalPlayer” audio=”false” video=”true”> <filename>com.inisoft.mediaplayer.a</filename> <hidexbmc>true</hidexbmc> </player> </players> <rules action=”prepend”> <rule video=”true” player=”MPC-HC”/> </rules> </playercorefactory> I’ve tried it in Zero Devices Z900. The default language is Korean, but you should manage if you’re familiar with XBMC interface. When you play videos, you lose the usual XBMC interface, as those are played in […]

Telechips Releases Linux Kernel 3.0.8 and Android ICS Source Code

Telechips has just uploaded the GPL source code for kernel 3.0.8 and Android 4.0 to the open source section of their website. If downloading from telechips website is too slow, you can also try alternate downloads (Thanks Gabe!): Kernel-3.0.8.tar.gz Ics.tar.gz I’ve also created 2 repositories in github: telechips-linux – Linux kernel source code telechips-android – Android platform open source code (webkit + OpenMAX source code) It haven’t looked into the source code in details yet, but hopefully, this will allow developers to customize the firmware running on Telechips TCC8925 based mini PCs such as CX-01 mini Android TV Box or Zero Devices Z900. Jean-Luc Aufranc (CNXSoft)Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011. www.cnx-software.com

Raspberry Pi OpenGL and OpenMAX IL “Hello World!” Applications

As you may already know, Raspberry Pi has released their first SD card image with Debian. This morning, I explained how to use that image in qemu. I’ve been waiting for samples to take advantage of the power Videocore GPU inside Broadcom BCM2835 SoC used in the Raspberry Pi board and the goods news is that they added Hello World code samples in C to make use of those capabilities. The sample are located in /opt/vc/src/hello_pi directory: hello_audio – Audio output demo using OpenMAX IL through the ilcient helper library hello_triangle – A rotating cube rendered with OpenGL ES with 3 images used as textures on the cube faces. hello_video – Video decode demo using OpenMAX IL through the ilcient helper library You can either compile those samples in the board or cross-compile them in your host machine. Since you need the GPU, you will obviously not be able to […]

Raspberry Pi Codecs and Graphics/Video APIs

The Raspberry Pi Foundation has announced which codecs and API would be supported in the Raspberry Pi. The Raspberry Pi board will support the following Graphics and Video API via a set of closed source libraries that give access to the GPU acceleration features: OpenGL ES 2.0 –  OpenGL is a 3D Graphics API defined by the Khronos Group. OpenVG – OpenVG is a 2D vector drawing API also defined by the Khronos Group. EGL – EGL is the interface between Khronos rendering APIs such as OpenGL ES or OpenVG and the underlying native platform window system. OpenMAX IL – OpenMAX supplies a set of API’s that provides abstractions for routines used during audio, video, and still images processing. OpenMAX defines 3 layers, Raspberry Pi library will provide an interface to the IL layer, which provides an interface between media framework such as Gstreamer and a set of multimedia components. […]

Android NDK Revision 7 for Android 4.0 (ICS)

Google has just released Android Native Development Kit Revision 7, the Android SDK that allows developers to reuse C/C++ code. This version adds new native APIs available in Android 4.0. Here’s the changelog of the most important new features and bug fixes: NDK APIs for Android 4.0 (API level 14): Low-level streaming multimedia: A new API based on Khronos OpenMAX AL 1.0.1 provides a direct, efficient path for low-level streaming multimedia. The new path is ideal for applications that need to maintain complete control over media data before passing it to the platform for presentation. Audio decoding into PCM: Extensions to the existing native audio API based on Khronos OpenSL ES let native apps decode compressed audio assets to PCM format. CCache support to allow faster rebuilds. Added support for setting APP_ABI to all to indicate that you want to build your NDK modules for all the ABIs supported by […]

EmbeddedTS embedded systems design