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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
From f392c3f35052b57343e814d8f2d52b4f788d5d45 Mon Sep 17 00:00:00 2001
From: Rob Clark <rob@ti.com>
Date: Fri, 20 Nov 2009 18:43:12 -0600
Subject: [PATCH 07/24] Add NV12 support in stridetransform
---
gst-libs/gst/video/video.c | 3 +++
gst/stride/gststridetransform.c | 12 ++++--------
2 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/gst-libs/gst/video/video.c b/gst-libs/gst/video/video.c
index 24f1ac8..ff9c4fb 100644
--- a/gst-libs/gst/video/video.c
+++ b/gst-libs/gst/video/video.c
@@ -2025,6 +2025,9 @@ gst_video_format_get_size_strided (GstVideoFormat format,
case GST_VIDEO_FORMAT_Y42B:
case GST_VIDEO_FORMAT_Y444:
return GST_ROUND_UP_4 (3 * rowstride * height);
+ case GST_VIDEO_FORMAT_NV12:
+ case GST_VIDEO_FORMAT_NV21:
+ return GST_ROUND_UP_4 (rowstride) * GST_ROUND_UP_2 (height) * 3 / 2;
default:
return 0;
}
diff --git a/gst/stride/gststridetransform.c b/gst/stride/gststridetransform.c
index ea52500..56207d0 100644
--- a/gst/stride/gststridetransform.c
+++ b/gst/stride/gststridetransform.c
@@ -2,7 +2,7 @@
*
* Copyright (C) 2009 Texas Instruments, Inc - http://www.ti.com/
*
- * Description: V4L2 sink element
+ * Description: stride transform element
* Created on: Jul 30, 2009
* Author: Rob Clark <rob@ti.com>
*
@@ -62,7 +62,7 @@ GST_ELEMENT_DETAILS ("Stride transform",
/* TODO: add rgb formats too! */
#define SUPPORTED_CAPS \
- GST_VIDEO_CAPS_YUV_STRIDED ("{ I420, YV12, YUY2, UYVY }", "[ 0, max ]")
+ GST_VIDEO_CAPS_YUV_STRIDED ("{ I420, YV12, YUY2, UYVY, NV12 }", "[ 0, max ]")
static GstStaticPadTemplate src_template =
@@ -357,12 +357,10 @@ stridify (GstStrideTransform *self, guchar *strided, guchar *unstrided)
gint stride = self->out_rowstride;
switch (self->format) {
-#if 0 /* TODO */
case GST_VIDEO_FORMAT_NV12:
g_return_val_if_fail (stride >= width, GST_FLOW_ERROR);
- stridemove (strided, unstrided, stride, width, height * 1.5);
+ stridemove (strided, unstrided, stride, width, (GST_ROUND_UP_2 (height) * 3) / 2);
return GST_FLOW_OK;
-#endif
case GST_VIDEO_FORMAT_I420:
case GST_VIDEO_FORMAT_YV12:
g_return_val_if_fail (stride >= width, GST_FLOW_ERROR);
@@ -403,12 +401,10 @@ unstridify (GstStrideTransform *self, guchar *unstrided, guchar *strided)
gint stride = self->in_rowstride;
switch (self->format) {
-#if 0 /* TODO */
case GST_VIDEO_FORMAT_NV12:
g_return_val_if_fail (stride >= width, GST_FLOW_ERROR);
- stridemove (unstrided, strided, width, stride, height * 1.5);
+ stridemove (unstrided, strided, width, stride, (GST_ROUND_UP_2 (height) * 3) / 2);
return GST_FLOW_OK;
-#endif
case GST_VIDEO_FORMAT_I420:
case GST_VIDEO_FORMAT_YV12:
g_return_val_if_fail (stride >= width, GST_FLOW_ERROR);
--
1.7.1
|