CI20 Projects

MPlayer
Check the CI20_MPlayer page for details

Kodi (formerly XBMC)
Kodi Entertainment Center (formerly XBMC Media Center) software is an obvious choice to port to the board - with the connectivity, HDMI, VPU hardware video decoder, and GPU...

XBMC application itself works and installs easily.

After adding wheezy-backports to /etc/apt/sources.list apt-get -t wheezy-backports install xbmc

The catch : Software video playback support only so far, with no VPU hardware video decoding support yet for CI20 in Kodi/XBMC's "DVDPlayer" (default) video player core. CI20_MPlayer could possibly be linked as a an external player to be launched by Kodi/XBMC and used for playback but that would be a short term workaround, not a proper solution that is acceptable in the long run.

Check http://balintreczey.hu/blog/xbmc-from-debian-running-on-mips-ci20-dev-board/ https://groups.google.com/forum/#!msg/mips-creator-ci20/zZOm38HX81g/YFAtR77RFP4J https://github.com/xbmc/xbmc/pull/5570 https://buildd.debian.org/status/package.php?p=xbmc&suite=unstable https://anonscm.debian.org/cgit/pkg-multimedia/xbmc.git/log/?h=wheezy-backports

OpenELEC
OpenELEC (short for "Open Embedded Linux Entertainment Center") is a free and open source embedded operating system providing a complete appliance-like media center software suite that comes with a pre-configured version of Kodi (formerly XBMC) media player and third-party addons with retro video game console emulators and PVR/DVR plugins.

OpenELEC is an extremely small and very fast booting Linux based distribution, primarily designed to be booted from flash memory card such as USB-memory, SD-card, CompactFlash or a solid-state drive, similar to that of the Linux Live distributions but specifically targeted to a minimum set-top box hardware setup based on ARM SoC's or Intel x86 processor and graphics.

Over the years OpenELEC have and have had partnerships with several media player manufacturers and media center system integrates as OEM firmware developers, with OpenELEC maintaining the operating-systems on their hardware.

Check: https://github.com/OpenELEC/OpenELEC.tv/issues/3830 http://openelec.tv/forum/12-guides-tips-and-tricks/1061-guide-how-to-build-your-own-openelec-distro

Tvheadend
Tvheadend is a TV streaming server for Linux supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV, SAT>IP, HDHomeRun, and Analog video (V4L)as input sources. Tvheadend is one out of many popular TV streaming server and DVR recording software that enable PVR support inside Kodi (formerly XBMC) media center GUI, and it is also included in the OpenELEC Linux distro and activated by default.

The Analog video (V4L) is supported directly up to Tvheadend version 3.4 however in more recent versions, the pipe:// source (in IPTV network) might be used to obtain the MPEG-TS stream generated by ffmpeg/libav from a V4L (Video 4 Linux) device.

https://tvheadend.org https://github.com/tvheadend/tvheadend http://kodi.wiki/view/PVR http://kodi.wiki/view/Recording_software

TSSI tuner
And when XBMC runs, add a direct TSSI (Transport Stream Slave Interface) demod to the expander2?

RPi compatibility layer
Given that the board has an Raspberry Pi shaped expansion header, and should be able to run all the RPi code on the CI20 via a RPi compat layer, it should be feasible to make an 'RPi out of the box' image for the board.

OpenCV
Check the following https://mipsci20.wordpress.com/ https://github.com/ehabhussein/Imagination-CI20-OpenCV-install

Iris OS
"Iris is an operating system based on a capability microkernel. It runs on Ingenic JzSoc devices, such as the NanoNote." Maybe port this (native) Jz OS to the CI20 : http://projects.qi-hardware.com/index.php/p/iris/

OpenOCD
It should be perfectly feasible to wire a 'wiggler' to the EJTAG connector and get OpenOCD working with the core. It may require some 'work', but hey, isn't that part of the fun?

Use the hardware cursor plane
The JZ4780 has hardware support for a 'cursor plane' which is not presently in use (the cursor is currently done with software) - for raw Linux/X at least. Seeing as the hardware exists, we should try to utilise it under X.

Accelerate 2D X desktop maybe
The JZ4780 has quite a rich display path with a number of accelerators, predominantly aimed at the Android display stack. We should see if we can utilise some of these (like the 2D blitter functions) for X 2D acceleration.

External LCD/touch display via SPI maybe
Could be used to display real time data from cpu etc.Or maybe just for a portable CI20? Or even a handheld gaming console? Here is a RPI equivalent in action(movie + pacman clone):

https://www.youtube.com/watch?v=IQPbRedvg0E

Here's the description of the LCD "shield" used in above video

''Our display modules provide a TFT LCD display, a resistive touchscreen with controller and tactile switches. They are connected over SPI bus and are besides for the Raspberry Pi therefore also suitable for all embedded systems with SPI bus. Especially for ones that do not have a LCD controller or are lacking I/O pins. Our displays only need SPI pins (MISO, MOSI, SCK, SPICS0 and SPICS1) to work.''

http://www.hwlevel.com/hwlevel/RPiDisplays/RPiDisplays.html:

Utilise the other MIPS cores maybe
As well as having the dual MIPS primary cores, there are two other smaller MIPS cores in the SoC - one in the middle of the video decoder block, and one in the DMA unit. It would probably be fun to run some code on those - and maybe investigate if they can run independent of the main cores so maybe run a small OS (like Contiki etc.) on them doing 'interesting' things in super-low-power modes etc.

There are some references about the VPU MIPS core: https://github.com/laanwj/gcw0_vpu_poc