CedarX/Reverse Engineering
Current status
FIRST NOTE: Allwinner's video de-/encoding engine is successfully reverse engineered in the most common parts (HEVC, H264, MPEG1/2, MPEG4).
The results of this reverse engineering are bundled in a vdpau driver backend since January 2014. To do hardware accelerated video decoding on sunxi devices nowadays, you don't need any software provided by Allwinner, which is either (partly) closed sourced and/ or violating the GPL. Instead you should use the result of the community's reverse engineering work, called Cedrus. As this is only proof of concept code, the goal is a mainlined video engine driver in the end. To take full advantage of such a driver, the other bits (display, hdmi, sound ...) also have to be rewritten in ongoing mainline process.
|
Hardware registers
The closed source blob uses direct access to hardware registers using mmap to userspace. Currently known register usage is documented:
There's ongoing register documentation effort using envytools.
Progress history
- 15 June 2012
- Iain Bullard started reverse engineering the proprietary libraries.
- open_cdxalloc as an free reimplementation of Allwinner's libcederxalloc.a.
- CedarXWrapper as a LD_PRELOADed wrapper to help understanding the proprietary libraries.
- CedarXPlayerTest as a basic player to use when testing.
- 3 May 2013
- wingrime and oliver started work on register guide, JPEG, MPEG decoding manuals and binary analysis.
- 20 May 2013
- nove introduced new MMIO tracer based on Valgrind
- ReCedro has similar tools as those from IanB above, but with a different angle, works really well.
- 22 June 2013
- JPEG decoding proof-of-concept was introduced by Jemk JPEG/MPEG-12 Decoding PoC
- 30 August 2013
- Workable proof-of-concept VDPAU decoder was introduced by Jemk support MPEG-1/2 and MPEG-4 AVC/h.264 decoding libvdpau-sunxi
- 24 August ~ 12 September 2013
- Paullo612 worked in documenting vp8 decoding.
- 12 January 2014
- First MPEG-4 AVC/h.264 encoder proof-of-concept from Jemk
- 15 January 2014
- Jpeg encoding proof-of-concept by nove jepoc
- 31 January 2014
- Jemk added to libvdpau-sunxi the first support for decoding (some) mpeg4 videos
- 28 November 2015
- Jemk added initial H.265 support to libvdpau-sunxi
- 12 July 2016
- ubobrov modified Jemk's proof-of-concept h264 encoder sources making them workable on H3 platform
A first proof at the end ...