mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 08:46:40 +00:00
videoconvert: rework YUV->RGB fastpaths
Rework the orc code to be around 10% faster and support arbitrary matrices. Pass the matrix parameters to the YUV->RGB functions to make them work for all matrices. This enables more and faster fastpath conversions. See https://bugzilla.gnome.org/show_bug.cgi?id=721701
This commit is contained in:
parent
5ca04cb798
commit
14b5999bca
2 changed files with 276 additions and 247 deletions
|
@ -451,8 +451,11 @@ mergewl ayuv, ay, uv
|
|||
.flags 2d
|
||||
.dest 4 argb guint8
|
||||
.source 4 ayuv guint8
|
||||
.temp 2 t1
|
||||
.temp 2 t2
|
||||
.param 2 p1
|
||||
.param 2 p2
|
||||
.param 2 p3
|
||||
.param 2 p4
|
||||
.param 2 p5
|
||||
.temp 1 a
|
||||
.temp 1 y
|
||||
.temp 1 u
|
||||
|
@ -467,57 +470,48 @@ mergewl ayuv, ay, uv
|
|||
.temp 1 g
|
||||
.temp 1 b
|
||||
.temp 4 x
|
||||
.const 1 c8 8
|
||||
.const 1 c128 128
|
||||
|
||||
x4 subb x, ayuv, 128
|
||||
splitlw t1, t2, x
|
||||
splitwb y, a, t2
|
||||
splitwb v, u, t1
|
||||
convsbw wy, y
|
||||
convsbw wu, u
|
||||
convsbw wv, v
|
||||
x4 subb x, ayuv, c128
|
||||
splitlw wv, wy, x
|
||||
splitwb y, a, wy
|
||||
splitwb v, u, wv
|
||||
|
||||
mullw t1, wy, 42
|
||||
shrsw t1, t1, c8
|
||||
addssw wy, wy, t1
|
||||
splatbw wy, y
|
||||
splatbw wu, u
|
||||
splatbw wv, v
|
||||
|
||||
addssw wr, wy, wv
|
||||
mullw t1, wv, 103
|
||||
shrsw t1, t1, c8
|
||||
subssw wr, wr, t1
|
||||
addssw wr, wr, wv
|
||||
mulhsw wy, wy, p1
|
||||
|
||||
addssw wb, wy, wu
|
||||
addssw wb, wb, wu
|
||||
mullw t1, wu, 4
|
||||
shrsw t1, t1, c8
|
||||
addssw wb, wb, t1
|
||||
mulhsw wr, wv, p2
|
||||
addssw wr, wy, wr
|
||||
|
||||
mullw t1, wu, 100
|
||||
shrsw t1, t1, c8
|
||||
subssw wg, wy, t1
|
||||
mullw t1, wv, 104
|
||||
shrsw t1, t1, c8
|
||||
subssw wg, wg, t1
|
||||
subssw wg, wg, t1
|
||||
mulhsw wb, wu, p3
|
||||
addssw wb, wy, wb
|
||||
|
||||
mulhsw wg, wu, p4
|
||||
addssw wg, wy, wg
|
||||
mulhsw wy, wv, p5
|
||||
addssw wg, wg, wy
|
||||
|
||||
convssswb r, wr
|
||||
convssswb g, wg
|
||||
convssswb b, wb
|
||||
|
||||
mergebw t1, a, r
|
||||
mergebw t2, g, b
|
||||
mergewl x, t1, t2
|
||||
x4 addb argb, x, 128
|
||||
|
||||
|
||||
mergebw wr, a, r
|
||||
mergebw wb, g, b
|
||||
mergewl x, wr, wb
|
||||
x4 addb argb, x, c128
|
||||
|
||||
.function video_convert_orc_convert_AYUV_BGRA
|
||||
.flags 2d
|
||||
.dest 4 argb guint8
|
||||
.dest 4 bgra guint8
|
||||
.source 4 ayuv guint8
|
||||
.temp 2 t1
|
||||
.temp 2 t2
|
||||
.param 2 p1
|
||||
.param 2 p2
|
||||
.param 2 p3
|
||||
.param 2 p4
|
||||
.param 2 p5
|
||||
.temp 1 a
|
||||
.temp 1 y
|
||||
.temp 1 u
|
||||
|
@ -532,58 +526,49 @@ x4 addb argb, x, 128
|
|||
.temp 1 g
|
||||
.temp 1 b
|
||||
.temp 4 x
|
||||
.const 1 c8 8
|
||||
.const 1 c128 128
|
||||
|
||||
x4 subb x, ayuv, 128
|
||||
splitlw t1, t2, x
|
||||
splitwb y, a, t2
|
||||
splitwb v, u, t1
|
||||
convsbw wy, y
|
||||
convsbw wu, u
|
||||
convsbw wv, v
|
||||
x4 subb x, ayuv, c128
|
||||
splitlw wv, wy, x
|
||||
splitwb y, a, wy
|
||||
splitwb v, u, wv
|
||||
|
||||
mullw t1, wy, 42
|
||||
shrsw t1, t1, c8
|
||||
addssw wy, wy, t1
|
||||
splatbw wy, y
|
||||
splatbw wu, u
|
||||
splatbw wv, v
|
||||
|
||||
addssw wr, wy, wv
|
||||
mullw t1, wv, 103
|
||||
shrsw t1, t1, c8
|
||||
subssw wr, wr, t1
|
||||
addssw wr, wr, wv
|
||||
mulhsw wy, wy, p1
|
||||
|
||||
addssw wb, wy, wu
|
||||
addssw wb, wb, wu
|
||||
mullw t1, wu, 4
|
||||
shrsw t1, t1, c8
|
||||
addssw wb, wb, t1
|
||||
mulhsw wr, wv, p2
|
||||
addssw wr, wy, wr
|
||||
|
||||
mullw t1, wu, 100
|
||||
shrsw t1, t1, c8
|
||||
subssw wg, wy, t1
|
||||
mullw t1, wv, 104
|
||||
shrsw t1, t1, c8
|
||||
subssw wg, wg, t1
|
||||
subssw wg, wg, t1
|
||||
mulhsw wb, wu, p3
|
||||
addssw wb, wy, wb
|
||||
|
||||
mulhsw wg, wu, p4
|
||||
addssw wg, wy, wg
|
||||
mulhsw wy, wv, p5
|
||||
addssw wg, wg, wy
|
||||
|
||||
convssswb r, wr
|
||||
convssswb g, wg
|
||||
convssswb b, wb
|
||||
|
||||
mergebw t1, b, g
|
||||
mergebw t2, r, a
|
||||
mergewl x, t1, t2
|
||||
x4 addb argb, x, 128
|
||||
|
||||
|
||||
mergebw wb, b, g
|
||||
mergebw wr, r, a
|
||||
mergewl x, wb, wr
|
||||
x4 addb bgra, x, c128
|
||||
|
||||
|
||||
.function video_convert_orc_convert_AYUV_ABGR
|
||||
.flags 2d
|
||||
.dest 4 argb guint8
|
||||
.source 4 ayuv guint8
|
||||
.temp 2 t1
|
||||
.temp 2 t2
|
||||
.param 2 p1
|
||||
.param 2 p2
|
||||
.param 2 p3
|
||||
.param 2 p4
|
||||
.param 2 p5
|
||||
.temp 1 a
|
||||
.temp 1 y
|
||||
.temp 1 u
|
||||
|
@ -598,57 +583,48 @@ x4 addb argb, x, 128
|
|||
.temp 1 g
|
||||
.temp 1 b
|
||||
.temp 4 x
|
||||
.const 1 c8 8
|
||||
.const 1 c128 128
|
||||
|
||||
x4 subb x, ayuv, 128
|
||||
splitlw t1, t2, x
|
||||
splitwb y, a, t2
|
||||
splitwb v, u, t1
|
||||
convsbw wy, y
|
||||
convsbw wu, u
|
||||
convsbw wv, v
|
||||
x4 subb x, ayuv, c128
|
||||
splitlw wv, wy, x
|
||||
splitwb y, a, wy
|
||||
splitwb v, u, wv
|
||||
|
||||
mullw t1, wy, 42
|
||||
shrsw t1, t1, c8
|
||||
addssw wy, wy, t1
|
||||
splatbw wy, y
|
||||
splatbw wu, u
|
||||
splatbw wv, v
|
||||
|
||||
addssw wr, wy, wv
|
||||
mullw t1, wv, 103
|
||||
shrsw t1, t1, c8
|
||||
subssw wr, wr, t1
|
||||
addssw wr, wr, wv
|
||||
mulhsw wy, wy, p1
|
||||
|
||||
addssw wb, wy, wu
|
||||
addssw wb, wb, wu
|
||||
mullw t1, wu, 4
|
||||
shrsw t1, t1, c8
|
||||
addssw wb, wb, t1
|
||||
mulhsw wr, wv, p2
|
||||
addssw wr, wy, wr
|
||||
|
||||
mullw t1, wu, 100
|
||||
shrsw t1, t1, c8
|
||||
subssw wg, wy, t1
|
||||
mullw t1, wv, 104
|
||||
shrsw t1, t1, c8
|
||||
subssw wg, wg, t1
|
||||
subssw wg, wg, t1
|
||||
mulhsw wb, wu, p3
|
||||
addssw wb, wy, wb
|
||||
|
||||
mulhsw wg, wu, p4
|
||||
addssw wg, wy, wg
|
||||
mulhsw wy, wv, p5
|
||||
addssw wg, wg, wy
|
||||
|
||||
convssswb r, wr
|
||||
convssswb g, wg
|
||||
convssswb b, wb
|
||||
|
||||
mergebw t1, a, b
|
||||
mergebw t2, g, r
|
||||
mergewl x, t1, t2
|
||||
x4 addb argb, x, 128
|
||||
|
||||
|
||||
mergebw wb, a, b
|
||||
mergebw wr, g, r
|
||||
mergewl x, wb, wr
|
||||
x4 addb argb, x, c128
|
||||
|
||||
.function video_convert_orc_convert_AYUV_RGBA
|
||||
.flags 2d
|
||||
.dest 4 argb guint8
|
||||
.source 4 ayuv guint8
|
||||
.temp 2 t1
|
||||
.temp 2 t2
|
||||
.param 2 p1
|
||||
.param 2 p2
|
||||
.param 2 p3
|
||||
.param 2 p4
|
||||
.param 2 p5
|
||||
.temp 1 a
|
||||
.temp 1 y
|
||||
.temp 1 u
|
||||
|
@ -663,48 +639,38 @@ x4 addb argb, x, 128
|
|||
.temp 1 g
|
||||
.temp 1 b
|
||||
.temp 4 x
|
||||
.const 1 c8 8
|
||||
.const 1 c128 128
|
||||
|
||||
x4 subb x, ayuv, 128
|
||||
splitlw t1, t2, x
|
||||
splitwb y, a, t2
|
||||
splitwb v, u, t1
|
||||
convsbw wy, y
|
||||
convsbw wu, u
|
||||
convsbw wv, v
|
||||
x4 subb x, ayuv, c128
|
||||
splitlw wv, wy, x
|
||||
splitwb y, a, wy
|
||||
splitwb v, u, wv
|
||||
|
||||
mullw t1, wy, 42
|
||||
shrsw t1, t1, c8
|
||||
addssw wy, wy, t1
|
||||
splatbw wy, y
|
||||
splatbw wu, u
|
||||
splatbw wv, v
|
||||
|
||||
addssw wr, wy, wv
|
||||
mullw t1, wv, 103
|
||||
shrsw t1, t1, c8
|
||||
subssw wr, wr, t1
|
||||
addssw wr, wr, wv
|
||||
mulhsw wy, wy, p1
|
||||
|
||||
addssw wb, wy, wu
|
||||
addssw wb, wb, wu
|
||||
mullw t1, wu, 4
|
||||
shrsw t1, t1, c8
|
||||
addssw wb, wb, t1
|
||||
mulhsw wr, wv, p2
|
||||
addssw wr, wy, wr
|
||||
|
||||
mullw t1, wu, 100
|
||||
shrsw t1, t1, c8
|
||||
subssw wg, wy, t1
|
||||
mullw t1, wv, 104
|
||||
shrsw t1, t1, c8
|
||||
subssw wg, wg, t1
|
||||
subssw wg, wg, t1
|
||||
mulhsw wb, wu, p3
|
||||
addssw wb, wy, wb
|
||||
|
||||
mulhsw wg, wu, p4
|
||||
addssw wg, wy, wg
|
||||
mulhsw wy, wv, p5
|
||||
addssw wg, wg, wy
|
||||
|
||||
convssswb r, wr
|
||||
convssswb g, wg
|
||||
convssswb b, wb
|
||||
|
||||
mergebw t1, r, g
|
||||
mergebw t2, b, a
|
||||
mergewl x, t1, t2
|
||||
x4 addb argb, x, 128
|
||||
mergebw wr, r, g
|
||||
mergebw wb, b, a
|
||||
mergewl x, wr, wb
|
||||
x4 addb argb, x, c128
|
||||
|
||||
|
||||
|
||||
|
@ -713,9 +679,11 @@ x4 addb argb, x, 128
|
|||
.source 1 y guint8
|
||||
.source 1 u guint8
|
||||
.source 1 v guint8
|
||||
.temp 2 t1
|
||||
.temp 2 t2
|
||||
.temp 1 t3
|
||||
.param 2 p1
|
||||
.param 2 p2
|
||||
.param 2 p3
|
||||
.param 2 p4
|
||||
.param 2 p5
|
||||
.temp 2 wy
|
||||
.temp 2 wu
|
||||
.temp 2 wv
|
||||
|
@ -726,48 +694,36 @@ x4 addb argb, x, 128
|
|||
.temp 1 g
|
||||
.temp 1 b
|
||||
.temp 4 x
|
||||
.const 1 c8 8
|
||||
.const 1 c128 128
|
||||
|
||||
subb t3, y, c128
|
||||
convsbw wy, t3
|
||||
loadupib t3, u
|
||||
subb t3, t3, c128
|
||||
convsbw wu, t3
|
||||
loadupib t3, v
|
||||
subb t3, t3, c128
|
||||
convsbw wv, t3
|
||||
subb r, y, c128
|
||||
splatbw wy, r
|
||||
loadupib r, u
|
||||
subb r, r, c128
|
||||
splatbw wu, r
|
||||
loadupib r, v
|
||||
subb r, r, c128
|
||||
splatbw wv, r
|
||||
|
||||
mullw t1, wy, 42
|
||||
shrsw t1, t1, c8
|
||||
addssw wy, wy, t1
|
||||
mulhsw wy, wy, p1
|
||||
|
||||
addssw wr, wy, wv
|
||||
mullw t1, wv, 103
|
||||
shrsw t1, t1, c8
|
||||
subssw wr, wr, t1
|
||||
addssw wr, wr, wv
|
||||
mulhsw wr, wv, p2
|
||||
addssw wr, wy, wr
|
||||
|
||||
addssw wb, wy, wu
|
||||
addssw wb, wb, wu
|
||||
mullw t1, wu, 4
|
||||
shrsw t1, t1, c8
|
||||
addssw wb, wb, t1
|
||||
mulhsw wb, wu, p3
|
||||
addssw wb, wy, wb
|
||||
|
||||
mullw t1, wu, 100
|
||||
shrsw t1, t1, c8
|
||||
subssw wg, wy, t1
|
||||
mullw t1, wv, 104
|
||||
shrsw t1, t1, c8
|
||||
subssw wg, wg, t1
|
||||
subssw wg, wg, t1
|
||||
mulhsw wg, wu, p4
|
||||
addssw wg, wy, wg
|
||||
mulhsw wy, wv, p5
|
||||
addssw wg, wg, wy
|
||||
|
||||
convssswb r, wr
|
||||
convssswb g, wg
|
||||
convssswb b, wb
|
||||
|
||||
mergebw t1, b, g
|
||||
mergebw t2, r, 127
|
||||
mergewl x, t1, t2
|
||||
mergebw wb, b, g
|
||||
mergebw wr, r, 127
|
||||
mergewl x, wb, wr
|
||||
x4 addb argb, x, c128
|
||||
|
||||
|
|
|
@ -276,6 +276,7 @@ videoconvert_convert_compute_matrix (VideoConvert * convert)
|
|||
/* 1, bring color components to [0..1.0] range */
|
||||
gst_video_color_range_offsets (in_info->colorimetry.range, suinfo, offset,
|
||||
scale);
|
||||
|
||||
color_matrix_offset_components (&dst, -offset[0], -offset[1], -offset[2]);
|
||||
|
||||
color_matrix_scale_components (&dst, 1 / ((float) scale[0]),
|
||||
|
@ -300,6 +301,7 @@ videoconvert_convert_compute_matrix (VideoConvert * convert)
|
|||
/* 8, bring color components to nominal range */
|
||||
gst_video_color_range_offsets (out_info->colorimetry.range, duinfo, offset,
|
||||
scale);
|
||||
|
||||
color_matrix_scale_components (&dst, (float) scale[0], (float) scale[1],
|
||||
(float) scale[2]);
|
||||
|
||||
|
@ -1202,7 +1204,9 @@ convert_AYUV_ARGB (VideoConvert * convert, GstVideoFrame * dest,
|
|||
|
||||
video_convert_orc_convert_AYUV_ARGB (FRAME_GET_LINE (dest, 0),
|
||||
FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0),
|
||||
FRAME_GET_STRIDE (src), width, height);
|
||||
FRAME_GET_STRIDE (src), convert->cmatrix[0][0], convert->cmatrix[0][2],
|
||||
convert->cmatrix[2][1], convert->cmatrix[1][1], convert->cmatrix[1][2],
|
||||
width, height);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1214,7 +1218,9 @@ convert_AYUV_BGRA (VideoConvert * convert, GstVideoFrame * dest,
|
|||
|
||||
video_convert_orc_convert_AYUV_BGRA (FRAME_GET_LINE (dest, 0),
|
||||
FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0),
|
||||
FRAME_GET_STRIDE (src), width, height);
|
||||
FRAME_GET_STRIDE (src), convert->cmatrix[0][0], convert->cmatrix[0][2],
|
||||
convert->cmatrix[2][1], convert->cmatrix[1][1], convert->cmatrix[1][2],
|
||||
width, height);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1226,7 +1232,9 @@ convert_AYUV_ABGR (VideoConvert * convert, GstVideoFrame * dest,
|
|||
|
||||
video_convert_orc_convert_AYUV_ABGR (FRAME_GET_LINE (dest, 0),
|
||||
FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0),
|
||||
FRAME_GET_STRIDE (src), width, height);
|
||||
FRAME_GET_STRIDE (src), convert->cmatrix[0][0], convert->cmatrix[0][2],
|
||||
convert->cmatrix[2][1], convert->cmatrix[1][1], convert->cmatrix[1][2],
|
||||
width, height);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1238,7 +1246,9 @@ convert_AYUV_RGBA (VideoConvert * convert, GstVideoFrame * dest,
|
|||
|
||||
video_convert_orc_convert_AYUV_RGBA (FRAME_GET_LINE (dest, 0),
|
||||
FRAME_GET_STRIDE (dest), FRAME_GET_LINE (src, 0),
|
||||
FRAME_GET_STRIDE (src), width, height);
|
||||
FRAME_GET_STRIDE (src), convert->cmatrix[0][0], convert->cmatrix[0][2],
|
||||
convert->cmatrix[2][1], convert->cmatrix[1][1], convert->cmatrix[1][2],
|
||||
width, height);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1252,7 +1262,10 @@ convert_I420_BGRA (VideoConvert * convert, GstVideoFrame * dest,
|
|||
for (i = 0; i < height; i++) {
|
||||
video_convert_orc_convert_I420_BGRA (FRAME_GET_LINE (dest, i),
|
||||
FRAME_GET_Y_LINE (src, i),
|
||||
FRAME_GET_U_LINE (src, i >> 1), FRAME_GET_V_LINE (src, i >> 1), width);
|
||||
FRAME_GET_U_LINE (src, i >> 1), FRAME_GET_V_LINE (src, i >> 1),
|
||||
convert->cmatrix[0][0], convert->cmatrix[0][2],
|
||||
convert->cmatrix[2][1], convert->cmatrix[1][1], convert->cmatrix[1][2],
|
||||
width);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -1269,6 +1282,7 @@ typedef struct
|
|||
GstVideoColorMatrix out_matrix;
|
||||
gboolean keeps_color_matrix;
|
||||
gboolean keeps_interlaced;
|
||||
gboolean needs_color_matrix;
|
||||
gint width_align, height_align;
|
||||
void (*convert) (VideoConvert * convert, GstVideoFrame * dest,
|
||||
const GstVideoFrame * src);
|
||||
|
@ -1276,118 +1290,165 @@ typedef struct
|
|||
|
||||
static const VideoTransform transforms[] = {
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_I420_YUY2},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_I420_YUY2},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_I420_UYVY},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_I420_UYVY},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_I420_AYUV},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_I420_AYUV},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 0, 0, convert_I420_Y42B},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0,
|
||||
convert_I420_Y42B},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 0, 0, convert_I420_Y444},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0,
|
||||
convert_I420_Y444},
|
||||
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_I420_YUY2},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_I420_YUY2},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_I420_UYVY},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_I420_UYVY},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_I420_AYUV},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_I420_AYUV},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 0, 0, convert_I420_Y42B},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0,
|
||||
convert_I420_Y42B},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 0, 0, convert_I420_Y444},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0,
|
||||
convert_I420_Y444},
|
||||
|
||||
{GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_YUY2_I420},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_YUY2_I420},
|
||||
{GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YV12,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_YUY2_I420},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_YUY2_I420},
|
||||
{GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_UYVY_YUY2}, /* alias */
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0, convert_UYVY_YUY2}, /* alias */
|
||||
{GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_YUY2_AYUV},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_YUY2_AYUV},
|
||||
{GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_YUY2_Y42B},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_YUY2_Y42B},
|
||||
{GST_VIDEO_FORMAT_YUY2, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_YUY2_Y444},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_YUY2_Y444},
|
||||
|
||||
{GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_UYVY_I420},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_UYVY_I420},
|
||||
{GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YV12,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_UYVY_I420},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_UYVY_I420},
|
||||
{GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_UYVY_YUY2},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_UYVY_YUY2},
|
||||
{GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_UYVY_AYUV},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_UYVY_AYUV},
|
||||
{GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_UYVY_Y42B},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_UYVY_Y42B},
|
||||
{GST_VIDEO_FORMAT_UYVY, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_UYVY_Y444},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_UYVY_Y444},
|
||||
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 1, 1, convert_AYUV_I420},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 1, 1,
|
||||
convert_AYUV_I420},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YV12,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 1, 1, convert_AYUV_I420},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 1, 1,
|
||||
convert_AYUV_I420},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 1, 0, convert_AYUV_YUY2},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0,
|
||||
convert_AYUV_YUY2},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 1, 0, convert_AYUV_UYVY},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0,
|
||||
convert_AYUV_UYVY},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 1, 0, convert_AYUV_Y42B},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0,
|
||||
convert_AYUV_Y42B},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_AYUV_Y444},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_AYUV_Y444},
|
||||
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 0, 0, convert_Y42B_I420},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0,
|
||||
convert_Y42B_I420},
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YV12,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 0, 0, convert_Y42B_I420},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 0, 0,
|
||||
convert_Y42B_I420},
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_Y42B_YUY2},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_Y42B_YUY2},
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_Y42B_UYVY},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_Y42B_UYVY},
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 1, 0, convert_Y42B_AYUV},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0,
|
||||
convert_Y42B_AYUV},
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y444,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_Y42B_Y444},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_Y42B_Y444},
|
||||
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_I420,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 1, 0, convert_Y444_I420},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 1, 0,
|
||||
convert_Y444_I420},
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YV12,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, 1, 0, convert_Y444_I420},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, FALSE, 1, 0,
|
||||
convert_Y444_I420},
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_YUY2,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 1, 0, convert_Y444_YUY2},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0,
|
||||
convert_Y444_YUY2},
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_UYVY,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 1, 0, convert_Y444_UYVY},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0,
|
||||
convert_Y444_UYVY},
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_AYUV,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 0, 0, convert_Y444_AYUV},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 0, 0,
|
||||
convert_Y444_AYUV},
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_Y42B,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, 1, 0, convert_Y444_Y42B},
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, FALSE, 1, 0,
|
||||
convert_Y444_Y42B},
|
||||
|
||||
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_ARGB,
|
||||
GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_ARGB},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_BGRA,
|
||||
GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_BGRA},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_xRGB,
|
||||
GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_ARGB}, /* alias */
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_BGRx,
|
||||
GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_BGRA}, /* alias */
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_ABGR,
|
||||
GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_ABGR},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_RGBA,
|
||||
GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_RGBA},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_xBGR,
|
||||
GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_ABGR}, /* alias */
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_RGBx,
|
||||
GST_VIDEO_COLOR_MATRIX_RGB, FALSE, TRUE, 0, 0, convert_AYUV_RGBA}, /* alias */
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_ARGB,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0,
|
||||
convert_AYUV_ARGB},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRA,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0,
|
||||
convert_AYUV_BGRA},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_xRGB,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, convert_AYUV_ARGB}, /* alias */
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRx,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, convert_AYUV_BGRA}, /* alias */
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_ABGR,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0,
|
||||
convert_AYUV_ABGR},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_RGBA,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0,
|
||||
convert_AYUV_RGBA},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_xBGR,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, convert_AYUV_ABGR}, /* alias */
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_RGBx,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, TRUE, TRUE, 0, 0, convert_AYUV_RGBA}, /* alias */
|
||||
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_BGRA,
|
||||
GST_VIDEO_COLOR_MATRIX_RGB, FALSE, FALSE, 0, 0, convert_I420_BGRA},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_BGRx,
|
||||
GST_VIDEO_COLOR_MATRIX_RGB, FALSE, FALSE, 0, 0, convert_I420_BGRA},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_BGRA,
|
||||
GST_VIDEO_COLOR_MATRIX_RGB, FALSE, FALSE, 0, 0, convert_I420_BGRA},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_BT601, GST_VIDEO_FORMAT_BGRx,
|
||||
GST_VIDEO_COLOR_MATRIX_RGB, FALSE, FALSE, 0, 0, convert_I420_BGRA},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRA,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, TRUE, 0, 0,
|
||||
convert_I420_BGRA},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRx,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, TRUE, 0, 0,
|
||||
convert_I420_BGRA},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRA,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, TRUE, 0, 0,
|
||||
convert_I420_BGRA},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_COLOR_MATRIX_UNKNOWN, GST_VIDEO_FORMAT_BGRx,
|
||||
GST_VIDEO_COLOR_MATRIX_UNKNOWN, TRUE, FALSE, TRUE, 0, 0,
|
||||
convert_I420_BGRA},
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -1409,6 +1470,8 @@ videoconvert_convert_lookup_fastpath (VideoConvert * convert)
|
|||
in_matrix = convert->in_info.colorimetry.matrix;
|
||||
out_matrix = convert->out_info.colorimetry.matrix;
|
||||
|
||||
// return FALSE;
|
||||
|
||||
interlaced = GST_VIDEO_INFO_IS_INTERLACED (&convert->in_info);
|
||||
interlaced |= GST_VIDEO_INFO_IS_INTERLACED (&convert->out_info);
|
||||
|
||||
|
@ -1422,10 +1485,20 @@ videoconvert_convert_lookup_fastpath (VideoConvert * convert)
|
|||
(transforms[i].width_align & width) == 0 &&
|
||||
(transforms[i].height_align & height) == 0) {
|
||||
GST_DEBUG ("using fastpath");
|
||||
if (transforms[i].needs_color_matrix)
|
||||
if (!videoconvert_convert_compute_matrix (convert))
|
||||
goto no_convert;
|
||||
convert->convert = transforms[i].convert;
|
||||
alloc_tmplines (convert, 1, GST_VIDEO_INFO_WIDTH (&convert->in_info));
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
GST_DEBUG ("no fastpath found");
|
||||
return FALSE;
|
||||
|
||||
no_convert:
|
||||
{
|
||||
GST_DEBUG ("can't create matrix");
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue