From a6d9f9e60e090d3ef1be6c8497d3f5eaa7bd4e2e Mon Sep 17 00:00:00 2001 From: Diego Biurrun Date: Sun, 26 Aug 2012 09:57:19 +0200 Subject: cavs: Move inline functions only used in one file out of the header --- libavcodec/cavsdec.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'libavcodec/cavsdec.c') diff --git a/libavcodec/cavsdec.c b/libavcodec/cavsdec.c index 8dae8911eb..e70dad038a 100644 --- a/libavcodec/cavsdec.c +++ b/libavcodec/cavsdec.c @@ -511,6 +511,26 @@ static inline int get_ue_code(GetBitContext *gb, int order) { return get_ue_golomb(gb); } +static inline int dequant(AVSContext *h, DCTELEM *level_buf, uint8_t *run_buf, + DCTELEM *dst, int mul, int shift, int coeff_num) { + int round = 1 << (shift - 1); + int pos = -1; + const uint8_t *scantab = h->scantable.permutated; + + /* inverse scan and dequantization */ + while(--coeff_num >= 0){ + pos += run_buf[coeff_num]; + if(pos > 63) { + av_log(h->s.avctx, AV_LOG_ERROR, + "position out of block bounds at pic %d MB(%d,%d)\n", + h->picture.poc, h->mbx, h->mby); + return -1; + } + dst[scantab[pos]] = (level_buf[coeff_num]*mul + round) >> shift; + } + return 0; +} + /** * decode coefficients from one 8x8 block, dequantize, inverse transform * and add them to sample block @@ -597,6 +617,15 @@ static inline int decode_residual_inter(AVSContext *h) { * ****************************************************************************/ +static inline void set_mv_intra(AVSContext *h) { + h->mv[MV_FWD_X0] = ff_cavs_intra_mv; + set_mvs(&h->mv[MV_FWD_X0], BLK_16X16); + h->mv[MV_BWD_X0] = ff_cavs_intra_mv; + set_mvs(&h->mv[MV_BWD_X0], BLK_16X16); + if(h->pic_type != AV_PICTURE_TYPE_B) + h->col_type_base[h->mbidx] = I_8X8; +} + static int decode_mb_i(AVSContext *h, int cbp_code) { GetBitContext *gb = &h->s.gb; unsigned pred_mode_uv; @@ -664,6 +693,16 @@ static int decode_mb_i(AVSContext *h, int cbp_code) { return 0; } +static inline void set_intra_mode_default(AVSContext *h) { + if(h->stream_revision > 0) { + h->pred_mode_Y[3] = h->pred_mode_Y[6] = NOT_AVAIL; + h->top_pred_Y[h->mbx*2+0] = h->top_pred_Y[h->mbx*2+1] = NOT_AVAIL; + } else { + h->pred_mode_Y[3] = h->pred_mode_Y[6] = INTRA_L_LP; + h->top_pred_Y[h->mbx*2+0] = h->top_pred_Y[h->mbx*2+1] = INTRA_L_LP; + } +} + static void decode_mb_p(AVSContext *h, enum cavs_mb mb_type) { GetBitContext *gb = &h->s.gb; int ref[4]; -- cgit v1.2.3