11b362b15af34006e6a11974088a46d42b903418eJohann/* 21b362b15af34006e6a11974088a46d42b903418eJohann * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 31b362b15af34006e6a11974088a46d42b903418eJohann * 41b362b15af34006e6a11974088a46d42b903418eJohann * Use of this source code is governed by a BSD-style license 51b362b15af34006e6a11974088a46d42b903418eJohann * that can be found in the LICENSE file in the root of the source 61b362b15af34006e6a11974088a46d42b903418eJohann * tree. An additional intellectual property rights grant can be found 71b362b15af34006e6a11974088a46d42b903418eJohann * in the file PATENTS. All contributing project authors may 81b362b15af34006e6a11974088a46d42b903418eJohann * be found in the AUTHORS file in the root of the source tree. 91b362b15af34006e6a11974088a46d42b903418eJohann */ 101b362b15af34006e6a11974088a46d42b903418eJohann 111b362b15af34006e6a11974088a46d42b903418eJohann 121b362b15af34006e6a11974088a46d42b903418eJohann#include "blockd.h" 131b362b15af34006e6a11974088a46d42b903418eJohann 141b362b15af34006e6a11974088a46d42b903418eJohannvoid vp8_setup_block_dptrs(MACROBLOCKD *x) 151b362b15af34006e6a11974088a46d42b903418eJohann{ 161b362b15af34006e6a11974088a46d42b903418eJohann int r, c; 171b362b15af34006e6a11974088a46d42b903418eJohann 181b362b15af34006e6a11974088a46d42b903418eJohann for (r = 0; r < 4; r++) 191b362b15af34006e6a11974088a46d42b903418eJohann { 201b362b15af34006e6a11974088a46d42b903418eJohann for (c = 0; c < 4; c++) 211b362b15af34006e6a11974088a46d42b903418eJohann { 221b362b15af34006e6a11974088a46d42b903418eJohann x->block[r*4+c].predictor = x->predictor + r * 4 * 16 + c * 4; 231b362b15af34006e6a11974088a46d42b903418eJohann } 241b362b15af34006e6a11974088a46d42b903418eJohann } 251b362b15af34006e6a11974088a46d42b903418eJohann 261b362b15af34006e6a11974088a46d42b903418eJohann for (r = 0; r < 2; r++) 271b362b15af34006e6a11974088a46d42b903418eJohann { 281b362b15af34006e6a11974088a46d42b903418eJohann for (c = 0; c < 2; c++) 291b362b15af34006e6a11974088a46d42b903418eJohann { 301b362b15af34006e6a11974088a46d42b903418eJohann x->block[16+r*2+c].predictor = x->predictor + 256 + r * 4 * 8 + c * 4; 311b362b15af34006e6a11974088a46d42b903418eJohann 321b362b15af34006e6a11974088a46d42b903418eJohann } 331b362b15af34006e6a11974088a46d42b903418eJohann } 341b362b15af34006e6a11974088a46d42b903418eJohann 351b362b15af34006e6a11974088a46d42b903418eJohann for (r = 0; r < 2; r++) 361b362b15af34006e6a11974088a46d42b903418eJohann { 371b362b15af34006e6a11974088a46d42b903418eJohann for (c = 0; c < 2; c++) 381b362b15af34006e6a11974088a46d42b903418eJohann { 391b362b15af34006e6a11974088a46d42b903418eJohann x->block[20+r*2+c].predictor = x->predictor + 320 + r * 4 * 8 + c * 4; 401b362b15af34006e6a11974088a46d42b903418eJohann 411b362b15af34006e6a11974088a46d42b903418eJohann } 421b362b15af34006e6a11974088a46d42b903418eJohann } 431b362b15af34006e6a11974088a46d42b903418eJohann 441b362b15af34006e6a11974088a46d42b903418eJohann for (r = 0; r < 25; r++) 451b362b15af34006e6a11974088a46d42b903418eJohann { 461b362b15af34006e6a11974088a46d42b903418eJohann x->block[r].qcoeff = x->qcoeff + r * 16; 471b362b15af34006e6a11974088a46d42b903418eJohann x->block[r].dqcoeff = x->dqcoeff + r * 16; 481b362b15af34006e6a11974088a46d42b903418eJohann x->block[r].eob = x->eobs + r; 491b362b15af34006e6a11974088a46d42b903418eJohann } 501b362b15af34006e6a11974088a46d42b903418eJohann} 511b362b15af34006e6a11974088a46d42b903418eJohann 521b362b15af34006e6a11974088a46d42b903418eJohannvoid vp8_build_block_doffsets(MACROBLOCKD *x) 531b362b15af34006e6a11974088a46d42b903418eJohann{ 541b362b15af34006e6a11974088a46d42b903418eJohann int block; 551b362b15af34006e6a11974088a46d42b903418eJohann 561b362b15af34006e6a11974088a46d42b903418eJohann for (block = 0; block < 16; block++) /* y blocks */ 571b362b15af34006e6a11974088a46d42b903418eJohann { 581b362b15af34006e6a11974088a46d42b903418eJohann x->block[block].offset = 591b362b15af34006e6a11974088a46d42b903418eJohann (block >> 2) * 4 * x->dst.y_stride + (block & 3) * 4; 601b362b15af34006e6a11974088a46d42b903418eJohann } 611b362b15af34006e6a11974088a46d42b903418eJohann 621b362b15af34006e6a11974088a46d42b903418eJohann for (block = 16; block < 20; block++) /* U and V blocks */ 631b362b15af34006e6a11974088a46d42b903418eJohann { 641b362b15af34006e6a11974088a46d42b903418eJohann x->block[block+4].offset = 651b362b15af34006e6a11974088a46d42b903418eJohann x->block[block].offset = 661b362b15af34006e6a11974088a46d42b903418eJohann ((block - 16) >> 1) * 4 * x->dst.uv_stride + (block & 1) * 4; 671b362b15af34006e6a11974088a46d42b903418eJohann } 681b362b15af34006e6a11974088a46d42b903418eJohann} 69