CedarX
This page provides information for legacy framework only usable with older non-mainline 3.4.x and 3.10.x kernels. In case you are interested in Mainline kernel, look at Cedrus and Sunxi-Cedrus pages. |
Overview
CedarX is a proprietary multimedia framework distributed by Allwinner and not supported by the linux-sunxi community.
- It's the name of the proprietary software libraries responsible for hardware accelerated video and audio de-/encoding (CedarV + CedarA) in conjunction with with a hardware block. As for audio, the hardware ACE (Audio Codec Engine) appears to only exist in A10 and older SoCs. Allwinner refactored their proprietary userspace libraries and published them partly under GPLv2 naming them "media-codec" while some codecs are still only available as proprietary binary blobs linked in like plugins.
After some pressure caused by the controversies [1] [2] [3] [4] surrounding the license of this library, Allwinner released a new media-codec library called Sunxi-CedarX [5] , which is a rewrite that up to now only partial implements some codecs as open source, letting the rest of the codecs and features such an encoding dependents of a closed source plugin binary.
Disadvantages Allwinner's CedarX technology and libraries:
- Allwinner's own CedarX proprietary libraries are known to have no clear usage license, so even if the source code for some versions is available the terms-of-use is unknown in open source software.
Allwinner is slowly working towards to resolve this issue. - Using CedarX currently requires the use of the older non-mainline Linux 3.4.x or 3.10.x kernels.
Alternatives to CedarX, including Reverse engineering
The video engine has been largely reverse engineered. Initially producing an experimental VDPAU implementation capable of being used to play videos. The Cedrus project later built upon this to produce an experimental VAAPI implementation in 2016. During 2018 the work was continued to provide an interface using the newly released V4L "media requests" API.
- The Cedrus Project page.
- Reverse engineering progress history
- Video Engine (VE) VE Register guide
- Audio Codec Engine (ACE) ACE Register guide
Integration
CedarX official source code libraries and third-party forks
- https://github.com/allwinner-zh/media-codec Official Allwinner source tree
- https://github.com/fsebentley/CedarX-12.06.2015 This is new source and binary plugins from Allwinner with some API documentation and example C application...
The following are old and obsolete, is not recommend for any use.
- https://github.com/allwinner-dev-team/android_external_cedarx Allwinner Dev Team Android external CedarX fork
- https://github.com/linux-sunxi/cedarx-libs linux-sunxi team fork of the official Allwinner CedarX libcedar source code libraries
- https://github.com/huceke/libcedar libcedar decoder library for libvecore by Edgar Hucek (a.k.a. Gimli) fork for outdated XBMC
- https://github.com/willswang/libcedarx Wills Wang libcedarx library for libvecore fork for VLC
- https://github.com/mortaromarcello/android_external_cedarx Android external CedarX fork by mortaromarcello
Possibly irrelevant observations
- There seems to be a distinction in the Android code between audio decoding ("CedarA") and video decoding ("CedarV").
References
- ↑ http://www.phoronix.com/scan.php?page=news_item&px=Allwinner-GPL-Violate-Proof
- ↑ http://www.phoronix.com/scan.php?page=news_item&px=Allwinner-Obfuscating-Code
- ↑ http://www.phoronix.com/scan.php?page=news_item&px=allwinner-stripped-symbols
- ↑ https://www.phoronix.com/scan.php?page=news_item&px=Allwinner-Actions-Internally
- ↑ http://www.phoronix.com/scan.php?page=news_item&px=Allwinner-CedarX-New-OSS
See also
- CedarX/Misc Docs - some useful facts from IRC chat conversations
- CedarXVideoRenderingChart - Overview chart of working/ non working video files
- CedarX/libve - Using the Android blob on linux via libhybris
- CedarX/XBMC - XBMC Media Center
- CedarX/VLC - VideoLAN Client
- CedarXPlayerTest - Testing player from Ubuntu image