CedarX

CedarX is Allwinner's multimedia co-processing technology for hardware accelerated video and image decoding, as used inside their A10 SoC's and others.

=Overview= CedarX is composed of several parts, including:
 * 1) A hardware video decoding unit
 * 2) Proprietary CedarX/libve library to communicate with the hardware unit
 * 3) Glue code to use those libraries on an actual system with video playback capabilities (e.g. Android)

Note! There seems to be a distinction in the Android code between audio decoding ("CedarA") and video decoding ("CedarX").

Benefits to Allwinner's CedarX technology and libraries:

 * Efficient use of system resources when decoding multimedia, offloading audio and video decoding to CedarX co-processor so that the CPU so that it can be used for other things, (when CedarX is working as it as it should).
 * Allows small and low-powered ARM systems to playback high resolution/bitrate multimedia content, which would not be possible using software-only decoding using only the CPU.

Disadvantages Allwinner's CedarX technology and libraries:

 * Allwinner's own CedarX proprietary libraries 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.
 * The Android glue code is implemented as a "media player" (parallel to Android's Stagefright multimedia framework) instead of as standard OpenMAX (OMX) components and API's.
 * This "media player" has limitations when it comes to playing back content pointed to by Android URIs and some web-based content.
 * There is no glue code for any other multimedia frameworks on GNU/Linux systems. The use of OpenMAX (OMX) instead would have rendered this a non-issue, with existing projects like GstOpenMAX (GStreamer OpenMAX).

= Integration =
 * XBMC
 * VLC
 * OpenMAX
 * Stagefright
 * GStreamer
 * FFmpeg

=CedarX official source code libraries and third-party forks=
 * 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

= Reverse Engineering = There is some Reverse Engineering in progress, it deserves its own page.

= Possibly irrelevant observations =
 * There seems to be a distinction in the Android code between audio decoding ("CedarA") and video decoding ("CedarX").

=References=

= See also =
 * CedarXVideoRenderingChart - Overview chart of working/ non working video files
 * OpenMAX - Open standard API for cross-platform hardware acceleration of audio, image, and video decoding
 * GStreamer - Cross-platform API and ABI for hardware acceleration of audio, image, and video decoding
 * Stagefright - Google's API for hardware acceleration of audio, image, and video decoding on Android
 * FFmpeg - open source software project that produces libraries and programs for handling multimedia data
 * XBMC - XBMC Media Center
 * VLC - VideoLAN Client