@@ -1795,6 +1795,13 @@ Set log2 of the number of rows of tiles to use (0-6).
@item tile_columns
Set log2 of the number of columns of tiles to use (0-4).
+@item logical_processors
+Number of logical processors to run the encoder on, threads are managed by
+the OS scheduler. Used for limiting the size of memory buffers and threads
+for a target logical processor count. Does not set thread affinity or total
+threads, but instead sets t * logical_processors amount of threads with t
+being the amount of threads libsvtav1 sets per cpu (0 - ncpus).
+
@end table
@section libkvazaar
@@ -71,6 +71,8 @@ typedef struct SvtContext {
int tile_columns;
int tile_rows;
+
+ uint32_t logical_processors;
} SvtContext;
static const struct {
@@ -218,6 +220,8 @@ static int config_enc_params(EbSvtAv1EncConfiguration *param,
param->tile_columns = svt_enc->tile_columns;
param->tile_rows = svt_enc->tile_rows;
+ param->logical_processors = svt_enc->logical_processors;
+
return 0;
}
@@ -533,6 +537,9 @@ static const AVOption options[] = {
{ "tile_columns", "Log2 of number of tile columns to use", OFFSET(tile_columns), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 4, VE},
{ "tile_rows", "Log2 of number of tile rows to use", OFFSET(tile_rows), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 6, VE},
+ { "logical_processors", "Number of logical processors to run the encoder on, used to limit the size of memory buffers and threads used", OFFSET(logical_processors),
+ AV_OPT_TYPE_INT, { .i64 = 0 }, 0, UINT_MAX, VE },
+
{NULL},
};