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
20extern "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
129
167
169typedef struct aom_metadata_array aom_metadata_array_t;
170
178
180typedef struct aom_image {
189 /* Image storage dimensions */
190 unsigned int w;
191 unsigned int h;
192 unsigned int bit_depth;
194 /* Image display dimensions */
195 unsigned int d_w;
196 unsigned int d_h;
198 /* Image intended rendering dimensions */
199 unsigned int r_w;
200 unsigned int r_h;
202 /* Chroma subsampling info */
203 unsigned int x_chroma_shift;
204 unsigned int y_chroma_shift;
206/* Image data pointers. */
207#define AOM_PLANE_PACKED 0
208#define AOM_PLANE_Y 0
209#define AOM_PLANE_U 1
210#define AOM_PLANE_V 2
211 /* planes[AOM_PLANE_V] = NULL and stride[AOM_PLANE_V] = 0 when fmt ==
212 * AOM_IMG_FMT_NV12 */
213 unsigned char *planes[3];
214 int stride[3];
215 size_t sz;
217 int bps;
226
227 /* The following members should be treated as private. */
228 unsigned char *img_data;
235 void *fb_priv;
260 unsigned int d_w, unsigned int d_h,
261 unsigned int align);
262
286 unsigned int d_h, unsigned int align,
287 unsigned char *img_data);
288
316 unsigned int d_w, unsigned int d_h,
317 unsigned int align,
318 unsigned int size_align,
319 unsigned int border);
320
336int aom_img_set_rect(aom_image_t *img, unsigned int x, unsigned int y,
337 unsigned int w, unsigned int h, unsigned int border);
338
347
355
363int aom_img_plane_width(const aom_image_t *img, int plane);
364
372int aom_img_plane_height(const aom_image_t *img, int plane);
373
389int aom_img_add_metadata(aom_image_t *img, uint32_t type, const uint8_t *data,
390 size_t sz, aom_metadata_insert_flags_t insert_flag);
391
404 size_t index);
405
418
427
442aom_metadata_t *aom_img_metadata_alloc(uint32_t type, const uint8_t *data,
443 size_t sz,
444 aom_metadata_insert_flags_t insert_flag);
445
453
454#ifdef __cplusplus
455} // extern "C"
456#endif
457
458#endif // AOM_AOM_AOM_IMAGE_H_
aom_metadata_insert_flags
List of insert flags for Metadata.
Definition aom_image.h:162
@ AOM_MIF_KEY_FRAME
Definition aom_image.h:164
@ AOM_MIF_ANY_FRAME
Definition aom_image.h:165
@ AOM_MIF_NON_KEY_FRAME
Definition aom_image.h:163
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.
enum aom_metadata_insert_flags aom_metadata_insert_flags_t
List of insert flags for Metadata.
aom_chroma_sample_position
List of chroma sample positions.
Definition aom_image.h:141
@ AOM_CSP_COLOCATED
Definition aom_image.h:145
@ AOM_CSP_UNKNOWN
Definition aom_image.h:142
@ AOM_CSP_RESERVED
Definition aom_image.h:146
@ AOM_CSP_VERTICAL
Definition aom_image.h:143
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.
void aom_img_flip(aom_image_t *img)
Flip the image vertically (top for bottom)
enum aom_chroma_sample_position aom_chroma_sample_position_t
List of chroma sample positions.
aom_transfer_characteristics
List of supported transfer functions.
Definition aom_image.h:84
@ AOM_CICP_TC_BT_2020_10_BIT
Definition aom_image.h:100
@ AOM_CICP_TC_RESERVED_19
Definition aom_image.h:105
@ AOM_CICP_TC_RESERVED_0
Definition aom_image.h:85
@ AOM_CICP_TC_BT_470_M
Definition aom_image.h:89
@ AOM_CICP_TC_HLG
Definition aom_image.h:104
@ AOM_CICP_TC_SMPTE_428
Definition aom_image.h:103
@ AOM_CICP_TC_RESERVED_3
Definition aom_image.h:88
@ AOM_CICP_TC_LOG_100
Definition aom_image.h:94
@ AOM_CICP_TC_IEC_61966
Definition aom_image.h:97
@ AOM_CICP_TC_BT_601
Definition aom_image.h:91
@ AOM_CICP_TC_BT_470_B_G
Definition aom_image.h:90
@ AOM_CICP_TC_LOG_100_SQRT10
Definition aom_image.h:95
@ AOM_CICP_TC_UNSPECIFIED
Definition aom_image.h:87
@ AOM_CICP_TC_SRGB
Definition aom_image.h:99
@ AOM_CICP_TC_LINEAR
Definition aom_image.h:93
@ AOM_CICP_TC_SMPTE_2084
Definition aom_image.h:102
@ AOM_CICP_TC_SMPTE_240
Definition aom_image.h:92
@ AOM_CICP_TC_BT_1361
Definition aom_image.h:98
@ AOM_CICP_TC_BT_2020_12_BIT
Definition aom_image.h:101
@ AOM_CICP_TC_BT_709
Definition aom_image.h:86
struct aom_metadata_array aom_metadata_array_t
Array of aom_metadata structs for an image.
Definition aom_image.h:169
enum aom_transfer_characteristics aom_transfer_characteristics_t
List of supported transfer functions.
aom_color_primaries
List of supported color primaries.
Definition aom_image.h:63
@ AOM_CICP_CP_UNSPECIFIED
Definition aom_image.h:66
@ AOM_CICP_CP_SMPTE_240
Definition aom_image.h:71
@ AOM_CICP_CP_SMPTE_432
Definition aom_image.h:77
@ AOM_CICP_CP_RESERVED_23
Definition aom_image.h:80
@ AOM_CICP_CP_BT_601
Definition aom_image.h:70
@ AOM_CICP_CP_RESERVED_13
Definition aom_image.h:78
@ AOM_CICP_CP_SMPTE_431
Definition aom_image.h:76
@ AOM_CICP_CP_BT_470_M
Definition aom_image.h:68
@ AOM_CICP_CP_XYZ
Definition aom_image.h:75
@ AOM_CICP_CP_BT_2020
Definition aom_image.h:74
@ AOM_CICP_CP_RESERVED_0
Definition aom_image.h:64
@ AOM_CICP_CP_BT_470_B_G
Definition aom_image.h:69
@ AOM_CICP_CP_GENERIC_FILM
Definition aom_image.h:72
@ AOM_CICP_CP_BT_709
Definition aom_image.h:65
@ AOM_CICP_CP_EBU_3213
Definition aom_image.h:79
@ AOM_CICP_CP_RESERVED_3
Definition aom_image.h:67
enum aom_color_range aom_color_range_t
List of supported color range.
#define AOM_IMG_FMT_HIGHBITDEPTH
Definition aom_image.h:38
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.
aom_matrix_coefficients
List of supported matrix coefficients.
Definition aom_image.h:109
@ AOM_CICP_MC_UNSPECIFIED
Definition aom_image.h:112
@ AOM_CICP_MC_BT_601
Definition aom_image.h:116
@ AOM_CICP_MC_IDENTITY
Definition aom_image.h:110
@ AOM_CICP_MC_RESERVED_15
Definition aom_image.h:127
@ AOM_CICP_MC_CHROMAT_NCL
Definition aom_image.h:123
@ AOM_CICP_MC_BT_2020_CL
Definition aom_image.h:121
@ AOM_CICP_MC_SMPTE_2085
Definition aom_image.h:122
@ AOM_CICP_MC_SMPTE_240
Definition aom_image.h:117
@ AOM_CICP_MC_RESERVED_3
Definition aom_image.h:113
@ AOM_CICP_MC_ICTCP
Definition aom_image.h:126
@ AOM_CICP_MC_SMPTE_YCGCO
Definition aom_image.h:118
@ AOM_CICP_MC_CHROMAT_CL
Definition aom_image.h:125
@ AOM_CICP_MC_BT_709
Definition aom_image.h:111
@ AOM_CICP_MC_BT_2020_NCL
Definition aom_image.h:119
@ AOM_CICP_MC_FCC
Definition aom_image.h:114
@ AOM_CICP_MC_BT_470_B_G
Definition aom_image.h:115
size_t aom_img_num_metadata(const aom_image_t *img)
Return the number of metadata blocks within the image.
#define AOM_IMG_FMT_PLANAR
Definition aom_image.h:35
void aom_img_remove_metadata(aom_image_t *img)
Remove metadata from image.
enum aom_color_primaries aom_color_primaries_t
List of supported color primaries.
aom_img_fmt
List of supported image formats.
Definition aom_image.h:41
@ AOM_IMG_FMT_I42216
Definition aom_image.h:58
@ AOM_IMG_FMT_I42016
Definition aom_image.h:56
@ AOM_IMG_FMT_AOMI420
Definition aom_image.h:48
@ AOM_IMG_FMT_YV1216
Definition aom_image.h:57
@ AOM_IMG_FMT_I444
Definition aom_image.h:50
@ AOM_IMG_FMT_I422
Definition aom_image.h:49
@ AOM_IMG_FMT_I44416
Definition aom_image.h:59
@ AOM_IMG_FMT_I420
Definition aom_image.h:45
@ AOM_IMG_FMT_NV12
Definition aom_image.h:54
@ AOM_IMG_FMT_YV12
Definition aom_image.h:43
@ AOM_IMG_FMT_AOMYV12
Definition aom_image.h:46
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.
enum aom_matrix_coefficients aom_matrix_coefficients_t
List of supported matrix coefficients.
enum aom_img_fmt aom_img_fmt_t
List of supported image formats.
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.
struct aom_metadata aom_metadata_t
Metadata payload.
int aom_img_plane_height(const aom_image_t *img, int plane)
Get the height of a plane.
void aom_img_metadata_free(aom_metadata_t *metadata)
Free metadata struct.
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.
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.
aom_color_range
List of supported color range.
Definition aom_image.h:131
@ AOM_CR_STUDIO_RANGE
Definition aom_image.h:132
@ AOM_CR_FULL_RANGE
Definition aom_image.h:135
int aom_img_plane_width(const aom_image_t *img, int plane)
Get the width of a plane.
#define AOM_IMG_FMT_UV_FLIP
Definition aom_image.h:36
struct aom_image aom_image_t
Image Descriptor.
void aom_img_free(aom_image_t *img)
Close an image descriptor.
Image Descriptor.
Definition aom_image.h:180
int temporal_id
Definition aom_image.h:219
int spatial_id
Definition aom_image.h:220
unsigned int h
Definition aom_image.h:191
unsigned int bit_depth
Definition aom_image.h:192
aom_matrix_coefficients_t mc
Definition aom_image.h:184
aom_chroma_sample_position_t csp
Definition aom_image.h:186
void * user_priv
The following member may be set by the application to associate data with this image.
Definition aom_image.h:225
unsigned int y_chroma_shift
Definition aom_image.h:204
unsigned int w
Definition aom_image.h:190
aom_img_fmt_t fmt
Definition aom_image.h:181
int stride[3]
Definition aom_image.h:214
unsigned char * img_data
Definition aom_image.h:228
unsigned int x_chroma_shift
Definition aom_image.h:203
unsigned int d_w
Definition aom_image.h:195
int bps
Definition aom_image.h:217
unsigned int r_w
Definition aom_image.h:199
aom_transfer_characteristics_t tc
Definition aom_image.h:183
unsigned int r_h
Definition aom_image.h:200
void * fb_priv
Definition aom_image.h:235
int monochrome
Definition aom_image.h:185
unsigned int d_h
Definition aom_image.h:196
aom_color_range_t range
Definition aom_image.h:187
unsigned char * planes[3]
Definition aom_image.h:213
int img_data_owner
Definition aom_image.h:229
int self_allocd
Definition aom_image.h:230
aom_color_primaries_t cp
Definition aom_image.h:182
size_t sz
Definition aom_image.h:215
aom_metadata_array_t * metadata
Definition aom_image.h:233
Metadata payload.
Definition aom_image.h:172
uint32_t type
Definition aom_image.h:173
uint8_t * payload
Definition aom_image.h:174
aom_metadata_insert_flags_t insert_flag
Definition aom_image.h:176
size_t sz
Definition aom_image.h:175