misc code cleanup
* remove dec->skip_ * fix some naming (no speed diff observed) Change-Id: I12545ef79d29dd6f893c344d8fb171b0a8c7cc46
This commit is contained in:
parent
83db404390
commit
2451e47dca
@ -534,7 +534,7 @@ static const int kScan[16] = {
|
|||||||
0 + 12 * BPS, 4 + 12 * BPS, 8 + 12 * BPS, 12 + 12 * BPS
|
0 + 12 * BPS, 4 + 12 * BPS, 8 + 12 * BPS, 12 + 12 * BPS
|
||||||
};
|
};
|
||||||
|
|
||||||
static WEBP_INLINE int CheckMode(int mb_x, int mb_y, int mode) {
|
static int CheckMode(int mb_x, int mb_y, int mode) {
|
||||||
if (mode == B_DC_PRED) {
|
if (mode == B_DC_PRED) {
|
||||||
if (mb_x == 0) {
|
if (mb_x == 0) {
|
||||||
return (mb_y == 0) ? B_DC_PRED_NOTOPLEFT : B_DC_PRED_NOLEFT;
|
return (mb_y == 0) ? B_DC_PRED_NOTOPLEFT : B_DC_PRED_NOLEFT;
|
||||||
@ -545,11 +545,11 @@ static WEBP_INLINE int CheckMode(int mb_x, int mb_y, int mode) {
|
|||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
static WEBP_INLINE void Copy32b(uint8_t* dst, uint8_t* src) {
|
static void Copy32b(uint8_t* dst, uint8_t* src) {
|
||||||
*(uint32_t*)dst = *(uint32_t*)src;
|
memcpy(dst, src, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VP8ReconstructBlock(VP8Decoder* const dec) {
|
void VP8ReconstructBlock(const VP8Decoder* const dec) {
|
||||||
int j;
|
int j;
|
||||||
uint8_t* const y_dst = dec->yuv_b_ + Y_OFF;
|
uint8_t* const y_dst = dec->yuv_b_ + Y_OFF;
|
||||||
uint8_t* const u_dst = dec->yuv_b_ + U_OFF;
|
uint8_t* const u_dst = dec->yuv_b_ + U_OFF;
|
||||||
@ -583,7 +583,7 @@ void VP8ReconstructBlock(VP8Decoder* const dec) {
|
|||||||
uint8_t* const top_y = dec->y_t_ + dec->mb_x_ * 16;
|
uint8_t* const top_y = dec->y_t_ + dec->mb_x_ * 16;
|
||||||
uint8_t* const top_u = dec->u_t_ + dec->mb_x_ * 8;
|
uint8_t* const top_u = dec->u_t_ + dec->mb_x_ * 8;
|
||||||
uint8_t* const top_v = dec->v_t_ + dec->mb_x_ * 8;
|
uint8_t* const top_v = dec->v_t_ + dec->mb_x_ * 8;
|
||||||
const int16_t* coeffs = dec->coeffs_;
|
const int16_t* const coeffs = dec->coeffs_;
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
if (dec->mb_y_ > 0) {
|
if (dec->mb_y_ > 0) {
|
||||||
@ -659,13 +659,13 @@ void VP8ReconstructBlock(VP8Decoder* const dec) {
|
|||||||
VP8TransformDCUV(v_coeffs, v_dst);
|
VP8TransformDCUV(v_coeffs, v_dst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// stash away top samples for next block
|
// stash away top samples for next block
|
||||||
if (dec->mb_y_ < dec->mb_h_ - 1) {
|
if (dec->mb_y_ < dec->mb_h_ - 1) {
|
||||||
memcpy(top_y, y_dst + 15 * BPS, 16);
|
memcpy(top_y, y_dst + 15 * BPS, 16);
|
||||||
memcpy(top_u, u_dst + 7 * BPS, 8);
|
memcpy(top_u, u_dst + 7 * BPS, 8);
|
||||||
memcpy(top_v, v_dst + 7 * BPS, 8);
|
memcpy(top_v, v_dst + 7 * BPS, 8);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Transfer reconstructed samples from yuv_b_ cache to final destination.
|
// Transfer reconstructed samples from yuv_b_ cache to final destination.
|
||||||
|
@ -524,11 +524,11 @@ static const PackedNz kUnpackTab[16] = {
|
|||||||
#endif
|
#endif
|
||||||
#define PACK(X, S) ((((X).i32 * PACK_CST) & 0xff000000) >> (S))
|
#define PACK(X, S) ((((X).i32 * PACK_CST) & 0xff000000) >> (S))
|
||||||
|
|
||||||
static void ParseResiduals(VP8Decoder* const dec,
|
static int ParseResiduals(VP8Decoder* const dec,
|
||||||
VP8MB* const mb, VP8BitReader* const token_br) {
|
VP8MB* const mb, VP8BitReader* const token_br) {
|
||||||
int out_t_nz, out_l_nz, first;
|
int out_t_nz, out_l_nz, first;
|
||||||
ProbaArray ac_prob;
|
ProbaArray ac_prob;
|
||||||
const VP8QuantMatrix* q = &dec->dqm_[dec->segment_];
|
const VP8QuantMatrix* const q = &dec->dqm_[dec->segment_];
|
||||||
int16_t* dst = dec->coeffs_;
|
int16_t* dst = dec->coeffs_;
|
||||||
VP8MB* const left_mb = dec->mb_info_ - 1;
|
VP8MB* const left_mb = dec->mb_info_ - 1;
|
||||||
PackedNz nz_ac, nz_dc;
|
PackedNz nz_ac, nz_dc;
|
||||||
@ -537,12 +537,11 @@ static void ParseResiduals(VP8Decoder* const dec,
|
|||||||
uint32_t non_zero_dc = 0;
|
uint32_t non_zero_dc = 0;
|
||||||
int x, y, ch;
|
int x, y, ch;
|
||||||
|
|
||||||
nz_dc.i32 = nz_ac.i32 = 0;
|
|
||||||
memset(dst, 0, 384 * sizeof(*dst));
|
memset(dst, 0, 384 * sizeof(*dst));
|
||||||
if (!dec->is_i4x4_) { // parse DC
|
if (!dec->is_i4x4_) { // parse DC
|
||||||
int16_t dc[16] = { 0 };
|
int16_t dc[16] = { 0 };
|
||||||
const int ctx = mb->dc_nz_ + left_mb->dc_nz_;
|
const int ctx = mb->nz_dc_ + left_mb->nz_dc_;
|
||||||
mb->dc_nz_ = left_mb->dc_nz_ =
|
mb->nz_dc_ = left_mb->nz_dc_ =
|
||||||
(GetCoeffs(token_br, (ProbaArray)dec->proba_.coeffs_[1],
|
(GetCoeffs(token_br, (ProbaArray)dec->proba_.coeffs_[1],
|
||||||
ctx, q->y2_mat_, 0, dc) > 0);
|
ctx, q->y2_mat_, 0, dc) > 0);
|
||||||
first = 1;
|
first = 1;
|
||||||
@ -600,7 +599,7 @@ static void ParseResiduals(VP8Decoder* const dec,
|
|||||||
|
|
||||||
dec->non_zero_ac_ = non_zero_ac;
|
dec->non_zero_ac_ = non_zero_ac;
|
||||||
dec->non_zero_ = non_zero_ac | non_zero_dc;
|
dec->non_zero_ = non_zero_ac | non_zero_dc;
|
||||||
mb->skip_ = !dec->non_zero_;
|
return !dec->non_zero_; // will be used for further optimization
|
||||||
}
|
}
|
||||||
#undef PACK
|
#undef PACK
|
||||||
|
|
||||||
@ -610,7 +609,8 @@ static void ParseResiduals(VP8Decoder* const dec,
|
|||||||
int VP8DecodeMB(VP8Decoder* const dec, VP8BitReader* const token_br) {
|
int VP8DecodeMB(VP8Decoder* const dec, VP8BitReader* const token_br) {
|
||||||
VP8BitReader* const br = &dec->br_;
|
VP8BitReader* const br = &dec->br_;
|
||||||
VP8MB* const left = dec->mb_info_ - 1;
|
VP8MB* const left = dec->mb_info_ - 1;
|
||||||
VP8MB* const info = dec->mb_info_ + dec->mb_x_;
|
VP8MB* const mb = dec->mb_info_ + dec->mb_x_;
|
||||||
|
int skip;
|
||||||
|
|
||||||
// Note: we don't save segment map (yet), as we don't expect
|
// Note: we don't save segment map (yet), as we don't expect
|
||||||
// to decode more than 1 keyframe.
|
// to decode more than 1 keyframe.
|
||||||
@ -620,19 +620,19 @@ int VP8DecodeMB(VP8Decoder* const dec, VP8BitReader* const token_br) {
|
|||||||
VP8GetBit(br, dec->proba_.segments_[1]) :
|
VP8GetBit(br, dec->proba_.segments_[1]) :
|
||||||
2 + VP8GetBit(br, dec->proba_.segments_[2]);
|
2 + VP8GetBit(br, dec->proba_.segments_[2]);
|
||||||
}
|
}
|
||||||
info->skip_ = dec->use_skip_proba_ ? VP8GetBit(br, dec->skip_p_) : 0;
|
skip = dec->use_skip_proba_ ? VP8GetBit(br, dec->skip_p_) : 0;
|
||||||
|
|
||||||
VP8ParseIntraMode(br, dec);
|
VP8ParseIntraMode(br, dec);
|
||||||
if (br->eof_) {
|
if (br->eof_) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!info->skip_) {
|
if (!skip) {
|
||||||
ParseResiduals(dec, info, token_br);
|
skip = ParseResiduals(dec, mb, token_br);
|
||||||
} else {
|
} else {
|
||||||
left->nz_ = info->nz_ = 0;
|
left->nz_ = mb->nz_ = 0;
|
||||||
if (!dec->is_i4x4_) {
|
if (!dec->is_i4x4_) {
|
||||||
left->dc_nz_ = info->dc_nz_ = 0;
|
left->nz_dc_ = mb->nz_dc_ = 0;
|
||||||
}
|
}
|
||||||
dec->non_zero_ = 0;
|
dec->non_zero_ = 0;
|
||||||
dec->non_zero_ac_ = 0;
|
dec->non_zero_ac_ = 0;
|
||||||
@ -641,16 +641,16 @@ int VP8DecodeMB(VP8Decoder* const dec, VP8BitReader* const token_br) {
|
|||||||
if (dec->filter_type_ > 0) { // store filter info
|
if (dec->filter_type_ > 0) { // store filter info
|
||||||
VP8FInfo* const finfo = dec->f_info_ + dec->mb_x_;
|
VP8FInfo* const finfo = dec->f_info_ + dec->mb_x_;
|
||||||
*finfo = dec->fstrengths_[dec->segment_][dec->is_i4x4_];
|
*finfo = dec->fstrengths_[dec->segment_][dec->is_i4x4_];
|
||||||
finfo->f_inner_ = (!info->skip_ || dec->is_i4x4_);
|
finfo->f_inner_ = !skip || dec->is_i4x4_;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (!token_br->eof_);
|
return !token_br->eof_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void VP8InitScanline(VP8Decoder* const dec) {
|
void VP8InitScanline(VP8Decoder* const dec) {
|
||||||
VP8MB* const left = dec->mb_info_ - 1;
|
VP8MB* const left = dec->mb_info_ - 1;
|
||||||
left->nz_ = 0;
|
left->nz_ = 0;
|
||||||
left->dc_nz_ = 0;
|
left->nz_dc_ = 0;
|
||||||
memset(dec->intra_l_, B_DC_PRED, sizeof(dec->intra_l_));
|
memset(dec->intra_l_, B_DC_PRED, sizeof(dec->intra_l_));
|
||||||
dec->filter_row_ =
|
dec->filter_row_ =
|
||||||
(dec->filter_type_ > 0) &&
|
(dec->filter_type_ > 0) &&
|
||||||
|
@ -159,9 +159,8 @@ typedef struct { // filter specs
|
|||||||
|
|
||||||
typedef struct { // used for syntax-parsing
|
typedef struct { // used for syntax-parsing
|
||||||
unsigned int nz_:24; // non-zero AC/DC coeffs (24bit)
|
unsigned int nz_:24; // non-zero AC/DC coeffs (24bit)
|
||||||
unsigned int dc_nz_:1; // non-zero DC coeffs
|
unsigned int nz_dc_:1; // non-zero DC coeffs
|
||||||
unsigned int skip_:1; // block type
|
unsigned int pad_:7;
|
||||||
unsigned int pad_:6;
|
|
||||||
} VP8MB;
|
} VP8MB;
|
||||||
|
|
||||||
// Dequantization matrices
|
// Dequantization matrices
|
||||||
@ -304,7 +303,7 @@ void VP8ParseQuant(VP8Decoder* const dec);
|
|||||||
// in frame.c
|
// in frame.c
|
||||||
int VP8InitFrame(VP8Decoder* const dec, VP8Io* io);
|
int VP8InitFrame(VP8Decoder* const dec, VP8Io* io);
|
||||||
// Predict a block and add residual
|
// Predict a block and add residual
|
||||||
void VP8ReconstructBlock(VP8Decoder* const dec);
|
void VP8ReconstructBlock(const VP8Decoder* const dec);
|
||||||
// Call io->setup() and finish setting up scan parameters.
|
// Call io->setup() and finish setting up scan parameters.
|
||||||
// After this call returns, one must always call VP8ExitCritical() with the
|
// After this call returns, one must always call VP8ExitCritical() with the
|
||||||
// same parameters. Both functions should be used in pair. Returns VP8_STATUS_OK
|
// same parameters. Both functions should be used in pair. Returns VP8_STATUS_OK
|
||||||
|
Loading…
Reference in New Issue
Block a user