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:
83
board/miyoo/patches/gst-omx/0003-add-for-zero-copy.patch
Normal file
83
board/miyoo/patches/gst-omx/0003-add-for-zero-copy.patch
Normal file
@@ -0,0 +1,83 @@
|
||||
From d3096c4fc4e7d13647df55a7c74dc5ba1e143bc7 Mon Sep 17 00:00:00 2001
|
||||
From: xiebin <xiebin@allwinnertech.com>
|
||||
Date: Tue, 2 Jan 2018 17:20:30 +0800
|
||||
Subject: [PATCH 4/4] add for zero copy
|
||||
|
||||
---
|
||||
omx/gstomxbufferpool.c | 7 ++++++-
|
||||
omx/gstomxvideo.c | 3 +++
|
||||
omx/openmax/OMX_IVCommon.h | 12 ++++++++++++
|
||||
3 files changed, 21 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/omx/gstomxbufferpool.c b/omx/gstomxbufferpool.c
|
||||
index b57612d..607bee8 100644
|
||||
--- a/omx/gstomxbufferpool.c
|
||||
+++ b/omx/gstomxbufferpool.c
|
||||
@@ -344,6 +344,7 @@ gst_omx_buffer_pool_alloc_buffer (GstBufferPool * bpool,
|
||||
GstOMXBufferPool *pool = GST_OMX_BUFFER_POOL (bpool);
|
||||
GstBuffer *buf;
|
||||
GstOMXBuffer *omx_buf;
|
||||
+ GstMemoryFlags flags = 0;
|
||||
|
||||
g_return_val_if_fail (pool->allocating, GST_FLOW_ERROR);
|
||||
|
||||
@@ -389,7 +390,10 @@ gst_omx_buffer_pool_alloc_buffer (GstBufferPool * bpool,
|
||||
gsize offset[GST_VIDEO_MAX_PLANES] = { 0, };
|
||||
gint stride[GST_VIDEO_MAX_PLANES] = { nstride, 0, };
|
||||
|
||||
- mem = gst_omx_memory_allocator_alloc (pool->allocator, 0, omx_buf);
|
||||
+ if(pool->port->port_def.bBuffersContiguous)
|
||||
+ flags|= GST_MEMORY_FLAG_PHYSICALLY_CONTIGUOUS;
|
||||
+
|
||||
+ mem = gst_omx_memory_allocator_alloc (pool->allocator, flags, omx_buf);
|
||||
buf = gst_buffer_new ();
|
||||
gst_buffer_append_memory (buf, mem);
|
||||
g_ptr_array_add (pool->buffers, buf);
|
||||
@@ -405,6 +409,7 @@ gst_omx_buffer_pool_alloc_buffer (GstBufferPool * bpool,
|
||||
case GST_VIDEO_FORMAT_GRAY8:
|
||||
break;
|
||||
case GST_VIDEO_FORMAT_I420:
|
||||
+ case GST_VIDEO_FORMAT_YV12:
|
||||
stride[1] = nstride / 2;
|
||||
offset[1] = offset[0] + stride[0] * nslice;
|
||||
stride[2] = nstride / 2;
|
||||
diff --git a/omx/gstomxvideo.c b/omx/gstomxvideo.c
|
||||
index 8a42c71..fd4cad4 100644
|
||||
--- a/omx/gstomxvideo.c
|
||||
+++ b/omx/gstomxvideo.c
|
||||
@@ -44,6 +44,9 @@ gst_omx_video_get_format_from_omx (OMX_COLOR_FORMATTYPE omx_colorformat)
|
||||
case OMX_COLOR_FormatYUV420PackedPlanar:
|
||||
format = GST_VIDEO_FORMAT_I420;
|
||||
break;
|
||||
+ case OMX_COLOR_FormatYVU420Planar:
|
||||
+ format = GST_VIDEO_FORMAT_YV12;
|
||||
+ break;
|
||||
case OMX_COLOR_FormatYUV420SemiPlanar:
|
||||
case OMX_COLOR_FormatYUV420PackedSemiPlanar:
|
||||
format = GST_VIDEO_FORMAT_NV12;
|
||||
diff --git a/omx/openmax/OMX_IVCommon.h b/omx/openmax/OMX_IVCommon.h
|
||||
index 4c4995c..367670b 100644
|
||||
--- a/omx/openmax/OMX_IVCommon.h
|
||||
+++ b/omx/openmax/OMX_IVCommon.h
|
||||
@@ -132,6 +132,18 @@ typedef enum OMX_COLOR_FORMATTYPE {
|
||||
OMX_COLOR_Format24BitABGR6666,
|
||||
OMX_COLOR_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
|
||||
OMX_COLOR_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
|
||||
+ //* extended by aw;
|
||||
+ OMX_COLOR_FormatYVU420SemiPlanar,
|
||||
+ OMX_COLOR_FormatYVU420Planar,
|
||||
+ //* end;
|
||||
+
|
||||
+ OMX_COLOR_FormatAndroidOpaque = 0x7F000789,
|
||||
+ OMX_COLOR_FormatYUV420Flexible = 0x7F420888,
|
||||
+ OMX_TI_COLOR_FormatYUV420PackedSemiPlanar = 0x7F000100,
|
||||
+ OMX_QCOM_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00,
|
||||
+ OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka = 0x7FA30C03,
|
||||
+ OMX_SEC_COLOR_FormatNV12Tiled = 0x7FC00002,
|
||||
+ OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar32m = 0x7FA30C04,
|
||||
OMX_COLOR_FormatMax = 0x7FFFFFFF
|
||||
} OMX_COLOR_FORMATTYPE;
|
||||
|
||||
--
|
||||
2.7.4
|
||||
|
||||
Reference in New Issue
Block a user