video: Add UYVP, 10-bit 4:2:2

This commit is contained in:
David Schleef 2010-09-12 19:34:28 -07:00
parent d9495fdc21
commit 1a75dede56
2 changed files with 22 additions and 1 deletions

View file

@ -772,6 +772,8 @@ gst_video_format_from_fourcc (guint32 fourcc)
return GST_VIDEO_FORMAT_Y800; return GST_VIDEO_FORMAT_Y800;
case GST_MAKE_FOURCC ('Y', '1', '6', ' '): case GST_MAKE_FOURCC ('Y', '1', '6', ' '):
return GST_VIDEO_FORMAT_Y16; return GST_VIDEO_FORMAT_Y16;
case GST_MAKE_FOURCC ('U', 'Y', 'V', 'P'):
return GST_VIDEO_FORMAT_UYVP;
default: default:
return GST_VIDEO_FORMAT_UNKNOWN; return GST_VIDEO_FORMAT_UNKNOWN;
} }
@ -827,6 +829,8 @@ gst_video_format_to_fourcc (GstVideoFormat format)
return GST_MAKE_FOURCC ('Y', '8', '0', '0'); return GST_MAKE_FOURCC ('Y', '8', '0', '0');
case GST_VIDEO_FORMAT_Y16: case GST_VIDEO_FORMAT_Y16:
return GST_MAKE_FOURCC ('Y', '1', '6', ' '); return GST_MAKE_FOURCC ('Y', '1', '6', ' ');
case GST_VIDEO_FORMAT_UYVP:
return GST_MAKE_FOURCC ('U', 'Y', 'V', 'P');
default: default:
return 0; return 0;
} }
@ -960,6 +964,7 @@ gst_video_format_is_rgb (GstVideoFormat format)
case GST_VIDEO_FORMAT_NV12: case GST_VIDEO_FORMAT_NV12:
case GST_VIDEO_FORMAT_NV21: case GST_VIDEO_FORMAT_NV21:
case GST_VIDEO_FORMAT_v308: case GST_VIDEO_FORMAT_v308:
case GST_VIDEO_FORMAT_UYVP:
return FALSE; return FALSE;
case GST_VIDEO_FORMAT_RGBx: case GST_VIDEO_FORMAT_RGBx:
case GST_VIDEO_FORMAT_BGRx: case GST_VIDEO_FORMAT_BGRx:
@ -1011,6 +1016,7 @@ gst_video_format_is_yuv (GstVideoFormat format)
case GST_VIDEO_FORMAT_v308: case GST_VIDEO_FORMAT_v308:
case GST_VIDEO_FORMAT_Y800: case GST_VIDEO_FORMAT_Y800:
case GST_VIDEO_FORMAT_Y16: case GST_VIDEO_FORMAT_Y16:
case GST_VIDEO_FORMAT_UYVP:
return TRUE; return TRUE;
case GST_VIDEO_FORMAT_RGBx: case GST_VIDEO_FORMAT_RGBx:
case GST_VIDEO_FORMAT_BGRx: case GST_VIDEO_FORMAT_BGRx:
@ -1087,6 +1093,7 @@ gst_video_format_has_alpha (GstVideoFormat format)
case GST_VIDEO_FORMAT_v308: case GST_VIDEO_FORMAT_v308:
case GST_VIDEO_FORMAT_Y800: case GST_VIDEO_FORMAT_Y800:
case GST_VIDEO_FORMAT_Y16: case GST_VIDEO_FORMAT_Y16:
case GST_VIDEO_FORMAT_UYVP:
return FALSE; return FALSE;
case GST_VIDEO_FORMAT_AYUV: case GST_VIDEO_FORMAT_AYUV:
case GST_VIDEO_FORMAT_RGBA: case GST_VIDEO_FORMAT_RGBA:
@ -1195,6 +1202,8 @@ gst_video_format_get_row_stride (GstVideoFormat format, int component,
case GST_VIDEO_FORMAT_GRAY16_LE: case GST_VIDEO_FORMAT_GRAY16_LE:
case GST_VIDEO_FORMAT_Y16: case GST_VIDEO_FORMAT_Y16:
return GST_ROUND_UP_4 (width * 2); return GST_ROUND_UP_4 (width * 2);
case GST_VIDEO_FORMAT_UYVP:
return GST_ROUND_UP_4 ((width * 2 * 5 + 3) / 4);
default: default:
return 0; return 0;
} }
@ -1277,6 +1286,9 @@ gst_video_format_get_pixel_stride (GstVideoFormat format, int component)
case GST_VIDEO_FORMAT_GRAY16_LE: case GST_VIDEO_FORMAT_GRAY16_LE:
case GST_VIDEO_FORMAT_Y16: case GST_VIDEO_FORMAT_Y16:
return 2; return 2;
case GST_VIDEO_FORMAT_UYVP:
/* UYVP is packed at the bit level, so pixel stride doesn't make sense */
return 0;
default: default:
return 0; return 0;
} }
@ -1315,6 +1327,7 @@ gst_video_format_get_component_width (GstVideoFormat format,
case GST_VIDEO_FORMAT_v216: case GST_VIDEO_FORMAT_v216:
case GST_VIDEO_FORMAT_NV12: case GST_VIDEO_FORMAT_NV12:
case GST_VIDEO_FORMAT_NV21: case GST_VIDEO_FORMAT_NV21:
case GST_VIDEO_FORMAT_UYVP:
if (component == 0) { if (component == 0) {
return width; return width;
} else { } else {
@ -1415,6 +1428,7 @@ gst_video_format_get_component_height (GstVideoFormat format,
case GST_VIDEO_FORMAT_GRAY16_LE: case GST_VIDEO_FORMAT_GRAY16_LE:
case GST_VIDEO_FORMAT_Y800: case GST_VIDEO_FORMAT_Y800:
case GST_VIDEO_FORMAT_Y16: case GST_VIDEO_FORMAT_Y16:
case GST_VIDEO_FORMAT_UYVP:
return height; return height;
default: default:
return 0; return 0;
@ -1615,6 +1629,9 @@ gst_video_format_get_component_offset (GstVideoFormat format,
case GST_VIDEO_FORMAT_Y800: case GST_VIDEO_FORMAT_Y800:
case GST_VIDEO_FORMAT_Y16: case GST_VIDEO_FORMAT_Y16:
return 0; return 0;
case GST_VIDEO_FORMAT_UYVP:
/* UYVP is bit-packed, so this doesn't make sense */
return 0;
default: default:
return 0; return 0;
} }
@ -1693,6 +1710,8 @@ gst_video_format_get_size (GstVideoFormat format, int width, int height)
case GST_VIDEO_FORMAT_GRAY16_LE: case GST_VIDEO_FORMAT_GRAY16_LE:
case GST_VIDEO_FORMAT_Y16: case GST_VIDEO_FORMAT_Y16:
return GST_ROUND_UP_4 (width * 2) * height; return GST_ROUND_UP_4 (width * 2) * height;
case GST_VIDEO_FORMAT_UYVP:
return GST_ROUND_UP_4 ((width * 2 * 5 + 3) / 4) * height;
default: default:
return 0; return 0;
} }

View file

@ -63,6 +63,7 @@ G_BEGIN_DECLS
* @GST_VIDEO_FORMAT_BGR16: reverse rgb 5-6-5 bits per component (Since: 0.10.30) * @GST_VIDEO_FORMAT_BGR16: reverse rgb 5-6-5 bits per component (Since: 0.10.30)
* @GST_VIDEO_FORMAT_RGB15: rgb 5-5-5 bits per component (Since: 0.10.30) * @GST_VIDEO_FORMAT_RGB15: rgb 5-5-5 bits per component (Since: 0.10.30)
* @GST_VIDEO_FORMAT_BGR15: reverse rgb 5-5-5 bits per component (Since: 0.10.30) * @GST_VIDEO_FORMAT_BGR15: reverse rgb 5-5-5 bits per component (Since: 0.10.30)
* @GST_VIDEO_FORMAT_UYVP: packed 10-bit 4:2:2 YUV (U0-Y0-V0-Y1 U2-Y2-V2-Y3 U4 ...)
* *
* Enum value describing the most common video formats. * Enum value describing the most common video formats.
*/ */
@ -100,7 +101,8 @@ typedef enum {
GST_VIDEO_FORMAT_RGB16, GST_VIDEO_FORMAT_RGB16,
GST_VIDEO_FORMAT_BGR16, GST_VIDEO_FORMAT_BGR16,
GST_VIDEO_FORMAT_RGB15, GST_VIDEO_FORMAT_RGB15,
GST_VIDEO_FORMAT_BGR15 GST_VIDEO_FORMAT_BGR15,
GST_VIDEO_FORMAT_UYVP
} GstVideoFormat; } GstVideoFormat;
#define GST_VIDEO_BYTE1_MASK_32 "0xFF000000" #define GST_VIDEO_BYTE1_MASK_32 "0xFF000000"