diff --git a/vp9/encoder/vp9_ethread.c b/vp9/encoder/vp9_ethread.c index 895563f57..46814cdfd 100644 --- a/vp9/encoder/vp9_ethread.c +++ b/vp9/encoder/vp9_ethread.c @@ -119,10 +119,14 @@ void vp9_encode_tiles_mt(VP9_COMP *cpi) { thread_data = (EncWorkerData*)worker->data1; // Before encoding a frame, copy the thread data from cpi. - thread_data->td->mb = cpi->td.mb; - thread_data->td->rd_counts = cpi->td.rd_counts; - vpx_memcpy(thread_data->td->counts, &cpi->common.counts, - sizeof(cpi->common.counts)); + if (thread_data->td != &cpi->td) { + thread_data->td->mb = cpi->td.mb; + thread_data->td->rd_counts = cpi->td.rd_counts; + } + if (thread_data->td->counts != &cpi->common.counts) { + vpx_memcpy(thread_data->td->counts, &cpi->common.counts, + sizeof(cpi->common.counts)); + } // Handle use_nonrd_pick_mode case. if (cpi->sf.use_nonrd_pick_mode) {