mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 09:10:36 +00:00
videotestsrc: Add UYVP
This commit is contained in:
parent
08be25ce62
commit
d71890156a
1 changed files with 40 additions and 0 deletions
|
@ -149,6 +149,7 @@ static void paint_setup_v410 (paintinfo * p, unsigned char *dest);
|
|||
#endif
|
||||
static void paint_setup_v216 (paintinfo * p, unsigned char *dest);
|
||||
static void paint_setup_v210 (paintinfo * p, unsigned char *dest);
|
||||
static void paint_setup_UYVP (paintinfo * p, unsigned char *dest);
|
||||
|
||||
static void paint_setup_YUV9 (paintinfo * p, unsigned char *dest);
|
||||
static void paint_setup_YVU9 (paintinfo * p, unsigned char *dest);
|
||||
|
@ -188,6 +189,7 @@ static void convert_hline_v410 (paintinfo * p, int y);
|
|||
#endif
|
||||
static void convert_hline_v216 (paintinfo * p, int y);
|
||||
static void convert_hline_v210 (paintinfo * p, int y);
|
||||
static void convert_hline_UYVP (paintinfo * p, int y);
|
||||
|
||||
static void convert_hline_YUV9 (paintinfo * p, int y);
|
||||
static void convert_hline_astr4 (paintinfo * p, int y);
|
||||
|
@ -219,6 +221,7 @@ struct fourcc_list_struct fourcc_list[] = {
|
|||
#endif
|
||||
{VTS_YUV, "v210", "v210", 21, paint_setup_v210, convert_hline_v210},
|
||||
{VTS_YUV, "v216", "v216", 32, paint_setup_v216, convert_hline_v216},
|
||||
{VTS_YUV, "UYVP", "UYVP", 20, paint_setup_UYVP, convert_hline_UYVP},
|
||||
|
||||
#ifdef disabled
|
||||
{VTS_YUV, "IYU2", "IYU2", 24, paint_setup_IYU2, convert_hline_IYU2},
|
||||
|
@ -1763,6 +1766,18 @@ paint_setup_v210 (paintinfo * p, unsigned char *dest)
|
|||
p->endptr = dest + p->ystride * p->height;
|
||||
}
|
||||
|
||||
static void
|
||||
paint_setup_UYVP (paintinfo * p, unsigned char *dest)
|
||||
{
|
||||
p->ap = dest;
|
||||
p->yp = dest + 0;
|
||||
p->up = dest + 0;
|
||||
p->vp = dest + 0;
|
||||
p->ystride = GST_ROUND_UP_4 ((p->width * 2 * 5 + 3) / 4);
|
||||
GST_ERROR ("stride %d", p->ystride);
|
||||
p->endptr = dest + p->ystride * p->height;
|
||||
}
|
||||
|
||||
static void
|
||||
paint_setup_YUY2 (paintinfo * p, unsigned char *dest)
|
||||
{
|
||||
|
@ -1923,6 +1938,31 @@ convert_hline_v210 (paintinfo * p, int y)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
convert_hline_UYVP (paintinfo * p, int y)
|
||||
{
|
||||
int i;
|
||||
guint8 *Y = p->yp + y * p->ystride;
|
||||
guint8 *ayuv = p->tmpline;
|
||||
|
||||
for (i = 0; i < p->width; i += 2) {
|
||||
guint16 y0, y1;
|
||||
guint16 u0;
|
||||
guint16 v0;
|
||||
|
||||
y0 = ayuv[4 * (i + 0) + 1];
|
||||
y1 = ayuv[4 * (i + 1) + 1];
|
||||
u0 = (ayuv[4 * (i + 0) + 2] + ayuv[4 * (i + 1) + 2] + 1) >> 1;
|
||||
v0 = (ayuv[4 * (i + 0) + 3] + ayuv[4 * (i + 1) + 3] + 1) >> 1;
|
||||
|
||||
Y[(i / 2) * 5 + 0] = u0;
|
||||
Y[(i / 2) * 5 + 1] = y0 >> 2;
|
||||
Y[(i / 2) * 5 + 2] = (y0 << 6) | (v0 >> 4);
|
||||
Y[(i / 2) * 5 + 3] = (v0 << 4) | (y1 >> 2);
|
||||
Y[(i / 2) * 5 + 4] = (y1 << 2);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
convert_hline_YUY2 (paintinfo * p, int y)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue