Commit 9c6ce5b3 authored by Rémi Denis-Courmont's avatar 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.
parent 3f26dbbf
...@@ -132,7 +132,7 @@ static void Plane##bits##_##f(plane_t *restrict dst, const plane_t *restrict src ...@@ -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) \ static void PlaneYUY2_##f(plane_t *restrict dst, const plane_t *restrict src) \
{ \ { \
unsigned dst_visible_width = dst->i_visible_pitch / 2; \ 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) \ ...@@ -168,7 +168,7 @@ static void PlaneYUY2_##f(plane_t *restrict dst, const plane_t *restrict src) \
} }
#define PLANES(f) \ #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(HFlip)
PLANES(VFlip) PLANES(VFlip)
...@@ -178,9 +178,16 @@ PLANES(R90) ...@@ -178,9 +178,16 @@ PLANES(R90)
PLANES(R180) PLANES(R180)
PLANES(R270) 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 { typedef struct {
char name[16]; char name[16];
bool is_rotated;
convert_t convert; convert_t convert;
convert_t iconvert; convert_t iconvert;
void (*plane8) (plane_t *dst, const plane_t *src); void (*plane8) (plane_t *dst, const plane_t *src);
...@@ -189,19 +196,24 @@ typedef struct { ...@@ -189,19 +196,24 @@ typedef struct {
void (*yuyv)(plane_t *dst, const plane_t *src); void (*yuyv)(plane_t *dst, const plane_t *src);
} transform_description_t; } transform_description_t;
#define DESC(str, rotated, f, invf) \ #define DESC(str, f, invf) \
{ str, rotated, f, invf, Plane8_##f, Plane16_##f, Plane32_##f, PlaneYUY2_##f } { str, f, invf, Plane8_##f, Plane16_##f, Plane32_##f, PlaneYUY2_##f }
static const transform_description_t descriptions[] = { static const transform_description_t descriptions[] = {
DESC("90", true, R90, R270), DESC("90", R90, R270),
DESC("180", false, R180, R180), DESC("180", R180, R180),
DESC("270", true, R270, R90), DESC("270", R270, R90),
DESC("hflip", false, HFlip, HFlip), DESC("hflip", HFlip, HFlip),
DESC("vflip", false, VFlip, VFlip), DESC("vflip", VFlip, VFlip),
DESC("transpose", true, Transpose, Transpose), DESC("transpose", Transpose, Transpose),
DESC("antitranspose", true, AntiTranspose, AntiTranspose), 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 = static const size_t n_transforms =
sizeof (descriptions) / sizeof (descriptions[0]); sizeof (descriptions) / sizeof (descriptions[0]);
...@@ -295,7 +307,7 @@ static int Open(vlc_object_t *object) ...@@ -295,7 +307,7 @@ static int Open(vlc_object_t *object)
} }
sys->convert = dsc->convert; sys->convert = dsc->convert;
if (dsc->is_rotated) { if (dsc_is_rotated(dsc)) {
for (unsigned i = 0; i < chroma->plane_count; i++) { for (unsigned i = 0; i < chroma->plane_count; i++) {
if (chroma->p[i].w.num * chroma->p[i].h.den if (chroma->p[i].w.num * chroma->p[i].h.den
!= chroma->p[i].h.num * chroma->p[i].w.den) { != chroma->p[i].h.num * chroma->p[i].w.den) {
...@@ -320,18 +332,17 @@ static int Open(vlc_object_t *object) ...@@ -320,18 +332,17 @@ static int Open(vlc_object_t *object)
/* Deal with weird packed formats */ /* Deal with weird packed formats */
switch (src->i_chroma) { 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_UYVY:
case VLC_CODEC_VYUY: case VLC_CODEC_VYUY:
if (dsc->is_rotated) { if (dsc_is_rotated(dsc)) {
msg_Err(filter, "Format rotation not possible (chroma %4.4s)", msg_Err(filter, "Format rotation not possible (chroma %4.4s)",
(char *)&src->i_chroma); (char *)&src->i_chroma);
goto error; 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; break;
case VLC_CODEC_NV12: case VLC_CODEC_NV12:
case VLC_CODEC_NV21: case VLC_CODEC_NV21:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment