mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-15 11:47:31 +09:00
Update aom to v1.0.0
Update aom to commit id d14c5bb4f336ef1842046089849dee4a301fbbf0.
This commit is contained in:
parent
bb61121b44
commit
48f6d2e034
1087 changed files with 154333 additions and 265310 deletions
58
third_party/aom/av1/encoder/ethread.c
vendored
58
third_party/aom/av1/encoder/ethread.c
vendored
|
|
@ -18,15 +18,13 @@ static void accumulate_rd_opt(ThreadData *td, ThreadData *td_t) {
|
|||
for (int i = 0; i < REFERENCE_MODES; i++)
|
||||
td->rd_counts.comp_pred_diff[i] += td_t->rd_counts.comp_pred_diff[i];
|
||||
|
||||
#if CONFIG_GLOBAL_MOTION
|
||||
for (int i = 0; i < TOTAL_REFS_PER_FRAME; i++)
|
||||
for (int i = 0; i < REF_FRAMES; i++)
|
||||
td->rd_counts.global_motion_used[i] +=
|
||||
td_t->rd_counts.global_motion_used[i];
|
||||
#endif // CONFIG_GLOBAL_MOTION
|
||||
|
||||
td->rd_counts.compound_ref_used_flag |=
|
||||
td_t->rd_counts.compound_ref_used_flag;
|
||||
td->rd_counts.single_ref_used_flag |= td_t->rd_counts.single_ref_used_flag;
|
||||
td->rd_counts.skip_mode_used_flag |= td_t->rd_counts.skip_mode_used_flag;
|
||||
}
|
||||
|
||||
static int enc_worker_hook(EncWorkerData *const thread_data, void *unused) {
|
||||
|
|
@ -53,7 +51,7 @@ void av1_encode_tiles_mt(AV1_COMP *cpi) {
|
|||
AV1_COMMON *const cm = &cpi->common;
|
||||
const int tile_cols = cm->tile_cols;
|
||||
const AVxWorkerInterface *const winterface = aom_get_worker_interface();
|
||||
const int num_workers = AOMMIN(cpi->oxcf.max_threads, tile_cols);
|
||||
int num_workers = AOMMIN(cpi->oxcf.max_threads, tile_cols);
|
||||
int i;
|
||||
|
||||
av1_init_tile_data(cpi);
|
||||
|
|
@ -81,29 +79,19 @@ void av1_encode_tiles_mt(AV1_COMP *cpi) {
|
|||
aom_memalign(32, sizeof(*thread_data->td)));
|
||||
av1_zero(*thread_data->td);
|
||||
|
||||
// Set up pc_tree.
|
||||
#if !CONFIG_CB4X4
|
||||
thread_data->td->leaf_tree = NULL;
|
||||
#endif
|
||||
// Set up pc_tree.
|
||||
thread_data->td->pc_tree = NULL;
|
||||
av1_setup_pc_tree(cm, thread_data->td);
|
||||
|
||||
#if CONFIG_MOTION_VAR
|
||||
#if CONFIG_HIGHBITDEPTH
|
||||
int buf_scaler = 2;
|
||||
#else
|
||||
int buf_scaler = 1;
|
||||
#endif
|
||||
CHECK_MEM_ERROR(cm, thread_data->td->above_pred_buf,
|
||||
(uint8_t *)aom_memalign(
|
||||
16,
|
||||
buf_scaler * MAX_MB_PLANE * MAX_SB_SQUARE *
|
||||
sizeof(*thread_data->td->above_pred_buf)));
|
||||
16, MAX_MB_PLANE * MAX_SB_SQUARE *
|
||||
sizeof(*thread_data->td->above_pred_buf)));
|
||||
CHECK_MEM_ERROR(cm, thread_data->td->left_pred_buf,
|
||||
(uint8_t *)aom_memalign(
|
||||
16,
|
||||
buf_scaler * MAX_MB_PLANE * MAX_SB_SQUARE *
|
||||
sizeof(*thread_data->td->left_pred_buf)));
|
||||
16, MAX_MB_PLANE * MAX_SB_SQUARE *
|
||||
sizeof(*thread_data->td->left_pred_buf)));
|
||||
|
||||
CHECK_MEM_ERROR(
|
||||
cm, thread_data->td->wsrc_buf,
|
||||
(int32_t *)aom_memalign(
|
||||
|
|
@ -112,7 +100,6 @@ void av1_encode_tiles_mt(AV1_COMP *cpi) {
|
|||
cm, thread_data->td->mask_buf,
|
||||
(int32_t *)aom_memalign(
|
||||
16, MAX_SB_SQUARE * sizeof(*thread_data->td->mask_buf)));
|
||||
#endif
|
||||
// Allocate frame counters in thread data.
|
||||
CHECK_MEM_ERROR(cm, thread_data->td->counts,
|
||||
aom_calloc(1, sizeof(*thread_data->td->counts)));
|
||||
|
|
@ -133,6 +120,8 @@ void av1_encode_tiles_mt(AV1_COMP *cpi) {
|
|||
|
||||
winterface->sync(worker);
|
||||
}
|
||||
} else {
|
||||
num_workers = AOMMIN(num_workers, cpi->num_workers);
|
||||
}
|
||||
|
||||
for (i = 0; i < num_workers; i++) {
|
||||
|
|
@ -148,16 +137,13 @@ void av1_encode_tiles_mt(AV1_COMP *cpi) {
|
|||
if (thread_data->td != &cpi->td) {
|
||||
thread_data->td->mb = cpi->td.mb;
|
||||
thread_data->td->rd_counts = cpi->td.rd_counts;
|
||||
#if CONFIG_MOTION_VAR
|
||||
thread_data->td->mb.above_pred_buf = thread_data->td->above_pred_buf;
|
||||
thread_data->td->mb.left_pred_buf = thread_data->td->left_pred_buf;
|
||||
thread_data->td->mb.wsrc_buf = thread_data->td->wsrc_buf;
|
||||
thread_data->td->mb.mask_buf = thread_data->td->mask_buf;
|
||||
#endif
|
||||
}
|
||||
if (thread_data->td->counts != &cpi->common.counts) {
|
||||
memcpy(thread_data->td->counts, &cpi->common.counts,
|
||||
sizeof(cpi->common.counts));
|
||||
if (thread_data->td->counts != &cpi->counts) {
|
||||
memcpy(thread_data->td->counts, &cpi->counts, sizeof(cpi->counts));
|
||||
}
|
||||
|
||||
if (i < num_workers - 1)
|
||||
|
|
@ -187,14 +173,24 @@ void av1_encode_tiles_mt(AV1_COMP *cpi) {
|
|||
for (i = 0; i < num_workers; i++) {
|
||||
AVxWorker *const worker = &cpi->workers[i];
|
||||
EncWorkerData *const thread_data = (EncWorkerData *)worker->data1;
|
||||
|
||||
cpi->intrabc_used |= thread_data->td->intrabc_used_this_tile;
|
||||
// Accumulate counters.
|
||||
if (i < cpi->num_workers - 1) {
|
||||
av1_accumulate_frame_counts(&cm->counts, thread_data->td->counts);
|
||||
av1_accumulate_frame_counts(&cpi->counts, thread_data->td->counts);
|
||||
accumulate_rd_opt(&cpi->td, thread_data->td);
|
||||
#if CONFIG_VAR_TX
|
||||
cpi->td.mb.txb_split_count += thread_data->td->mb.txb_split_count;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Accumulate frame counts. FRAME_COUNTS consist solely of 'unsigned int'
|
||||
// members, so we treat it as an array, and sum over the whole length.
|
||||
void av1_accumulate_frame_counts(FRAME_COUNTS *acc_counts,
|
||||
const FRAME_COUNTS *counts) {
|
||||
unsigned int *const acc = (unsigned int *)acc_counts;
|
||||
const unsigned int *const cnt = (const unsigned int *)counts;
|
||||
|
||||
const unsigned int n_counts = sizeof(FRAME_COUNTS) / sizeof(unsigned int);
|
||||
|
||||
for (unsigned int i = 0; i < n_counts; i++) acc[i] += cnt[i];
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue