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