1474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org/* 2474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * 4474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * Use of this source code is governed by a BSD-style license 5474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * that can be found in the LICENSE file in the root of the source 6474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * tree. An additional intellectual property rights grant can be found 7474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * in the file PATENTS. All contributing project authors may 8474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org * be found in the AUTHORS file in the root of the source tree. 9474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org */ 10474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 11474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 12474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org#include "blockd.h" 13474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 14474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_setup_block_dptrs(MACROBLOCKD *x) 15474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 16474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org int r, c; 17474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 18474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for (r = 0; r < 4; r++) 19474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org { 20474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for (c = 0; c < 4; c++) 21474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org { 22474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org x->block[r*4+c].predictor = x->predictor + r * 4 * 16 + c * 4; 23474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org } 24474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org } 25474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 26474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for (r = 0; r < 2; r++) 27474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org { 28474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for (c = 0; c < 2; c++) 29474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org { 30474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org x->block[16+r*2+c].predictor = x->predictor + 256 + r * 4 * 8 + c * 4; 31474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 32474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org } 33474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org } 34474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 35474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for (r = 0; r < 2; r++) 36474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org { 37474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for (c = 0; c < 2; c++) 38474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org { 39474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org x->block[20+r*2+c].predictor = x->predictor + 320 + r * 4 * 8 + c * 4; 40474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 41474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org } 42474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org } 43474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 44474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org for (r = 0; r < 25; r++) 45474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org { 46474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org x->block[r].qcoeff = x->qcoeff + r * 16; 47474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org x->block[r].dqcoeff = x->dqcoeff + r * 16; 48167514562bbce1eb0566271d6cb41d90d2b5ffa0hclam@chromium.org x->block[r].eob = x->eobs + r; 49474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org } 50474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 51474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 52474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgvoid vp8_build_block_doffsets(MACROBLOCKD *x) 53474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org{ 545c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org int block; 55474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 565c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org for (block = 0; block < 16; block++) /* y blocks */ 575c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org { 585c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org x->block[block].offset = 595c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org (block >> 2) * 4 * x->dst.y_stride + (block & 3) * 4; 605c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org } 615c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org 625c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org for (block = 16; block < 20; block++) /* U and V blocks */ 635c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org { 645c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org x->block[block+4].offset = 655c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org x->block[block].offset = 665c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org ((block - 16) >> 1) * 4 * x->dst.uv_stride + (block & 1) * 4; 675c1d3b27608a3f3f6028c069b9bf066a4de474b6hclam@chromium.org } 68474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org} 69