mirror of
https://github.com/MiyooCFW/buildroot.git
synced 2025-09-27 22:24:19 +03:00
Add HW video engine support (#179)
* Add Cedar HW video decoder support * Add sunxifbsink gstreamer plugin * sunxifbsink: remove warning log gst-omx: remove resolution check after crop * Add gstreamer scripts * review comments fixes * ffmpeg: enable h264_omx encoder * add missing hashes and use defined git commit for libcedar * mv miyoo specific patches to board * make `gst-omx.mk` less platform specfic * Add header python interpreter to gst-raw.py * Add videoscale with nearest-neighbour to play video with higher resolutions fluently * Use HW scaler * libcedarc: fix crash when playing 640x480 video * kernel: Add patch to increase VRAM * Add fast gstreamer player * fix gst-play hangs * Add matroska plugin * remove target --------- Co-authored-by: Apaczer <94932128+Apaczer@users.noreply.github.com>
This commit is contained in:
38
board/miyoo/kernel/patch/musl/0001-enable-cedar.patch
Normal file
38
board/miyoo/kernel/patch/musl/0001-enable-cedar.patch
Normal file
@@ -0,0 +1,38 @@
|
||||
diff --git a/arch/arm/configs/miyoo_defconfig b/arch/arm/configs/miyoo_defconfig
|
||||
index f9cb0790f..625b5a30f 100644
|
||||
--- a/arch/arm/configs/miyoo_defconfig
|
||||
+++ b/arch/arm/configs/miyoo_defconfig
|
||||
@@ -83,6 +83,12 @@ CONFIG_SUNXI_WATCHDOG=y
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
+# CONFIG_MEDIA_CEC_SUPPORT is not set
|
||||
+CONFIG_MEDIA_SUPPORT=y
|
||||
+# CONFIG_VIDEO_DEV is not set
|
||||
+# CONFIG_MEDIA_CONTROLLER is not set
|
||||
+# CONFIG_DVB_NET is not set
|
||||
+# CONFIG_DVB_DYNAMIC_MINORS is not set
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_MIYOO_VIDEO=y
|
||||
CONFIG_FB_R61520=m
|
||||
@@ -122,6 +128,10 @@ CONFIG_USB_CONFIGFS_F_HID=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_SUNXI=y
|
||||
CONFIG_STAGING=y
|
||||
+CONFIG_STAGING_MEDIA=y
|
||||
+CONFIG_VIDEO_SUNXI=y
|
||||
+CONFIG_VIDEO_SUNXI_CEDAR_VE=y
|
||||
+CONFIG_VIDEO_SUNXI_CEDAR_ION=y
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_PWM=y
|
||||
CONFIG_PWM_SUNIV=y
|
||||
@@ -144,6 +154,9 @@ CONFIG_CRYPTO_DRBG_MENU=y
|
||||
# CONFIG_CRYPTO_HW is not set
|
||||
CONFIG_LIBCRC32C=y
|
||||
CONFIG_XZ_DEC=y
|
||||
+CONFIG_DMA_PERNUMA_CMA=y
|
||||
+CONFIG_CMA_SIZE_MBYTES=12
|
||||
+CONFIG_CMA_ALIGNMENT=4
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=4
|
||||
# CONFIG_FTRACE is not set
|
||||
95
board/miyoo/kernel/patch/musl/0002-video-increase-VRAM.patch
Normal file
95
board/miyoo/kernel/patch/musl/0002-video-increase-VRAM.patch
Normal file
@@ -0,0 +1,95 @@
|
||||
From 16996fbd2c84692c6bc8c426524e870a6c826550 Mon Sep 17 00:00:00 2001
|
||||
From: tiopex <tiopxyz@gmail.com>
|
||||
Date: Fri, 11 Jul 2025 23:57:28 +0200
|
||||
Subject: [PATCH] video: increase VRAM
|
||||
|
||||
---
|
||||
drivers/video/fbdev/gc9306fb.c | 2 +-
|
||||
drivers/video/fbdev/hx8347dfb.c | 2 +-
|
||||
drivers/video/fbdev/r61520fb.c | 2 +-
|
||||
drivers/video/fbdev/rm68090fb.c | 2 +-
|
||||
drivers/video/fbdev/st7789sTEfb.c | 2 +-
|
||||
drivers/video/fbdev/st7789sfb.c | 2 +-
|
||||
6 files changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/video/fbdev/gc9306fb.c b/drivers/video/fbdev/gc9306fb.c
|
||||
index 4ecfbe9fb..f4cfef6a1 100644
|
||||
--- a/drivers/video/fbdev/gc9306fb.c
|
||||
+++ b/drivers/video/fbdev/gc9306fb.c
|
||||
@@ -613,7 +613,7 @@ static int myfb_probe(struct platform_device *device)
|
||||
par->bpp = 16;
|
||||
fb_videomode_to_var(&myfb_var, mode);
|
||||
|
||||
- par->vram_size = 320 * 240 * 2 * 2;
|
||||
+ par->vram_size = 640 * 480 * 2 * 2;
|
||||
par->vram_virt = dma_alloc_coherent(par->dev, par->vram_size, (resource_size_t*)&par->vram_phys, GFP_KERNEL | GFP_DMA);
|
||||
if(!par->vram_virt){
|
||||
return -EINVAL;
|
||||
diff --git a/drivers/video/fbdev/hx8347dfb.c b/drivers/video/fbdev/hx8347dfb.c
|
||||
index c6b337999..80a0cc639 100644
|
||||
--- a/drivers/video/fbdev/hx8347dfb.c
|
||||
+++ b/drivers/video/fbdev/hx8347dfb.c
|
||||
@@ -748,7 +748,7 @@ static int myfb_probe(struct platform_device *device)
|
||||
par->bpp = 16;
|
||||
fb_videomode_to_var(&myfb_var, mode);
|
||||
|
||||
- par->vram_size = 320*240*2*2;
|
||||
+ par->vram_size = 640*480*2*2;
|
||||
par->vram_virt = dma_alloc_coherent(par->dev, par->vram_size, (resource_size_t*)&par->vram_phys, GFP_KERNEL | GFP_DMA);
|
||||
if(!par->vram_virt){
|
||||
dev_err(&device->dev, "%s, failed to allocate frame buffer(vram)\n", __func__);
|
||||
diff --git a/drivers/video/fbdev/r61520fb.c b/drivers/video/fbdev/r61520fb.c
|
||||
index ca1d8562f..c657efc70 100644
|
||||
--- a/drivers/video/fbdev/r61520fb.c
|
||||
+++ b/drivers/video/fbdev/r61520fb.c
|
||||
@@ -1566,7 +1566,7 @@ static int myfb_probe(struct platform_device *device)
|
||||
par->bpp = 16;
|
||||
fb_videomode_to_var(&myfb_var, mode);
|
||||
|
||||
- par->vram_size = 320*240*2*2;
|
||||
+ par->vram_size = 640*480*2*2;
|
||||
par->vram_virt = dma_alloc_coherent(par->dev, par->vram_size, (resource_size_t*)&par->vram_phys, GFP_KERNEL | GFP_DMA);
|
||||
if(!par->vram_virt){
|
||||
dev_err(&device->dev, "%s, failed to allocate frame buffer(vram)\n", __func__);
|
||||
diff --git a/drivers/video/fbdev/rm68090fb.c b/drivers/video/fbdev/rm68090fb.c
|
||||
index b3dcbe48b..1cf7268a7 100644
|
||||
--- a/drivers/video/fbdev/rm68090fb.c
|
||||
+++ b/drivers/video/fbdev/rm68090fb.c
|
||||
@@ -684,7 +684,7 @@ static int myfb_probe(struct platform_device *device)
|
||||
par->bpp = 16;
|
||||
fb_videomode_to_var(&myfb_var, mode);
|
||||
|
||||
- par->vram_size = 320*240*2*2;
|
||||
+ par->vram_size = 640*480*2*2;
|
||||
par->vram_virt = dma_alloc_coherent(par->dev, par->vram_size, (resource_size_t*)&par->vram_phys, GFP_KERNEL | GFP_DMA);
|
||||
if(!par->vram_virt){
|
||||
dev_err(&device->dev, "%s, failed to allocate frame buffer(vram)\n", __func__);
|
||||
diff --git a/drivers/video/fbdev/st7789sTEfb.c b/drivers/video/fbdev/st7789sTEfb.c
|
||||
index ee895b575..176f11416 100644
|
||||
--- a/drivers/video/fbdev/st7789sTEfb.c
|
||||
+++ b/drivers/video/fbdev/st7789sTEfb.c
|
||||
@@ -687,7 +687,7 @@ static int myfb_probe(struct platform_device *device)
|
||||
par->bpp = 16;
|
||||
fb_videomode_to_var(&myfb_var, mode);
|
||||
|
||||
- par->vram_size = (320 * 240 * 2 * 4) + 4096;
|
||||
+ par->vram_size = (640 * 480 * 2 * 4) + 4096;
|
||||
par->vram_virt = dma_alloc_coherent(par->dev, par->vram_size, (resource_size_t *)&par->vram_phys, GFP_KERNEL | GFP_DMA);
|
||||
if(!par->vram_virt) {
|
||||
return -EINVAL;
|
||||
diff --git a/drivers/video/fbdev/st7789sfb.c b/drivers/video/fbdev/st7789sfb.c
|
||||
index 28ef0ce8c..8867701ad 100644
|
||||
--- a/drivers/video/fbdev/st7789sfb.c
|
||||
+++ b/drivers/video/fbdev/st7789sfb.c
|
||||
@@ -806,7 +806,7 @@ static int myfb_probe(struct platform_device *device)
|
||||
par->bpp = 16;
|
||||
fb_videomode_to_var(&myfb_var, mode);
|
||||
|
||||
- par->vram_size = (320 * 240 * 2 * 4) + 4096;
|
||||
+ par->vram_size = (640 * 480 * 2 * 4) + 4096;
|
||||
par->vram_virt = dma_alloc_coherent(par->dev, par->vram_size, (resource_size_t*)&par->vram_phys, GFP_KERNEL | GFP_DMA);
|
||||
if (!par->vram_virt) {
|
||||
return -EINVAL;
|
||||
--
|
||||
2.34.1
|
||||
|
||||
Reference in New Issue
Block a user