1 /*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include <stdio.h>
12 #include "blockd.h"
13
vp8_print_modes_and_motion_vectors(MODE_INFO * mi,int rows,int cols,int frame)14 void vp8_print_modes_and_motion_vectors(MODE_INFO *mi, int rows, int cols,
15 int frame) {
16 int mb_row;
17 int mb_col;
18 int mb_index = 0;
19 FILE *mvs = fopen("mvs.stt", "a");
20
21 /* print out the macroblock Y modes */
22 mb_index = 0;
23 fprintf(mvs, "Mb Modes for Frame %d\n", frame);
24
25 for (mb_row = 0; mb_row < rows; ++mb_row) {
26 for (mb_col = 0; mb_col < cols; ++mb_col) {
27 fprintf(mvs, "%2d ", mi[mb_index].mbmi.mode);
28
29 mb_index++;
30 }
31
32 fprintf(mvs, "\n");
33 mb_index++;
34 }
35
36 fprintf(mvs, "\n");
37
38 mb_index = 0;
39 fprintf(mvs, "Mb mv ref for Frame %d\n", frame);
40
41 for (mb_row = 0; mb_row < rows; ++mb_row) {
42 for (mb_col = 0; mb_col < cols; ++mb_col) {
43 fprintf(mvs, "%2d ", mi[mb_index].mbmi.ref_frame);
44
45 mb_index++;
46 }
47
48 fprintf(mvs, "\n");
49 mb_index++;
50 }
51
52 fprintf(mvs, "\n");
53
54 /* print out the macroblock UV modes */
55 mb_index = 0;
56 fprintf(mvs, "UV Modes for Frame %d\n", frame);
57
58 for (mb_row = 0; mb_row < rows; ++mb_row) {
59 for (mb_col = 0; mb_col < cols; ++mb_col) {
60 fprintf(mvs, "%2d ", mi[mb_index].mbmi.uv_mode);
61
62 mb_index++;
63 }
64
65 mb_index++;
66 fprintf(mvs, "\n");
67 }
68
69 fprintf(mvs, "\n");
70
71 /* print out the block modes */
72 fprintf(mvs, "Mbs for Frame %d\n", frame);
73 {
74 int b_row;
75
76 for (b_row = 0; b_row < 4 * rows; ++b_row) {
77 int b_col;
78 int bindex;
79
80 for (b_col = 0; b_col < 4 * cols; ++b_col) {
81 mb_index = (b_row >> 2) * (cols + 1) + (b_col >> 2);
82 bindex = (b_row & 3) * 4 + (b_col & 3);
83
84 if (mi[mb_index].mbmi.mode == B_PRED)
85 fprintf(mvs, "%2d ", mi[mb_index].bmi[bindex].as_mode);
86 else
87 fprintf(mvs, "xx ");
88 }
89
90 fprintf(mvs, "\n");
91 }
92 }
93 fprintf(mvs, "\n");
94
95 /* print out the macroblock mvs */
96 mb_index = 0;
97 fprintf(mvs, "MVs for Frame %d\n", frame);
98
99 for (mb_row = 0; mb_row < rows; ++mb_row) {
100 for (mb_col = 0; mb_col < cols; ++mb_col) {
101 fprintf(mvs, "%5d:%-5d", mi[mb_index].mbmi.mv.as_mv.row / 2,
102 mi[mb_index].mbmi.mv.as_mv.col / 2);
103
104 mb_index++;
105 }
106
107 mb_index++;
108 fprintf(mvs, "\n");
109 }
110
111 fprintf(mvs, "\n");
112
113 /* print out the block modes */
114 fprintf(mvs, "MVs for Frame %d\n", frame);
115 {
116 int b_row;
117
118 for (b_row = 0; b_row < 4 * rows; ++b_row) {
119 int b_col;
120 int bindex;
121
122 for (b_col = 0; b_col < 4 * cols; ++b_col) {
123 mb_index = (b_row >> 2) * (cols + 1) + (b_col >> 2);
124 bindex = (b_row & 3) * 4 + (b_col & 3);
125 fprintf(mvs, "%3d:%-3d ", mi[mb_index].bmi[bindex].mv.as_mv.row,
126 mi[mb_index].bmi[bindex].mv.as_mv.col);
127 }
128
129 fprintf(mvs, "\n");
130 }
131 }
132 fprintf(mvs, "\n");
133
134 fclose(mvs);
135 }
136