mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 12:32:29 +00:00
video-converter: add alpha handling
Add support for alpha. Make it possible to copy, set and multiply the alpha value of a frame during conversion. Set the border alpha to 0xff by default. Go over some of the fastpaths and add alpha handling. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=745006
This commit is contained in:
parent
5744b7995c
commit
5077a5e3af
5 changed files with 489 additions and 284 deletions
|
@ -123,6 +123,14 @@ struct _GammaData
|
|||
void (*gamma_func) (GammaData * data, gpointer dest, gpointer src);
|
||||
};
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ALPHA_MODE_NONE = 0,
|
||||
ALPHA_MODE_COPY = (1 << 0),
|
||||
ALPHA_MODE_SET = (1 << 1),
|
||||
ALPHA_MODE_MULT = (1 << 2)
|
||||
} AlphaMode;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
guint8 *data;
|
||||
|
@ -170,6 +178,8 @@ struct _GstVideoConverter
|
|||
gpointer borderline;
|
||||
guint64 borders[4];
|
||||
guint32 border_argb;
|
||||
guint32 alpha_value;
|
||||
AlphaMode alpha_mode;
|
||||
|
||||
void (*convert) (GstVideoConverter * convert, const GstVideoFrame * src,
|
||||
GstVideoFrame * dest);
|
||||
|
@ -213,6 +223,10 @@ struct _GstVideoConverter
|
|||
gint in_bits;
|
||||
gint out_bits;
|
||||
|
||||
/* alpha correction */
|
||||
GstLineCache *alpha_lines;
|
||||
void (*alpha_func) (GstVideoConverter * convert, gpointer pixels, gint width);
|
||||
|
||||
/* gamma encode */
|
||||
GammaData gamma_enc;
|
||||
/* to Y'CbCr */
|
||||
|
@ -422,6 +436,8 @@ static gboolean do_convert_to_RGB_lines (GstLineCache * cache, gint out_line,
|
|||
gint in_line, gpointer user_data);
|
||||
static gboolean do_convert_lines (GstLineCache * cache, gint out_line,
|
||||
gint in_line, gpointer user_data);
|
||||
static gboolean do_alpha_lines (GstLineCache * cache, gint out_line,
|
||||
gint in_line, gpointer user_data);
|
||||
static gboolean do_convert_to_YUV_lines (GstLineCache * cache, gint out_line,
|
||||
gint in_line, gpointer user_data);
|
||||
static gboolean do_upsample_lines (GstLineCache * cache, gint out_line,
|
||||
|
@ -518,6 +534,15 @@ get_opt_uint (GstVideoConverter * convert, const gchar * opt, guint def)
|
|||
return res;
|
||||
}
|
||||
|
||||
static gdouble
|
||||
get_opt_double (GstVideoConverter * convert, const gchar * opt, gdouble def)
|
||||
{
|
||||
gdouble res;
|
||||
if (!gst_structure_get_double (convert->config, opt, &res))
|
||||
res = def;
|
||||
return res;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
get_opt_bool (GstVideoConverter * convert, const gchar * opt, gboolean def)
|
||||
{
|
||||
|
@ -547,7 +572,10 @@ get_opt_str (GstVideoConverter * convert, const gchar * opt, const gchar * def)
|
|||
}
|
||||
|
||||
#define DEFAULT_OPT_FILL_BORDER TRUE
|
||||
#define DEFAULT_OPT_BORDER_ARGB 0x00000000
|
||||
#define DEFAULT_OPT_ALPHA_VALUE 0.5
|
||||
/* options copy, set, mult */
|
||||
#define DEFAULT_OPT_ALPHA_MODE "copy"
|
||||
#define DEFAULT_OPT_BORDER_ARGB 0xff000000
|
||||
/* options full, input-only, output-only, none */
|
||||
#define DEFAULT_OPT_MATRIX_MODE "full"
|
||||
/* none, remap */
|
||||
|
@ -564,6 +592,10 @@ get_opt_str (GstVideoConverter * convert, const gchar * opt, const gchar * def)
|
|||
|
||||
#define GET_OPT_FILL_BORDER(c) get_opt_bool(c, \
|
||||
GST_VIDEO_CONVERTER_OPT_FILL_BORDER, DEFAULT_OPT_FILL_BORDER)
|
||||
#define GET_OPT_ALPHA_VALUE(c) get_opt_double(c, \
|
||||
GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE, DEFAULT_OPT_ALPHA_VALUE)
|
||||
#define GET_OPT_ALPHA_MODE(c) get_opt_str(c, \
|
||||
GST_VIDEO_CONVERTER_OPT_ALPHA_MODE, DEFAULT_OPT_ALPHA_MODE)
|
||||
#define GET_OPT_BORDER_ARGB(c) get_opt_uint(c, \
|
||||
GST_VIDEO_CONVERTER_OPT_BORDER_ARGB, DEFAULT_OPT_BORDER_ARGB)
|
||||
#define GET_OPT_MATRIX_MODE(c) get_opt_str(c, \
|
||||
|
@ -588,6 +620,10 @@ get_opt_str (GstVideoConverter * convert, const gchar * opt, const gchar * def)
|
|||
#define GET_OPT_DITHER_QUANTIZATION(c) get_opt_uint(c, \
|
||||
GST_VIDEO_CONVERTER_OPT_DITHER_QUANTIZATION, DEFAULT_OPT_DITHER_QUANTIZATION)
|
||||
|
||||
#define CHECK_ALPHA_COPY(c) (!g_strcmp0(GET_OPT_ALPHA_MODE(c), "copy"))
|
||||
#define CHECK_ALPHA_SET(c) (!g_strcmp0(GET_OPT_ALPHA_MODE(c), "set"))
|
||||
#define CHECK_ALPHA_MULT(c) (!g_strcmp0(GET_OPT_ALPHA_MODE(c), "mult"))
|
||||
|
||||
#define CHECK_MATRIX_FULL(c) (!g_strcmp0(GET_OPT_MATRIX_MODE(c), "full"))
|
||||
#define CHECK_MATRIX_INPUT(c) (!g_strcmp0(GET_OPT_MATRIX_MODE(c), "input-only"))
|
||||
#define CHECK_MATRIX_OUTPUT(c) (!g_strcmp0(GET_OPT_MATRIX_MODE(c), "output-only"))
|
||||
|
@ -1317,7 +1353,7 @@ chain_scale (GstVideoConverter * convert, GstLineCache * prev, gboolean force)
|
|||
s0 = convert->current_width * convert->current_height;
|
||||
s3 = convert->out_width * convert->out_height;
|
||||
|
||||
GST_DEBUG ("%d <> %d", s0, s3);
|
||||
GST_DEBUG ("in pixels %d <> out pixels %d", s0, s3);
|
||||
|
||||
if (s3 <= s0 || force) {
|
||||
/* we are making the image smaller or are forced to resample */
|
||||
|
@ -1468,6 +1504,92 @@ chain_convert (GstVideoConverter * convert, GstLineCache * prev)
|
|||
return prev;
|
||||
}
|
||||
|
||||
static void
|
||||
convert_set_alpha_u8 (GstVideoConverter * convert, gpointer pixels, gint width)
|
||||
{
|
||||
guint8 *p = pixels;
|
||||
guint8 alpha = CLAMP (convert->alpha_value, 0, 255);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < width; i++)
|
||||
p[i * 4] = alpha;
|
||||
}
|
||||
|
||||
static void
|
||||
convert_set_alpha_u16 (GstVideoConverter * convert, gpointer pixels, gint width)
|
||||
{
|
||||
guint16 *p = pixels;
|
||||
guint16 alpha;
|
||||
int i;
|
||||
|
||||
alpha = CLAMP (convert->alpha_value, 0, 255);
|
||||
alpha |= alpha << 8;
|
||||
|
||||
for (i = 0; i < width; i++)
|
||||
p[i * 4] = alpha;
|
||||
}
|
||||
|
||||
static void
|
||||
convert_mult_alpha_u8 (GstVideoConverter * convert, gpointer pixels, gint width)
|
||||
{
|
||||
guint8 *p = pixels;
|
||||
guint alpha = convert->alpha_value;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < width; i++) {
|
||||
gint a = (p[i * 4] * alpha) / 255;
|
||||
p[i * 4] = CLAMP (a, 0, 255);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
convert_mult_alpha_u16 (GstVideoConverter * convert, gpointer pixels,
|
||||
gint width)
|
||||
{
|
||||
guint16 *p = pixels;
|
||||
guint alpha = convert->alpha_value;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < width; i++) {
|
||||
gint a = (p[i * 4] * alpha) / 255;
|
||||
p[i * 4] = CLAMP (a, 0, 255);
|
||||
}
|
||||
}
|
||||
|
||||
static GstLineCache *
|
||||
chain_alpha (GstVideoConverter * convert, GstLineCache * prev)
|
||||
{
|
||||
switch (convert->alpha_mode) {
|
||||
case ALPHA_MODE_NONE:
|
||||
case ALPHA_MODE_COPY:
|
||||
return prev;
|
||||
|
||||
case ALPHA_MODE_SET:
|
||||
if (convert->current_bits == 8)
|
||||
convert->alpha_func = convert_set_alpha_u8;
|
||||
else
|
||||
convert->alpha_func = convert_set_alpha_u16;
|
||||
break;
|
||||
case ALPHA_MODE_MULT:
|
||||
if (convert->current_bits == 8)
|
||||
convert->alpha_func = convert_mult_alpha_u8;
|
||||
else
|
||||
convert->alpha_func = convert_mult_alpha_u16;
|
||||
break;
|
||||
}
|
||||
|
||||
GST_DEBUG ("chain alpha mode %d", convert->alpha_mode);
|
||||
prev = convert->alpha_lines = gst_line_cache_new (prev);
|
||||
prev->write_input = TRUE;
|
||||
prev->pass_alloc = TRUE;
|
||||
prev->n_lines = 1;
|
||||
prev->stride = convert->current_pstride * convert->current_width;
|
||||
gst_line_cache_set_need_line_func (convert->alpha_lines,
|
||||
do_alpha_lines, convert, NULL);
|
||||
|
||||
return prev;
|
||||
}
|
||||
|
||||
static GstLineCache *
|
||||
chain_convert_to_YUV (GstVideoConverter * convert, GstLineCache * prev)
|
||||
{
|
||||
|
@ -1741,6 +1863,38 @@ setup_borderline (GstVideoConverter * convert)
|
|||
}
|
||||
}
|
||||
|
||||
static AlphaMode
|
||||
convert_get_alpha_mode (GstVideoConverter * convert)
|
||||
{
|
||||
gboolean in_alpha, out_alpha;
|
||||
|
||||
in_alpha = GST_VIDEO_INFO_HAS_ALPHA (&convert->in_info);
|
||||
out_alpha = GST_VIDEO_INFO_HAS_ALPHA (&convert->out_info);
|
||||
|
||||
/* no output alpha, do nothing */
|
||||
if (!out_alpha)
|
||||
return ALPHA_MODE_NONE;
|
||||
|
||||
if (in_alpha) {
|
||||
/* in and out */
|
||||
if (CHECK_ALPHA_COPY (convert))
|
||||
return ALPHA_MODE_COPY;
|
||||
|
||||
if (CHECK_ALPHA_MULT (convert)) {
|
||||
if (GET_OPT_ALPHA_VALUE (convert) == 1.0)
|
||||
return ALPHA_MODE_COPY;
|
||||
else
|
||||
return ALPHA_MODE_MULT;
|
||||
}
|
||||
}
|
||||
/* nothing special, this is what unpack etc does automatically */
|
||||
if (GET_OPT_ALPHA_VALUE (convert) == 1.0)
|
||||
return ALPHA_MODE_NONE;
|
||||
|
||||
/* everything else becomes SET */
|
||||
return ALPHA_MODE_SET;
|
||||
}
|
||||
|
||||
/**
|
||||
* gst_video_converter_new:
|
||||
* @in_info: a #GstVideoInfo
|
||||
|
@ -1761,6 +1915,8 @@ gst_video_converter_new (GstVideoInfo * in_info, GstVideoInfo * out_info,
|
|||
GstVideoConverter *convert;
|
||||
GstLineCache *prev;
|
||||
const GstVideoFormatInfo *fin, *fout, *finfo;
|
||||
gdouble alpha_value;
|
||||
guint8 av255;
|
||||
|
||||
g_return_val_if_fail (in_info != NULL, NULL);
|
||||
g_return_val_if_fail (out_info != NULL, NULL);
|
||||
|
@ -1822,10 +1978,23 @@ gst_video_converter_new (GstVideoInfo * in_info, GstVideoInfo * out_info,
|
|||
convert->out_height =
|
||||
MIN (convert->out_height, convert->out_maxheight - convert->out_y);
|
||||
|
||||
convert->fill_border = get_opt_bool (convert,
|
||||
GST_VIDEO_CONVERTER_OPT_FILL_BORDER, TRUE);
|
||||
convert->fill_border = GET_OPT_FILL_BORDER (convert);
|
||||
convert->border_argb = get_opt_uint (convert,
|
||||
GST_VIDEO_CONVERTER_OPT_BORDER_ARGB, 0x00000000);
|
||||
GST_VIDEO_CONVERTER_OPT_BORDER_ARGB, DEFAULT_OPT_BORDER_ARGB);
|
||||
|
||||
alpha_value = GET_OPT_ALPHA_VALUE (convert);
|
||||
convert->alpha_value = 255 * alpha_value;
|
||||
if (CHECK_ALPHA_SET (convert)) {
|
||||
av255 = CLAMP (convert->alpha_value, 0, 255);
|
||||
} else {
|
||||
av255 = convert->border_argb >> 24;
|
||||
if (CHECK_ALPHA_MULT (convert)) {
|
||||
av255 = (av255 * convert->alpha_value) / 255;
|
||||
av255 = CLAMP (av255, 0, 255);
|
||||
}
|
||||
}
|
||||
convert->border_argb = (av255 << 24) | (convert->border_argb & 0x00ffffff);
|
||||
convert->alpha_mode = convert_get_alpha_mode (convert);
|
||||
|
||||
convert->unpack_format = in_info->finfo->unpack_format;
|
||||
finfo = gst_video_format_get_info (convert->unpack_format);
|
||||
|
@ -1865,6 +2034,8 @@ gst_video_converter_new (GstVideoInfo * in_info, GstVideoInfo * out_info,
|
|||
prev = chain_scale (convert, prev, FALSE);
|
||||
/* do conversion between color spaces */
|
||||
prev = chain_convert (convert, prev);
|
||||
/* do alpha channels */
|
||||
prev = chain_alpha (convert, prev);
|
||||
/* do all remaining (up)scaling */
|
||||
prev = chain_scale (convert, prev, TRUE);
|
||||
/* convert to gamma encoded Y'Cb'Cr' */
|
||||
|
@ -1942,6 +2113,8 @@ gst_video_converter_free (GstVideoConverter * convert)
|
|||
gst_line_cache_free (convert->vscale_lines);
|
||||
if (convert->convert_lines)
|
||||
gst_line_cache_free (convert->convert_lines);
|
||||
if (convert->alpha_lines)
|
||||
gst_line_cache_free (convert->alpha_lines);
|
||||
if (convert->to_YUV_lines)
|
||||
gst_line_cache_free (convert->to_YUV_lines);
|
||||
if (convert->downsample_lines)
|
||||
|
@ -2357,6 +2530,25 @@ do_convert_lines (GstLineCache * cache, gint out_line, gint in_line,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
do_alpha_lines (GstLineCache * cache, gint out_line, gint in_line,
|
||||
gpointer user_data)
|
||||
{
|
||||
gpointer *lines, destline;
|
||||
GstVideoConverter *convert = user_data;
|
||||
gint width = MIN (convert->in_width, convert->out_width);
|
||||
|
||||
lines = gst_line_cache_get_lines (cache->prev, out_line, in_line, 1);
|
||||
destline = lines[0];
|
||||
|
||||
GST_DEBUG ("alpha line %d %p", in_line, destline);
|
||||
convert->alpha_func (convert, destline, width);
|
||||
|
||||
gst_line_cache_add_line (cache, in_line, destline);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
do_convert_to_YUV_lines (GstLineCache * cache, gint out_line, gint in_line,
|
||||
gpointer user_data)
|
||||
|
@ -2592,6 +2784,7 @@ convert_I420_AYUV (GstVideoConverter * convert, const GstVideoFrame * src,
|
|||
gint width = convert->in_width;
|
||||
gint height = convert->in_height;
|
||||
gboolean interlaced = GST_VIDEO_FRAME_IS_INTERLACED (src);
|
||||
guint8 alpha = CLAMP (convert->alpha_value, 0, 255);
|
||||
gint l1, l2;
|
||||
|
||||
for (i = 0; i < GST_ROUND_DOWN_2 (height); i += 2) {
|
||||
|
@ -2601,12 +2794,15 @@ convert_I420_AYUV (GstVideoConverter * convert, const GstVideoFrame * src,
|
|||
FRAME_GET_LINE (dest, l2),
|
||||
FRAME_GET_Y_LINE (src, l1),
|
||||
FRAME_GET_Y_LINE (src, l2),
|
||||
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),
|
||||
alpha, width);
|
||||
}
|
||||
|
||||
/* now handle last line */
|
||||
if (height & 1) {
|
||||
UNPACK_FRAME (src, convert->tmpline, height - 1, convert->in_x, width);
|
||||
if (alpha != 0xff)
|
||||
convert_set_alpha_u8 (convert, convert->tmpline, width);
|
||||
PACK_FRAME (dest, convert->tmpline, height - 1, width);
|
||||
}
|
||||
}
|
||||
|
@ -2645,6 +2841,7 @@ convert_YUY2_AYUV (GstVideoConverter * convert, const GstVideoFrame * src,
|
|||
gint width = convert->in_width;
|
||||
gint height = convert->in_height;
|
||||
guint8 *s, *d;
|
||||
guint8 alpha = CLAMP (convert->alpha_value, 0, 255);
|
||||
|
||||
s = FRAME_GET_LINE (src, convert->in_y);
|
||||
s += (GST_ROUND_UP_2 (convert->in_x) * 2);
|
||||
|
@ -2652,7 +2849,7 @@ convert_YUY2_AYUV (GstVideoConverter * convert, const GstVideoFrame * src,
|
|||
d += (convert->out_x * 4);
|
||||
|
||||
video_orc_convert_YUY2_AYUV (d, FRAME_GET_STRIDE (dest), s,
|
||||
FRAME_GET_STRIDE (src), (width + 1) / 2, height);
|
||||
FRAME_GET_STRIDE (src), alpha, (width + 1) / 2, height);
|
||||
|
||||
convert_fill_border (convert, dest);
|
||||
}
|
||||
|
@ -2744,6 +2941,7 @@ convert_UYVY_AYUV (GstVideoConverter * convert, const GstVideoFrame * src,
|
|||
gint width = convert->in_width;
|
||||
gint height = convert->in_height;
|
||||
guint8 *s, *d;
|
||||
guint8 alpha = CLAMP (convert->alpha_value, 0, 255);
|
||||
|
||||
s = FRAME_GET_LINE (src, convert->in_y);
|
||||
s += (GST_ROUND_UP_2 (convert->in_x) * 2);
|
||||
|
@ -2752,7 +2950,7 @@ convert_UYVY_AYUV (GstVideoConverter * convert, const GstVideoFrame * src,
|
|||
|
||||
video_orc_convert_UYVY_AYUV (d,
|
||||
FRAME_GET_STRIDE (dest), s,
|
||||
FRAME_GET_STRIDE (src), (width + 1) / 2, height);
|
||||
FRAME_GET_STRIDE (src), alpha, (width + 1) / 2, height);
|
||||
|
||||
convert_fill_border (convert, dest);
|
||||
}
|
||||
|
@ -3020,6 +3218,7 @@ convert_Y42B_AYUV (GstVideoConverter * convert, const GstVideoFrame * src,
|
|||
gint width = convert->in_width;
|
||||
gint height = convert->in_height;
|
||||
guint8 *sy, *su, *sv, *d;
|
||||
guint8 alpha = CLAMP (convert->alpha_value, 0, 255);
|
||||
|
||||
sy = FRAME_GET_Y_LINE (src, convert->in_y);
|
||||
sy += convert->in_x;
|
||||
|
@ -3036,7 +3235,7 @@ convert_Y42B_AYUV (GstVideoConverter * convert, const GstVideoFrame * src,
|
|||
FRAME_GET_STRIDE (dest), sy,
|
||||
FRAME_GET_Y_STRIDE (src), su,
|
||||
FRAME_GET_U_STRIDE (src), sv,
|
||||
FRAME_GET_V_STRIDE (src), width / 2, height);
|
||||
FRAME_GET_V_STRIDE (src), alpha, width / 2, height);
|
||||
|
||||
convert_fill_border (convert, dest);
|
||||
}
|
||||
|
@ -3102,6 +3301,7 @@ convert_Y444_AYUV (GstVideoConverter * convert, const GstVideoFrame * src,
|
|||
gint width = convert->in_width;
|
||||
gint height = convert->in_height;
|
||||
guint8 *sy, *su, *sv, *d;
|
||||
guint8 alpha = CLAMP (convert->alpha_value, 0, 255);
|
||||
|
||||
sy = FRAME_GET_Y_LINE (src, convert->in_y);
|
||||
sy += convert->in_x;
|
||||
|
@ -3116,7 +3316,8 @@ convert_Y444_AYUV (GstVideoConverter * convert, const GstVideoFrame * src,
|
|||
video_orc_convert_Y444_AYUV (d,
|
||||
FRAME_GET_STRIDE (dest), sy,
|
||||
FRAME_GET_Y_STRIDE (src), su,
|
||||
FRAME_GET_U_STRIDE (src), sv, FRAME_GET_V_STRIDE (src), width, height);
|
||||
FRAME_GET_U_STRIDE (src), sv, FRAME_GET_V_STRIDE (src), alpha, width,
|
||||
height);
|
||||
|
||||
convert_fill_border (convert, dest);
|
||||
}
|
||||
|
@ -3806,14 +4007,14 @@ setup_scale (GstVideoConverter * convert)
|
|||
convert->fconvert[i] = convert_plane_fill;
|
||||
if (GST_VIDEO_INFO_IS_YUV (out_info)) {
|
||||
if (i == 3)
|
||||
convert->ffill[i] = 0xff;
|
||||
convert->ffill[i] = convert->alpha_value;
|
||||
if (i == 0)
|
||||
convert->ffill[i] = 0x00;
|
||||
else
|
||||
convert->ffill[i] = 0x80;
|
||||
} else {
|
||||
if (i == 3)
|
||||
convert->ffill[i] = 0xff;
|
||||
convert->ffill[i] = convert->alpha_value;
|
||||
else
|
||||
convert->ffill[i] = 0x00;
|
||||
}
|
||||
|
@ -3905,6 +4106,9 @@ typedef struct
|
|||
gboolean keeps_size;
|
||||
gboolean do_crop;
|
||||
gboolean do_border;
|
||||
gboolean alpha_copy;
|
||||
gboolean alpha_set;
|
||||
gboolean alpha_mult;
|
||||
gint width_align, height_align;
|
||||
void (*convert) (GstVideoConverter * convert, const GstVideoFrame * src,
|
||||
GstVideoFrame * dest);
|
||||
|
@ -3913,357 +4117,357 @@ typedef struct
|
|||
static const VideoTransform transforms[] = {
|
||||
/* planar -> packed */
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_YUY2, TRUE, FALSE, TRUE, FALSE,
|
||||
FALSE, 0, 0, convert_I420_YUY2},
|
||||
FALSE, FALSE, FALSE, FALSE, 0, 0, convert_I420_YUY2},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_UYVY, TRUE, FALSE, TRUE, FALSE,
|
||||
FALSE, 0, 0, convert_I420_UYVY},
|
||||
FALSE, FALSE, FALSE, FALSE, 0, 0, convert_I420_UYVY},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_AYUV, TRUE, FALSE, TRUE, FALSE,
|
||||
FALSE, 0, 0, convert_I420_AYUV},
|
||||
FALSE, FALSE, TRUE, FALSE, 0, 0, convert_I420_AYUV},
|
||||
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_FORMAT_YUY2, TRUE, FALSE, TRUE, FALSE,
|
||||
FALSE, 0, 0, convert_I420_YUY2},
|
||||
FALSE, FALSE, FALSE, FALSE, 0, 0, convert_I420_YUY2},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_FORMAT_UYVY, TRUE, FALSE, TRUE, FALSE,
|
||||
FALSE, 0, 0, convert_I420_UYVY},
|
||||
FALSE, FALSE, FALSE, FALSE, 0, 0, convert_I420_UYVY},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_FORMAT_AYUV, TRUE, FALSE, TRUE, FALSE,
|
||||
FALSE, 0, 0, convert_I420_AYUV},
|
||||
FALSE, FALSE, TRUE, FALSE, 0, 0, convert_I420_AYUV},
|
||||
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_FORMAT_YUY2, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 0, 0, convert_Y42B_YUY2},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_Y42B_YUY2},
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_FORMAT_UYVY, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 0, 0, convert_Y42B_UYVY},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_Y42B_UYVY},
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_FORMAT_AYUV, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 1, 0, convert_Y42B_AYUV},
|
||||
TRUE, FALSE, TRUE, FALSE, 1, 0, convert_Y42B_AYUV},
|
||||
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_FORMAT_YUY2, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 1, 0, convert_Y444_YUY2},
|
||||
TRUE, FALSE, FALSE, FALSE, 1, 0, convert_Y444_YUY2},
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_FORMAT_UYVY, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 1, 0, convert_Y444_UYVY},
|
||||
TRUE, FALSE, FALSE, FALSE, 1, 0, convert_Y444_UYVY},
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_FORMAT_AYUV, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 0, 0, convert_Y444_AYUV},
|
||||
TRUE, FALSE, TRUE, FALSE, 0, 0, convert_Y444_AYUV},
|
||||
|
||||
/* packed -> packed */
|
||||
{GST_VIDEO_FORMAT_YUY2, GST_VIDEO_FORMAT_YUY2, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YUY2, GST_VIDEO_FORMAT_UYVY, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 0, 0, convert_UYVY_YUY2}, /* alias */
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_UYVY_YUY2}, /* alias */
|
||||
{GST_VIDEO_FORMAT_YUY2, GST_VIDEO_FORMAT_AYUV, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 1, 0, convert_YUY2_AYUV},
|
||||
TRUE, FALSE, TRUE, FALSE, 1, 0, convert_YUY2_AYUV},
|
||||
|
||||
{GST_VIDEO_FORMAT_UYVY, GST_VIDEO_FORMAT_UYVY, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_UYVY, GST_VIDEO_FORMAT_YUY2, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 0, 0, convert_UYVY_YUY2},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_UYVY_YUY2},
|
||||
{GST_VIDEO_FORMAT_UYVY, GST_VIDEO_FORMAT_AYUV, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 0, 0, convert_UYVY_AYUV},
|
||||
TRUE, FALSE, TRUE, FALSE, 0, 0, convert_UYVY_AYUV},
|
||||
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_FORMAT_AYUV, TRUE, FALSE, FALSE, TRUE, TRUE,
|
||||
0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_FORMAT_YUY2, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 1, 0, convert_AYUV_YUY2},
|
||||
TRUE, FALSE, FALSE, FALSE, 1, 0, convert_AYUV_YUY2},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_FORMAT_UYVY, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 1, 0, convert_AYUV_UYVY},
|
||||
TRUE, FALSE, FALSE, FALSE, 1, 0, convert_AYUV_UYVY},
|
||||
|
||||
/* packed -> planar */
|
||||
{GST_VIDEO_FORMAT_YUY2, GST_VIDEO_FORMAT_I420, TRUE, FALSE, TRUE, FALSE,
|
||||
FALSE, 0, 0, convert_YUY2_I420},
|
||||
FALSE, FALSE, FALSE, FALSE, 0, 0, convert_YUY2_I420},
|
||||
{GST_VIDEO_FORMAT_YUY2, GST_VIDEO_FORMAT_YV12, TRUE, FALSE, TRUE, FALSE,
|
||||
FALSE, 0, 0, convert_YUY2_I420},
|
||||
FALSE, FALSE, FALSE, FALSE, 0, 0, convert_YUY2_I420},
|
||||
{GST_VIDEO_FORMAT_YUY2, GST_VIDEO_FORMAT_Y42B, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 0, 0, convert_YUY2_Y42B},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_YUY2_Y42B},
|
||||
{GST_VIDEO_FORMAT_YUY2, GST_VIDEO_FORMAT_Y444, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 0, 0, convert_YUY2_Y444},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_YUY2_Y444},
|
||||
|
||||
{GST_VIDEO_FORMAT_UYVY, GST_VIDEO_FORMAT_I420, TRUE, FALSE, TRUE, FALSE,
|
||||
FALSE, 0, 0, convert_UYVY_I420},
|
||||
FALSE, FALSE, FALSE, FALSE, 0, 0, convert_UYVY_I420},
|
||||
{GST_VIDEO_FORMAT_UYVY, GST_VIDEO_FORMAT_YV12, TRUE, FALSE, TRUE, FALSE,
|
||||
FALSE, 0, 0, convert_UYVY_I420},
|
||||
FALSE, FALSE, FALSE, FALSE, 0, 0, convert_UYVY_I420},
|
||||
{GST_VIDEO_FORMAT_UYVY, GST_VIDEO_FORMAT_Y42B, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 0, 0, convert_UYVY_Y42B},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_UYVY_Y42B},
|
||||
{GST_VIDEO_FORMAT_UYVY, GST_VIDEO_FORMAT_Y444, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 0, 0, convert_UYVY_Y444},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_UYVY_Y444},
|
||||
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_FORMAT_I420, FALSE, FALSE, TRUE, TRUE,
|
||||
TRUE, 1, 1, convert_AYUV_I420},
|
||||
TRUE, FALSE, FALSE, FALSE, 1, 1, convert_AYUV_I420},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_FORMAT_YV12, FALSE, FALSE, TRUE, TRUE,
|
||||
TRUE, 1, 1, convert_AYUV_I420},
|
||||
TRUE, FALSE, FALSE, FALSE, 1, 1, convert_AYUV_I420},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_FORMAT_Y42B, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 1, 0, convert_AYUV_Y42B},
|
||||
TRUE, FALSE, FALSE, FALSE, 1, 0, convert_AYUV_Y42B},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_FORMAT_Y444, TRUE, FALSE, TRUE, TRUE,
|
||||
TRUE, 0, 0, convert_AYUV_Y444},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_AYUV_Y444},
|
||||
|
||||
/* planar -> planar */
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_I420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_YV12, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_Y41B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_Y42B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_Y444, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_GRAY8, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_A420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, TRUE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_YUV9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_YVU9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_FORMAT_I420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_FORMAT_YV12, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_FORMAT_Y41B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_FORMAT_Y42B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_FORMAT_Y444, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_FORMAT_GRAY8, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_FORMAT_A420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, TRUE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_FORMAT_YUV9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_FORMAT_YVU9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_Y41B, GST_VIDEO_FORMAT_I420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y41B, GST_VIDEO_FORMAT_YV12, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y41B, GST_VIDEO_FORMAT_Y41B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y41B, GST_VIDEO_FORMAT_Y42B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y41B, GST_VIDEO_FORMAT_Y444, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y41B, GST_VIDEO_FORMAT_GRAY8, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y41B, GST_VIDEO_FORMAT_A420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, TRUE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y41B, GST_VIDEO_FORMAT_YUV9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y41B, GST_VIDEO_FORMAT_YVU9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_FORMAT_I420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_FORMAT_YV12, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_FORMAT_Y41B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_FORMAT_Y42B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_FORMAT_Y444, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_FORMAT_GRAY8, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_FORMAT_A420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, TRUE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_FORMAT_YUV9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y42B, GST_VIDEO_FORMAT_YVU9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_FORMAT_I420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_FORMAT_YV12, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_FORMAT_Y41B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_FORMAT_Y42B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_FORMAT_Y444, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_FORMAT_GRAY8, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_FORMAT_A420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, TRUE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_FORMAT_YUV9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_Y444, GST_VIDEO_FORMAT_YVU9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_GRAY8, GST_VIDEO_FORMAT_I420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_GRAY8, GST_VIDEO_FORMAT_YV12, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_GRAY8, GST_VIDEO_FORMAT_Y41B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_GRAY8, GST_VIDEO_FORMAT_Y42B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_GRAY8, GST_VIDEO_FORMAT_Y444, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_GRAY8, GST_VIDEO_FORMAT_GRAY8, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_GRAY8, GST_VIDEO_FORMAT_A420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, TRUE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_GRAY8, GST_VIDEO_FORMAT_YUV9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_GRAY8, GST_VIDEO_FORMAT_YVU9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_A420, GST_VIDEO_FORMAT_I420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_A420, GST_VIDEO_FORMAT_YV12, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_A420, GST_VIDEO_FORMAT_Y41B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_A420, GST_VIDEO_FORMAT_Y42B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_A420, GST_VIDEO_FORMAT_Y444, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_A420, GST_VIDEO_FORMAT_GRAY8, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_A420, GST_VIDEO_FORMAT_A420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, TRUE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_A420, GST_VIDEO_FORMAT_YUV9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_A420, GST_VIDEO_FORMAT_YVU9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_YUV9, GST_VIDEO_FORMAT_I420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YUV9, GST_VIDEO_FORMAT_YV12, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YUV9, GST_VIDEO_FORMAT_Y41B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YUV9, GST_VIDEO_FORMAT_Y42B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YUV9, GST_VIDEO_FORMAT_Y444, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YUV9, GST_VIDEO_FORMAT_GRAY8, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YUV9, GST_VIDEO_FORMAT_A420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, TRUE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YUV9, GST_VIDEO_FORMAT_YUV9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YUV9, GST_VIDEO_FORMAT_YVU9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_YVU9, GST_VIDEO_FORMAT_I420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YVU9, GST_VIDEO_FORMAT_YV12, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YVU9, GST_VIDEO_FORMAT_Y41B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YVU9, GST_VIDEO_FORMAT_Y42B, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YVU9, GST_VIDEO_FORMAT_Y444, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YVU9, GST_VIDEO_FORMAT_GRAY8, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YVU9, GST_VIDEO_FORMAT_A420, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, TRUE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YVU9, GST_VIDEO_FORMAT_YUV9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_YVU9, GST_VIDEO_FORMAT_YVU9, FALSE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
/* sempiplanar -> semiplanar */
|
||||
{GST_VIDEO_FORMAT_NV12, GST_VIDEO_FORMAT_NV12, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_NV12, GST_VIDEO_FORMAT_NV16, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_NV12, GST_VIDEO_FORMAT_NV24, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_NV21, GST_VIDEO_FORMAT_NV21, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_NV16, GST_VIDEO_FORMAT_NV12, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_NV16, GST_VIDEO_FORMAT_NV16, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_NV16, GST_VIDEO_FORMAT_NV24, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_NV24, GST_VIDEO_FORMAT_NV12, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_NV24, GST_VIDEO_FORMAT_NV16, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_NV24, GST_VIDEO_FORMAT_NV24, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_FORMAT_ARGB, TRUE, TRUE, TRUE, TRUE, TRUE,
|
||||
0, 0, convert_AYUV_ARGB},
|
||||
TRUE, FALSE, FALSE, 0, 0, convert_AYUV_ARGB},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_FORMAT_BGRA, TRUE, TRUE, TRUE, TRUE, TRUE,
|
||||
0, 0, convert_AYUV_BGRA},
|
||||
TRUE, FALSE, FALSE, 0, 0, convert_AYUV_BGRA},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_FORMAT_xRGB, TRUE, TRUE, TRUE, TRUE, TRUE,
|
||||
0, 0, convert_AYUV_ARGB}, /* alias */
|
||||
FALSE, FALSE, FALSE, 0, 0, convert_AYUV_ARGB}, /* alias */
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_FORMAT_BGRx, TRUE, TRUE, TRUE, TRUE, TRUE,
|
||||
0, 0, convert_AYUV_BGRA}, /* alias */
|
||||
FALSE, FALSE, FALSE, 0, 0, convert_AYUV_BGRA}, /* alias */
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_FORMAT_ABGR, TRUE, TRUE, TRUE, TRUE, TRUE,
|
||||
0, 0, convert_AYUV_ABGR},
|
||||
TRUE, FALSE, FALSE, 0, 0, convert_AYUV_ABGR},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_FORMAT_RGBA, TRUE, TRUE, TRUE, TRUE, TRUE,
|
||||
0, 0, convert_AYUV_RGBA},
|
||||
TRUE, FALSE, FALSE, 0, 0, convert_AYUV_RGBA},
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_FORMAT_xBGR, TRUE, TRUE, TRUE, TRUE, TRUE,
|
||||
0, 0, convert_AYUV_ABGR}, /* alias */
|
||||
FALSE, FALSE, FALSE, 0, 0, convert_AYUV_ABGR}, /* alias */
|
||||
{GST_VIDEO_FORMAT_AYUV, GST_VIDEO_FORMAT_RGBx, TRUE, TRUE, TRUE, TRUE, TRUE,
|
||||
0, 0, convert_AYUV_RGBA}, /* alias */
|
||||
FALSE, FALSE, FALSE, 0, 0, convert_AYUV_RGBA}, /* alias */
|
||||
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_BGRA, FALSE, TRUE, TRUE, TRUE,
|
||||
TRUE, 0, 0, convert_I420_BGRA},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_I420_BGRA},
|
||||
{GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_BGRx, FALSE, TRUE, TRUE, TRUE,
|
||||
TRUE, 0, 0, convert_I420_BGRA},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_I420_BGRA},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_FORMAT_BGRA, FALSE, TRUE, TRUE, TRUE,
|
||||
TRUE, 0, 0, convert_I420_BGRA},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_I420_BGRA},
|
||||
{GST_VIDEO_FORMAT_YV12, GST_VIDEO_FORMAT_BGRx, FALSE, TRUE, TRUE, TRUE,
|
||||
TRUE, 0, 0, convert_I420_BGRA},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_I420_BGRA},
|
||||
#endif
|
||||
|
||||
/* scalers */
|
||||
{GST_VIDEO_FORMAT_GBR, GST_VIDEO_FORMAT_GBR, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_YVYU, GST_VIDEO_FORMAT_YVYU, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_RGB15, GST_VIDEO_FORMAT_RGB15, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_RGB16, GST_VIDEO_FORMAT_RGB16, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_BGR15, GST_VIDEO_FORMAT_BGR15, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_BGR16, GST_VIDEO_FORMAT_BGR16, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_RGB, GST_VIDEO_FORMAT_RGB, TRUE, FALSE, FALSE, TRUE, TRUE,
|
||||
0, 0, convert_scale_planes},
|
||||
FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_BGR, GST_VIDEO_FORMAT_BGR, TRUE, FALSE, FALSE, TRUE, TRUE,
|
||||
0, 0, convert_scale_planes},
|
||||
FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_v308, GST_VIDEO_FORMAT_v308, TRUE, FALSE, FALSE, TRUE, TRUE,
|
||||
0, 0, convert_scale_planes},
|
||||
FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_ARGB, GST_VIDEO_FORMAT_ARGB, TRUE, FALSE, FALSE, TRUE, TRUE,
|
||||
0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_xRGB, GST_VIDEO_FORMAT_xRGB, TRUE, FALSE, FALSE, TRUE, TRUE,
|
||||
0, 0, convert_scale_planes},
|
||||
FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_ABGR, GST_VIDEO_FORMAT_ABGR, TRUE, FALSE, FALSE, TRUE, TRUE,
|
||||
0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_xBGR, GST_VIDEO_FORMAT_xBGR, TRUE, FALSE, FALSE, TRUE, TRUE,
|
||||
0, 0, convert_scale_planes},
|
||||
FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_RGBA, GST_VIDEO_FORMAT_RGBA, TRUE, FALSE, FALSE, TRUE, TRUE,
|
||||
0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_RGBx, GST_VIDEO_FORMAT_RGBx, TRUE, FALSE, FALSE, TRUE, TRUE,
|
||||
0, 0, convert_scale_planes},
|
||||
FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_BGRA, GST_VIDEO_FORMAT_BGRA, TRUE, FALSE, FALSE, TRUE, TRUE,
|
||||
0, 0, convert_scale_planes},
|
||||
TRUE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_BGRx, GST_VIDEO_FORMAT_BGRx, TRUE, FALSE, FALSE, TRUE, TRUE,
|
||||
0, 0, convert_scale_planes},
|
||||
FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_ARGB64, GST_VIDEO_FORMAT_ARGB64, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, TRUE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_AYUV64, GST_VIDEO_FORMAT_AYUV64, TRUE, FALSE, FALSE, TRUE,
|
||||
TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, TRUE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
|
||||
{GST_VIDEO_FORMAT_GRAY16_LE, GST_VIDEO_FORMAT_GRAY16_LE, TRUE, FALSE, FALSE,
|
||||
TRUE, TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
{GST_VIDEO_FORMAT_GRAY16_BE, GST_VIDEO_FORMAT_GRAY16_BE, TRUE, FALSE, FALSE,
|
||||
TRUE, TRUE, 0, 0, convert_scale_planes},
|
||||
TRUE, TRUE, FALSE, FALSE, FALSE, 0, 0, convert_scale_planes},
|
||||
};
|
||||
|
||||
static gboolean
|
||||
|
@ -4273,6 +4477,7 @@ video_converter_lookup_fastpath (GstVideoConverter * convert)
|
|||
GstVideoFormat in_format, out_format;
|
||||
GstVideoTransferFunction in_transf, out_transf;
|
||||
gboolean interlaced, same_matrix, same_primaries, same_size, crop, border;
|
||||
gboolean need_copy, need_set, need_mult;
|
||||
gint width, height;
|
||||
|
||||
width = GST_VIDEO_INFO_WIDTH (&convert->in_info);
|
||||
|
@ -4291,6 +4496,11 @@ video_converter_lookup_fastpath (GstVideoConverter * convert)
|
|||
if (CHECK_GAMMA_REMAP (convert) && (!same_size || in_transf != out_transf))
|
||||
return FALSE;
|
||||
|
||||
need_copy = (convert->alpha_mode & ALPHA_MODE_COPY) == ALPHA_MODE_COPY;
|
||||
need_set = (convert->alpha_mode & ALPHA_MODE_SET) == ALPHA_MODE_SET;
|
||||
need_mult = (convert->alpha_mode & ALPHA_MODE_MULT) == ALPHA_MODE_MULT;
|
||||
GST_DEBUG ("alpha copy %d, set %d, mult %d", need_copy, need_set, need_mult);
|
||||
|
||||
in_format = GST_VIDEO_INFO_FORMAT (&convert->in_info);
|
||||
out_format = GST_VIDEO_INFO_FORMAT (&convert->out_info);
|
||||
|
||||
|
@ -4333,7 +4543,10 @@ video_converter_lookup_fastpath (GstVideoConverter * convert)
|
|||
&& (transforms[i].width_align & width) == 0
|
||||
&& (transforms[i].height_align & height) == 0
|
||||
&& (transforms[i].do_crop || !crop)
|
||||
&& (transforms[i].do_border || !border)) {
|
||||
&& (transforms[i].do_border || !border)
|
||||
&& (transforms[i].alpha_copy || !need_copy)
|
||||
&& (transforms[i].alpha_set || !need_set)
|
||||
&& (transforms[i].alpha_mult || !need_mult)) {
|
||||
GST_DEBUG ("using fastpath");
|
||||
if (transforms[i].needs_color_matrix)
|
||||
video_converter_compute_matrix (convert);
|
||||
|
|
|
@ -125,11 +125,37 @@ G_BEGIN_DECLS
|
|||
* destination are untouched. Default %TRUE.
|
||||
*/
|
||||
#define GST_VIDEO_CONVERTER_OPT_FILL_BORDER "GstVideoConverter.fill-border"
|
||||
/**
|
||||
* GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE:
|
||||
*
|
||||
* #G_TYPE_DOUBLE, the alpha color value to use.
|
||||
* Default to 1.0
|
||||
*/
|
||||
#define GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE "GstVideoConverter.alpha-value"
|
||||
/**
|
||||
* GST_VIDEO_CONVERTER_OPT_ALPHA_MODE:
|
||||
*
|
||||
* #G_TYPE_STRING, the alpha mode to use.
|
||||
*
|
||||
* "copy": When input and output have alpha, it will be copied.
|
||||
* When the input has no alpha, alpha will be set to
|
||||
* GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE
|
||||
* "set": set all alpha to #GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE
|
||||
* "mult": multiply all alpha with #GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE.
|
||||
* When the input format has no alpha but the output format has,
|
||||
* the alpha value will be set to
|
||||
* #GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE
|
||||
*
|
||||
* Default to "none".
|
||||
*/
|
||||
#define GST_VIDEO_CONVERTER_OPT_ALPHA_MODE "GstVideoConverter.alpha-mode"
|
||||
/**
|
||||
* GST_VIDEO_CONVERTER_OPT_BORDER_ARGB:
|
||||
*
|
||||
* #G_TYPE_UINT, the border color to use if #GST_VIDEO_CONVERTER_OPT_FILL_BORDER
|
||||
* is set to %TRUE. Default 0x00000000
|
||||
* is set to %TRUE.
|
||||
* Default 0xff000000 and the alpha component is influenced by
|
||||
* #GST_VIDEO_CONVERTER_OPT_ALPHA_VALUE and #GST_VIDEO_CONVERTER_OPT_ALPHA_MODE.
|
||||
*/
|
||||
#define GST_VIDEO_CONVERTER_OPT_BORDER_ARGB "GstVideoConverter.border-argb"
|
||||
/**
|
||||
|
|
|
@ -219,7 +219,7 @@ void video_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1,
|
|||
void video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1,
|
||||
guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1,
|
||||
const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3,
|
||||
const guint8 * ORC_RESTRICT s4, int n);
|
||||
const guint8 * ORC_RESTRICT s4, int p1, int n);
|
||||
void video_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1,
|
||||
guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3,
|
||||
guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1,
|
||||
|
@ -243,9 +243,9 @@ void video_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
||||
const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m);
|
||||
void video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
|
||||
void video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
|
||||
void video_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride,
|
||||
guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3,
|
||||
int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
||||
|
@ -288,7 +288,7 @@ void video_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
void video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
||||
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
||||
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
|
||||
const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m);
|
||||
void video_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
||||
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
||||
|
@ -300,7 +300,7 @@ void video_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
void video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
||||
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
||||
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
|
||||
const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m);
|
||||
void video_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride,
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3,
|
||||
int p4, int p5, int n, int m);
|
||||
|
@ -11983,7 +11983,8 @@ video_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|||
void
|
||||
video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
||||
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
||||
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
|
||||
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
|
||||
int n)
|
||||
{
|
||||
int i;
|
||||
orc_union32 *ORC_RESTRICT ptr0;
|
||||
|
@ -11992,11 +11993,7 @@ video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|||
const orc_int8 *ORC_RESTRICT ptr5;
|
||||
const orc_int8 *ORC_RESTRICT ptr6;
|
||||
const orc_int8 *ORC_RESTRICT ptr7;
|
||||
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
||||
volatile orc_int8 var36;
|
||||
#else
|
||||
orc_int8 var36;
|
||||
#endif
|
||||
orc_int8 var37;
|
||||
orc_union32 var38;
|
||||
orc_int8 var39;
|
||||
|
@ -12015,7 +12012,7 @@ video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|||
ptr7 = (orc_int8 *) s4;
|
||||
|
||||
/* 3: loadpb */
|
||||
var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var36 = p1;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
/* 0: loadupdb */
|
||||
|
@ -12081,11 +12078,7 @@ _backup_video_orc_convert_I420_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|||
const orc_int8 *ORC_RESTRICT ptr5;
|
||||
const orc_int8 *ORC_RESTRICT ptr6;
|
||||
const orc_int8 *ORC_RESTRICT ptr7;
|
||||
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
||||
volatile orc_int8 var36;
|
||||
#else
|
||||
orc_int8 var36;
|
||||
#endif
|
||||
orc_int8 var37;
|
||||
orc_union32 var38;
|
||||
orc_int8 var39;
|
||||
|
@ -12104,7 +12097,7 @@ _backup_video_orc_convert_I420_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|||
ptr7 = (orc_int8 *) ex->arrays[7];
|
||||
|
||||
/* 3: loadpb */
|
||||
var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var36 = ex->params[24];
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
/* 0: loadupdb */
|
||||
|
@ -12161,7 +12154,8 @@ _backup_video_orc_convert_I420_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|||
void
|
||||
video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
||||
const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2,
|
||||
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n)
|
||||
const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1,
|
||||
int n)
|
||||
{
|
||||
OrcExecutor _ex, *ex = &_ex;
|
||||
static volatile int p_inited = 0;
|
||||
|
@ -12178,9 +12172,9 @@ video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|||
1, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111, 110,
|
||||
118, 101, 114, 116, 95, 73, 52, 50, 48, 95, 65, 89, 85, 86, 11, 4,
|
||||
4, 11, 4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 12, 1, 1,
|
||||
14, 1, 255, 0, 0, 0, 20, 2, 20, 2, 20, 1, 20, 1, 45, 34,
|
||||
6, 45, 35, 7, 196, 32, 34, 35, 196, 33, 16, 4, 195, 0, 33, 32,
|
||||
196, 33, 16, 5, 195, 1, 33, 32, 2, 0,
|
||||
16, 1, 20, 2, 20, 2, 20, 1, 20, 1, 45, 34, 6, 45, 35, 7,
|
||||
196, 32, 34, 35, 196, 33, 24, 4, 195, 0, 33, 32, 196, 33, 24, 5,
|
||||
195, 1, 33, 32, 2, 0,
|
||||
};
|
||||
p = orc_program_new_from_static_bytecode (bc);
|
||||
orc_program_set_backup_function (p, _backup_video_orc_convert_I420_AYUV);
|
||||
|
@ -12194,7 +12188,7 @@ video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|||
orc_program_add_source (p, 1, "s2");
|
||||
orc_program_add_source (p, 1, "s3");
|
||||
orc_program_add_source (p, 1, "s4");
|
||||
orc_program_add_constant (p, 1, 0x000000ff, "c1");
|
||||
orc_program_add_parameter (p, 1, "p1");
|
||||
orc_program_add_temporary (p, 2, "t1");
|
||||
orc_program_add_temporary (p, 2, "t2");
|
||||
orc_program_add_temporary (p, 1, "t3");
|
||||
|
@ -12206,11 +12200,11 @@ video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|||
ORC_VAR_D1, ORC_VAR_D1);
|
||||
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_T3, ORC_VAR_T4,
|
||||
ORC_VAR_D1);
|
||||
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
|
||||
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_S1,
|
||||
ORC_VAR_D1);
|
||||
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
|
||||
ORC_VAR_D1);
|
||||
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S2,
|
||||
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_S2,
|
||||
ORC_VAR_D1);
|
||||
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D2, ORC_VAR_T2, ORC_VAR_T1,
|
||||
ORC_VAR_D1);
|
||||
|
@ -12233,6 +12227,7 @@ video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2,
|
|||
ex->arrays[ORC_VAR_S2] = (void *) s2;
|
||||
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
||||
ex->arrays[ORC_VAR_S4] = (void *) s4;
|
||||
ex->params[ORC_VAR_P1] = p1;
|
||||
|
||||
func = c->exec;
|
||||
func (ex);
|
||||
|
@ -13467,18 +13462,14 @@ video_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
#ifdef DISABLE_ORC
|
||||
void
|
||||
video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
orc_union64 *ORC_RESTRICT ptr0;
|
||||
const orc_union32 *ORC_RESTRICT ptr4;
|
||||
orc_union32 var36;
|
||||
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
||||
volatile orc_union16 var37;
|
||||
#else
|
||||
orc_union16 var37;
|
||||
#endif
|
||||
orc_union64 var38;
|
||||
orc_union16 var39;
|
||||
orc_union16 var40;
|
||||
|
@ -13490,8 +13481,8 @@ video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
||||
|
||||
/* 2: loadpb */
|
||||
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var37.x2[0] = p1;
|
||||
var37.x2[1] = p1;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
/* 0: loadl */
|
||||
|
@ -13560,11 +13551,7 @@ _backup_video_orc_convert_YUY2_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|||
orc_union64 *ORC_RESTRICT ptr0;
|
||||
const orc_union32 *ORC_RESTRICT ptr4;
|
||||
orc_union32 var36;
|
||||
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
||||
volatile orc_union16 var37;
|
||||
#else
|
||||
orc_union16 var37;
|
||||
#endif
|
||||
orc_union64 var38;
|
||||
orc_union16 var39;
|
||||
orc_union16 var40;
|
||||
|
@ -13576,8 +13563,8 @@ _backup_video_orc_convert_YUY2_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|||
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
||||
|
||||
/* 2: loadpb */
|
||||
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var37.x2[0] = ex->params[24];
|
||||
var37.x2[1] = ex->params[24];
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
/* 0: loadl */
|
||||
|
@ -13637,7 +13624,7 @@ _backup_video_orc_convert_YUY2_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|||
|
||||
void
|
||||
video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
|
||||
{
|
||||
OrcExecutor _ex, *ex = &_ex;
|
||||
static volatile int p_inited = 0;
|
||||
|
@ -13653,9 +13640,9 @@ video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
static const orc_uint8 bc[] = {
|
||||
1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
||||
110, 118, 101, 114, 116, 95, 89, 85, 89, 50, 95, 65, 89, 85, 86, 11,
|
||||
8, 8, 12, 4, 4, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20,
|
||||
4, 20, 4, 21, 1, 199, 33, 32, 4, 21, 1, 196, 34, 16, 32, 195,
|
||||
35, 33, 33, 21, 1, 195, 0, 34, 35, 2, 0,
|
||||
8, 8, 12, 4, 4, 16, 1, 20, 2, 20, 2, 20, 4, 20, 4, 21,
|
||||
1, 199, 33, 32, 4, 21, 1, 196, 34, 24, 32, 195, 35, 33, 33, 21,
|
||||
1, 195, 0, 34, 35, 2, 0,
|
||||
};
|
||||
p = orc_program_new_from_static_bytecode (bc);
|
||||
orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_AYUV);
|
||||
|
@ -13666,7 +13653,7 @@ video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
orc_program_set_backup_function (p, _backup_video_orc_convert_YUY2_AYUV);
|
||||
orc_program_add_destination (p, 8, "d1");
|
||||
orc_program_add_source (p, 4, "s1");
|
||||
orc_program_add_constant (p, 2, 0x000000ff, "c1");
|
||||
orc_program_add_parameter (p, 1, "p1");
|
||||
orc_program_add_temporary (p, 2, "t1");
|
||||
orc_program_add_temporary (p, 2, "t2");
|
||||
orc_program_add_temporary (p, 4, "t3");
|
||||
|
@ -13674,7 +13661,7 @@ video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
|
||||
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_S1,
|
||||
ORC_VAR_D1);
|
||||
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
|
||||
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_T1,
|
||||
ORC_VAR_D1);
|
||||
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
|
||||
ORC_VAR_D1);
|
||||
|
@ -13698,6 +13685,7 @@ video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
ex->params[ORC_VAR_D1] = d1_stride;
|
||||
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
||||
ex->params[ORC_VAR_S1] = s1_stride;
|
||||
ex->params[ORC_VAR_P1] = p1;
|
||||
|
||||
func = c->exec;
|
||||
func (ex);
|
||||
|
@ -13709,18 +13697,14 @@ video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
#ifdef DISABLE_ORC
|
||||
void
|
||||
video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
orc_union64 *ORC_RESTRICT ptr0;
|
||||
const orc_union32 *ORC_RESTRICT ptr4;
|
||||
orc_union32 var36;
|
||||
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
||||
volatile orc_union16 var37;
|
||||
#else
|
||||
orc_union16 var37;
|
||||
#endif
|
||||
orc_union64 var38;
|
||||
orc_union16 var39;
|
||||
orc_union16 var40;
|
||||
|
@ -13732,8 +13716,8 @@ video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j);
|
||||
|
||||
/* 2: loadpb */
|
||||
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var37.x2[0] = p1;
|
||||
var37.x2[1] = p1;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
/* 0: loadl */
|
||||
|
@ -13802,11 +13786,7 @@ _backup_video_orc_convert_UYVY_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|||
orc_union64 *ORC_RESTRICT ptr0;
|
||||
const orc_union32 *ORC_RESTRICT ptr4;
|
||||
orc_union32 var36;
|
||||
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
||||
volatile orc_union16 var37;
|
||||
#else
|
||||
orc_union16 var37;
|
||||
#endif
|
||||
orc_union64 var38;
|
||||
orc_union16 var39;
|
||||
orc_union16 var40;
|
||||
|
@ -13818,8 +13798,8 @@ _backup_video_orc_convert_UYVY_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|||
ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j);
|
||||
|
||||
/* 2: loadpb */
|
||||
var37.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var37.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var37.x2[0] = ex->params[24];
|
||||
var37.x2[1] = ex->params[24];
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
/* 0: loadl */
|
||||
|
@ -13879,7 +13859,7 @@ _backup_video_orc_convert_UYVY_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|||
|
||||
void
|
||||
video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m)
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m)
|
||||
{
|
||||
OrcExecutor _ex, *ex = &_ex;
|
||||
static volatile int p_inited = 0;
|
||||
|
@ -13895,9 +13875,9 @@ video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
static const orc_uint8 bc[] = {
|
||||
1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
||||
110, 118, 101, 114, 116, 95, 85, 89, 86, 89, 95, 65, 89, 85, 86, 11,
|
||||
8, 8, 12, 4, 4, 14, 2, 255, 0, 0, 0, 20, 2, 20, 2, 20,
|
||||
4, 20, 4, 21, 1, 199, 32, 33, 4, 21, 1, 196, 34, 16, 32, 195,
|
||||
35, 33, 33, 21, 1, 195, 0, 34, 35, 2, 0,
|
||||
8, 8, 12, 4, 4, 16, 1, 20, 2, 20, 2, 20, 4, 20, 4, 21,
|
||||
1, 199, 32, 33, 4, 21, 1, 196, 34, 24, 32, 195, 35, 33, 33, 21,
|
||||
1, 195, 0, 34, 35, 2, 0,
|
||||
};
|
||||
p = orc_program_new_from_static_bytecode (bc);
|
||||
orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_AYUV);
|
||||
|
@ -13908,7 +13888,7 @@ video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
orc_program_set_backup_function (p, _backup_video_orc_convert_UYVY_AYUV);
|
||||
orc_program_add_destination (p, 8, "d1");
|
||||
orc_program_add_source (p, 4, "s1");
|
||||
orc_program_add_constant (p, 2, 0x000000ff, "c1");
|
||||
orc_program_add_parameter (p, 1, "p1");
|
||||
orc_program_add_temporary (p, 2, "t1");
|
||||
orc_program_add_temporary (p, 2, "t2");
|
||||
orc_program_add_temporary (p, 4, "t3");
|
||||
|
@ -13916,7 +13896,7 @@ video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
|
||||
orc_program_append_2 (p, "splitwb", 1, ORC_VAR_T1, ORC_VAR_T2, ORC_VAR_S1,
|
||||
ORC_VAR_D1);
|
||||
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_C1, ORC_VAR_T1,
|
||||
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T3, ORC_VAR_P1, ORC_VAR_T1,
|
||||
ORC_VAR_D1);
|
||||
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T4, ORC_VAR_T2, ORC_VAR_T2,
|
||||
ORC_VAR_D1);
|
||||
|
@ -13940,6 +13920,7 @@ video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
ex->params[ORC_VAR_D1] = d1_stride;
|
||||
ex->arrays[ORC_VAR_S1] = (void *) s1;
|
||||
ex->params[ORC_VAR_S1] = s1_stride;
|
||||
ex->params[ORC_VAR_P1] = p1;
|
||||
|
||||
func = c->exec;
|
||||
func (ex);
|
||||
|
@ -16682,7 +16663,7 @@ void
|
|||
video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
||||
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
||||
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
||||
const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
|
@ -16692,11 +16673,7 @@ video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
const orc_int8 *ORC_RESTRICT ptr6;
|
||||
orc_int8 var36;
|
||||
orc_int8 var37;
|
||||
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
||||
volatile orc_union16 var38;
|
||||
#else
|
||||
orc_union16 var38;
|
||||
#endif
|
||||
orc_union16 var39;
|
||||
orc_union64 var40;
|
||||
orc_union16 var41;
|
||||
|
@ -16710,8 +16687,8 @@ video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
|
||||
|
||||
/* 3: loadpb */
|
||||
var38.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var38.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var38.x2[0] = p1;
|
||||
var38.x2[1] = p1;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
/* 0: loadb */
|
||||
|
@ -16781,11 +16758,7 @@ _backup_video_orc_convert_Y42B_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|||
const orc_int8 *ORC_RESTRICT ptr6;
|
||||
orc_int8 var36;
|
||||
orc_int8 var37;
|
||||
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
||||
volatile orc_union16 var38;
|
||||
#else
|
||||
orc_union16 var38;
|
||||
#endif
|
||||
orc_union16 var39;
|
||||
orc_union64 var40;
|
||||
orc_union16 var41;
|
||||
|
@ -16799,8 +16772,8 @@ _backup_video_orc_convert_Y42B_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|||
ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
|
||||
|
||||
/* 3: loadpb */
|
||||
var38.x2[0] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var38.x2[1] = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var38.x2[0] = ex->params[24];
|
||||
var38.x2[1] = ex->params[24];
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
/* 0: loadb */
|
||||
|
@ -16860,7 +16833,7 @@ void
|
|||
video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
||||
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
||||
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
||||
const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m)
|
||||
{
|
||||
OrcExecutor _ex, *ex = &_ex;
|
||||
static volatile int p_inited = 0;
|
||||
|
@ -16876,9 +16849,9 @@ video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
static const orc_uint8 bc[] = {
|
||||
1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
||||
110, 118, 101, 114, 116, 95, 89, 52, 50, 66, 95, 65, 89, 85, 86, 11,
|
||||
8, 8, 12, 2, 2, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0, 0,
|
||||
0, 20, 2, 20, 2, 20, 4, 20, 4, 196, 32, 5, 6, 21, 1, 196,
|
||||
35, 16, 4, 195, 34, 32, 32, 21, 1, 195, 0, 35, 34, 2, 0,
|
||||
8, 8, 12, 2, 2, 12, 1, 1, 12, 1, 1, 16, 1, 20, 2, 20,
|
||||
2, 20, 4, 20, 4, 196, 32, 5, 6, 21, 1, 196, 35, 24, 4, 195,
|
||||
34, 32, 32, 21, 1, 195, 0, 35, 34, 2, 0,
|
||||
};
|
||||
p = orc_program_new_from_static_bytecode (bc);
|
||||
orc_program_set_backup_function (p, _backup_video_orc_convert_Y42B_AYUV);
|
||||
|
@ -16891,7 +16864,7 @@ video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
orc_program_add_source (p, 2, "s1");
|
||||
orc_program_add_source (p, 1, "s2");
|
||||
orc_program_add_source (p, 1, "s3");
|
||||
orc_program_add_constant (p, 1, 0x000000ff, "c1");
|
||||
orc_program_add_parameter (p, 1, "p1");
|
||||
orc_program_add_temporary (p, 2, "t1");
|
||||
orc_program_add_temporary (p, 2, "t2");
|
||||
orc_program_add_temporary (p, 4, "t3");
|
||||
|
@ -16899,7 +16872,7 @@ video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
|
||||
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
|
||||
ORC_VAR_D1);
|
||||
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_C1, ORC_VAR_S1,
|
||||
orc_program_append_2 (p, "mergebw", 1, ORC_VAR_T4, ORC_VAR_P1, ORC_VAR_S1,
|
||||
ORC_VAR_D1);
|
||||
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_T3, ORC_VAR_T1, ORC_VAR_T1,
|
||||
ORC_VAR_D1);
|
||||
|
@ -16927,6 +16900,7 @@ video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
ex->params[ORC_VAR_S2] = s2_stride;
|
||||
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
||||
ex->params[ORC_VAR_S3] = s3_stride;
|
||||
ex->params[ORC_VAR_P1] = p1;
|
||||
|
||||
func = c->exec;
|
||||
func (ex);
|
||||
|
@ -17418,7 +17392,7 @@ void
|
|||
video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
||||
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
||||
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
||||
const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m)
|
||||
{
|
||||
int i;
|
||||
int j;
|
||||
|
@ -17428,11 +17402,7 @@ video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
const orc_int8 *ORC_RESTRICT ptr6;
|
||||
orc_int8 var34;
|
||||
orc_int8 var35;
|
||||
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
||||
volatile orc_int8 var36;
|
||||
#else
|
||||
orc_int8 var36;
|
||||
#endif
|
||||
orc_int8 var37;
|
||||
orc_union32 var38;
|
||||
orc_union16 var39;
|
||||
|
@ -17445,7 +17415,7 @@ video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
ptr6 = ORC_PTR_OFFSET (s3, s3_stride * j);
|
||||
|
||||
/* 3: loadpb */
|
||||
var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var36 = p1;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
/* 0: loadb */
|
||||
|
@ -17496,11 +17466,7 @@ _backup_video_orc_convert_Y444_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|||
const orc_int8 *ORC_RESTRICT ptr6;
|
||||
orc_int8 var34;
|
||||
orc_int8 var35;
|
||||
#if defined(__APPLE__) && __GNUC__ == 4 && __GNUC_MINOR__ == 2 && defined (__i386__)
|
||||
volatile orc_int8 var36;
|
||||
#else
|
||||
orc_int8 var36;
|
||||
#endif
|
||||
orc_int8 var37;
|
||||
orc_union32 var38;
|
||||
orc_union16 var39;
|
||||
|
@ -17513,7 +17479,7 @@ _backup_video_orc_convert_Y444_AYUV (OrcExecutor * ORC_RESTRICT ex)
|
|||
ptr6 = ORC_PTR_OFFSET (ex->arrays[6], ex->params[6] * j);
|
||||
|
||||
/* 3: loadpb */
|
||||
var36 = (int) 0x000000ff; /* 255 or 1.25987e-321f */
|
||||
var36 = ex->params[24];
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
/* 0: loadb */
|
||||
|
@ -17554,7 +17520,7 @@ void
|
|||
video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
||||
const guint8 * ORC_RESTRICT s1, int s1_stride,
|
||||
const guint8 * ORC_RESTRICT s2, int s2_stride,
|
||||
const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m)
|
||||
const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m)
|
||||
{
|
||||
OrcExecutor _ex, *ex = &_ex;
|
||||
static volatile int p_inited = 0;
|
||||
|
@ -17570,9 +17536,8 @@ video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
static const orc_uint8 bc[] = {
|
||||
1, 7, 9, 27, 118, 105, 100, 101, 111, 95, 111, 114, 99, 95, 99, 111,
|
||||
110, 118, 101, 114, 116, 95, 89, 52, 52, 52, 95, 65, 89, 85, 86, 11,
|
||||
4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 14, 1, 255, 0, 0,
|
||||
0, 20, 2, 20, 2, 196, 32, 5, 6, 196, 33, 16, 4, 195, 0, 33,
|
||||
32, 2, 0,
|
||||
4, 4, 12, 1, 1, 12, 1, 1, 12, 1, 1, 16, 1, 20, 2, 20,
|
||||
2, 196, 32, 5, 6, 196, 33, 24, 4, 195, 0, 33, 32, 2, 0,
|
||||
};
|
||||
p = orc_program_new_from_static_bytecode (bc);
|
||||
orc_program_set_backup_function (p, _backup_video_orc_convert_Y444_AYUV);
|
||||
|
@ -17585,13 +17550,13 @@ video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
orc_program_add_source (p, 1, "s1");
|
||||
orc_program_add_source (p, 1, "s2");
|
||||
orc_program_add_source (p, 1, "s3");
|
||||
orc_program_add_constant (p, 1, 0x000000ff, "c1");
|
||||
orc_program_add_parameter (p, 1, "p1");
|
||||
orc_program_add_temporary (p, 2, "t1");
|
||||
orc_program_add_temporary (p, 2, "t2");
|
||||
|
||||
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T1, ORC_VAR_S2, ORC_VAR_S3,
|
||||
ORC_VAR_D1);
|
||||
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_C1, ORC_VAR_S1,
|
||||
orc_program_append_2 (p, "mergebw", 0, ORC_VAR_T2, ORC_VAR_P1, ORC_VAR_S1,
|
||||
ORC_VAR_D1);
|
||||
orc_program_append_2 (p, "mergewl", 0, ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_T1,
|
||||
ORC_VAR_D1);
|
||||
|
@ -17617,6 +17582,7 @@ video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride,
|
|||
ex->params[ORC_VAR_S2] = s2_stride;
|
||||
ex->arrays[ORC_VAR_S3] = (void *) s3;
|
||||
ex->params[ORC_VAR_S3] = s3_stride;
|
||||
ex->params[ORC_VAR_P1] = p1;
|
||||
|
||||
func = c->exec;
|
||||
func (ex);
|
||||
|
|
|
@ -137,7 +137,7 @@ void video_orc_splat_u64 (guint8 * ORC_RESTRICT d1, orc_int64 p1, int n);
|
|||
void video_orc_splat2_u64 (guint8 * ORC_RESTRICT d1, int p1, int n);
|
||||
void video_orc_convert_I420_UYVY (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
|
||||
void video_orc_convert_I420_YUY2 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
|
||||
void video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int n);
|
||||
void video_orc_convert_I420_AYUV (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, const guint8 * ORC_RESTRICT s3, const guint8 * ORC_RESTRICT s4, int p1, int n);
|
||||
void video_orc_convert_YUY2_I420 (guint8 * ORC_RESTRICT d1, guint8 * ORC_RESTRICT d2, guint8 * ORC_RESTRICT d3, guint8 * ORC_RESTRICT d4, const guint8 * ORC_RESTRICT s1, const guint8 * ORC_RESTRICT s2, int n);
|
||||
void video_orc_convert_UYVY_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
||||
void video_orc_planar_chroma_420_422 (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
||||
|
@ -146,8 +146,8 @@ void video_orc_planar_chroma_422_444 (guint8 * ORC_RESTRICT d1, int d1_stride, c
|
|||
void video_orc_planar_chroma_444_422 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
||||
void video_orc_planar_chroma_444_420 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m);
|
||||
void video_orc_planar_chroma_422_420 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, int n, int m);
|
||||
void video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
||||
void video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
||||
void video_orc_convert_YUY2_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
|
||||
void video_orc_convert_UYVY_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int n, int m);
|
||||
void video_orc_convert_YUY2_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
||||
void video_orc_convert_UYVY_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
||||
void video_orc_convert_YUY2_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
||||
|
@ -160,10 +160,10 @@ void video_orc_convert_AYUV_Y42B (guint8 * ORC_RESTRICT d1, int d1_stride, guint
|
|||
void video_orc_convert_AYUV_Y444 (guint8 * ORC_RESTRICT d1, int d1_stride, guint8 * ORC_RESTRICT d2, int d2_stride, guint8 * ORC_RESTRICT d3, int d3_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int n, int m);
|
||||
void video_orc_convert_Y42B_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
|
||||
void video_orc_convert_Y42B_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
|
||||
void video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
|
||||
void video_orc_convert_Y42B_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m);
|
||||
void video_orc_convert_Y444_YUY2 (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
|
||||
void video_orc_convert_Y444_UYVY (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
|
||||
void video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int n, int m);
|
||||
void video_orc_convert_Y444_AYUV (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, const guint8 * ORC_RESTRICT s2, int s2_stride, const guint8 * ORC_RESTRICT s3, int s3_stride, int p1, int n, int m);
|
||||
void video_orc_convert_AYUV_ARGB (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3, int p4, int p5, int n, int m);
|
||||
void video_orc_convert_AYUV_BGRA (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3, int p4, int p5, int n, int m);
|
||||
void video_orc_convert_AYUV_ABGR (guint8 * ORC_RESTRICT d1, int d1_stride, const guint8 * ORC_RESTRICT s1, int s1_stride, int p1, int p2, int p3, int p4, int p5, int n, int m);
|
||||
|
|
|
@ -842,7 +842,7 @@ x2 mergebw d2, y2, uv
|
|||
.source 1 y2 guint8
|
||||
.source 1 u guint8
|
||||
.source 1 v guint8
|
||||
.const 1 c255 255
|
||||
.param 1 alpha
|
||||
.temp 2 uv
|
||||
.temp 2 ay
|
||||
.temp 1 tu
|
||||
|
@ -851,9 +851,9 @@ x2 mergebw d2, y2, uv
|
|||
loadupdb tu, u
|
||||
loadupdb tv, v
|
||||
mergebw uv, tu, tv
|
||||
mergebw ay, c255, y1
|
||||
mergebw ay, alpha, y1
|
||||
mergewl d1, ay, uv
|
||||
mergebw ay, c255, y2
|
||||
mergebw ay, alpha, y2
|
||||
mergewl d2, ay, uv
|
||||
|
||||
|
||||
|
@ -954,14 +954,14 @@ avgub d, s1, s2
|
|||
.flags 2d
|
||||
.dest 8 ayuv guint8
|
||||
.source 4 yuy2 guint8
|
||||
.const 2 c255 0xff
|
||||
.param 1 alpha
|
||||
.temp 2 yy
|
||||
.temp 2 uv
|
||||
.temp 4 ayay
|
||||
.temp 4 uvuv
|
||||
|
||||
x2 splitwb uv, yy, yuy2
|
||||
x2 mergebw ayay, c255, yy
|
||||
x2 mergebw ayay, alpha, yy
|
||||
mergewl uvuv, uv, uv
|
||||
x2 mergewl ayuv, ayay, uvuv
|
||||
|
||||
|
@ -970,14 +970,14 @@ x2 mergewl ayuv, ayay, uvuv
|
|||
.flags 2d
|
||||
.dest 8 ayuv guint8
|
||||
.source 4 uyvy guint8
|
||||
.const 2 c255 0xff
|
||||
.param 1 alpha
|
||||
.temp 2 yy
|
||||
.temp 2 uv
|
||||
.temp 4 ayay
|
||||
.temp 4 uvuv
|
||||
|
||||
x2 splitwb yy, uv, uyvy
|
||||
x2 mergebw ayay, c255, yy
|
||||
x2 mergebw ayay, alpha, yy
|
||||
mergewl uvuv, uv, uv
|
||||
x2 mergewl ayuv, ayay, uvuv
|
||||
|
||||
|
@ -1185,14 +1185,14 @@ x2 mergebw uyvy, uv, y
|
|||
.source 2 yy guint8
|
||||
.source 1 u guint8
|
||||
.source 1 v guint8
|
||||
.const 1 c255 255
|
||||
.param 1 alpha
|
||||
.temp 2 uv
|
||||
.temp 2 ay
|
||||
.temp 4 uvuv
|
||||
.temp 4 ayay
|
||||
|
||||
mergebw uv, u, v
|
||||
x2 mergebw ayay, c255, yy
|
||||
x2 mergebw ayay, alpha, yy
|
||||
mergewl uvuv, uv, uv
|
||||
x2 mergewl ayuv, ayay, uvuv
|
||||
|
||||
|
@ -1237,12 +1237,12 @@ x2 mergebw uyvy, uv, y
|
|||
.source 1 yy guint8
|
||||
.source 1 u guint8
|
||||
.source 1 v guint8
|
||||
.const 1 c255 255
|
||||
.param 1 alpha
|
||||
.temp 2 uv
|
||||
.temp 2 ay
|
||||
|
||||
mergebw uv, u, v
|
||||
mergebw ay, c255, yy
|
||||
mergebw ay, alpha, yy
|
||||
mergewl ayuv, ay, uv
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue