Home | History | Annotate | Download | only in common
      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 
     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