CedarX

CedarX is the name of Allwinner's proprietary multimedia library for hardware accelerated video and image decoding, for the hardware video engine (also incorrectly called VPU) found inside all their SoC series.

After some pressure caused by the controversies surrounding the license of this library, Allwinner released a new library called Sunxi-CedarX , 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.

=Overview=

CedarX is the name of a software library, that works in conjunction with a hardware block to offer hardware accelerated decoding and encoding of video codecs.

This hardware block doesn't have a name. Or at least Allwinner doesn't uses a marketing name to call this hardware block, and in the general the datasheets and marketing materials for each SoCs only have references to a video engine or sometimes VPU. See this page for more about naming.

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.

= Reverse engineering = The video engine was and is currently being reverse engineered with successful results. To the point of making possible an experimental vdpau implementation capable of being used to play videos.
 * Reverse engineering progress history
 * Video Engine (VE) VE Register guide
 * Audio Codec Engine (ACE) ACE Register guide
 * The page of this effort entitled Cedrus Project.

= Integration =
 * XBMC (outdated)
 * VLC

=CedarX official source code libraries and third-party forks=
 * https://github.com/allwinner-zh/media-codec Officiall 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 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=

= 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
 * XBMC (outdated) - XBMC Media Center
 * VLC - VideoLAN Client
 * CedarXPlayerTest - Testing player from Ubuntu image