|
|
This page summarises the state of the VLC port to the StarFive JH7100 system-on-chip, as used in their VisionFive single board computer.
|
|
|
|
|
|
[[_TOC_]]
|
|
|
|
|
|
## Board info
|
|
|
|
|
|
More info about the boards and OS support can be found at [RVspace](https://rvspace.org).
|
|
|
|
|
|
### Processor
|
|
|
The JH7100 chipset features a dual-core SiFive U74-MC RISC-V 64-bit processor supporting the RV64GC ABI.
|
|
|
|
|
|
There is no vector unit, and obviously no packed SIMD support (since the later is not even ratified). There is also no GPU, though this should change in future version of the chipset; it is not clear if the AI accelerator could be used as an alternative.
|
|
|
|
|
|
### Display controller
|
|
|
|
|
|
The board has an TDA19988 display controller from NXP support HDMI 1.4, and its adjunct TDA9950 controller for HDMI CEC.
|
|
|
|
|
|
The following pixel formats are supported, all with 8-bit depth:
|
|
|
* RV16: RGB565
|
|
|
* YCbCr 4:2:2: UYVY, VYUY, YUYV, YVYU
|
|
|
* YCbCr 4:2:0: YUV420, NV21, NV12
|
|
|
* RV32: XRGB8888
|
|
|
* RGBA: ARGB8888, ABGR8888
|
|
|
|
|
|
## Port status
|
|
|
|
|
|
At this time, the port targets Linux RV64 exclusively.
|
|
|
|
|
|
### Base
|
|
|
|
|
|
* [x] VLC core
|
|
|
* [x] Cross-compilation support
|
|
|
* [x] Native compilation support
|
|
|
* [x] Test suite
|
|
|
* [x] Core functionality
|
|
|
* [x] Contribs cross-compilation support
|
|
|
|
|
|
### Video
|
|
|
|
|
|
* Output:
|
|
|
* [x] KMS full-screen module
|
|
|
* [ ] DRI display module **work in progress**
|
|
|
* [ ] HDMI **not working**
|
|
|
* [ ] YUY2 **not working**
|
|
|
* [ ] I420 (NV12)
|
|
|
* [ ] RV16
|
|
|
* [ ] RV32
|
|
|
* [ ] RGBA
|
|
|
* [ ] MIPI DSI (**Blocked**: no panel)
|
|
|
* Hardware codec
|
|
|
* [ ] OpenMAX IL decoder
|
|
|
* [ ] AVC
|
|
|
* [ ] HEVC
|
|
|
* [ ] OpenMAX IL encoder
|
|
|
* [ ] AVC
|
|
|
* [ ] HEVC
|
|
|
* Input
|
|
|
* [x] Video4Linux module
|
|
|
* [x] USB
|
|
|
* [ ] MIPI CSI (**Blocked**: no device driver, no sensor)
|
|
|
|
|
|
### Audio
|
|
|
|
|
|
* Output
|
|
|
* [x] ALSA module
|
|
|
* [ ] HDMI (**Blocked**: not exposed by kernel)
|
|
|
* [x] Analog 16 kHz
|
|
|
* [ ] Analog 44.1 kHz (**Blocked**: not supported in driver)
|
|
|
* [ ] Analog 48 kHz (**Blocked**: not supported in driver)
|
|
|
* [ ] S/PDIF (**Blocked**: no controller)
|
|
|
* [ ] USB (probably works)
|
|
|
* [x] SALSA module
|
|
|
* Input
|
|
|
* [x] ALSA module
|
|
|
* [ ] Analog (**Blocked**: no controller)
|
|
|
* [x] USB
|
|
|
* [x] SALSA module
|
|
|
|
|
|
### Misc
|
|
|
|
|
|
* [ ] HDMI CEC
|
|
|
|
|
|
## Build instruction (summary)
|
|
|
|
|
|
Note that this port only targets VLC 4.0 (and later).
|
|
|
**DO NOT** use 3.0.x releases; they are **not** supported.
|
|
|
|
|
|
### Natively
|
|
|
|
|
|
As noted in the VideoLAN wiki, compiling natively is much easier, as you can readily install dependencies via the packaging system of the Linux distribution.
|
|
|
Note however that this is much slower than on a typical desktop system.
|
|
|
To mitigate this, be sure to disable the Qt and skinned GUIs,
|
|
|
and **not** use the VLC contribs.
|
|
|
|
|
|
It is also strongly recommended to disable relaxed relocations
|
|
|
with the `-mno-relax` compiler flag to speed up `libtool` and `ld`.
|
|
|
|
|
|
For more general info on building VLC on Linux, see
|
|
|
https://wiki.videolan.org/UnixCompile/
|
|
|
|
|
|
For a minimalist build on the Linux RISC-V port,
|
|
|
install the following packages (assuming Debian/Ubuntu):
|
|
|
```
|
|
|
g++ make automake libtool autopoint pkg-config flex bison lua5.2
|
|
|
libasound2-dev libdrm-dev
|
|
|
libgnutls28-dev libidn-dev liblua5.2-dev libxml2-dev
|
|
|
libavformat-dev libswscale-dev liba52-dev
|
|
|
gdb
|
|
|
```
|
|
|
Then build:
|
|
|
```
|
|
|
mkdir -p build
|
|
|
cd build
|
|
|
../bootstrap
|
|
|
../configure -C \
|
|
|
--disable-qt --disable-avcodec \
|
|
|
--disable-xcb --disable-vdpau \
|
|
|
CFLAGS="-mno-relax" CXXFLAGS="-mno-relax"
|
|
|
make -j3
|
|
|
make -j3 check
|
|
|
```
|
|
|
|
|
|
### Cross-compilation
|
|
|
|
|
|
Cross-compilation to 64-bit RISC-V is fully supported.
|
|
|
See also https://www.remlab.net/op/vlc-riscv-1.shtml
|
|
|
|
|
|
Note however that some essential modules cannot easily be built in such setup,
|
|
|
notably the KMS modules which are dependent on `libdrm`.
|
|
|
Also Simple ALSA (SALSA) will be used instead of the fully fledged ALSA.
|
|
|
|
|
|
Assuming you have cloned VLC in the current directory and have installed all tools for a native VLC build:
|
|
|
```
|
|
|
% apt-get install g++-riscv64-linux-gnu
|
|
|
% mkdir -p contribs/riscv riscv
|
|
|
% cd contribs/riscv
|
|
|
% ../bootstrap --host=riscv64-linux-gnu
|
|
|
% make
|
|
|
% cd ../../riscv
|
|
|
% ../configure -C --host=riscv64-linux-gnu \
|
|
|
--disable-qt --disable-vdpau
|
|
|
% make
|
|
|
``` |