mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-01 03:52:25 +00:00
Add support for AYUV format.
This commit is contained in:
parent
992df1819e
commit
9713d1a950
5 changed files with 36 additions and 1 deletions
5
NEWS
5
NEWS
|
@ -1,6 +1,9 @@
|
||||||
gst-vaapi NEWS -- summary of changes. 2010-03-23
|
gst-vaapi NEWS -- summary of changes. 2010-03-DD
|
||||||
Copyright (C) 2010 Splitted-Desktop Systems
|
Copyright (C) 2010 Splitted-Desktop Systems
|
||||||
|
|
||||||
|
Version 0.1.2 - DD.Mar.2010
|
||||||
|
* Add AYUV image format
|
||||||
|
|
||||||
Version 0.1.1 - 23.Mar.2010
|
Version 0.1.1 - 23.Mar.2010
|
||||||
* Document public API for libgstvaapi-*.so.*
|
* Document public API for libgstvaapi-*.so.*
|
||||||
* Optimize `vaapiconvert' pipeline (direct-rendering)
|
* Optimize `vaapiconvert' pipeline (direct-rendering)
|
||||||
|
|
|
@ -129,6 +129,7 @@ vaapi_image_is_linear(const VAImage *va_image)
|
||||||
case VA_FOURCC('I','4','2','0'):
|
case VA_FOURCC('I','4','2','0'):
|
||||||
data_size = width * height + 2 * width2 * height2;
|
data_size = width * height + 2 * width2 * height2;
|
||||||
break;
|
break;
|
||||||
|
case VA_FOURCC('A','Y','U','V'):
|
||||||
case VA_FOURCC('A','R','G','B'):
|
case VA_FOURCC('A','R','G','B'):
|
||||||
case VA_FOURCC('R','G','B','A'):
|
case VA_FOURCC('R','G','B','A'):
|
||||||
case VA_FOURCC('A','B','G','R'):
|
case VA_FOURCC('A','B','G','R'):
|
||||||
|
|
|
@ -60,6 +60,7 @@ static const GstVaapiImageFormatMap gst_vaapi_image_formats[] = {
|
||||||
DEF_YUV(NV12, ('N','V','1','2'), LSB, 12),
|
DEF_YUV(NV12, ('N','V','1','2'), LSB, 12),
|
||||||
DEF_YUV(YV12, ('Y','V','1','2'), LSB, 12),
|
DEF_YUV(YV12, ('Y','V','1','2'), LSB, 12),
|
||||||
DEF_YUV(I420, ('I','4','2','0'), LSB, 12),
|
DEF_YUV(I420, ('I','4','2','0'), LSB, 12),
|
||||||
|
DEF_YUV(AYUV, ('A','Y','U','V'), LSB, 32),
|
||||||
#if G_BYTE_ORDER == G_BIG_ENDIAN
|
#if G_BYTE_ORDER == G_BIG_ENDIAN
|
||||||
DEF_RGB(ARGB, ('A','R','G','B'), MSB, 32,
|
DEF_RGB(ARGB, ('A','R','G','B'), MSB, 32,
|
||||||
32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000),
|
32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000),
|
||||||
|
|
|
@ -36,6 +36,8 @@ typedef enum _GstVaapiImageFormat GstVaapiImageFormat;
|
||||||
* planar YUV 4:2:0, 12-bit, 3 planes for Y V U
|
* planar YUV 4:2:0, 12-bit, 3 planes for Y V U
|
||||||
* @GST_VAAPI_IMAGE_I420:
|
* @GST_VAAPI_IMAGE_I420:
|
||||||
* planar YUV 4:2:0, 12-bit, 3 planes for Y U V
|
* planar YUV 4:2:0, 12-bit, 3 planes for Y U V
|
||||||
|
* @GST_VAAPI_IMAGE_AYUV:
|
||||||
|
* packed YUV 4:4:4, 32-bit, A Y U V, native endian byte-order
|
||||||
* @GST_VAAPI_IMAGE_ARGB:
|
* @GST_VAAPI_IMAGE_ARGB:
|
||||||
* packed RGB 8:8:8, 32-bit, A R G B
|
* packed RGB 8:8:8, 32-bit, A R G B
|
||||||
* @GST_VAAPI_IMAGE_RGBA:
|
* @GST_VAAPI_IMAGE_RGBA:
|
||||||
|
@ -51,6 +53,7 @@ enum _GstVaapiImageFormat {
|
||||||
GST_VAAPI_IMAGE_NV12 = VA_FOURCC('N','V','1','2'),
|
GST_VAAPI_IMAGE_NV12 = VA_FOURCC('N','V','1','2'),
|
||||||
GST_VAAPI_IMAGE_YV12 = VA_FOURCC('Y','V','1','2'),
|
GST_VAAPI_IMAGE_YV12 = VA_FOURCC('Y','V','1','2'),
|
||||||
GST_VAAPI_IMAGE_I420 = VA_FOURCC('I','4','2','0'),
|
GST_VAAPI_IMAGE_I420 = VA_FOURCC('I','4','2','0'),
|
||||||
|
GST_VAAPI_IMAGE_AYUV = VA_FOURCC('A','Y','U','V'),
|
||||||
GST_VAAPI_IMAGE_ARGB = VA_FOURCC('A','R','G','B'),
|
GST_VAAPI_IMAGE_ARGB = VA_FOURCC('A','R','G','B'),
|
||||||
GST_VAAPI_IMAGE_RGBA = VA_FOURCC('R','G','B','A'),
|
GST_VAAPI_IMAGE_RGBA = VA_FOURCC('R','G','B','A'),
|
||||||
GST_VAAPI_IMAGE_ABGR = VA_FOURCC('A','B','G','R'),
|
GST_VAAPI_IMAGE_ABGR = VA_FOURCC('A','B','G','R'),
|
||||||
|
|
|
@ -179,6 +179,27 @@ static void draw_rect_YV12( // Y, U, V planes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void draw_rect_AYUV(
|
||||||
|
guchar *pixels[3],
|
||||||
|
guint stride[3],
|
||||||
|
gint x,
|
||||||
|
gint y,
|
||||||
|
guint width,
|
||||||
|
guint height,
|
||||||
|
guint32 color
|
||||||
|
)
|
||||||
|
{
|
||||||
|
guint i, j;
|
||||||
|
|
||||||
|
color = color | 0xff000000;
|
||||||
|
|
||||||
|
for (j = 0; j < height; j++) {
|
||||||
|
guint32 *p = (guint32 *)(pixels[0] + (y + j) * stride[0] + x * 4);
|
||||||
|
for (i = 0; i < width; i++)
|
||||||
|
p[i] = color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean draw_rgb_rects(GstVaapiImage *image)
|
static gboolean draw_rgb_rects(GstVaapiImage *image)
|
||||||
{
|
{
|
||||||
GstVaapiImageFormat format = GST_VAAPI_IMAGE_FORMAT(image);
|
GstVaapiImageFormat format = GST_VAAPI_IMAGE_FORMAT(image);
|
||||||
|
@ -236,6 +257,11 @@ static gboolean draw_rgb_rects(GstVaapiImage *image)
|
||||||
stride[1] = gst_vaapi_image_get_pitch(image, 1);
|
stride[1] = gst_vaapi_image_get_pitch(image, 1);
|
||||||
pixels[2] = gst_vaapi_image_get_plane(image, 2);
|
pixels[2] = gst_vaapi_image_get_plane(image, 2);
|
||||||
stride[2] = gst_vaapi_image_get_pitch(image, 2);
|
stride[2] = gst_vaapi_image_get_pitch(image, 2);
|
||||||
|
goto YUV_colors;
|
||||||
|
case GST_VAAPI_IMAGE_AYUV:
|
||||||
|
draw_rect = draw_rect_AYUV;
|
||||||
|
pixels[0] = gst_vaapi_image_get_plane(image, 0);
|
||||||
|
stride[0] = gst_vaapi_image_get_pitch(image, 0);
|
||||||
YUV_colors:
|
YUV_colors:
|
||||||
red_color = 0x515af0;
|
red_color = 0x515af0;
|
||||||
green_color = 0x913622;
|
green_color = 0x913622;
|
||||||
|
@ -311,6 +337,7 @@ main(int argc, char *argv[])
|
||||||
GST_VAAPI_IMAGE_NV12,
|
GST_VAAPI_IMAGE_NV12,
|
||||||
GST_VAAPI_IMAGE_YV12,
|
GST_VAAPI_IMAGE_YV12,
|
||||||
GST_VAAPI_IMAGE_I420,
|
GST_VAAPI_IMAGE_I420,
|
||||||
|
GST_VAAPI_IMAGE_AYUV,
|
||||||
GST_VAAPI_IMAGE_ARGB,
|
GST_VAAPI_IMAGE_ARGB,
|
||||||
GST_VAAPI_IMAGE_BGRA,
|
GST_VAAPI_IMAGE_BGRA,
|
||||||
GST_VAAPI_IMAGE_RGBA,
|
GST_VAAPI_IMAGE_RGBA,
|
||||||
|
|
Loading…
Reference in a new issue