diff --git a/gst-libs/gst/video/video.c b/gst-libs/gst/video/video.c index e5c2c82615..176f315acc 100644 --- a/gst-libs/gst/video/video.c +++ b/gst-libs/gst/video/video.c @@ -715,6 +715,12 @@ gst_video_format_from_fourcc (guint32 fourcc) return GST_VIDEO_FORMAT_NV21; case GST_MAKE_FOURCC ('v', '3', '0', '8'): return GST_VIDEO_FORMAT_v308; + case GST_MAKE_FOURCC ('Y', '8', '0', '0'): + case GST_MAKE_FOURCC ('Y', '8', ' ', ' '): + case GST_MAKE_FOURCC ('G', 'R', 'E', 'Y'): + return GST_VIDEO_FORMAT_Y800; + case GST_MAKE_FOURCC ('Y', '1', '6', ' '): + return GST_VIDEO_FORMAT_Y16; default: return GST_VIDEO_FORMAT_UNKNOWN; } @@ -766,6 +772,10 @@ gst_video_format_to_fourcc (GstVideoFormat format) return GST_MAKE_FOURCC ('N', 'V', '2', '1'); case GST_VIDEO_FORMAT_v308: return GST_MAKE_FOURCC ('v', '3', '0', '8'); + case GST_VIDEO_FORMAT_Y800: + return GST_MAKE_FOURCC ('Y', '8', '0', '0'); + case GST_VIDEO_FORMAT_Y16: + return GST_MAKE_FOURCC ('Y', '1', '6', ' '); default: return 0; } @@ -917,6 +927,8 @@ gst_video_format_is_yuv (GstVideoFormat format) case GST_VIDEO_FORMAT_NV12: case GST_VIDEO_FORMAT_NV21: case GST_VIDEO_FORMAT_v308: + case GST_VIDEO_FORMAT_Y800: + case GST_VIDEO_FORMAT_Y16: return TRUE; case GST_VIDEO_FORMAT_RGBx: case GST_VIDEO_FORMAT_BGRx: @@ -985,6 +997,8 @@ gst_video_format_has_alpha (GstVideoFormat format) case GST_VIDEO_FORMAT_NV12: case GST_VIDEO_FORMAT_NV21: case GST_VIDEO_FORMAT_v308: + case GST_VIDEO_FORMAT_Y800: + case GST_VIDEO_FORMAT_Y16: return FALSE; case GST_VIDEO_FORMAT_AYUV: case GST_VIDEO_FORMAT_RGBA: @@ -1078,9 +1092,11 @@ gst_video_format_get_row_stride (GstVideoFormat format, int component, case GST_VIDEO_FORMAT_NV21: return GST_ROUND_UP_4 (width); case GST_VIDEO_FORMAT_GRAY8: + case GST_VIDEO_FORMAT_Y800: return GST_ROUND_UP_4 (width); case GST_VIDEO_FORMAT_GRAY16_BE: case GST_VIDEO_FORMAT_GRAY16_LE: + case GST_VIDEO_FORMAT_Y16: return GST_ROUND_UP_4 (width * 2); default: return 0; @@ -1153,9 +1169,11 @@ gst_video_format_get_pixel_stride (GstVideoFormat format, int component) return 2; } case GST_VIDEO_FORMAT_GRAY8: + case GST_VIDEO_FORMAT_Y800: return 1; case GST_VIDEO_FORMAT_GRAY16_BE: case GST_VIDEO_FORMAT_GRAY16_LE: + case GST_VIDEO_FORMAT_Y16: return 2; default: return 0; @@ -1222,6 +1240,8 @@ gst_video_format_get_component_width (GstVideoFormat format, int component, case GST_VIDEO_FORMAT_GRAY8: case GST_VIDEO_FORMAT_GRAY16_BE: case GST_VIDEO_FORMAT_GRAY16_LE: + case GST_VIDEO_FORMAT_Y800: + case GST_VIDEO_FORMAT_Y16: return width; default: return 0; @@ -1283,6 +1303,8 @@ gst_video_format_get_component_height (GstVideoFormat format, int component, case GST_VIDEO_FORMAT_GRAY8: case GST_VIDEO_FORMAT_GRAY16_BE: case GST_VIDEO_FORMAT_GRAY16_LE: + case GST_VIDEO_FORMAT_Y800: + case GST_VIDEO_FORMAT_Y16: return height; default: return 0; @@ -1480,6 +1502,8 @@ gst_video_format_get_component_offset (GstVideoFormat format, int component, case GST_VIDEO_FORMAT_GRAY8: case GST_VIDEO_FORMAT_GRAY16_BE: case GST_VIDEO_FORMAT_GRAY16_LE: + case GST_VIDEO_FORMAT_Y800: + case GST_VIDEO_FORMAT_Y16: return 0; default: return 0; @@ -1548,9 +1572,11 @@ gst_video_format_get_size (GstVideoFormat format, int width, int height) case GST_VIDEO_FORMAT_NV21: return GST_ROUND_UP_4 (width) * GST_ROUND_UP_2 (height) * 3 / 2; case GST_VIDEO_FORMAT_GRAY8: + case GST_VIDEO_FORMAT_Y800: return GST_ROUND_UP_4 (width) * height; case GST_VIDEO_FORMAT_GRAY16_BE: case GST_VIDEO_FORMAT_GRAY16_LE: + case GST_VIDEO_FORMAT_Y16: return GST_ROUND_UP_4 (width * 2) * height; default: return 0; diff --git a/gst-libs/gst/video/video.h b/gst-libs/gst/video/video.h index ebf20b9083..c00f0a12b8 100644 --- a/gst-libs/gst/video/video.h +++ b/gst-libs/gst/video/video.h @@ -57,6 +57,8 @@ G_BEGIN_DECLS * @GST_VIDEO_FORMAT_GRAY16_BE: 16-bit grayscale, most significant byte first (Since: 0.10.29) * @GST_VIDEO_FORMAT_GRAY16_LE: 16-bit grayscale, least significant byte first (Since: 0.10.29) * @GST_VIDEO_FORMAT_v308: packed 4:4:4 YUV (Since: 0.10.29) + * @GST_VIDEO_FORMAT_Y800: same as GST_VIDEO_FORMAT_GRAY8 (Since: 0.10.29) + * @GST_VIDEO_FORMAT_Y16: same as GST_VIDEO_FORMAT_GRAY16_LE (Since: 0.10.29) * * Enum value describing the most common video formats. */ @@ -88,7 +90,9 @@ typedef enum { GST_VIDEO_FORMAT_GRAY8, GST_VIDEO_FORMAT_GRAY16_BE, GST_VIDEO_FORMAT_GRAY16_LE, - GST_VIDEO_FORMAT_v308 + GST_VIDEO_FORMAT_v308, + GST_VIDEO_FORMAT_Y800, + GST_VIDEO_FORMAT_Y16 } GstVideoFormat; #define GST_VIDEO_BYTE1_MASK_32 "0xFF000000"