Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00016 #ifdef __cplusplus
00017 extern "C" {
00018 #endif
00019
00020 #ifndef VPX_IMAGE_H
00021 #define VPX_IMAGE_H
00022
00031 #define VPX_IMAGE_ABI_VERSION (1)
00034 #define VPX_IMG_FMT_PLANAR 0x100
00035 #define VPX_IMG_FMT_UV_FLIP 0x200
00036 #define VPX_IMG_FMT_HAS_ALPHA 0x400
00040 typedef enum vpx_img_fmt {
00041 VPX_IMG_FMT_NONE,
00042 VPX_IMG_FMT_RGB24,
00043 VPX_IMG_FMT_RGB32,
00044 VPX_IMG_FMT_RGB565,
00045 VPX_IMG_FMT_RGB555,
00046 VPX_IMG_FMT_UYVY,
00047 VPX_IMG_FMT_YUY2,
00048 VPX_IMG_FMT_YVYU,
00049 VPX_IMG_FMT_BGR24,
00050 VPX_IMG_FMT_RGB32_LE,
00051 VPX_IMG_FMT_ARGB,
00052 VPX_IMG_FMT_ARGB_LE,
00053 VPX_IMG_FMT_RGB565_LE,
00054 VPX_IMG_FMT_RGB555_LE,
00055 VPX_IMG_FMT_YV12 = VPX_IMG_FMT_PLANAR | VPX_IMG_FMT_UV_FLIP | 1,
00056 VPX_IMG_FMT_I420 = VPX_IMG_FMT_PLANAR | 2,
00057 VPX_IMG_FMT_VPXYV12 = VPX_IMG_FMT_PLANAR | VPX_IMG_FMT_UV_FLIP | 3,
00058 VPX_IMG_FMT_VPXI420 = VPX_IMG_FMT_PLANAR | 4
00059 }
00060 vpx_img_fmt_t;
00062 #if !defined(VPX_CODEC_DISABLE_COMPAT) || !VPX_CODEC_DISABLE_COMPAT
00063 #define IMG_FMT_PLANAR VPX_IMG_FMT_PLANAR
00064 #define IMG_FMT_UV_FLIP VPX_IMG_FMT_UV_FLIP
00065 #define IMG_FMT_HAS_ALPHA VPX_IMG_FMT_HAS_ALPHA
00070 #define img_fmt vpx_img_fmt
00071
00074 #define img_fmt_t vpx_img_fmt_t
00075
00076 #define IMG_FMT_NONE VPX_IMG_FMT_NONE
00077 #define IMG_FMT_RGB24 VPX_IMG_FMT_RGB24
00078 #define IMG_FMT_RGB32 VPX_IMG_FMT_RGB32
00079 #define IMG_FMT_RGB565 VPX_IMG_FMT_RGB565
00080 #define IMG_FMT_RGB555 VPX_IMG_FMT_RGB555
00081 #define IMG_FMT_UYVY VPX_IMG_FMT_UYVY
00082 #define IMG_FMT_YUY2 VPX_IMG_FMT_YUY2
00083 #define IMG_FMT_YVYU VPX_IMG_FMT_YVYU
00084 #define IMG_FMT_BGR24 VPX_IMG_FMT_BGR24
00085 #define IMG_FMT_RGB32_LE VPX_IMG_FMT_RGB32_LE
00086 #define IMG_FMT_ARGB VPX_IMG_FMT_ARGB
00087 #define IMG_FMT_ARGB_LE VPX_IMG_FMT_ARGB_LE
00088 #define IMG_FMT_RGB565_LE VPX_IMG_FMT_RGB565_LE
00089 #define IMG_FMT_RGB555_LE VPX_IMG_FMT_RGB555_LE
00090 #define IMG_FMT_YV12 VPX_IMG_FMT_YV12
00091 #define IMG_FMT_I420 VPX_IMG_FMT_I420
00092 #define IMG_FMT_VPXYV12 VPX_IMG_FMT_VPXYV12
00093 #define IMG_FMT_VPXI420 VPX_IMG_FMT_VPXI420
00094 #endif
00095
00097 typedef struct vpx_image
00098 {
00099 vpx_img_fmt_t fmt;
00101
00102 unsigned int w;
00103 unsigned int h;
00105
00106 unsigned int d_w;
00107 unsigned int d_h;
00109
00110 unsigned int x_chroma_shift;
00111 unsigned int y_chroma_shift;
00113
00114 #define VPX_PLANE_PACKED 0
00115 #define VPX_PLANE_Y 0
00116 #define VPX_PLANE_U 1
00117 #define VPX_PLANE_V 2
00118 #define VPX_PLANE_ALPHA 3
00119 #if !defined(VPX_CODEC_DISABLE_COMPAT) || !VPX_CODEC_DISABLE_COMPAT
00120 #define PLANE_PACKED VPX_PLANE_PACKED
00121 #define PLANE_Y VPX_PLANE_Y
00122 #define PLANE_U VPX_PLANE_U
00123 #define PLANE_V VPX_PLANE_V
00124 #define PLANE_ALPHA VPX_PLANE_ALPHA
00125 #endif
00126 unsigned char *planes[4];
00127 int stride[4];
00129 int bps;
00131
00132
00133
00134 void *user_priv;
00137
00138 unsigned char *img_data;
00139 int img_data_owner;
00140 int self_allocd;
00141 } vpx_image_t;
00144 typedef struct vpx_image_rect
00145 {
00146 unsigned int x;
00147 unsigned int y;
00148 unsigned int w;
00149 unsigned int h;
00150 } vpx_image_rect_t;
00170 vpx_image_t *vpx_img_alloc(vpx_image_t *img,
00171 vpx_img_fmt_t fmt,
00172 unsigned int d_w,
00173 unsigned int d_h,
00174 unsigned int align);
00175
00195 vpx_image_t *vpx_img_wrap(vpx_image_t *img,
00196 vpx_img_fmt_t fmt,
00197 unsigned int d_w,
00198 unsigned int d_h,
00199 unsigned int align,
00200 unsigned char *img_data);
00201
00202
00216 int vpx_img_set_rect(vpx_image_t *img,
00217 unsigned int x,
00218 unsigned int y,
00219 unsigned int w,
00220 unsigned int h);
00221
00222
00230 void vpx_img_flip(vpx_image_t *img);
00231
00238 void vpx_img_free(vpx_image_t *img);
00239
00240 #endif
00241 #ifdef __cplusplus
00242 }
00243 #endif