summaryrefslogtreecommitdiffstats
path: root/recipes-multimedia/libva/files/0001-media_libva-export-packed-YUV-when-VA_EXPORT_SURFACE.patch
blob: 5260dc19b3dc6c1116b002f006f25114c6b28a43 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
From 8fc1d919fd33db698e5470602942ab6a2d6b7841 Mon Sep 17 00:00:00 2001
From: Haihao Xiang <haihao.xiang@intel.com>
Date: Thu, 3 Dec 2020 10:52:15 +0800
Subject: [PATCH 1/2] media_libva: export packed YUV when
 VA_EXPORT_SURFACE_COMPOSED_LAYERS is not set

vaExportSurfaceHandle works for packed RGB w/wo
VA_EXPORT_SURFACE_COMPOSED_LAYERS, it should work for packed YUV too
w/wo VA_EXPORT_SURFACE_COMPOSED_LAYERS

Example:
gst-launch-1.0 videotestsrc ! msdkvpp ! \
'video/x-raw(memory:DMABuf)',format=YUY2 ! glimagesink

The patch was imported from the iHD media-driver git server
(https://github.com/intel/media-driver.git) as of commit id
38e5f4ab95a5c4fb3fe55d3d132795ee804d9310.

Upstream-Status: Backport

Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
---
 media_driver/linux/common/ddi/media_libva.cpp | 22 +++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/media_driver/linux/common/ddi/media_libva.cpp b/media_driver/linux/common/ddi/media_libva.cpp
index 91c3ff14..778b7011 100755
--- a/media_driver/linux/common/ddi/media_libva.cpp
+++ b/media_driver/linux/common/ddi/media_libva.cpp
@@ -6672,9 +6672,27 @@ static uint32_t DdiMedia_GetDrmFormatOfSeparatePlane(uint32_t fourcc, int plane)
             return DRM_FORMAT_R16;
 
         case VA_FOURCC_YUY2:
+            return DRM_FORMAT_YUYV;
+        case VA_FOURCC_YVYU:
+            return DRM_FORMAT_YVYU;
+        case VA_FOURCC_VYUY:
+            return DRM_FORMAT_VYUY;
         case VA_FOURCC_UYVY:
-            // These are not representable as separate planes.
-            return 0;
+            return DRM_FORMAT_UYVY;
+        case VA_FOURCC_Y210:
+            return DRM_FORMAT_Y210;
+        case VA_FOURCC_Y216:
+            return DRM_FORMAT_Y216;
+        case VA_FOURCC_Y410:
+            return DRM_FORMAT_Y410;
+        case VA_FOURCC_Y416:
+            return DRM_FORMAT_Y416;
+#if VA_CHECK_VERSION(1, 9, 0)
+        case VA_FOURCC_Y212:
+            return DRM_FORMAT_Y216;
+        case VA_FOURCC_Y412:
+            return DRM_FORMAT_Y416;
+#endif
 
         case VA_FOURCC_ARGB:
             return DRM_FORMAT_ARGB8888;
-- 
2.17.1