您的位置:首页 > 新闻 > 会展 > 全国疫情最新消息今天今日新增_北京疫情形势严峻最新情况_优化公司哪家好_网级移动营销app下载

全国疫情最新消息今天今日新增_北京疫情形势严峻最新情况_优化公司哪家好_网级移动营销app下载

2025/1/7 11:30:54 来源:https://blog.csdn.net/fantasy_ARM9/article/details/144855435  浏览:    关键词:全国疫情最新消息今天今日新增_北京疫情形势严峻最新情况_优化公司哪家好_网级移动营销app下载
全国疫情最新消息今天今日新增_北京疫情形势严峻最新情况_优化公司哪家好_网级移动营销app下载

参数配置 parse_stream_params

} else if (arg_match(&arg, &g_av1_codec_arg_defs.threads, argi)) {

config->cfg.g_threads = arg_parse_uint(&arg);

使用线程个数参数g_threads

int av1_compute_num_fp_contexts(AV1_PRIMARY *ppi, AV1EncoderConfig *oxcf)

{

//编码模块并行工作线程数量初始化为0

ppi->p_mt_info.num_mod_workers[MOD_FRAME_ENC] = 0;

//检查并行多线程配置是否有效如果无效直接返回1(表示单帧处理)

if (!av1_check_fpmt_config(ppi, oxcf)) {

return 1;

}

//计算最大编码工作线程

int max_num_enc_workers = compute_max_num_enc_workers(

&ppi->cpi->common.mi_params, ppi->cpi->common.seq_params->mib_size_log2);

//用于调整每个工作线程数量计算缩放因子舍入因子

// Scaling factors and rounding factors used to tune worker_per_frame

// computation.

int rounding_factor[2] = { 2, 4 };

int scaling_factor[2] = { 4, 8 };

//判断视频分辨率是否为480p或者更低

int is_480p_or_lesser =

AOMMIN(oxcf->frm_dim_cfg.width, oxcf->frm_dim_cfg.height) <= 480;

int is_sb_64 = 0;

//判断视频分辨率是否480p或者更低

if (ppi->cpi != NULL)

is_sb_64 = ppi->cpi->common.seq_params->sb_size == BLOCK_64X64;

//根据分辨率超级大小选择合适索引对于480p而且超级大小64x64情况使用索引1否则使用索引0

// A parallel frame encode has at least 1/4th the

// theoretical limit of max enc workers in default case. For resolutions

// larger than 480p, if SB size is 64x64, optimal performance is obtained with

// limit of 1/8.

int index = (!is_480p_or_lesser && is_sb_64) ? 1 : 0;

//计算每个工作线程确保至少1

int workers_per_frame =

AOMMAX(1, (max_num_enc_workers + rounding_factor[index]) /

scaling_factor[index]);

//获取最大线程数量

int max_threads = oxcf->max_threads;

//计算并行上下文数量

int num_fp_contexts = max_threads / workers_per_frame;

//如果使用多块编码 tile encoding

// Based on empirical results, FPMT gains with multi-tile are significant when

// more parallel frames are available. Use FPMT with multi-tile encode only

// when sufficient threads are available for parallel encode of

// MAX_PARALLEL_FRAMES frames.

if (oxcf->tile_cfg.tile_columns > 0 || oxcf->tile_cfg.tile_rows > 0) {

//并行数量小于MAX_PARALLEL_FRAMES并行上下文数量设置1

if (num_fp_contexts < MAX_PARALLEL_FRAMES) num_fp_contexts = 1;

}

//确保并行上下文数量1MAX_PARALLEL_FRAMES 之间

num_fp_contexts = AOMMAX(1, AOMMIN(num_fp_contexts, MAX_PARALLEL_FRAMES));

//如果ppi->num_fp_contexts1保持计算出num_fp_contexts 不变

//否则num_fp_contexts限制ppi->num_fp_contexts当前计算值较小

// Limit recalculated num_fp_contexts to ppi->num_fp_contexts.

num_fp_contexts = (ppi->num_fp_contexts == 1)

? num_fp_contexts

: AOMMIN(num_fp_contexts, ppi->num_fp_contexts);

//如果帧并行上下文数量大于1

if (num_fp_contexts > 1) {

//计算编码模块并行工作线程数量确保不超过最大线程

ppi->p_mt_info.num_mod_workers[MOD_FRAME_ENC] =

AOMMIN(max_num_enc_workers * num_fp_contexts, oxcf->max_threads);

}

//返回计算并行上下文数量

return num_fp_contexts;

}

2.10 compute_num_enc_row_mt_workers

// Computes the number of workers for row multi-threading of encoding stage

// 计算编码阶段行多线程的工作线程数

static inline int compute_num_enc_row_mt_workers(const AV1_COMMON *cm,

int max_threads) {

// 定义一个TileInfo结构体变量,用于存储瓦片(tile)信息

TileInfo tile_info;

// 获取视频帧中瓦片的列数

const int tile_cols = cm->tiles.cols;

// 获取视频帧中瓦片的行数

const int tile_rows = cm->tiles.rows;

// 初始化行多线程的总线程数为0

int total_num_threads_row_mt = 0;

// 遍历每一行瓦片

for (int row = 0; row < tile_rows; row++) {

// 遍历每一列瓦片

for (int col = 0; col < tile_cols; col++) {

// 初始化当前瓦片的信息

av1_tile_init(&tile_info, cm, row, col);

// 获取当前瓦片中超级块(super block)的行数

const int num_sb_rows_in_tile = av1_get_sb_rows_in_tile(cm, &tile_info);

// 获取当前瓦片中超级块的列数

const int num_sb_cols_in_tile = av1_get_sb_cols_in_tile(cm, &tile_info);

// 计算当前瓦片可用于行多线程的线程数,并累加到总线程数中

// AOMMIN((num_sb_cols_in_tile + 1) >> 1, num_sb_rows_in_tile)

// 这一步是取 (超级块列数 + 1) 右移一位 和 超级块行数 中的较小值

total_num_threads_row_mt +=

AOMMIN((num_sb_cols_in_tile + 1) >> 1, num_sb_rows_in_tile);

}

}

// 返回总线程数和最大线程数中的较小值

return AOMMIN(max_threads, total_num_threads_row_mt);

}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com