diff --git a/recipes-multimedia/vpu/libsf-wave420l.bb b/recipes-multimedia/vpu/libsf-wave420l.bb new file mode 100644 index 0000000..6148001 --- /dev/null +++ b/recipes-multimedia/vpu/libsf-wave420l.bb @@ -0,0 +1,75 @@ +SUMMARY = "WAVE420l encoding library for VisionFive2" +DESCRIPTION = "Library provides API to venc Kernel module for using the WAVE420l chip for AVC/H.264 encoding." + +LICENSE = "ChipsMedia_VisionFive2" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=16bead7cc56b053f5da0061ce0637ad2" + +COMPATIBLE_MACHINE = "visionfive2" + +require recipes-bsp/common/visionfive2-firmware.inc +inherit autotools + +SOLIBS = ".so" +FILES_SOLIBSDEV = "" + +SRC_URI += " \ + file://WaveEncoder_yocto.mak;subdir=git/wave420l/code \ + file://20_venc.rules \ +" + +S = "${WORKDIR}/git/wave420l/code" + +do_configure:prepend() { + # workaround wrong build system/include path assumptions + ln -sf ${S} ${S}/wave420l +} + +do_compile() { + oe_runmake -C ${S} -f WaveEncoder_yocto.mak +} + +do_install() { + install -D -m 0644 ${S}/vpuapi/vpuconfig.h ${D}/usr/include/wave420l/vpuapi/vpuconfig.h + install -D -m 0644 ${S}/vpuapi/product.h ${D}/usr/include/wave420l/vpuapi/product.h + install -D -m 0644 ${S}/vpuapi/vputypes.h ${D}/usr/include/wave420l/vpuapi/vputypes.h + install -D -m 0644 ${S}/vpuapi/vpuapi.h ${D}/usr/include/wave420l/vpuapi/vpuapi.h + install -D -m 0644 ${S}/vpuapi/vpuapifunc.h ${D}/usr/include/wave420l/vpuapi/vpuapifunc.h + install -D -m 0644 ${S}/vpuapi/coda9/coda9_vpuconfig.h ${D}/usr/include/wave420l/vpuapi/coda9/coda9_vpuconfig.h + install -D -m 0644 ${S}/vpuapi/coda9/coda9.h ${D}/usr/include/wave420l/vpuapi/coda9/coda9.h + install -D -m 0644 ${S}/vpuapi/coda9/coda9_regdefine.h ${D}/usr/include/wave420l/vpuapi/coda9/coda9_regdefine.h + install -D -m 0644 ${S}/vpuapi/wave/coda7q/coda7q_regdefine.h ${D}/usr/include/wave420l/vpuapi/wave/coda7q/coda7q_regdefine.h + install -D -m 0644 ${S}/vpuapi/wave/coda7q/coda7q.h ${D}/usr/include/wave420l/vpuapi/wave/coda7q/coda7q.h + install -D -m 0644 ${S}/vpuapi/wave/wave4/wave4.h ${D}/usr/include/wave420l/vpuapi/wave/wave4/wave4.h + install -D -m 0644 ${S}/vpuapi/wave/wave4/wave4_regdefine.h ${D}/usr/include/wave420l/vpuapi/wave/wave4/wave4_regdefine.h + install -D -m 0644 ${S}/vpuapi/wave/wave5/wave5.h ${D}/usr/include/wave420l/vpuapi/wave/wave5/wave5.h + install -D -m 0644 ${S}/vpuapi/wave/wave5/wave5_regdefine.h ${D}/usr/include/wave420l/vpuapi/wave/wave5/wave5_regdefine.h + install -D -m 0644 ${S}/vpuapi/wave/common/common.h ${D}/usr/include/wave420l/vpuapi/wave/common/common.h + install -D -m 0644 ${S}/vpuapi/wave/common/common_vpuconfig.h ${D}/usr/include/wave420l/vpuapi/wave/common/common_vpuconfig.h + install -D -m 0644 ${S}/vpuapi/wave/common/common_regdefine.h ${D}/usr/include/wave420l/vpuapi/wave/common/common_regdefine.h + install -D -m 0644 ${S}/vpuapi/vpuerror.h ${D}/usr/include/wave420l/vpuapi/vpuerror.h + install -D -m 0644 ${S}/sample/helper/misc/pbu.h ${D}/usr/include/wave420l/sample/helper/misc/pbu.h + install -D -m 0644 ${S}/sample/helper/misc/skip.h ${D}/usr/include/wave420l/sample/helper/misc/skip.h + install -D -m 0644 ${S}/sample/helper/misc/getopt.h ${D}/usr/include/wave420l/sample/helper/misc/getopt.h + install -D -m 0644 ${S}/sample/helper/misc/header_struct.h ${D}/usr/include/wave420l/sample/helper/misc/header_struct.h + install -D -m 0644 ${S}/sample/helper/misc/debug.h ${D}/usr/include/wave420l/sample/helper/misc/debug.h + install -D -m 0644 ${S}/sample/helper/msvc/inttypes.h ${D}/usr/include/wave420l/sample/helper/msvc/inttypes.h + install -D -m 0644 ${S}/sample/helper/msvc/stdint.h ${D}/usr/include/wave420l/sample/helper/msvc/stdint.h + install -D -m 0644 ${S}/sample/helper/main_helper.h ${D}/usr/include/wave420l/sample/helper/main_helper.h + install -D -m 0644 ${S}/vdi/mm.h ${D}/usr/include/wave420l/vdi/mm.h + install -D -m 0644 ${S}/vdi/linux/driver/vmm.h ${D}/usr/include/wave420l/vdi/linux/driver/vmm.h + install -D -m 0644 ${S}/vdi/linux/driver/vpu.h ${D}/usr/include/wave420l/vdi/linux/driver/vpu.h + install -D -m 0644 ${S}/vdi/vdi.h ${D}/usr/include/wave420l/vdi/vdi.h + install -D -m 0644 ${S}/vdi/vdi_osal.h ${D}/usr/include/wave420l/vdi/vdi_osal.h + install -D -m 0644 ${S}/config.h ${D}/usr/include/wave420l/config.h + + install -d ${D}/usr/lib + install -m 0644 ${S}/libsfenc.so ${D}/usr/lib/ + + install -d ${D}/${base_libdir}/udev/rules.d/ + install -m 0644 ${WORKDIR}/20_venc.rules ${D}/${base_libdir}/udev/rules.d/ +} + +FILES:${PN} += " \ + ${base_libdir}/* \ + ${libdir}/* \ +" diff --git a/recipes-multimedia/vpu/libsf-wave420l/20_venc.rules b/recipes-multimedia/vpu/libsf-wave420l/20_venc.rules new file mode 100644 index 0000000..735d45a --- /dev/null +++ b/recipes-multimedia/vpu/libsf-wave420l/20_venc.rules @@ -0,0 +1 @@ +SUBSYSTEM=="venc", MODE="0666" diff --git a/recipes-multimedia/vpu/libsf-wave420l/WaveEncoder_yocto.mak b/recipes-multimedia/vpu/libsf-wave420l/WaveEncoder_yocto.mak new file mode 100755 index 0000000..e3165cb --- /dev/null +++ b/recipes-multimedia/vpu/libsf-wave420l/WaveEncoder_yocto.mak @@ -0,0 +1,275 @@ +# ---------------------------------------------------------------------- +# +# Project: C&M Video encoder sample +# +# ---------------------------------------------------------------------- +.PHONY: create_dir force_dependency +BUILD_CONFIGURATION = RiscvLinux +USE_FFMPEG = yes +USE_PTHREAD = yes + +UNAME = $(shell uname -a) +ifneq (,$(findstring i386, $(UNAME))) + USE_32BIT = yes +endif + + +ifeq ($(USE_32BIT), yes) +PLATFORM = nativelinux +else +PLATFORM = nativelinux_64bit +endif + +CROSS_CC_PREFIX = +VDI_C = vdi/linux/vdi.c +VDI_OSAL_C = vdi/linux/vdi_osal.c +MM_C = +PLATFORM_FLAGS = + +ifeq ("$(BUILD_CONFIGURATION)", "NonOS") + CROSS_CC_PREFIX = arm-none-eabi- + VDI_C = vdi/nonos/vdi.c + VDI_OSAL_C = vdi/nonos/vdi_osal.c + MM_C = vdi/mm.c + USE_FFMPEG = no + USE_PTHREAD = no + PLATFORM = none + DEFINES = -DLIB_C_STUB + PLATFORM_FLAGS = +endif +ifeq ("$(BUILD_CONFIGURATION)", "EmbeddedLinux") + CROSS_CC_PREFIX = arm-none-linux-gnueabi- + PLATFORM = armlinux +endif + +ifeq ("$(BUILD_CONFIGURATION)", "RiscvLinux") + CROSS_CC_PREFIX = riscv64-buildroot-linux-gnu- + PLATFORM = riscvlinux + USE_FFMPEG = no + USE_PTHREAD = yes + MM_C = vdi/mm.c +endif + +#CC = $(CROSS_CC_PREFIX)gcc +#CXX = $(CROSS_CC_PREFIX)g++ +LINKING=$(CC) +AR = $(CROSS_CC_PREFIX)ar + +INCLUDES = -I./theoraparser/include -I./vpuapi -I./ffmpeg/include -I./sample/helper -I./vdi +DEFINES += -DWAVE420 + + +CFLAGS += -g -I. -Wl,--fatal-warning $(INCLUDES) $(DEFINES) $(PLATFORM_FLAGS) +ARFLAGS += cru + +LDFLAGS += $(PLATFORM_FLAGS) -L./theoraparser/ +#LDLIBS += -ltheoraparser + + +ifeq ($(USE_FFMPEG), yes) +LDLIBS += -lavformat -lavcodec -lavutil +LDFLAGS += -L./ffmpeg/lib/$(PLATFORM) +ifneq ($(USE_32BIT), yes) +LDLIBS += -lz +endif #USE_32BIT +endif #USE_FFMPEG + +ifeq ($(USE_PTHREAD), yes) +LDLIBS += -lpthread +endif +LDLIBS += -lm + + +TARGET=libsfenc.so +MAKEFILE=Wave420Enc.mak +OBJDIR=obj +ALLOBJS=*.o +ALLDEPS=*.dep +ALLLIBS=*.a +RM=rm -f +MKDIR=mkdir -p + +SOURCES = sample/helper/main_helper.c \ + sample/helper/vpuhelper.c \ + sample/helper/bitstream/bitstreamfeeder.c \ + sample/helper/bitstream/bitstreamreader.c \ + sample/helper/bitstream/binaryreader.c \ + sample/helper/bitstream/bsfeeder_fixedsize_impl.c \ + sample/helper/bitstream/bsfeeder_framesize_impl.c \ + sample/helper/bitstream/bsfeeder_size_plus_es_impl.c \ + sample/helper/comparator/bin_comparator_impl.c \ + sample/helper/comparator/comparator.c \ + sample/helper/comparator/md5_comparator_impl.c \ + sample/helper/comparator/yuv_comparator_impl.c \ + sample/helper/display/fbdev_impl.c \ + sample/helper/display/hdmi_impl.c \ + sample/helper/display/simplerenderer.c \ + sample/helper/misc/cfgParser.c \ + sample/helper/misc/cnm_fpga.c \ + sample/helper/misc/cnm_video_helper.c \ + sample/helper/misc/container.c \ + sample/helper/misc/datastructure.c \ + sample/helper/misc/platform.c \ + sample/helper/misc/pbu.c \ + sample/helper/misc/debug.c \ + sample/helper/yuv/yuvfeeder.c \ + sample/helper/yuv/yuvLoaderfeeder.c +SOURCES += $(VDI_C) \ + $(VDI_OSAL_C) \ + $(MM_C) \ + vpuapi/product.c \ + vpuapi/vpuapifunc.c \ + vpuapi/vpuapi.c \ + vpuapi/coda9/coda9.c \ + vpuapi/wave/common/common.c \ + vpuapi/wave/coda7q/coda7q.c \ + vpuapi/wave/wave4/wave4.c \ + vpuapi/wave/wave5/wave5.c + + +OBJECTNAMES=$(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCES))) +OBJECTPATHS=$(addprefix $(OBJDIR)/,$(notdir $(OBJECTNAMES))) + +$(TARGET): create_dir $(OBJECTPATHS) #libtheoraparser.a + $(LINKING) -fPIC -shared -o $@ $(LDFLAGS) -Wl,-gc-section -Wl,--start-group $(OBJECTPATHS) $(LDLIBS) -Wl,--end-group + +-include $(OBJECTPATHS:.o=.dep) + +clean: + $(RM) $(TARGET) + $(RM) $(OBJDIR)/$(ALLOBJS) + $(RM) $(OBJDIR)/$(ALLDEPS) + $(RM) theoraparser/$(ALLOBJS) + $(RM) theoraparser/$(ALLLIBS) + $(RM) theoraparser/$(ALLDEPS) + +#libtheoraparser.a: force_dependency +# cd theoraparser; make + +$(OBJDIR)/main_helper.o : sample/helper/main_helper.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/vpuhelper.o : sample/helper/vpuhelper.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + + +$(OBJDIR)/bitstreamfeeder.o : sample/helper/bitstream/bitstreamfeeder.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/bitstreamreader.o : sample/helper/bitstream/bitstreamreader.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/binaryreader.o : sample/helper/bitstream/binaryreader.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/bsfeeder_fixedsize_impl.o : sample/helper/bitstream/bsfeeder_fixedsize_impl.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/bsfeeder_framesize_impl.o : sample/helper/bitstream/bsfeeder_framesize_impl.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/bsfeeder_size_plus_es_impl.o : sample/helper/bitstream/bsfeeder_size_plus_es_impl.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/bin_comparator_impl.o : sample/helper/comparator/bin_comparator_impl.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/comparator.o : sample/helper/comparator/comparator.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/md5_comparator_impl.o : sample/helper/comparator/md5_comparator_impl.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/yuv_comparator_impl.o : sample/helper/comparator/yuv_comparator_impl.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + + +$(OBJDIR)/fbdev_impl.o : sample/helper/display/fbdev_impl.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/hdmi_impl.o : sample/helper/display/hdmi_impl.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/mixer.o : sample/helper/display/mixer.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/simplerenderer.o : sample/helper/display/simplerenderer.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + + +$(OBJDIR)/cfgParser.o : sample/helper/misc/cfgParser.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/cnm_fpga.o : sample/helper/misc/cnm_fpga.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/cnm_video_helper.o : sample/helper/misc/cnm_video_helper.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/container.o : sample/helper/misc/container.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/datastructure.o : sample/helper/misc/datastructure.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/platform.o : sample/helper/misc/platform.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/pbu.o : sample/helper/misc/pbu.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/yuvfeeder.o : sample/helper/yuv/yuvfeeder.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/yuvLoaderfeeder.o : sample/helper/yuv/yuvLoaderfeeder.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/debug.o : sample/helper/misc/debug.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + + + + +$(OBJDIR)/vdi.o : $(VDI_C) $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/vdi_osal.o : $(VDI_OSAL_C) $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +ifneq ("$(MM_C)", "") +$(OBJDIR)/mm.o : $(MM_C) $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) +endif + +$(OBJDIR)/product.o : vpuapi/product.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/vpuapifunc.o : vpuapi/vpuapifunc.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/vpuapi.o : vpuapi/vpuapi.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/coda9.o : vpuapi/coda9/coda9.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/common.o : vpuapi/wave/common/common.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/coda7q.o : vpuapi/wave/coda7q/coda7q.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/wave4.o : vpuapi/wave/wave4/wave4.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +$(OBJDIR)/wave5.o : vpuapi/wave/wave5/wave5.c $(MAKEFILE) + $(CC) -fPIC -shared $(CFLAGS) -Wall -c $< -o $@ -MD -MF $(@:.o=.dep) + +create_dir: +ifeq (,$(findstring $(OBJDIR),$(wildcard $(OBJDIR) ))) + -mkdir -p $(OBJDIR) +endif + +force_dependency : + true +