1233d2500723e5594f3e7c70896ffeeef32b9c950ywan/* 2233d2500723e5594f3e7c70896ffeeef32b9c950ywan * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3233d2500723e5594f3e7c70896ffeeef32b9c950ywan * 4233d2500723e5594f3e7c70896ffeeef32b9c950ywan * Use of this source code is governed by a BSD-style license 5233d2500723e5594f3e7c70896ffeeef32b9c950ywan * that can be found in the LICENSE file in the root of the source 6233d2500723e5594f3e7c70896ffeeef32b9c950ywan * tree. An additional intellectual property rights grant can be found 7233d2500723e5594f3e7c70896ffeeef32b9c950ywan * in the file PATENTS. All contributing project authors may 8233d2500723e5594f3e7c70896ffeeef32b9c950ywan * be found in the AUTHORS file in the root of the source tree. 9233d2500723e5594f3e7c70896ffeeef32b9c950ywan */ 10233d2500723e5594f3e7c70896ffeeef32b9c950ywan 11233d2500723e5594f3e7c70896ffeeef32b9c950ywan 12233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include <stdio.h> 13233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "blockd.h" 14233d2500723e5594f3e7c70896ffeeef32b9c950ywan 15233d2500723e5594f3e7c70896ffeeef32b9c950ywan 16233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp8_print_modes_and_motion_vectors(MODE_INFO *mi, int rows, int cols, int frame) 17233d2500723e5594f3e7c70896ffeeef32b9c950ywan{ 18233d2500723e5594f3e7c70896ffeeef32b9c950ywan 19233d2500723e5594f3e7c70896ffeeef32b9c950ywan int mb_row; 20233d2500723e5594f3e7c70896ffeeef32b9c950ywan int mb_col; 21233d2500723e5594f3e7c70896ffeeef32b9c950ywan int mb_index = 0; 22233d2500723e5594f3e7c70896ffeeef32b9c950ywan FILE *mvs = fopen("mvs.stt", "a"); 23233d2500723e5594f3e7c70896ffeeef32b9c950ywan 24233d2500723e5594f3e7c70896ffeeef32b9c950ywan /* print out the macroblock Y modes */ 25233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index = 0; 26233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "Mb Modes for Frame %d\n", frame); 27233d2500723e5594f3e7c70896ffeeef32b9c950ywan 28233d2500723e5594f3e7c70896ffeeef32b9c950ywan for (mb_row = 0; mb_row < rows; mb_row++) 29233d2500723e5594f3e7c70896ffeeef32b9c950ywan { 30233d2500723e5594f3e7c70896ffeeef32b9c950ywan for (mb_col = 0; mb_col < cols; mb_col++) 31233d2500723e5594f3e7c70896ffeeef32b9c950ywan { 32233d2500723e5594f3e7c70896ffeeef32b9c950ywan 33233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "%2d ", mi[mb_index].mbmi.mode); 34233d2500723e5594f3e7c70896ffeeef32b9c950ywan 35233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index++; 36233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 37233d2500723e5594f3e7c70896ffeeef32b9c950ywan 38233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "\n"); 39233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index++; 40233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 41233d2500723e5594f3e7c70896ffeeef32b9c950ywan 42233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "\n"); 43233d2500723e5594f3e7c70896ffeeef32b9c950ywan 44233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index = 0; 45233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "Mb mv ref for Frame %d\n", frame); 46233d2500723e5594f3e7c70896ffeeef32b9c950ywan 47233d2500723e5594f3e7c70896ffeeef32b9c950ywan for (mb_row = 0; mb_row < rows; mb_row++) 48233d2500723e5594f3e7c70896ffeeef32b9c950ywan { 49233d2500723e5594f3e7c70896ffeeef32b9c950ywan for (mb_col = 0; mb_col < cols; mb_col++) 50233d2500723e5594f3e7c70896ffeeef32b9c950ywan { 51233d2500723e5594f3e7c70896ffeeef32b9c950ywan 52233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "%2d ", mi[mb_index].mbmi.ref_frame); 53233d2500723e5594f3e7c70896ffeeef32b9c950ywan 54233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index++; 55233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 56233d2500723e5594f3e7c70896ffeeef32b9c950ywan 57233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "\n"); 58233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index++; 59233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 60233d2500723e5594f3e7c70896ffeeef32b9c950ywan 61233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "\n"); 62233d2500723e5594f3e7c70896ffeeef32b9c950ywan 63233d2500723e5594f3e7c70896ffeeef32b9c950ywan /* print out the macroblock UV modes */ 64233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index = 0; 65233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "UV Modes for Frame %d\n", frame); 66233d2500723e5594f3e7c70896ffeeef32b9c950ywan 67233d2500723e5594f3e7c70896ffeeef32b9c950ywan for (mb_row = 0; mb_row < rows; mb_row++) 68233d2500723e5594f3e7c70896ffeeef32b9c950ywan { 69233d2500723e5594f3e7c70896ffeeef32b9c950ywan for (mb_col = 0; mb_col < cols; mb_col++) 70233d2500723e5594f3e7c70896ffeeef32b9c950ywan { 71233d2500723e5594f3e7c70896ffeeef32b9c950ywan 72233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "%2d ", mi[mb_index].mbmi.uv_mode); 73233d2500723e5594f3e7c70896ffeeef32b9c950ywan 74233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index++; 75233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 76233d2500723e5594f3e7c70896ffeeef32b9c950ywan 77233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index++; 78233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "\n"); 79233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 80233d2500723e5594f3e7c70896ffeeef32b9c950ywan 81233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "\n"); 82233d2500723e5594f3e7c70896ffeeef32b9c950ywan 83233d2500723e5594f3e7c70896ffeeef32b9c950ywan /* print out the block modes */ 84233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index = 0; 85233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "Mbs for Frame %d\n", frame); 86233d2500723e5594f3e7c70896ffeeef32b9c950ywan { 87233d2500723e5594f3e7c70896ffeeef32b9c950ywan int b_row; 88233d2500723e5594f3e7c70896ffeeef32b9c950ywan 89233d2500723e5594f3e7c70896ffeeef32b9c950ywan for (b_row = 0; b_row < 4 * rows; b_row++) 90233d2500723e5594f3e7c70896ffeeef32b9c950ywan { 91233d2500723e5594f3e7c70896ffeeef32b9c950ywan int b_col; 92233d2500723e5594f3e7c70896ffeeef32b9c950ywan int bindex; 93233d2500723e5594f3e7c70896ffeeef32b9c950ywan 94233d2500723e5594f3e7c70896ffeeef32b9c950ywan for (b_col = 0; b_col < 4 * cols; b_col++) 95233d2500723e5594f3e7c70896ffeeef32b9c950ywan { 96233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index = (b_row >> 2) * (cols + 1) + (b_col >> 2); 97233d2500723e5594f3e7c70896ffeeef32b9c950ywan bindex = (b_row & 3) * 4 + (b_col & 3); 98233d2500723e5594f3e7c70896ffeeef32b9c950ywan 99233d2500723e5594f3e7c70896ffeeef32b9c950ywan if (mi[mb_index].mbmi.mode == B_PRED) 100233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "%2d ", mi[mb_index].bmi[bindex].as_mode); 101233d2500723e5594f3e7c70896ffeeef32b9c950ywan else 102233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "xx "); 103233d2500723e5594f3e7c70896ffeeef32b9c950ywan 104233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 105233d2500723e5594f3e7c70896ffeeef32b9c950ywan 106233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "\n"); 107233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 108233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 109233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "\n"); 110233d2500723e5594f3e7c70896ffeeef32b9c950ywan 111233d2500723e5594f3e7c70896ffeeef32b9c950ywan /* print out the macroblock mvs */ 112233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index = 0; 113233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "MVs for Frame %d\n", frame); 114233d2500723e5594f3e7c70896ffeeef32b9c950ywan 115233d2500723e5594f3e7c70896ffeeef32b9c950ywan for (mb_row = 0; mb_row < rows; mb_row++) 116233d2500723e5594f3e7c70896ffeeef32b9c950ywan { 117233d2500723e5594f3e7c70896ffeeef32b9c950ywan for (mb_col = 0; mb_col < cols; mb_col++) 118233d2500723e5594f3e7c70896ffeeef32b9c950ywan { 119233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "%5d:%-5d", mi[mb_index].mbmi.mv.as_mv.row / 2, mi[mb_index].mbmi.mv.as_mv.col / 2); 120233d2500723e5594f3e7c70896ffeeef32b9c950ywan 121233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index++; 122233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 123233d2500723e5594f3e7c70896ffeeef32b9c950ywan 124233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index++; 125233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "\n"); 126233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 127233d2500723e5594f3e7c70896ffeeef32b9c950ywan 128233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "\n"); 129233d2500723e5594f3e7c70896ffeeef32b9c950ywan 130233d2500723e5594f3e7c70896ffeeef32b9c950ywan 131233d2500723e5594f3e7c70896ffeeef32b9c950ywan /* print out the block modes */ 132233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index = 0; 133233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "MVs for Frame %d\n", frame); 134233d2500723e5594f3e7c70896ffeeef32b9c950ywan { 135233d2500723e5594f3e7c70896ffeeef32b9c950ywan int b_row; 136233d2500723e5594f3e7c70896ffeeef32b9c950ywan 137233d2500723e5594f3e7c70896ffeeef32b9c950ywan for (b_row = 0; b_row < 4 * rows; b_row++) 138233d2500723e5594f3e7c70896ffeeef32b9c950ywan { 139233d2500723e5594f3e7c70896ffeeef32b9c950ywan int b_col; 140233d2500723e5594f3e7c70896ffeeef32b9c950ywan int bindex; 141233d2500723e5594f3e7c70896ffeeef32b9c950ywan 142233d2500723e5594f3e7c70896ffeeef32b9c950ywan for (b_col = 0; b_col < 4 * cols; b_col++) 143233d2500723e5594f3e7c70896ffeeef32b9c950ywan { 144233d2500723e5594f3e7c70896ffeeef32b9c950ywan mb_index = (b_row >> 2) * (cols + 1) + (b_col >> 2); 145233d2500723e5594f3e7c70896ffeeef32b9c950ywan bindex = (b_row & 3) * 4 + (b_col & 3); 146233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "%3d:%-3d ", mi[mb_index].bmi[bindex].mv.as_mv.row, mi[mb_index].bmi[bindex].mv.as_mv.col); 147233d2500723e5594f3e7c70896ffeeef32b9c950ywan 148233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 149233d2500723e5594f3e7c70896ffeeef32b9c950ywan 150233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "\n"); 151233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 152233d2500723e5594f3e7c70896ffeeef32b9c950ywan } 153233d2500723e5594f3e7c70896ffeeef32b9c950ywan fprintf(mvs, "\n"); 154233d2500723e5594f3e7c70896ffeeef32b9c950ywan 155233d2500723e5594f3e7c70896ffeeef32b9c950ywan 156233d2500723e5594f3e7c70896ffeeef32b9c950ywan fclose(mvs); 157233d2500723e5594f3e7c70896ffeeef32b9c950ywan} 158