diff options
Diffstat (limited to 'gst-libs')
-rw-r--r-- | gst-libs/gst/video/video.h | 280 |
1 files changed, 130 insertions, 150 deletions
diff --git a/gst-libs/gst/video/video.h b/gst-libs/gst/video/video.h index 669a6a54..cb8727a9 100644 --- a/gst-libs/gst/video/video.h +++ b/gst-libs/gst/video/video.h @@ -23,156 +23,136 @@ #include <gst/gst.h> -#define R_MASK_32 "0xff000000" -#define G_MASK_32 "0x00ff0000" -#define B_MASK_32 "0x0000ff00" - -#define R_MASK_32_REVERSE "0x000000ff" -#define G_MASK_32_REVERSE "0x0000ff00" -#define B_MASK_32_REVERSE "0x00ff0000" - -#define R_MASK_24 "0xff0000" -#define G_MASK_24 "0x00ff00" -#define B_MASK_24 "0x0000ff" - -#define R_MASK_24_REVERSE "0x0000ff" -#define G_MASK_24_REVERSE "0x00ff00" -#define B_MASK_24_REVERSE "0xff0000" - -#define R_MASK_16 "0xf800" -#define G_MASK_16 "0x07e0" -#define B_MASK_16 "0x001f" - -#define R_MASK_15 "0x7c00" -#define G_MASK_15 "0x03e0" -#define B_MASK_15 "0x001f" - -#define R_MASK_32_INT 0xff000000 -#define G_MASK_32_INT 0x00ff0000 -#define B_MASK_32_INT 0x0000ff00 - -#define R_MASK_32_REVERSE_INT 0x000000ff -#define G_MASK_32_REVERSE_INT 0x0000ff00 -#define B_MASK_32_REVERSE_INT 0x00ff0000 - -#define R_MASK_24_INT 0xff0000 -#define G_MASK_24_INT 0x00ff00 -#define B_MASK_24_INT 0x0000ff - -#define R_MASK_24_REVERSE_INT 0x0000ff -#define G_MASK_24_REVERSE_INT 0x00ff00 -#define B_MASK_24_REVERSE_INT 0xff0000 - -#define R_MASK_16_INT 0xf800 -#define G_MASK_16_INT 0x07e0 -#define B_MASK_16_INT 0x001f - -#define R_MASK_15_INT 0x7c00 -#define G_MASK_15_INT 0x03e0 -#define B_MASK_15_INT 0x001f - -#define SIZE_RANGE "(int) [ 16, 4096 ]" -#define FPS_RANGE "(double) [ 0, max ]" - -/* properties for pad templates */ -#define GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_24_32 \ - GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_32 "; " \ - GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_24 - -#define GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_24_32_REVERSE \ - GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_32_REVERSE "; " \ - GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_24_REVERSE - -#define GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_32 \ - "video/x-raw-rgb, " \ - "bpp = (int) 32, " \ - "depth = (int) 24, " \ - "endianness = (int) BIG_ENDIAN, " \ - "red_mask = (int) " R_MASK_32 ", " \ - "green_mask = (int) " G_MASK_32 ", " \ - "blue_mask = (int) " B_MASK_32 ", " \ - "width = " SIZE_RANGE ", " \ - "height = " SIZE_RANGE ", " \ - "framerate = " FPS_RANGE - -#define GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_24 \ - "video/x-raw-rgb, " \ - "bpp = (int) 24, " \ - "depth = (int) 24, " \ - "endianness = (int) BIG_ENDIAN, " \ - "red_mask = (int) " R_MASK_24 ", " \ - "green_mask = (int) " G_MASK_24 ", " \ - "blue_mask = (int) " B_MASK_24 ", " \ - "width = " SIZE_RANGE ", " \ - "height = " SIZE_RANGE ", " \ - "framerate = " FPS_RANGE - -#define GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_32_REVERSE \ - "video/x-raw-rgb, " \ - "bpp = (int) 32, " \ - "depth = (int) 24, " \ - "endianness = (int) BIG_ENDIAN, " \ - "red_mask = (int) " R_MASK_32_REVERSE ", " \ - "green_mask = (int) " G_MASK_32_REVERSE ", " \ - "blue_mask = (int) " B_MASK_32_REVERSE ", " \ - "width = " SIZE_RANGE ", " \ - "height = " SIZE_RANGE ", " \ - "framerate = " FPS_RANGE - -#define GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_24_REVERSE \ - "video/x-raw-rgb, " \ - "bpp = (int) 24, " \ - "depth = (int) 24, " \ - "endianness = (int) BIG_ENDIAN, " \ - "red_mask = (int) " R_MASK_24_REVERSE ", " \ - "green_mask = (int) " G_MASK_24_REVERSE ", " \ - "blue_mask = (int) " B_MASK_24_REVERSE ", " \ - "width = " SIZE_RANGE ", " \ - "height = " SIZE_RANGE ", " \ - "framerate = " FPS_RANGE - -#define GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_15_16 \ - "video/x-raw-rgb, " \ - "bpp = (int) 16, " \ - "depth = (int) { 15, 16 }, " \ - "endianness = (int) BYTE_ORDER, " \ - "red_mask = (int) { " R_MASK_15 ", " R_MASK_16 " }, " \ - "green_mask = (int) { " G_MASK_15 ", " G_MASK_16 " }, " \ - "blue_mask = (int) { " B_MASK_15 ", " B_MASK_16 " }, " \ - "width = " SIZE_RANGE ", " \ - "height = " SIZE_RANGE ", " \ - "framerate = " FPS_RANGE - -#define GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_16 \ - "video/x-raw-rgb, " \ - "bpp = (int) 16, " \ - "depth = (int) 16, " \ - "endianness = (int) BYTE_ORDER, " \ - "red_mask = (int) " R_MASK_16 ", " \ - "green_mask = (int) " G_MASK_16 ", " \ - "blue_mask = (int) " B_MASK_16 ", " \ - "width = " SIZE_RANGE ", " \ - "height = " SIZE_RANGE ", " \ - "framerate = " FPS_RANGE - -#define GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_15 \ - "video/x-raw-rgb, " \ - "bpp = (int) 16, " \ - "depth = (int) 15, " \ - "endianness = (int) BYTE_ORDER, " \ - "red_mask = (int) " R_MASK_15 ", " \ - "green_mask = (int) " G_MASK_15 ", " \ - "blue_mask = (int) " B_MASK_15 ", " \ - "width = " SIZE_RANGE ", " \ - "height = " SIZE_RANGE ", " \ - "framerate = " FPS_RANGE - -#define GST_VIDEO_YUV_PAD_TEMPLATE_CAPS(fourcc) \ - "video/x-raw-yuv, " \ - "format = (fourcc) " fourcc ", " \ - "width = " SIZE_RANGE ", " \ - "height = " SIZE_RANGE ", " \ - "framerate = " FPS_RANGE +#define GST_VIDEO_BYTE1_MASK_32 "0xFF000000" +#define GST_VIDEO_BYTE2_MASK_32 "0x00FF0000" +#define GST_VIDEO_BYTE3_MASK_32 "0x0000FF00" +#define GST_VIDEO_BYTE4_MASK_32 "0x000000FF" + +#define GST_VIDEO_BYTE1_MASK_24 "0x00FF0000" +#define GST_VIDEO_BYTE2_MASK_24 "0x0000FF00" +#define GST_VIDEO_BYTE3_MASK_24 "0x000000FF" + +#define GST_VIDEO_BYTE1_MASK_32_INT 0xFF000000 +#define GST_VIDEO_BYTE2_MASK_32_INT 0x00FF0000 +#define GST_VIDEO_BYTE3_MASK_32_INT 0x0000FF00 +#define GST_VIDEO_BYTE4_MASK_32_INT 0x000000FF + +#define GST_VIDEO_BYTE1_MASK_24_INT 0x00FF0000 +#define GST_VIDEO_BYTE2_MASK_24_INT 0x0000FF00 +#define GST_VIDEO_BYTE3_MASK_24_INT 0x000000FF + +#define GST_VIDEO_RED_MASK_16 "0xf800" +#define GST_VIDEO_GREEN_MASK_16 "0x07e0" +#define GST_VIDEO_BLUE_MASK_16 "0x001f" + +#define GST_VIDEO_RED_MASK_15 "0x7c00" +#define GST_VIDEO_GREEN_MASK_15 "0x03e0" +#define GST_VIDEO_BLUE_MASK_15 "0x001f" + +#define GST_VIDEO_RED_MASK_16_INT 0xf800 +#define GST_VIDEO_GREEN_MASK_16_INT 0x07e0 +#define GST_VIDEO_BLUE_MASK_16_INT 0x001f + +#define GST_VIDEO_RED_MASK_15_INT 0x7c00 +#define GST_VIDEO_GREEN_MASK_15_INT 0x03e0 +#define GST_VIDEO_BLUE_MASK_15_INT 0x001f + +#define GST_VIDEO_SIZE_RANGE "(int) [ 16, 4096 ]" +#define GST_VIDEO_FPS_RANGE "(double) [ 0, max ]" + +/* consider the next 2 protected */ +#define __GST_VIDEO_CAPS_MAKE_32(R, G, B) \ + "video/x-raw-rgb, " \ + "bpp = (int) 32, " \ + "depth = (int) 24, " \ + "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 ", " \ + "width = " GST_VIDEO_SIZE_RANGE ", " \ + "height = " GST_VIDEO_SIZE_RANGE ", " \ + "framerate = " GST_VIDEO_FPS_RANGE + +#define __GST_VIDEO_CAPS_MAKE_24(R, G, B) \ + "video/x-raw-rgb, " \ + "bpp = (int) 24, " \ + "depth = (int) 24, " \ + "endianness = (int) BIG_ENDIAN, " \ + "red_mask = (int) " GST_VIDEO_BYTE ## R ## _MASK_24 ", " \ + "green_mask = (int) " GST_VIDEO_BYTE ## G ## _MASK_24 ", " \ + "blue_mask = (int) " GST_VIDEO_BYTE ## B ## _MASK_24 ", " \ + "width = " GST_VIDEO_SIZE_RANGE ", " \ + "height = " GST_VIDEO_SIZE_RANGE ", " \ + "framerate = " GST_VIDEO_FPS_RANGE + + +/* 24 bit */ + +#define GST_VIDEO_CAPS_RGB \ + __GST_VIDEO_CAPS_MAKE_24 (1, 2, 3) + +#define GST_VIDEO_CAPS_BGR \ + __GST_VIDEO_CAPS_MAKE_24 (3, 2, 1) + +/* 32 bit */ + +#define GST_VIDEO_CAPS_RGBx \ + __GST_VIDEO_CAPS_MAKE_32 (1, 2, 3) + +#define GST_VIDEO_CAPS_xRGB \ + __GST_VIDEO_CAPS_MAKE_32 (2, 3, 4) + +#define GST_VIDEO_CAPS_BGRx \ + __GST_VIDEO_CAPS_MAKE_32 (3, 2, 1) + +#define GST_VIDEO_CAPS_xBGR \ + __GST_VIDEO_CAPS_MAKE_32 (4, 3, 2) + +/* note: the macro name uses the order on BE systems */ +#if G_BYTE_ORDER == G_BIG_ENDIAN + #define GST_VIDEO_CAPS_xRGB_HOST_ENDIAN \ + GST_VIDEO_CAPS_xRGB + #define GST_VIDEO_CAPS_BGRx_HOST_ENDIAN \ + GST_VIDEO_CAPS_BGRx +#else + #define GST_VIDEO_CAPS_xRGB_HOST_ENDIAN \ + GST_VIDEO_CAPS_BGRx + #define GST_VIDEO_CAPS_BGRx_HOST_ENDIAN \ + GST_VIDEO_CAPS_xRGB +#endif + +/* 15/16 bit */ + +#define GST_VIDEO_CAPS_RGB_16 \ + "video/x-raw-rgb, " \ + "bpp = (int) 16, " \ + "depth = (int) 16, " \ + "endianness = (int) BYTE_ORDER, " \ + "red_mask = (int) " GST_VIDEO_RED_MASK_16 ", " \ + "green_mask = (int) " GST_VIDEO_GREEN_MASK_16 ", " \ + "blue_mask = (int) " GST_VIDEO_BLUE_MASK_16 ", " \ + "width = " GST_VIDEO_SIZE_RANGE ", " \ + "height = " GST_VIDEO_SIZE_RANGE ", " \ + "framerate = " GST_VIDEO_FPS_RANGE + +#define GST_VIDEO_CAPS_RGB_15 \ + "video/x-raw-rgb, " \ + "bpp = (int) 16, " \ + "depth = (int) 15, " \ + "endianness = (int) BYTE_ORDER, " \ + "red_mask = (int) " GST_VIDEO_RED_MASK_15 ", " \ + "green_mask = (int) " GST_VIDEO_GREEN_MASK_15 ", " \ + "blue_mask = (int) " GST_VIDEO_BLUE_MASK_15 ", " \ + "width = " GST_VIDEO_SIZE_RANGE ", " \ + "height = " GST_VIDEO_SIZE_RANGE ", " \ + "framerate = " GST_VIDEO_FPS_RANGE + +#define GST_VIDEO_CAPS_YUV(fourcc) \ + "video/x-raw-yuv, " \ + "format = (fourcc) " fourcc ", " \ + "width = " GST_VIDEO_SIZE_RANGE ", " \ + "height = " GST_VIDEO_SIZE_RANGE ", " \ + "framerate = " GST_VIDEO_FPS_RANGE /* functions */ gdouble gst_video_frame_rate (GstPad *pad); |