Cedrus

From linux-sunxi.org
Jump to: navigation, search

Contents

Overview

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.

Development

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.

Current status

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.

A10/A20 A13 A31s A80 A33 H3 A64 Software Support
subengine codec VE1623 VE1625 VE1633 VE1639 VE1667 VE1680 VE1689 PoC libvdpau-sunxi
decoder 0x100 JPEG/MJPEG baseline profile only n.a.
MPEG1
MPEG2
MPEG4
MS-MPEG4 n.a.
WMV1
WMV2
DIVX
XDIV n.a.
H263
VP6
 ? Sorenson Unconfirmed
AVS Unconfirmed
0x200 H264
VP8 n.a.
0x300 VC1/WMV9
0x400 RMVB Unconfirmed n.a.
0x500 H265 8bits
encoder 0xa00
0xb00
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.
decoder 0xe00 JPEG Unconfirmed 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.

Personal tools
Namespaces

Variants
Actions
Navigation
Tools