Cedrus is a project intended for fully 100% libre and open source software, for using the hardware accelerated video decoding/encoding engine found in sunxi devices. Replacing the proprietary library that has a long history of license ambiguity issues and in certain cases even (L)GPL violations.
The name is derived from the Cedrus tree, which commonly is known as Cedar.
Interested people are welcome to join the development channel #cedrus on Freenode IRC.
The main repository for the out-of-tree V4L2 driver is at sunxi-cedrus.
The hardware is already well understood by the means of the reverse-engineering effort, which very quick got successful results. And a large majority of the hardware registers are documented, with this information some Proof of Concept (PoC) example source code was written to verify that the hardware can be configured correctly from the information obtained. To forward verify, there was implemented a vdpau driver backend which is quite usable and can be used by any media player that uses the vdpau framework.
The Cedrus project aims for a proper driver and software that can be mainlined and upstreamed to the proper places, this can't happen with the vendor kernel driver in its limitations, source code quality or transbording as a security risk.
Steps for this proper driver and software can be seen in its planning phase.
See for more information.
Supported codec matrix
In this colorful table is represented what is understood and supported by hardware in the left side, the designation VE+Number are the video engine hardware version and above are the SoCs were found. Here are only SoCs and hardware versions which was confirmed or reported, the ones that aren't here should and are expected to be very equal in mode.
The right side represents the state of software. Take notice about the PoC (Prof of Concept) in which only exists for demonstration the correct understanding about the working of the hardware, sometimes the creation of this PoC is skipped.
|decoder||0x100||JPEG/MJPEG||baseline profile only||n.a.|
|encoder||0xa000xb00||JPEG/MJPEG||baseline profile only||not tried because of no time to try||n.a.|
|H264||baseline profile only||not tried because of no time to try||No B frames||n.a.|
As can be seen in this table with the color of green, the most used video codecs are already fully reversed engineered. The codecs that are still missing are too old or/and obsolete and aren't used anymore for the creation of new video content. The content (video files) that exists encoded in this codecs is in the great majority not beyond standard definition, meaning that the task of decoding is easy done with just software decode by cpu. For this reason this codecs aren't a priority to work on.
If anyone has a need for a yet to be support codec, please contact the people involved in the cedrus project to find what can be arranged.