[vlc-commits] transform: remove unused/incorrect YUY2 transforms

Rémi Denis-Courmont git at videolan.org
Tue Aug 7 21:55:04 CEST 2012


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Tue Aug  7 22:49:01 2012 +0300| [9c6ce5b353d340f0dc78f3f8596d5f1ab1abbd37] | committer: Rémi Denis-Courmont

transform: remove unused/incorrect YUY2 transforms

YUY2-specific transforms are required only when inverting dimensions.
For flips, normal single plane 32-bits pixels transforms must be used.

The broken transform functions were not used, but they were referenced
via relocations.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9c6ce5b353d340f0dc78f3f8596d5f1ab1abbd37
---

 modules/video_filter/transform.c |   49 +++++++++++++++++++++++---------------
 1 file changed, 30 insertions(+), 19 deletions(-)

diff --git a/modules/video_filter/transform.c b/modules/video_filter/transform.c
index c3990ac..97841c1 100644
--- a/modules/video_filter/transform.c
+++ b/modules/video_filter/transform.c
@@ -132,7 +132,7 @@ static void Plane##bits##_##f(plane_t *restrict dst, const plane_t *restrict src
     } \
 }
 
-#define PLANE_YUY2(f) \
+#define YUY2(f) \
 static void PlaneYUY2_##f(plane_t *restrict dst, const plane_t *restrict src) \
 { \
     unsigned dst_visible_width = dst->i_visible_pitch / 2; \
@@ -168,7 +168,7 @@ static void PlaneYUY2_##f(plane_t *restrict dst, const plane_t *restrict src) \
 }
 
 #define PLANES(f) \
-PLANE(f,8) PLANE(f,16) PLANE(f,32) PLANE_YUY2(f)
+PLANE(f,8) PLANE(f,16) PLANE(f,32)
 
 PLANES(HFlip)
 PLANES(VFlip)
@@ -178,9 +178,16 @@ PLANES(R90)
 PLANES(R180)
 PLANES(R270)
 
+#define PlaneYUY2_HFlip Plane32_HFlip
+#define PlaneYUY2_VFlip Plane32_VFlip
+#define PlaneYUY2_R180  Plane32_R180
+YUY2(Transpose)
+YUY2(AntiTranspose)
+YUY2(R90)
+YUY2(R270)
+
 typedef struct {
     char      name[16];
-    bool      is_rotated;
     convert_t convert;
     convert_t iconvert;
     void      (*plane8) (plane_t *dst, const plane_t *src);
@@ -189,19 +196,24 @@ typedef struct {
     void      (*yuyv)(plane_t *dst, const plane_t *src);
 } transform_description_t;
 
-#define DESC(str, rotated, f, invf) \
-    { str, rotated, f, invf, Plane8_##f, Plane16_##f, Plane32_##f, PlaneYUY2_##f }
+#define DESC(str, f, invf) \
+    { str, f, invf, Plane8_##f, Plane16_##f, Plane32_##f, PlaneYUY2_##f }
 
 static const transform_description_t descriptions[] = {
-    DESC("90",            true,  R90,           R270),
-    DESC("180",           false, R180,          R180),
-    DESC("270",           true,  R270,          R90),
-    DESC("hflip",         false, HFlip,         HFlip),
-    DESC("vflip",         false, VFlip,         VFlip),
-    DESC("transpose",     true,  Transpose,     Transpose),
-    DESC("antitranspose", true,  AntiTranspose, AntiTranspose),
+    DESC("90",            R90,           R270),
+    DESC("180",           R180,          R180),
+    DESC("270",           R270,          R90),
+    DESC("hflip",         HFlip,         HFlip),
+    DESC("vflip",         VFlip,         VFlip),
+    DESC("transpose",     Transpose,     Transpose),
+    DESC("antitranspose", AntiTranspose, AntiTranspose),
 };
 
+static bool dsc_is_rotated(const transform_description_t *dsc)
+{
+    return dsc->plane32 != dsc->yuyv;
+}
+
 static const size_t n_transforms =
     sizeof (descriptions) / sizeof (descriptions[0]);
 
@@ -295,7 +307,7 @@ static int Open(vlc_object_t *object)
     }
 
     sys->convert = dsc->convert;
-    if (dsc->is_rotated) {
+    if (dsc_is_rotated(dsc)) {
         for (unsigned i = 0; i < chroma->plane_count; i++) {
             if (chroma->p[i].w.num * chroma->p[i].h.den
              != chroma->p[i].h.num * chroma->p[i].w.den) {
@@ -320,18 +332,17 @@ static int Open(vlc_object_t *object)
 
     /* Deal with weird packed formats */
     switch (src->i_chroma) {
-        case VLC_CODEC_YUYV:
-        case VLC_CODEC_YVYU:
-            sys->plane = dsc->is_rotated ? dsc->yuyv : dsc->plane32;
-            break;
         case VLC_CODEC_UYVY:
         case VLC_CODEC_VYUY:
-            if (dsc->is_rotated) {
+            if (dsc_is_rotated(dsc)) {
                 msg_Err(filter, "Format rotation not possible (chroma %4.4s)",
                         (char *)&src->i_chroma);
                 goto error;
             }
-            sys->plane = dsc->plane32; /* 32-bits, not 16-bits! */
+            /* fallthrough */
+        case VLC_CODEC_YUYV:
+        case VLC_CODEC_YVYU:
+            sys->plane = dsc->yuyv; /* 32-bits, not 16-bits! */
             break;
         case VLC_CODEC_NV12:
         case VLC_CODEC_NV21:



More information about the vlc-commits mailing list