|
|
|
@ -78,6 +78,7 @@ typedef struct AOMEncoderContext { |
|
|
|
|
int tile_cols_log2, tile_rows_log2; |
|
|
|
|
aom_superblock_size_t superblock_size; |
|
|
|
|
int uniform_tiles; |
|
|
|
|
int row_mt; |
|
|
|
|
} AOMContext; |
|
|
|
|
|
|
|
|
|
static const char *const ctlidstr[] = { |
|
|
|
@ -92,6 +93,9 @@ static const char *const ctlidstr[] = { |
|
|
|
|
[AV1E_SET_SUPERBLOCK_SIZE] = "AV1E_SET_SUPERBLOCK_SIZE", |
|
|
|
|
[AV1E_SET_TILE_COLUMNS] = "AV1E_SET_TILE_COLUMNS", |
|
|
|
|
[AV1E_SET_TILE_ROWS] = "AV1E_SET_TILE_ROWS", |
|
|
|
|
#ifdef AOM_CTRL_AV1E_SET_ROW_MT |
|
|
|
|
[AV1E_SET_ROW_MT] = "AV1E_SET_ROW_MT", |
|
|
|
|
#endif |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static av_cold void log_encoder_error(AVCodecContext *avctx, const char *desc) |
|
|
|
@ -650,6 +654,10 @@ static av_cold int aom_init(AVCodecContext *avctx, |
|
|
|
|
codecctl_int(avctx, AV1E_SET_TILE_ROWS, ctx->tile_rows_log2); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#ifdef AOM_CTRL_AV1E_SET_ROW_MT |
|
|
|
|
codecctl_int(avctx, AV1E_SET_ROW_MT, ctx->row_mt); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
// provide dummy value to initialize wrapper, values will be updated each _encode()
|
|
|
|
|
aom_img_wrap(&ctx->rawimg, img_fmt, avctx->width, avctx->height, 1, |
|
|
|
|
(unsigned char*)1); |
|
|
|
@ -983,6 +991,7 @@ static const AVOption options[] = { |
|
|
|
|
{ "tiles", "Tile columns x rows", OFFSET(tile_cols), AV_OPT_TYPE_IMAGE_SIZE, { .str = NULL }, 0, 0, VE }, |
|
|
|
|
{ "tile-columns", "Log2 of number of tile columns to use", OFFSET(tile_cols_log2), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE}, |
|
|
|
|
{ "tile-rows", "Log2 of number of tile rows to use", OFFSET(tile_rows_log2), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 6, VE}, |
|
|
|
|
{ "row-mt", "Enable row based multi-threading", OFFSET(row_mt), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, VE}, |
|
|
|
|
{ NULL } |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|