chromium/third_party/libvpx/source/libvpx/vp9/common/vp9_blockd.h

/*
 *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

#ifndef VPX_VP9_COMMON_VP9_BLOCKD_H_
#define VPX_VP9_COMMON_VP9_BLOCKD_H_

#include "./vpx_config.h"

#include "vpx_dsp/vpx_dsp_common.h"
#include "vpx_ports/mem.h"
#include "vpx_scale/yv12config.h"

#include "vp9/common/vp9_common_data.h"
#include "vp9/common/vp9_entropy.h"
#include "vp9/common/vp9_entropymode.h"
#include "vp9/common/vp9_mv.h"
#include "vp9/common/vp9_scale.h"
#include "vp9/common/vp9_seg_common.h"
#include "vp9/common/vp9_tile_common.h"

#ifdef __cplusplus
extern "C" {
#endif

#define MAX_MB_PLANE

FRAME_TYPE;

static INLINE int is_inter_mode(PREDICTION_MODE mode) {}

/* For keyframes, intra block modes are predicted by the (already decoded)
   modes for the Y blocks to the left and above us; for interframes, there
   is a single probability table. */

b_mode_info;

// Note that the rate-distortion optimization loop, bit-stream writer, and
// decoder implementation modules critically rely on the defined entry values
// specified herein. They should be refactored concurrently.

#define NO_REF_FRAME
#define INTRA_FRAME
#define LAST_FRAME
#define GOLDEN_FRAME
#define ALTREF_FRAME
#define MAX_REF_FRAMES
#define MAX_INTER_REF_FRAMES

MV_REFERENCE_FRAME;

static INLINE int mv_ref_frame_to_inter_ref_idx(
    MV_REFERENCE_FRAME mv_ref_frame) {}

// This structure now relates to 8x8 block regions.
MODE_INFO;

static INLINE PREDICTION_MODE get_y_mode(const MODE_INFO *mi, int block) {}

static INLINE int is_inter_block(const MODE_INFO *mi) {}

static INLINE int has_second_ref(const MODE_INFO *mi) {}

PREDICTION_MODE vp9_left_block_mode(const MODE_INFO *cur_mi,
                                    const MODE_INFO *left_mi, int b);

PREDICTION_MODE vp9_above_block_mode(const MODE_INFO *cur_mi,
                                     const MODE_INFO *above_mi, int b);

enum mv_precision {};

struct buf_2d {};

struct macroblockd_plane {};

#define BLOCK_OFFSET(x, i)

RefBuffer;

MACROBLOCKD;

static INLINE PLANE_TYPE get_plane_type(int plane) {}

static INLINE BLOCK_SIZE get_subsize(BLOCK_SIZE bsize,
                                     PARTITION_TYPE partition) {}

extern const TX_TYPE intra_mode_to_tx_type_lookup[INTRA_MODES];

static INLINE TX_TYPE get_tx_type(PLANE_TYPE plane_type,
                                  const MACROBLOCKD *xd) {}

static INLINE TX_TYPE get_tx_type_4x4(PLANE_TYPE plane_type,
                                      const MACROBLOCKD *xd, int ib) {}

void vp9_setup_block_planes(MACROBLOCKD *xd, int ss_x, int ss_y);

static INLINE TX_SIZE get_uv_tx_size(const MODE_INFO *mi,
                                     const struct macroblockd_plane *pd) {}

static INLINE BLOCK_SIZE
get_plane_block_size(BLOCK_SIZE bsize, const struct macroblockd_plane *pd) {}

static INLINE void reset_skip_context(MACROBLOCKD *xd, BLOCK_SIZE bsize) {}

static INLINE const vpx_prob *get_y_mode_probs(const MODE_INFO *mi,
                                               const MODE_INFO *above_mi,
                                               const MODE_INFO *left_mi,
                                               int block) {}

foreach_transformed_block_visitor;

void vp9_foreach_transformed_block_in_plane(
    const MACROBLOCKD *const xd, BLOCK_SIZE bsize, int plane,
    foreach_transformed_block_visitor visit, void *arg);

void vp9_foreach_transformed_block(const MACROBLOCKD *const xd,
                                   BLOCK_SIZE bsize,
                                   foreach_transformed_block_visitor visit,
                                   void *arg);

void vp9_set_contexts(const MACROBLOCKD *xd, struct macroblockd_plane *pd,
                      BLOCK_SIZE plane_bsize, TX_SIZE tx_size, int has_eob,
                      int aoff, int loff);

#if CONFIG_MISMATCH_DEBUG
#define TX_UNIT_SIZE_LOG2
static INLINE void mi_to_pixel_loc(int *pixel_c, int *pixel_r, int mi_col,
                                   int mi_row, int tx_blk_col, int tx_blk_row,
                                   int subsampling_x, int subsampling_y) {
  *pixel_c = ((mi_col << MI_SIZE_LOG2) >> subsampling_x) +
             (tx_blk_col << TX_UNIT_SIZE_LOG2);
  *pixel_r = ((mi_row << MI_SIZE_LOG2) >> subsampling_y) +
             (tx_blk_row << TX_UNIT_SIZE_LOG2);
}

static INLINE int get_block_width(BLOCK_SIZE bsize) {
  const int num_4x4_w = num_4x4_blocks_wide_lookup[bsize];
  return 4 * num_4x4_w;
}

static INLINE int get_block_height(BLOCK_SIZE bsize) {
  const int num_4x4_h = num_4x4_blocks_high_lookup[bsize];
  return 4 * num_4x4_h;
}
#endif

#ifdef __cplusplus
}  // extern "C"
#endif

#endif  // VPX_VP9_COMMON_VP9_BLOCKD_H_