190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber/* 2f71323e297a928af368937089d3ed71239786f86Andreas Huber * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber * 4f71323e297a928af368937089d3ed71239786f86Andreas Huber * Use of this source code is governed by a BSD-style license 5f71323e297a928af368937089d3ed71239786f86Andreas Huber * that can be found in the LICENSE file in the root of the source 6f71323e297a928af368937089d3ed71239786f86Andreas Huber * tree. An additional intellectual property rights grant can be found 7f71323e297a928af368937089d3ed71239786f86Andreas Huber * in the file PATENTS. All contributing project authors may 8f71323e297a928af368937089d3ed71239786f86Andreas Huber * be found in the AUTHORS file in the root of the source tree. 990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber */ 1090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include <stdio.h> 1390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber#include "blockd.h" 1490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Hubervoid vp8_print_modes_and_motion_vectors(MODE_INFO *mi, int rows, int cols, int frame) 1790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber{ 1890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 1990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int mb_row; 2090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int mb_col; 2190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int mb_index = 0; 2290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber FILE *mvs = fopen("mvs.stt", "a"); 2390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 24538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber /* print out the macroblock Y modes */ 2590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mb_index = 0; 2690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "Mb Modes for Frame %d\n", frame); 2790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 2890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for (mb_row = 0; mb_row < rows; mb_row++) 2990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 3090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for (mb_col = 0; mb_col < cols; mb_col++) 3190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 3290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "%2d ", mi[mb_index].mbmi.mode); 3490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mb_index++; 3690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 3790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 3890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "\n"); 3990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mb_index++; 4090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 4190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "\n"); 4390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mb_index = 0; 4590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "Mb mv ref for Frame %d\n", frame); 4690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 4790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for (mb_row = 0; mb_row < rows; mb_row++) 4890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 4990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for (mb_col = 0; mb_col < cols; mb_col++) 5090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 5190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "%2d ", mi[mb_index].mbmi.ref_frame); 5390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mb_index++; 5590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 5690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 5790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "\n"); 5890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mb_index++; 5990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 6090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 6190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "\n"); 6290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 63538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber /* print out the macroblock UV modes */ 6490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mb_index = 0; 6590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "UV Modes for Frame %d\n", frame); 6690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 6790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for (mb_row = 0; mb_row < rows; mb_row++) 6890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 6990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for (mb_col = 0; mb_col < cols; mb_col++) 7090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 7190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "%2d ", mi[mb_index].mbmi.uv_mode); 7390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mb_index++; 7590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 7690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 7790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mb_index++; 7890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "\n"); 7990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 8090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 8190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "\n"); 8290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 83538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber /* print out the block modes */ 8490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "Mbs for Frame %d\n", frame); 8590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 8690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int b_row; 8790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 8890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for (b_row = 0; b_row < 4 * rows; b_row++) 8990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 9090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int b_col; 9190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int bindex; 9290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 9390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for (b_col = 0; b_col < 4 * cols; b_col++) 9490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 9590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mb_index = (b_row >> 2) * (cols + 1) + (b_col >> 2); 9690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber bindex = (b_row & 3) * 4 + (b_col & 3); 9790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 9890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber if (mi[mb_index].mbmi.mode == B_PRED) 991b362b15af34006e6a11974088a46d42b903418eJohann fprintf(mvs, "%2d ", mi[mb_index].bmi[bindex].as_mode); 10090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber else 10190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "xx "); 10290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 10490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 10590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "\n"); 10690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 10790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 10890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "\n"); 10990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 110538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber /* print out the macroblock mvs */ 11190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mb_index = 0; 11290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "MVs for Frame %d\n", frame); 11390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 11490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for (mb_row = 0; mb_row < rows; mb_row++) 11590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 11690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for (mb_col = 0; mb_col < cols; mb_col++) 11790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 11890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "%5d:%-5d", mi[mb_index].mbmi.mv.as_mv.row / 2, mi[mb_index].mbmi.mv.as_mv.col / 2); 11990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mb_index++; 12190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 12290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mb_index++; 12490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "\n"); 12590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 12690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "\n"); 12890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 12990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 130538f6170b788de7408b06efc6613dc98579aa6a6Andreas Huber /* print out the block modes */ 13190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "MVs for Frame %d\n", frame); 13290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 13390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int b_row; 13490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 13590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for (b_row = 0; b_row < 4 * rows; b_row++) 13690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 13790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int b_col; 13890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber int bindex; 13990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber for (b_col = 0; b_col < 4 * cols; b_col++) 14190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber { 14290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber mb_index = (b_row >> 2) * (cols + 1) + (b_col >> 2); 14390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber bindex = (b_row & 3) * 4 + (b_col & 3); 14490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "%3d:%-3d ", mi[mb_index].bmi[bindex].mv.as_mv.row, mi[mb_index].bmi[bindex].mv.as_mv.col); 14590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14690d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 14790d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 14890d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "\n"); 14990d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 15090d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber } 15190d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fprintf(mvs, "\n"); 15290d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15390d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber 15490d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber fclose(mvs); 15590d3ed91ae9228e1c8bab561b6138d4cb8c1e4fdAndreas Huber} 156