예제 #1
0
void
dump_frame (SchroLowDelay *lowdelay)
{
  int i, j, k;
  int16_t *line;
  SchroFrameData *fd;
  SchroParams *params = lowdelay->params;

  for(k=0;k<1+3*params->transform_depth;k++) {
    fd = lowdelay->chroma1_subbands + k;
    for(j=0;j<fd->height;j++){
#if 0
      int checksum = 0;
      line = SCHRO_FRAME_DATA_GET_LINE(fd, j);
      for(i=0;i<fd->width;i++){
        checksum *= 12345;
        checksum += line[i];
      }
      SCHRO_ERROR("%d %d %d", k, j, checksum);
#else
      line = SCHRO_FRAME_DATA_GET_LINE(fd, j);
      for(i=0;i<fd->width;i++){
        SCHRO_ERROR("%d %d %d %d", k, j, i, line[i]);
      }
#endif
    }
  }
}
예제 #2
0
void
schro_motion_init_obmc_weight (SchroMotion * motion)
{
    int i;
    int j;
    int wx, wy;

    for (i = 0; i < motion->xblen; i++) {
        if (motion->xoffset == 0) {
            wx = 8;
        } else if (i < 2 * motion->xoffset) {
            wx = get_ramp (i, motion->xoffset);
        } else if (motion->xblen - 1 - i < 2 * motion->xoffset) {
            wx = get_ramp (motion->xblen - 1 - i, motion->xoffset);
        } else {
            wx = 8;
        }
        motion->weight_x[i] = wx;
    }

    for (j = 0; j < motion->yblen; j++) {
        if (motion->yoffset == 0) {
            wy = 8;
        } else if (j < 2 * motion->yoffset) {
            wy = get_ramp (j, motion->yoffset);
        } else if (motion->yblen - 1 - j < 2 * motion->yoffset) {
            wy = get_ramp (motion->yblen - 1 - j, motion->yoffset);
        } else {
            wy = 8;
        }
        motion->weight_y[j] = wy;
    }

    for (j = 0; j < motion->yblen; j++) {
        int16_t *w = SCHRO_FRAME_DATA_GET_LINE (&motion->obmc_weight, j);

        for (i = 0; i < motion->xblen; i++) {
            w[i] = motion->weight_x[i] * motion->weight_y[j];
        }
    }

}