CedarX is composed of several parts, including:
- A hardware video decoding unit
- Proprietary CedarX/libve library to communicate with the hardware unit
- 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).
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
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").
- http://www.j1nx.nl/buildroot-xbmc-on-mele-a1000-allwinner-a10/ Buildroot XBMC on the Mele A1000 (Allwinner A10)
- http://www.cnx-software.com/2012/11/12/xbmc-for-linux-on-allwinner-a10-devices-it-works-sort-of/ XBMC for Linux on AllWinner A10 Devices? It Works! (Sort of)
- 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