AOMedia AV1 Codec: aom/aomdx.h Source File

| AOMedia AV1 Codec

aomdx.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
21 #ifndef AOM_AOM_AOMDX_H_
22 #define AOM_AOM_AOMDX_H_
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27
28 /* Include controls common to both the encoder and decoder */
29 #include "aom/aom.h"
30
41 extern aom_codec_iface_t aom_codec_av1_dx_algo;
44 extern aom_codec_iface_t *aom_codec_av1_dx(void);
45
50 typedef struct Accounting Accounting;
51
52 #ifndef AOM_INSPECTION_H_
55 typedef void (*aom_inspect_cb)(void *decoder, void *ctx);
56
57 #endif
58
64 typedef struct aom_inspect_init {
66 aom_inspect_cb inspect_cb;
67
69 void *inspect_ctx;
70 } aom_inspect_init;
71
78 typedef struct {
80 const unsigned char *buf;
82 int idx;
84 int show_existing;
85 } Av1DecodeReturn;
86
91 typedef struct aom_tile_data {
93 size_t coded_tile_data_size;
95 const void *coded_tile_data;
97 size_t extra_size;
98 } aom_tile_data;
99
107 #define AOM_MAX_TILE_COLS 64
115 #define AOM_MAX_TILE_ROWS 64
116
123 typedef struct aom_tile_info {
125 int tile_columns;
127 int tile_rows;
129 int tile_widths[AOM_MAX_TILE_COLS];
131 int tile_heights[AOM_MAX_TILE_ROWS];
133 int num_tile_groups;
134 } aom_tile_info;
135
141 typedef struct aom_still_picture_info {
143 int is_still_picture;
145 int is_reduced_still_picture_hdr;
146 } aom_still_picture_info;
147
153 typedef struct aom_s_frame_info {
155 int is_s_frame;
157 int is_s_frame_at_altref;
158 } aom_s_frame_info;
159
166 typedef struct aom_screen_content_tools_info {
168 int allow_screen_content_tools;
170 int allow_intrabc;
172 int force_integer_mv;
173 } aom_screen_content_tools_info;
174
179 typedef struct av1_ext_ref_frame {
181 aom_image_t *img;
183 int num;
184 } av1_ext_ref_frame_t;
185
195 enum aom_dec_control_id {
199 AOMD_GET_LAST_REF_UPDATES = AOM_DECODER_CTRL_ID_START,
200
204 AOMD_GET_FRAME_CORRUPTED,
205
209 AOMD_GET_LAST_REF_USED,
210
216 AV1D_GET_FRAME_SIZE,
217
223 AV1D_GET_DISPLAY_SIZE,
224
228 AV1D_GET_BIT_DEPTH,
229
233 AV1D_GET_IMG_FORMAT,
234
237 AV1D_GET_TILE_SIZE,
238
242 AV1D_GET_TILE_COUNT,
243
251 AV1_SET_BYTE_ALIGNMENT,
252
263 AV1_INVERT_TILE_DECODE_ORDER,
264
272 AV1_SET_SKIP_LOOP_FILTER,
273
284 AV1_GET_ACCOUNTING,
285
291 AOMD_GET_LAST_QUANTIZER,
292
301 AV1_SET_DECODE_TILE_ROW,
302 AV1_SET_DECODE_TILE_COL,
303
309 AV1_SET_TILE_MODE,
310
314 AV1D_GET_FRAME_HEADER_INFO,
315
319 AV1D_GET_TILE_DATA,
320
327 AV1D_SET_EXT_REF_PTR,
328
332 AV1D_EXT_TILE_DEBUG,
333
340 AV1D_SET_ROW_MT,
341
345 AV1D_SET_IS_ANNEXB,
346
355 AV1D_SET_OPERATING_POINT,
356
367 AV1D_SET_OUTPUT_ALL_LAYERS,
368
375 AV1_SET_INSPECTION_CALLBACK,
376
383 AV1D_SET_SKIP_FILM_GRAIN,
384
387 AOMD_GET_FWD_KF_PRESENT,
388
392 AOMD_GET_FRAME_FLAGS,
393
395 AOMD_GET_ALTREF_PRESENT,
396
400 AOMD_GET_TILE_INFO,
401
407 AOMD_GET_SCREEN_CONTENT_TOOLS_INFO,
408
411 AOMD_GET_STILL_PICTURE,
412
418 AOMD_GET_SB_SIZE,
419
423 AOMD_GET_SHOW_EXISTING_FRAME_FLAG,
424
427 AOMD_GET_S_FRAME_INFO,
428 };
429
442 AOM_CTRL_USE_TYPE(AOMD_GET_LAST_REF_UPDATES, int *)
443 #define AOM_CTRL_AOMD_GET_LAST_REF_UPDATES
444
445 AOM_CTRL_USE_TYPE(AOMD_GET_FRAME_CORRUPTED, int *)
446 #define AOM_CTRL_AOMD_GET_FRAME_CORRUPTED
447
448 AOM_CTRL_USE_TYPE(AOMD_GET_LAST_REF_USED, int *)
449 #define AOM_CTRL_AOMD_GET_LAST_REF_USED
450
451 AOM_CTRL_USE_TYPE(AOMD_GET_LAST_QUANTIZER, int *)
452 #define AOM_CTRL_AOMD_GET_LAST_QUANTIZER
453
454 AOM_CTRL_USE_TYPE(AOMD_GET_FWD_KF_PRESENT, int *)
455 #define AOM_CTRL_AOMD_GET_FWD_KF_PRESENT
456
457 AOM_CTRL_USE_TYPE(AOMD_GET_ALTREF_PRESENT, int *)
458 #define AOM_CTRL_AOMD_GET_ALTREF_PRESENT
459
460 AOM_CTRL_USE_TYPE(AOMD_GET_FRAME_FLAGS, int *)
461 #define AOM_CTRL_AOMD_GET_FRAME_FLAGS
462
463 AOM_CTRL_USE_TYPE(AOMD_GET_TILE_INFO, aom_tile_info *)
464 #define AOM_CTRL_AOMD_GET_TILE_INFO
465
466 AOM_CTRL_USE_TYPE(AOMD_GET_SCREEN_CONTENT_TOOLS_INFO,
467 aom_screen_content_tools_info *)
468 #define AOM_CTRL_AOMD_GET_SCREEN_CONTENT_TOOLS_INFO
469
470 AOM_CTRL_USE_TYPE(AOMD_GET_STILL_PICTURE, aom_still_picture_info *)
471 #define AOM_CTRL_AOMD_GET_STILL_PICTURE
472
473 AOM_CTRL_USE_TYPE(AOMD_GET_SB_SIZE, aom_superblock_size_t *)
474 #define AOMD_CTRL_AOMD_GET_SB_SIZE
475
476 AOM_CTRL_USE_TYPE(AOMD_GET_SHOW_EXISTING_FRAME_FLAG, int *)
477 #define AOMD_CTRL_AOMD_GET_SHOW_EXISTING_FRAME_FLAG
478
479 AOM_CTRL_USE_TYPE(AOMD_GET_S_FRAME_INFO, aom_s_frame_info *)
480 #define AOMD_CTRL_AOMD_GET_S_FRAME_INFO
481
482 AOM_CTRL_USE_TYPE(AV1D_GET_DISPLAY_SIZE, int *)
483 #define AOM_CTRL_AV1D_GET_DISPLAY_SIZE
484
485 AOM_CTRL_USE_TYPE(AV1D_GET_BIT_DEPTH, unsigned int *)
486 #define AOM_CTRL_AV1D_GET_BIT_DEPTH
487
488 AOM_CTRL_USE_TYPE(AV1D_GET_IMG_FORMAT, aom_img_fmt_t *)
489 #define AOM_CTRL_AV1D_GET_IMG_FORMAT
490
491 AOM_CTRL_USE_TYPE(AV1D_GET_TILE_SIZE, unsigned int *)
492 #define AOM_CTRL_AV1D_GET_TILE_SIZE
493
494 AOM_CTRL_USE_TYPE(AV1D_GET_TILE_COUNT, unsigned int *)
495 #define AOM_CTRL_AV1D_GET_TILE_COUNT
496
497 AOM_CTRL_USE_TYPE(AV1D_GET_FRAME_SIZE, int *)
498 #define AOM_CTRL_AV1D_GET_FRAME_SIZE
499
500 AOM_CTRL_USE_TYPE(AV1_INVERT_TILE_DECODE_ORDER, int)
501 #define AOM_CTRL_AV1_INVERT_TILE_DECODE_ORDER
502
503 AOM_CTRL_USE_TYPE(AV1_GET_ACCOUNTING, Accounting **)
504 #define AOM_CTRL_AV1_GET_ACCOUNTING
505
506 AOM_CTRL_USE_TYPE(AV1_SET_DECODE_TILE_ROW, int)
507 #define AOM_CTRL_AV1_SET_DECODE_TILE_ROW
508
509 AOM_CTRL_USE_TYPE(AV1_SET_DECODE_TILE_COL, int)
510 #define AOM_CTRL_AV1_SET_DECODE_TILE_COL
511
512 AOM_CTRL_USE_TYPE(AV1_SET_TILE_MODE, unsigned int)
513 #define AOM_CTRL_AV1_SET_TILE_MODE
514
515 AOM_CTRL_USE_TYPE(AV1D_GET_FRAME_HEADER_INFO, aom_tile_data *)
516 #define AOM_CTRL_AV1D_GET_FRAME_HEADER_INFO
517
518 AOM_CTRL_USE_TYPE(AV1D_GET_TILE_DATA, aom_tile_data *)
519 #define AOM_CTRL_AV1D_GET_TILE_DATA
520
521 AOM_CTRL_USE_TYPE(AV1D_SET_EXT_REF_PTR, av1_ext_ref_frame_t *)
522 #define AOM_CTRL_AV1D_SET_EXT_REF_PTR
523
524 AOM_CTRL_USE_TYPE(AV1D_EXT_TILE_DEBUG, unsigned int)
525 #define AOM_CTRL_AV1D_EXT_TILE_DEBUG
526
527 AOM_CTRL_USE_TYPE(AV1D_SET_ROW_MT, unsigned int)
528 #define AOM_CTRL_AV1D_SET_ROW_MT
529
530 AOM_CTRL_USE_TYPE(AV1D_SET_SKIP_FILM_GRAIN, int)
531 #define AOM_CTRL_AV1D_SET_SKIP_FILM_GRAIN
532
533 AOM_CTRL_USE_TYPE(AV1D_SET_IS_ANNEXB, unsigned int)
534 #define AOM_CTRL_AV1D_SET_IS_ANNEXB
535
536 AOM_CTRL_USE_TYPE(AV1D_SET_OPERATING_POINT, int)
537 #define AOM_CTRL_AV1D_SET_OPERATING_POINT
538
539 AOM_CTRL_USE_TYPE(AV1D_SET_OUTPUT_ALL_LAYERS, int)
540 #define AOM_CTRL_AV1D_SET_OUTPUT_ALL_LAYERS
541
542 AOM_CTRL_USE_TYPE(AV1_SET_INSPECTION_CALLBACK, aom_inspect_init *)
543 #define AOM_CTRL_AV1_SET_INSPECTION_CALLBACK
546 #ifdef __cplusplus
547 } // extern "C"
548 #endif
549
550 #endif // AOM_AOM_AOMDX_H_
aom.h
Provides controls common to both the AOM encoder and decoder.
aom_img_fmt_t
enum aom_img_fmt aom_img_fmt_t
List of supported image formats.
aom_screen_content_tools_info
struct aom_screen_content_tools_info aom_screen_content_tools_info
Structure to hold information about screen content tools.
aom_inspect_cb
void(* aom_inspect_cb)(void *decoder, void *ctx)
Definition: aomdx.h:55
aom_codec_av1_dx_algo
aom_codec_iface_t aom_codec_av1_dx_algo
A single instance of the AV1 decoder.
aom_dec_control_id
aom_dec_control_id
AOM decoder control functions.
Definition: aomdx.h:195
Accounting
struct Accounting Accounting
Definition: aomdx.h:50
aom_still_picture_info
struct aom_still_picture_info aom_still_picture_info
Structure to hold information about still image coding.
AOM_MAX_TILE_ROWS
#define AOM_MAX_TILE_ROWS
Max number of tile rows.
Definition: aomdx.h:115
AOM_MAX_TILE_COLS
#define AOM_MAX_TILE_COLS
Max number of tile columns.
Definition: aomdx.h:107
aom_s_frame_info
struct aom_s_frame_info aom_s_frame_info
Structure to hold information about S_FRAME.
aom_codec_av1_dx
aom_codec_iface_t * aom_codec_av1_dx(void)
The interface to the AV1 decoder.
aom_tile_info
struct aom_tile_info aom_tile_info
Structure to hold information about tiles in a frame.
aom_inspect_init
struct aom_inspect_init aom_inspect_init
Structure to hold inspection callback and context.
av1_ext_ref_frame_t
struct av1_ext_ref_frame av1_ext_ref_frame_t
Structure to hold the external reference frame pointer.
aom_tile_data
struct aom_tile_data aom_tile_data
Structure to hold a tile's start address and size in the bitstream.
AOMD_GET_LAST_REF_USED
@ AOMD_GET_LAST_REF_USED
Codec control function to get info on which reference frames were used by the last decode,...
Definition: aomdx.h:209
AV1_SET_TILE_MODE
@ AV1_SET_TILE_MODE
Codec control function to set the tile coding mode, int parameter.
Definition: aomdx.h:309
AOMD_GET_FRAME_CORRUPTED
@ AOMD_GET_FRAME_CORRUPTED
Codec control function to check if the indicated frame is corrupted, int* parameter.
Definition: aomdx.h:204
AV1D_GET_FRAME_SIZE
@ AV1D_GET_FRAME_SIZE
Codec control function to get the dimensions that the current frame is decoded at,...
Definition: aomdx.h:216
AV1D_SET_SKIP_FILM_GRAIN
@ AV1D_SET_SKIP_FILM_GRAIN
Codec control function to set the skip film grain flag, int parameter.
Definition: aomdx.h:383
AOMD_GET_TILE_INFO
@ AOMD_GET_TILE_INFO
Codec control function to get tile information of the previous frame decoded. This will return a stru...
Definition: aomdx.h:400
AV1D_SET_IS_ANNEXB
@ AV1D_SET_IS_ANNEXB
Codec control function to indicate whether bitstream is in Annex-B format, unsigned int parameter.
Definition: aomdx.h:345
AV1D_GET_TILE_COUNT
@ AV1D_GET_TILE_COUNT
Codec control function to get the tile count in a tile list, int* parameter.
Definition: aomdx.h:242
AOMD_GET_SB_SIZE
@ AOMD_GET_SB_SIZE
Codec control function to get superblock size. It returns an integer, indicating the superblock size ...
Definition: aomdx.h:418
AOMD_GET_SHOW_EXISTING_FRAME_FLAG
@ AOMD_GET_SHOW_EXISTING_FRAME_FLAG
Codec control function to check if the previous frame decoded has show existing frame flag set.
Definition: aomdx.h:423
AOMD_GET_ALTREF_PRESENT
@ AOMD_GET_ALTREF_PRESENT
Codec control function to check the presence of altref frames.
Definition: aomdx.h:395
AV1_SET_SKIP_LOOP_FILTER
@ AV1_SET_SKIP_LOOP_FILTER
Codec control function to set the skip loop filter flag, int parameter.
Definition: aomdx.h:272
AV1D_SET_ROW_MT
@ AV1D_SET_ROW_MT
Codec control function to enable the row based multi-threading of decoding, unsigned int parameter.
Definition: aomdx.h:340
AV1D_GET_TILE_SIZE
@ AV1D_GET_TILE_SIZE
Codec control function to get the size of the tile, unsigned int parameter.
Definition: aomdx.h:237
AV1D_GET_DISPLAY_SIZE
@ AV1D_GET_DISPLAY_SIZE
Codec control function to get the current frame's intended display dimensions (as specified in the wr...
Definition: aomdx.h:223
AV1D_SET_OUTPUT_ALL_LAYERS
@ AV1D_SET_OUTPUT_ALL_LAYERS
Codec control function to indicate whether to output one frame per temporal unit (the default),...
Definition: aomdx.h:367
AOMD_GET_SCREEN_CONTENT_TOOLS_INFO
@ AOMD_GET_SCREEN_CONTENT_TOOLS_INFO
Codec control function to get screen content tools information. It returns a struct of type aom_scree...
Definition: aomdx.h:407
AV1D_SET_OPERATING_POINT
@ AV1D_SET_OPERATING_POINT
Codec control function to indicate which operating point to use, int parameter.
Definition: aomdx.h:355
AOMD_GET_LAST_QUANTIZER
@ AOMD_GET_LAST_QUANTIZER
Codec control function to get last decoded frame quantizer, int* parameter.
Definition: aomdx.h:291
AOMD_GET_FRAME_FLAGS
@ AOMD_GET_FRAME_FLAGS
Codec control function to get the frame flags of the previous frame decoded. This will return a flag ...
Definition: aomdx.h:392
AV1_GET_ACCOUNTING
@ AV1_GET_ACCOUNTING
Codec control function to retrieve a pointer to the Accounting struct, takes Accounting** as paramete...
Definition: aomdx.h:284
AOMD_GET_LAST_REF_UPDATES
@ AOMD_GET_LAST_REF_UPDATES
Codec control function to get info on which reference frames were updated by the last decode,...
Definition: aomdx.h:199
AV1_SET_BYTE_ALIGNMENT
@ AV1_SET_BYTE_ALIGNMENT
Codec control function to set the byte alignment of the planes in the reference buffers,...
Definition: aomdx.h:251
AV1_SET_DECODE_TILE_ROW
@ AV1_SET_DECODE_TILE_ROW
Codec control function to set the range of tile decoding, int parameter.
Definition: aomdx.h:301
AV1_INVERT_TILE_DECODE_ORDER
@ AV1_INVERT_TILE_DECODE_ORDER
Codec control function to invert the decoding order to from right to left, int parameter.
Definition: aomdx.h:263
AOMD_GET_STILL_PICTURE
@ AOMD_GET_STILL_PICTURE
Codec control function to get the still picture coding information.
Definition: aomdx.h:411
AV1D_GET_IMG_FORMAT
@ AV1D_GET_IMG_FORMAT
Codec control function to get the image format of the stream, aom_img_fmt_t* parameter.
Definition: aomdx.h:233
AV1D_GET_BIT_DEPTH
@ AV1D_GET_BIT_DEPTH
Codec control function to get the bit depth of the stream, unsigned int* parameter.
Definition: aomdx.h:228
AOMD_GET_FWD_KF_PRESENT
@ AOMD_GET_FWD_KF_PRESENT
Codec control function to check the presence of forward key frames.
Definition: aomdx.h:387
AOMD_GET_S_FRAME_INFO
@ AOMD_GET_S_FRAME_INFO
Codec control function to get the S_FRAME coding information.
Definition: aomdx.h:427
AV1D_GET_TILE_DATA
@ AV1D_GET_TILE_DATA
Codec control function to get the start address and size of a tile in the coded bitstream,...
Definition: aomdx.h:319
AV1D_SET_EXT_REF_PTR
@ AV1D_SET_EXT_REF_PTR
Codec control function to set the external references' pointers in the decoder, av1_ext_ref_frame_t* ...
Definition: aomdx.h:327
AV1_SET_INSPECTION_CALLBACK
@ AV1_SET_INSPECTION_CALLBACK
Codec control function to set an aom_inspect_cb callback that is invoked each time a frame is decoded...
Definition: aomdx.h:375
AV1D_GET_FRAME_HEADER_INFO
@ AV1D_GET_FRAME_HEADER_INFO
Codec control function to get the frame header information of an encoded frame, unsigned int* paramet...
Definition: aomdx.h:314
AV1D_EXT_TILE_DEBUG
@ AV1D_EXT_TILE_DEBUG
Codec control function to enable the ext-tile software debug and testing code in the decoder,...
Definition: aomdx.h:332
AOM_DECODER_CTRL_ID_START
@ AOM_DECODER_CTRL_ID_START
Start point of control IDs for aom_dec_control_id. Any new common control IDs should be added above.
Definition: aom.h:81
AOM_CTRL_USE_TYPE
#define AOM_CTRL_USE_TYPE(id, typ)
Creates typechecking mechanisms for aom_codec_control.
Definition: aom_codec.h:530
aom_codec_iface_t
const struct aom_codec_iface aom_codec_iface_t
Codec interface structure.
Definition: aom_codec.h:254
aom_superblock_size_t
enum aom_superblock_size aom_superblock_size_t
Superblock size selection.
Av1DecodeReturn
Structure to collect a buffer index when inspecting.
Definition: aomdx.h:78
Av1DecodeReturn::buf
const unsigned char * buf
Definition: aomdx.h:80
Av1DecodeReturn::show_existing
int show_existing
Definition: aomdx.h:84
Av1DecodeReturn::idx
int idx
Definition: aomdx.h:82
aom_image
Image Descriptor.
Definition: aom_image.h:171
aom_inspect_init
Structure to hold inspection callback and context.
Definition: aomdx.h:64
aom_inspect_init::inspect_ctx
void * inspect_ctx
Definition: aomdx.h:69
aom_inspect_init::inspect_cb
aom_inspect_cb inspect_cb
Definition: aomdx.h:66
aom_s_frame_info
Structure to hold information about S_FRAME.
Definition: aomdx.h:153
aom_s_frame_info::is_s_frame_at_altref
int is_s_frame_at_altref
Definition: aomdx.h:157
aom_s_frame_info::is_s_frame
int is_s_frame
Definition: aomdx.h:155
aom_screen_content_tools_info
Structure to hold information about screen content tools.
Definition: aomdx.h:166
aom_screen_content_tools_info::force_integer_mv
int force_integer_mv
Definition: aomdx.h:172
aom_screen_content_tools_info::allow_intrabc
int allow_intrabc
Definition: aomdx.h:170
aom_screen_content_tools_info::allow_screen_content_tools
int allow_screen_content_tools
Definition: aomdx.h:168
aom_still_picture_info
Structure to hold information about still image coding.
Definition: aomdx.h:141
aom_still_picture_info::is_reduced_still_picture_hdr
int is_reduced_still_picture_hdr
Definition: aomdx.h:145
aom_still_picture_info::is_still_picture
int is_still_picture
Definition: aomdx.h:143
aom_tile_data
Structure to hold a tile's start address and size in the bitstream.
Definition: aomdx.h:91
aom_tile_data::coded_tile_data
const void * coded_tile_data
Definition: aomdx.h:95
aom_tile_data::coded_tile_data_size
size_t coded_tile_data_size
Definition: aomdx.h:93
aom_tile_data::extra_size
size_t extra_size
Definition: aomdx.h:97
aom_tile_info
Structure to hold information about tiles in a frame.
Definition: aomdx.h:123
aom_tile_info::tile_heights
int tile_heights[64]
Definition: aomdx.h:131
aom_tile_info::tile_rows
int tile_rows
Definition: aomdx.h:127
aom_tile_info::tile_columns
int tile_columns
Definition: aomdx.h:125
aom_tile_info::num_tile_groups
int num_tile_groups
Definition: aomdx.h:133
aom_tile_info::tile_widths
int tile_widths[64]
Definition: aomdx.h:129
av1_ext_ref_frame
Structure to hold the external reference frame pointer.
Definition: aomdx.h:179
av1_ext_ref_frame::num
int num
Definition: aomdx.h:183
av1_ext_ref_frame::img
aom_image_t * img
Definition: aomdx.h:181