}
} else if (depth == 8 && bpp == 8) {
*format = GST_VIDEO_FORMAT_RGB8_PALETTED;
+ } else if (depth == 64 && bpp == 64) {
+ *format = gst_video_format_from_rgba32_masks (red_mask, green_mask,
+ blue_mask, alpha_mask);
+ if (*format == GST_VIDEO_FORMAT_ARGB) {
+ *format = GST_VIDEO_FORMAT_ARGB64;
+ } else {
+ *format = GST_VIDEO_FORMAT_UNKNOWN;
+ ok = FALSE;
+ }
} else {
ok = FALSE;
}
depth = 8;
have_alpha = FALSE;
break;
+ case GST_VIDEO_FORMAT_ARGB64:
+ bpp = 64;
+ depth = 64;
+ have_alpha = TRUE;
+ break;
default:
return NULL;
}
- if (bpp == 32 || bpp == 24) {
+ if (bpp == 32 || bpp == 24 || bpp == 64) {
if (bpp == 32) {
mask = 0xff000000;
} else {
return GST_VIDEO_FORMAT_YVU9;
case GST_MAKE_FOURCC ('I', 'Y', 'U', '1'):
return GST_VIDEO_FORMAT_IYU1;
+ case GST_MAKE_FOURCC ('A', 'Y', '6', '4'):
+ return GST_VIDEO_FORMAT_AYUV64;
default:
return GST_VIDEO_FORMAT_UNKNOWN;
}
return GST_MAKE_FOURCC ('Y', 'V', 'U', '9');
case GST_VIDEO_FORMAT_IYU1:
return GST_MAKE_FOURCC ('I', 'Y', 'U', '1');
+ case GST_VIDEO_FORMAT_AYUV64:
+ return GST_MAKE_FOURCC ('A', 'Y', '6', '4');
default:
return 0;
}
case GST_VIDEO_FORMAT_YUV9:
case GST_VIDEO_FORMAT_YVU9:
case GST_VIDEO_FORMAT_IYU1:
+ case GST_VIDEO_FORMAT_AYUV64:
return FALSE;
case GST_VIDEO_FORMAT_RGBx:
case GST_VIDEO_FORMAT_BGRx:
case GST_VIDEO_FORMAT_RGB15:
case GST_VIDEO_FORMAT_BGR15:
case GST_VIDEO_FORMAT_RGB8_PALETTED:
+ case GST_VIDEO_FORMAT_ARGB64:
return TRUE;
default:
return FALSE;
case GST_VIDEO_FORMAT_YUV9:
case GST_VIDEO_FORMAT_YVU9:
case GST_VIDEO_FORMAT_IYU1:
+ case GST_VIDEO_FORMAT_AYUV64:
return TRUE;
case GST_VIDEO_FORMAT_RGBx:
case GST_VIDEO_FORMAT_BGRx:
case GST_VIDEO_FORMAT_RGB15:
case GST_VIDEO_FORMAT_BGR15:
case GST_VIDEO_FORMAT_RGB8_PALETTED:
+ case GST_VIDEO_FORMAT_ARGB64:
return FALSE;
default:
return FALSE;
case GST_VIDEO_FORMAT_ABGR:
case GST_VIDEO_FORMAT_A420:
case GST_VIDEO_FORMAT_RGB8_PALETTED:
+ case GST_VIDEO_FORMAT_ARGB64:
+ case GST_VIDEO_FORMAT_AYUV64:
return TRUE;
case GST_VIDEO_FORMAT_RGBx:
case GST_VIDEO_FORMAT_BGRx:
return 10;
case GST_VIDEO_FORMAT_Y16:
case GST_VIDEO_FORMAT_v216:
+ case GST_VIDEO_FORMAT_ARGB64:
+ case GST_VIDEO_FORMAT_AYUV64:
return 16;
}
case GST_VIDEO_FORMAT_IYU1:
return GST_ROUND_UP_4 (GST_ROUND_UP_4 (width) +
GST_ROUND_UP_4 (width) / 2);
+ case GST_VIDEO_FORMAT_ARGB64:
+ case GST_VIDEO_FORMAT_AYUV64:
+ return width * 8;
default:
return 0;
}
return 0;
case GST_VIDEO_FORMAT_RGB8_PALETTED:
return 1;
+ case GST_VIDEO_FORMAT_ARGB64:
+ case GST_VIDEO_FORMAT_AYUV64:
+ return 8;
default:
return 0;
}
case GST_VIDEO_FORMAT_Y800:
case GST_VIDEO_FORMAT_Y16:
case GST_VIDEO_FORMAT_RGB8_PALETTED:
+ case GST_VIDEO_FORMAT_ARGB64:
+ case GST_VIDEO_FORMAT_AYUV64:
return width;
case GST_VIDEO_FORMAT_A420:
if (component == 0 || component == 3) {
case GST_VIDEO_FORMAT_UYVP:
case GST_VIDEO_FORMAT_RGB8_PALETTED:
case GST_VIDEO_FORMAT_IYU1:
+ case GST_VIDEO_FORMAT_ARGB64:
+ case GST_VIDEO_FORMAT_AYUV64:
return height;
case GST_VIDEO_FORMAT_A420:
if (component == 0 || component == 3) {
return 0;
if (component == 2)
return 4;
+ case GST_VIDEO_FORMAT_ARGB64:
+ case GST_VIDEO_FORMAT_AYUV64:
+ if (component == 0)
+ return 2;
+ if (component == 1)
+ return 4;
+ if (component == 2)
+ return 6;
+ if (component == 3)
+ return 0;
+ return 0;
default:
return 0;
}
size += GST_ROUND_UP_4 (GST_ROUND_UP_4 (width) / 4) *
(GST_ROUND_UP_4 (height) / 4) * 2;
return size;
+ case GST_VIDEO_FORMAT_ARGB64:
+ case GST_VIDEO_FORMAT_AYUV64:
+ return width * 8 * height;
default:
return 0;
}
* @GST_VIDEO_FORMAT_YUV9: planar 4:1:0 YUV (Since: 0.10.32)
* @GST_VIDEO_FORMAT_YVU9: planar 4:1:0 YUV (like YUV9 but UV planes swapped) (Since: 0.10.32)
* @GST_VIDEO_FORMAT_IYU1: packed 4:1:1 YUV (Cb-Y0-Y1-Cr-Y2-Y3 ...) (Since: 0.10.32)
+ * @GST_VIDEO_FORMAT_ARGB64: rgb with alpha channel first, 16 bits per channel (Since: 0.10.33)
+ * @GST_VIDEO_FORMAT_AY64: packed 4:4:4 YUV with alpha channel, 16 bits per channel (A0-Y0-U0-V0 ...) (Since: 0.10.33)
*
* Enum value describing the most common video formats.
*/
GST_VIDEO_FORMAT_RGB8_PALETTED,
GST_VIDEO_FORMAT_YUV9,
GST_VIDEO_FORMAT_YVU9,
- GST_VIDEO_FORMAT_IYU1
+ GST_VIDEO_FORMAT_IYU1,
+ GST_VIDEO_FORMAT_ARGB64,
+ GST_VIDEO_FORMAT_AYUV64
} GstVideoFormat;
#define GST_VIDEO_BYTE1_MASK_32 "0xFF000000"
"height = " GST_VIDEO_SIZE_RANGE ", " \
"framerate = " GST_VIDEO_FPS_RANGE
+#define __GST_VIDEO_CAPS_MAKE_64A(R, G, B, A) \
+ "video/x-raw-rgb, " \
+ "bpp = (int) 64, " \
+ "depth = (int) 64, " \
+ "endianness = (int) BIG_ENDIAN, " \
+ "red_mask = (int) " GST_VIDEO_BYTE ## R ## _MASK_32 ", " \
+ "green_mask = (int) " GST_VIDEO_BYTE ## G ## _MASK_32 ", " \
+ "blue_mask = (int) " GST_VIDEO_BYTE ## B ## _MASK_32 ", " \
+ "alpha_mask = (int) " GST_VIDEO_BYTE ## A ## _MASK_32 ", " \
+ "width = " GST_VIDEO_SIZE_RANGE ", " \
+ "height = " GST_VIDEO_SIZE_RANGE ", " \
+ "framerate = " GST_VIDEO_FPS_RANGE
+
/* 24 bit */
#define GST_VIDEO_CAPS_BGR_15 \
__GST_VIDEO_CAPS_MAKE_15 (3, 2, 1)
+/* 64 bit alpha */
+
+#define GST_VIDEO_CAPS_ARGB_64 \
+ __GST_VIDEO_CAPS_MAKE_64A (2, 3, 4, 1)
+
/**
* GST_VIDEO_CAPS_RGB8_PALETTED:
*