| Index: source/libvpx/vp9/encoder/vp9_ethread.c
|
| diff --git a/source/libvpx/vp9/encoder/vp9_ethread.c b/source/libvpx/vp9/encoder/vp9_ethread.c
|
| index daf3da44cc3772f444af1d47c31cc015609ffed5..12fb4d107e4836ad127af285f94f9c20f18f4a11 100644
|
| --- a/source/libvpx/vp9/encoder/vp9_ethread.c
|
| +++ b/source/libvpx/vp9/encoder/vp9_ethread.c
|
| @@ -167,23 +167,24 @@ void vp9_encode_tiles_mt(VP9_COMP *cpi) {
|
| CHECK_MEM_ERROR(cm, cpi->workers,
|
| vpx_malloc(num_workers * sizeof(*cpi->workers)));
|
|
|
| + CHECK_MEM_ERROR(cm, cpi->tile_thr_data,
|
| + vpx_calloc(num_workers, sizeof(*cpi->tile_thr_data)));
|
| +
|
| for (i = 0; i < num_workers; i++) {
|
| VP9Worker *const worker = &cpi->workers[i];
|
| - EncWorkerData *thread_data;
|
| + EncWorkerData *thread_data = &cpi->tile_thr_data[i];
|
|
|
| ++cpi->num_workers;
|
| -
|
| winterface->init(worker);
|
| - CHECK_MEM_ERROR(cm, worker->data1,
|
| - (EncWorkerData*)vpx_calloc(1, sizeof(EncWorkerData)));
|
| - thread_data = (EncWorkerData*)worker->data1;
|
|
|
| if (i < num_workers - 1) {
|
| thread_data->cpi = cpi;
|
|
|
| // Allocate thread data.
|
| CHECK_MEM_ERROR(cm, thread_data->td,
|
| - vpx_calloc(1, sizeof(*thread_data->td)));
|
| + vpx_memalign(32, sizeof(*thread_data->td)));
|
| + vp9_zero(*thread_data->td);
|
| +
|
| // Set up pc_tree.
|
| thread_data->td->leaf_tree = NULL;
|
| thread_data->td->pc_tree = NULL;
|
| @@ -203,17 +204,18 @@ void vp9_encode_tiles_mt(VP9_COMP *cpi) {
|
| thread_data->td = &cpi->td;
|
| }
|
|
|
| - // data2 is unused.
|
| - worker->data2 = NULL;
|
| -
|
| winterface->sync(worker);
|
| - worker->hook = (VP9WorkerHook)enc_worker_hook;
|
| }
|
| }
|
|
|
| for (i = 0; i < num_workers; i++) {
|
| VP9Worker *const worker = &cpi->workers[i];
|
| - EncWorkerData *const thread_data = (EncWorkerData*)worker->data1;
|
| + EncWorkerData *thread_data;
|
| +
|
| + worker->hook = (VP9WorkerHook)enc_worker_hook;
|
| + worker->data1 = &cpi->tile_thr_data[i];
|
| + worker->data2 = NULL;
|
| + thread_data = (EncWorkerData*)worker->data1;
|
|
|
| // Before encoding a frame, copy the thread data from cpi.
|
| thread_data->td->mb = cpi->td.mb;
|
|
|