AOMedia AV1 Codec
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_AOM_IMAGE_H_
17 #define AOM_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 (9)
35 #define AOM_IMG_FMT_PLANAR 0x100
36 #define AOM_IMG_FMT_UV_FLIP 0x200
38 #define AOM_IMG_FMT_HIGHBITDEPTH 0x800
41 typedef enum aom_img_fmt {
42  AOM_IMG_FMT_NONE,
47  3,
53 #define AOM_HAVE_IMG_FMT_NV12 1
55  AOM_IMG_FMT_PLANAR | 7,
60 } aom_img_fmt_t;
63 typedef enum aom_color_primaries {
73  8,
96  10,
121  9,
125  12,
132 typedef enum aom_color_range {
169 
171 typedef struct aom_metadata_array aom_metadata_array_t;
172 
174 typedef struct aom_metadata {
175  uint32_t type;
176  uint8_t *payload;
177  size_t sz;
180 
182 typedef struct aom_image {
191  /* Image storage dimensions */
192  unsigned int w;
193  unsigned int h;
194  unsigned int bit_depth;
196  /* Image display dimensions */
197  unsigned int d_w;
198  unsigned int d_h;
200  /* Image intended rendering dimensions */
201  unsigned int r_w;
202  unsigned int r_h;
204  /* Chroma subsampling info */
205  unsigned int x_chroma_shift;
206  unsigned int y_chroma_shift;
208 /* Image data pointers. */
209 #define AOM_PLANE_PACKED 0
210 #define AOM_PLANE_Y 0
211 #define AOM_PLANE_U 1
212 #define AOM_PLANE_V 2
213  /* planes[AOM_PLANE_V] = NULL and stride[AOM_PLANE_V] = 0 when fmt ==
214  * AOM_IMG_FMT_NV12 */
215  unsigned char *planes[3];
216  int stride[3];
217  size_t sz;
219  int bps;
227  void *user_priv;
228 
229  /* The following members should be treated as private. */
230  unsigned char *img_data;
237  void *fb_priv;
238 } aom_image_t;
262  unsigned int d_w, unsigned int d_h,
263  unsigned int align);
264 
289 aom_image_t *aom_img_wrap(aom_image_t *img, aom_img_fmt_t fmt, unsigned int d_w,
290  unsigned int d_h, unsigned int align,
291  unsigned char *img_data);
292 
320  unsigned int d_w, unsigned int d_h,
321  unsigned int align,
322  unsigned int size_align,
323  unsigned int border);
324 
340 int aom_img_set_rect(aom_image_t *img, unsigned int x, unsigned int y,
341  unsigned int w, unsigned int h, unsigned int border);
342 
350 void aom_img_flip(aom_image_t *img);
351 
358 void aom_img_free(aom_image_t *img);
359 
367 int aom_img_plane_width(const aom_image_t *img, int plane);
368 
376 int aom_img_plane_height(const aom_image_t *img, int plane);
377 
393 int aom_img_add_metadata(aom_image_t *img, uint32_t type, const uint8_t *data,
395 
408  size_t index);
409 
421 size_t aom_img_num_metadata(const aom_image_t *img);
422 
431 
446 aom_metadata_t *aom_img_metadata_alloc(uint32_t type, const uint8_t *data,
447  size_t sz,
449 
456 void aom_img_metadata_free(aom_metadata_t *metadata);
457 
458 #ifdef __cplusplus
459 } // extern "C"
460 #endif
461 
462 #endif // AOM_AOM_AOM_IMAGE_H_
Definition: aom_image.h:91
unsigned char * img_data
Definition: aom_image.h:230
unsigned int d_h
Definition: aom_image.h:198
unsigned int r_w
Definition: aom_image.h:201
void * fb_priv
Definition: aom_image.h:237
Definition: aom_image.h:97
Definition: aom_image.h:128
Definition: aom_image.h:143
aom_matrix_coefficients_t mc
Definition: aom_image.h:186
Definition: aom_image.h:136
aom_chroma_sample_position
List of chroma sample positions.
Definition: aom_image.h:142
Definition: aom_image.h:71
enum aom_img_fmt aom_img_fmt_t
List of supported image formats.
Definition: aom_image.h:92
Definition: aom_image.h:120
aom_metadata_insert_flags_t insert_flag
Definition: aom_image.h:178
Definition: aom_image.h:70
Definition: aom_image.h:50
Definition: aom_image.h:86
Definition: aom_image.h:101
enum aom_color_primaries aom_color_primaries_t
List of supported color primaries.
Definition: aom_image.h:123
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:65
unsigned int y_chroma_shift
Definition: aom_image.h:206
enum aom_metadata_insert_flags aom_metadata_insert_flags_t
List of insert flags for Metadata.
Definition: aom_image.h:133
int aom_img_add_metadata(aom_image_t *img, uint32_t type, const uint8_t *data, size_t sz, aom_metadata_insert_flags_t insert_flag)
Add metadata to image.
Definition: aom_image.h:88
Definition: aom_image.h:77
Metadata payload.
Definition: aom_image.h:174
Definition: aom_image.h:49
int monochrome
Definition: aom_image.h:187
Image Descriptor.
Definition: aom_image.h:182
Definition: aom_image.h:127
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.
Definition: aom_image.h:59
Definition: aom_image.h:93
Definition: aom_image.h:75
unsigned int w
Definition: aom_image.h:192
void aom_img_metadata_free(aom_metadata_t *metadata)
Free metadata struct.
aom_color_primaries
List of supported color primaries.
Definition: aom_image.h:63
Definition: aom_image.h:144
Definition: aom_image.h:69
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:58
Definition: aom_image.h:103
Definition: aom_image.h:117
aom_metadata_insert_flags
List of insert flags for Metadata.
Definition: aom_image.h:164
Definition: aom_image.h:57
void aom_img_free(aom_image_t *img)
Close an image descriptor.
aom_transfer_characteristics_t tc
Definition: aom_image.h:185
Definition: aom_image.h:87
Definition: aom_image.h:100
Definition: aom_image.h:79
Definition: aom_image.h:95
aom_metadata_t * aom_img_metadata_alloc(uint32_t type, const uint8_t *data, size_t sz, aom_metadata_insert_flags_t insert_flag)
Allocate memory for aom_metadata struct.
Definition: aom_image.h:116
Definition: aom_image.h:113
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:232
Definition: aom_image.h:78
Definition: aom_image.h:104
struct aom_image aom_image_t
Image Descriptor.
uint32_t type
Definition: aom_image.h:175
int aom_img_plane_width(const aom_image_t *img, int plane)
Get the width of a plane.
Definition: aom_image.h:94
struct aom_metadata_array aom_metadata_array_t
Array of aom_metadata structs for an image.
Definition: aom_image.h:171
aom_metadata_array_t * metadata
Definition: aom_image.h:235
aom_chroma_sample_position_t csp
Definition: aom_image.h:188
Definition: aom_image.h:67
const aom_metadata_t * aom_img_get_metadata(const aom_image_t *img, size_t index)
Return a metadata payload stored within the image metadata array.
struct aom_metadata aom_metadata_t
Metadata payload.
aom_color_range
List of supported color range.
Definition: aom_image.h:132
uint8_t * payload
Definition: aom_image.h:176
Definition: aom_image.h:98
int aom_img_plane_height(const aom_image_t *img, int plane)
Get the height of a plane.
Definition: aom_image.h:64
Definition: aom_image.h:114
Definition: aom_image.h:115
unsigned int x_chroma_shift
Definition: aom_image.h:205
unsigned int h
Definition: aom_image.h:193
Definition: aom_image.h:119
size_t sz
Definition: aom_image.h:217
Definition: aom_image.h:166
#define AOM_IMG_FMT_PLANAR
Definition: aom_image.h:35
aom_transfer_characteristics
List of supported transfer functions.
Definition: aom_image.h:84
enum aom_color_range aom_color_range_t
List of supported color range.
Definition: aom_image.h:146
Definition: aom_image.h:102
Definition: aom_image.h:147
int bps
Definition: aom_image.h:219
Definition: aom_image.h:46
Definition: aom_image.h:56
enum aom_chroma_sample_position aom_chroma_sample_position_t
List of chroma sample positions.
Definition: aom_image.h:99
int temporal_id
Definition: aom_image.h:221
Definition: aom_image.h:112
Definition: aom_image.h:105
Definition: aom_image.h:68
void aom_img_flip(aom_image_t *img)
Flip the image vertically (top for bottom)
Definition: aom_image.h:122
Definition: aom_image.h:126
aom_color_range_t range
Definition: aom_image.h:189
Definition: aom_image.h:124
Definition: aom_image.h:90
int spatial_id
Definition: aom_image.h:222
Definition: aom_image.h:89
void aom_img_remove_metadata(aom_image_t *img)
Remove metadata from image.
Definition: aom_image.h:45
Definition: aom_image.h:72
Definition: aom_image.h:167
#define AOM_IMG_FMT_UV_FLIP
Definition: aom_image.h:36
Definition: aom_image.h:111
enum aom_transfer_characteristics aom_transfer_characteristics_t
List of supported transfer functions.
size_t aom_img_num_metadata(const aom_image_t *img)
Return the number of metadata blocks within the image.
Definition: aom_image.h:80
Definition: aom_image.h:85
Definition: aom_image.h:165
Definition: aom_image.h:118
Definition: aom_image.h:54
unsigned int bit_depth
Definition: aom_image.h:194
unsigned int r_h
Definition: aom_image.h:202
unsigned int d_w
Definition: aom_image.h:197
Definition: aom_image.h:66
Definition: aom_image.h:43
aom_matrix_coefficients
List of supported matrix coefficients.
Definition: aom_image.h:110
aom_img_fmt_t fmt
Definition: aom_image.h:183
Definition: aom_image.h:76
size_t sz
Definition: aom_image.h:177
Definition: aom_image.h:74
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.
void * user_priv
The following member may be set by the application to associate data with this image.
Definition: aom_image.h:227
aom_color_primaries_t cp
Definition: aom_image.h:184
int img_data_owner
Definition: aom_image.h:231