mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/libaomenc: add row-mt option
Default to disable, same as aomenc. Fixes ticket #7598 Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
8be56ee211
commit
d12d4d4515
|
@ -1411,9 +1411,9 @@ to unconstrained variable bitrate.
|
||||||
|
|
||||||
@item threads
|
@item threads
|
||||||
Set the number of threads to use while encoding. This may require the
|
Set the number of threads to use while encoding. This may require the
|
||||||
@option{tiles} option to also be set to actually use the specified
|
@option{tiles} or @option{row-mt} options to also be set to actually
|
||||||
number of threads fully. Defaults to the number of hardware threads
|
use the specified number of threads fully. Defaults to the number of
|
||||||
supported by the host machine.
|
hardware threads supported by the host machine.
|
||||||
|
|
||||||
@item profile
|
@item profile
|
||||||
Set the encoding profile. Defaults to using the profile which matches
|
Set the encoding profile. Defaults to using the profile which matches
|
||||||
|
@ -1477,6 +1477,9 @@ number of tiles required by the size of the input video (this is 1x1
|
||||||
Set the number of tiles as log2 of the number of tile rows and columns.
|
Set the number of tiles as log2 of the number of tile rows and columns.
|
||||||
Provided for compatibility with libvpx/VP9.
|
Provided for compatibility with libvpx/VP9.
|
||||||
|
|
||||||
|
@item row-mt (Requires libaom >= 1.0.0-759-g90a15f4f2)
|
||||||
|
Enable row based multi-threading. Disabled by default.
|
||||||
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@section libkvazaar
|
@section libkvazaar
|
||||||
|
|
|
@ -78,6 +78,7 @@ typedef struct AOMEncoderContext {
|
||||||
int tile_cols_log2, tile_rows_log2;
|
int tile_cols_log2, tile_rows_log2;
|
||||||
aom_superblock_size_t superblock_size;
|
aom_superblock_size_t superblock_size;
|
||||||
int uniform_tiles;
|
int uniform_tiles;
|
||||||
|
int row_mt;
|
||||||
} AOMContext;
|
} AOMContext;
|
||||||
|
|
||||||
static const char *const ctlidstr[] = {
|
static const char *const ctlidstr[] = {
|
||||||
|
@ -92,6 +93,9 @@ static const char *const ctlidstr[] = {
|
||||||
[AV1E_SET_SUPERBLOCK_SIZE] = "AV1E_SET_SUPERBLOCK_SIZE",
|
[AV1E_SET_SUPERBLOCK_SIZE] = "AV1E_SET_SUPERBLOCK_SIZE",
|
||||||
[AV1E_SET_TILE_COLUMNS] = "AV1E_SET_TILE_COLUMNS",
|
[AV1E_SET_TILE_COLUMNS] = "AV1E_SET_TILE_COLUMNS",
|
||||||
[AV1E_SET_TILE_ROWS] = "AV1E_SET_TILE_ROWS",
|
[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)
|
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);
|
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()
|
// provide dummy value to initialize wrapper, values will be updated each _encode()
|
||||||
aom_img_wrap(&ctx->rawimg, img_fmt, avctx->width, avctx->height, 1,
|
aom_img_wrap(&ctx->rawimg, img_fmt, avctx->width, avctx->height, 1,
|
||||||
(unsigned char*)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 },
|
{ "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-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},
|
{ "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 }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue