AOMedia Codec SDK
aom_image.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2016, Alliance for Open Media. All rights reserved
3  *
4  * This source code is subject to the terms of the BSD 2 Clause License and
5  * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6  * was not distributed with this source code in the LICENSE file, you can
7  * obtain it at www.aomedia.org/license/software. If the Alliance for Open
8  * Media Patent License 1.0 was not distributed with this source code in the
9  * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
10  */
11 
16 #ifndef AOM_AOM_IMAGE_H_
17 #define AOM_AOM_IMAGE_H_
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 #include "aom/aom_integer.h"
24 
33 #define AOM_IMAGE_ABI_VERSION (4)
35 #define AOM_IMG_FMT_PLANAR 0x100
36 #define AOM_IMG_FMT_UV_FLIP 0x200
37 #define AOM_IMG_FMT_HAS_ALPHA 0x400
38 #define AOM_IMG_FMT_HIGHBITDEPTH 0x800
41 typedef enum aom_img_fmt {
42  AOM_IMG_FMT_NONE,
47  3,
55 } aom_img_fmt_t;
58 typedef enum aom_color_primaries {
68  8,
91  10,
115  9,
119  12,
124 
126 typedef enum aom_color_range {
141 typedef struct aom_image {
150  /* Image storage dimensions */
151  unsigned int w;
152  unsigned int h;
153  unsigned int bit_depth;
155  /* Image display dimensions */
156  unsigned int d_w;
157  unsigned int d_h;
159  /* Image intended rendering dimensions */
160  unsigned int r_w;
161  unsigned int r_h;
163  /* Chroma subsampling info */
164  unsigned int x_chroma_shift;
165  unsigned int y_chroma_shift;
167 /* Image data pointers. */
168 #define AOM_PLANE_PACKED 0
169 #define AOM_PLANE_Y 0
170 #define AOM_PLANE_U 1
171 #define AOM_PLANE_V 2
172 #define AOM_PLANE_ALPHA 3
173  unsigned char *planes[4];
174  int stride[4];
175  size_t sz;
177  int bps;
179  int temporal_id;
180  int spatial_id;
185  void *user_priv;
186 
187  /* The following members should be treated as private. */
188  unsigned char *img_data;
192  void *fb_priv;
193 } aom_image_t;
196 typedef struct aom_image_rect {
197  unsigned int x;
198  unsigned int y;
199  unsigned int w;
200  unsigned int h;
222  unsigned int d_w, unsigned int d_h,
223  unsigned int align);
224 
244 aom_image_t *aom_img_wrap(aom_image_t *img, aom_img_fmt_t fmt, unsigned int d_w,
245  unsigned int d_h, unsigned int align,
246  unsigned char *img_data);
247 
270  unsigned int d_w, unsigned int d_h,
271  unsigned int align,
272  unsigned int size_align,
273  unsigned int border);
274 
289 int aom_img_set_rect(aom_image_t *img, unsigned int x, unsigned int y,
290  unsigned int w, unsigned int h, unsigned int border);
291 
299 void aom_img_flip(aom_image_t *img);
300 
307 void aom_img_free(aom_image_t *img);
308 
316 int aom_img_plane_width(const aom_image_t *img, int plane);
317 
325 int aom_img_plane_height(const aom_image_t *img, int plane);
326 
327 #ifdef __cplusplus
328 } // extern "C"
329 #endif
330 
331 #endif // AOM_AOM_IMAGE_H_
Definition: aom_image.h:86
unsigned char * img_data
Definition: aom_image.h:188
unsigned int d_h
Definition: aom_image.h:157
unsigned int r_w
Definition: aom_image.h:160
void * fb_priv
Definition: aom_image.h:192
#define AOM_IMG_FMT_HAS_ALPHA
Definition: aom_image.h:37
Definition: aom_image.h:92
Definition: aom_image.h:122
Definition: aom_image.h:133
aom_matrix_coefficients_t mc
Definition: aom_image.h:145
Definition: aom_image.h:128
aom_chroma_sample_position
List of chroma sample positions.
Definition: aom_image.h:132
Definition: aom_image.h:66
enum aom_img_fmt aom_img_fmt_t
List of supported image formats.
unsigned int h
Definition: aom_image.h:200
Definition: aom_image.h:87
Definition: aom_image.h:114
unsigned int w
Definition: aom_image.h:199
Definition: aom_image.h:65
Definition: aom_image.h:50
Definition: aom_image.h:81
Definition: aom_image.h:96
enum aom_color_primaries aom_color_primaries_t
List of supported color primaries.
Definition: aom_image.h:117
Definition: aom_image.h:48
enum aom_matrix_coefficients aom_matrix_coefficients_t
List of supported matrix coefficients.
#define AOM_IMG_FMT_HIGHBITDEPTH
Definition: aom_image.h:38
Definition: aom_image.h:60
unsigned int y_chroma_shift
Definition: aom_image.h:165
Definition: aom_image.h:127
Definition: aom_image.h:83
Definition: aom_image.h:72
Definition: aom_image.h:49
int monochrome
Definition: aom_image.h:146
Image Descriptor.
Definition: aom_image.h:141
Definition: aom_image.h:121
aom_image_t * aom_img_alloc(aom_image_t *img, aom_img_fmt_t fmt, unsigned int d_w, unsigned int d_h, unsigned int align)
Open a descriptor, allocating storage for the underlying image.
Representation of a rectangle on a surface.
Definition: aom_image.h:196
Definition: aom_image.h:54
Definition: aom_image.h:88
Definition: aom_image.h:70
unsigned int w
Definition: aom_image.h:151
aom_color_primaries
List of supported color primaries.
Definition: aom_image.h:58
Definition: aom_image.h:134
Definition: aom_image.h:64
aom_image_t * aom_img_alloc_with_border(aom_image_t *img, aom_img_fmt_t fmt, unsigned int d_w, unsigned int d_h, unsigned int align, unsigned int size_align, unsigned int border)
Open a descriptor, allocating storage for the underlying image with a border.
Definition: aom_image.h:53
Definition: aom_image.h:98
Definition: aom_image.h:111
void aom_img_free(aom_image_t *img)
Close an image descriptor.
Definition: aom_image.h:51
aom_transfer_characteristics_t tc
Definition: aom_image.h:144
Definition: aom_image.h:82
Definition: aom_image.h:95
Definition: aom_image.h:74
Definition: aom_image.h:90
Definition: aom_image.h:110
Definition: aom_image.h:107
aom_image_t * aom_img_wrap(aom_image_t *img, aom_img_fmt_t fmt, unsigned int d_w, unsigned int d_h, unsigned int align, unsigned char *img_data)
Open a descriptor, using existing storage for the underlying image.
int self_allocd
Definition: aom_image.h:190
Definition: aom_image.h:73
Definition: aom_image.h:99
struct aom_image aom_image_t
Image Descriptor.
struct aom_image_rect aom_image_rect_t
Representation of a rectangle on a surface.
int aom_img_plane_width(const aom_image_t *img, int plane)
Get the width of a plane.
Definition: aom_image.h:89
aom_chroma_sample_position_t csp
Definition: aom_image.h:147
Definition: aom_image.h:62
aom_color_range
List of supported color range.
Definition: aom_image.h:126
unsigned int x
Definition: aom_image.h:197
Definition: aom_image.h:93
int aom_img_plane_height(const aom_image_t *img, int plane)
Get the height of a plane.
Definition: aom_image.h:59
Definition: aom_image.h:108
Definition: aom_image.h:109
unsigned int x_chroma_shift
Definition: aom_image.h:164
unsigned int h
Definition: aom_image.h:152
Definition: aom_image.h:113
#define AOM_IMG_FMT_PLANAR
Definition: aom_image.h:35
aom_transfer_characteristics
List of supported transfer functions.
Definition: aom_image.h:79
enum aom_color_range aom_color_range_t
List of supported color range.
Definition: aom_image.h:136
Definition: aom_image.h:97
Definition: aom_image.h:137
unsigned int y
Definition: aom_image.h:198
Definition: aom_image.h:46
Definition: aom_image.h:52
enum aom_chroma_sample_position aom_chroma_sample_position_t
List of chroma sample positions.
Definition: aom_image.h:94
Definition: aom_image.h:106
Definition: aom_image.h:100
Definition: aom_image.h:63
void aom_img_flip(aom_image_t *img)
Flip the image vertically (top for bottom)
Definition: aom_image.h:116
Definition: aom_image.h:120
aom_color_range_t range
Definition: aom_image.h:148
Definition: aom_image.h:118
Definition: aom_image.h:85
Definition: aom_image.h:84
Definition: aom_image.h:45
Definition: aom_image.h:67
#define AOM_IMG_FMT_UV_FLIP
Definition: aom_image.h:36
Definition: aom_image.h:105
enum aom_transfer_characteristics aom_transfer_characteristics_t
List of supported transfer functions.
Definition: aom_image.h:75
Definition: aom_image.h:80
Definition: aom_image.h:112
unsigned int bit_depth
Definition: aom_image.h:153
unsigned int r_h
Definition: aom_image.h:161
unsigned int d_w
Definition: aom_image.h:156
Definition: aom_image.h:61
Definition: aom_image.h:43
aom_matrix_coefficients
List of supported matrix coefficients.
Definition: aom_image.h:104
aom_img_fmt_t fmt
Definition: aom_image.h:142
Definition: aom_image.h:71
Definition: aom_image.h:69
int aom_img_set_rect(aom_image_t *img, unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned int border)
Set the rectangle identifying the displayed portion of the image.
aom_color_primaries_t cp
Definition: aom_image.h:143
int img_data_owner
Definition: aom_image.h:189