/* * 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.
*/
typedefenum {
DC_PRED, /* average of above and left pixels */
V_PRED, /* vertical prediction */
H_PRED, /* horizontal prediction */
TM_PRED, /* Truemotion prediction */
B_PRED, /* block based prediction, each block has its own prediction mode */
NEARESTMV,
NEARMV,
ZEROMV,
NEWMV,
SPLITMV,
MB_MODE_COUNT
} MB_PREDICTION_MODE;
/* Macroblock level features */ typedefenum {
MB_LVL_ALT_Q = 0, /* Use alternate Quantizer .... */
MB_LVL_ALT_LF = 1, /* Use alternate loop filter value... */
MB_LVL_MAX = 2 /* Number of MB level features supported */
/* 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. */
union b_mode_info {
B_PREDICTION_MODE as_mode;
int_mv mv;
};
uint8_t partitioning; /* does this mb has coefficients at all, 1=no coefficients, 0=need decode
tokens */
uint8_t mb_skip_coeff;
uint8_t need_to_clamp_mvs; /* Which set of segmentation parameters should be used for this MB */
uint8_t segment_id;
} MB_MODE_INFO;
typedefstruct modeinfo {
MB_MODE_INFO mbmi; union b_mode_info bmi[16];
} MODE_INFO;
#if CONFIG_MULTI_RES_ENCODING /* The mb-level information needed to be stored for higher-resolution encoder */ typedefstruct {
MB_PREDICTION_MODE mode;
MV_REFERENCE_FRAME ref_frame;
int_mv mv; int dissim; /* dissimilarity level of the macroblock */
} LOWER_RES_MB_INFO;
/* The frame-level information needed to be stored for higher-resolution
* encoder */ typedefstruct {
FRAME_TYPE frame_type; int is_frame_dropped; // If frame is dropped due to overshoot after encode_frame. This triggers a // drop and resets rate control with Q forced to max for following frame. // The check for this dropping due to overshoot is only done on lowest stream, // and if set will force drop on all spatial streams for that current frame. int is_frame_dropped_overshoot_maxqp; // The frame rate for the lowest resolution. double low_res_framerate; /* The frame number of each reference frames */ unsignedint low_res_ref_frames[MAX_REF_FRAMES]; // The video frame counter value for the key frame, for lowest resolution. unsignedint key_frame_counter_value; // Flags to signal skipped encoding of previous and base layer stream. unsignedint skip_encoding_prev_stream; unsignedint skip_encoding_base_stream;
LOWER_RES_MB_INFO *mb_info;
} LOWER_RES_FRAME_INFO; #endif
typedefstruct blockd { short *qcoeff; short *dqcoeff; unsignedchar *predictor; short *dequant;
int offset; char *eob;
union b_mode_info bmi;
} BLOCKD;
typedefvoid (*vp8_subpix_fn_t)(unsignedchar *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsignedchar *dst_ptr, int dst_pitch);
/* 0 indicates segmentation at MB level is not enabled. Otherwise the
* individual bits indicate which features are active. */ unsignedchar segmentation_enabled;
/* 0 (do not update) 1 (update) the macroblock segmentation map. */ unsignedchar update_mb_segmentation_map;
/* 0 (do not update) 1 (update) the macroblock segmentation feature data. */ unsignedchar update_mb_segmentation_data;
/* 0 (do not update) 1 (update) the macroblock segmentation feature data. */ unsignedchar mb_segment_abs_delta;
/* Per frame flags that define which MB level features (such as quantizer or
* loop filter level) */ /* are enabled and when enabled the proabilities used to decode the per MB
* flags in MB_MODE_INFO */ /* Probability Tree used to code Segment number */
vp8_prob mb_segment_tree_probs[MB_FEATURE_TREE_PROBS]; /* Segment parameters */ signedchar segment_feature_data[MB_LVL_MAX][MAX_MB_SEGMENTS];
#if VPX_ARCH_X86 || VPX_ARCH_X86_64 /* This is an intermediate buffer currently used in sub-pixel motion search * to keep a copy of the reference area. This buffer can be used for other * purpose.
*/
DECLARE_ALIGNED(32, unsignedchar, y_buf[22 * 32]); #endif
} MACROBLOCKD;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.