Author: conrad Date: Thu Jan 1 21:32:23 2009 New Revision: 3934 Log: Move contexts so that the initial context for coeffs can be calculated without a lookup table 1% faster decode
Modified: dirac/libavcodec/dirac_arith.c dirac/libavcodec/dirac_arith.h dirac/libavcodec/diracdec.c Modified: dirac/libavcodec/dirac_arith.c ============================================================================== --- dirac/libavcodec/dirac_arith.c Thu Jan 1 21:32:21 2009 (r3933) +++ dirac/libavcodec/dirac_arith.c Thu Jan 1 21:32:23 2009 (r3934) @@ -63,18 +63,15 @@ static uint16_t arith_lookup[256] = { }; static uint8_t next_ctx[ARITH_CONTEXT_COUNT] = { - 0, - 0, - 0, ARITH_CONTEXT_ZP_F2, // ZPZN_F1 ARITH_CONTEXT_ZP_F2, // ZPNN_F1 + ARITH_CONTEXT_NP_F2, // NPZN_F1 + ARITH_CONTEXT_NP_F2, // NPNN_F1 ARITH_CONTEXT_ZP_F3, // ZP_F2 ARITH_CONTEXT_ZP_F4, // ZP_F3 ARITH_CONTEXT_ZP_F5, // ZP_F4 ARITH_CONTEXT_ZP_F6, // ZP_F5 ARITH_CONTEXT_ZP_F6, // ZP_F6 - ARITH_CONTEXT_NP_F2, // NPZN_F1 - ARITH_CONTEXT_NP_F2, // NPNN_F1 ARITH_CONTEXT_NP_F3, // NP_F2 ARITH_CONTEXT_NP_F4, // NP_F3 ARITH_CONTEXT_NP_F5, // NP_F4 @@ -82,6 +79,9 @@ static uint8_t next_ctx[ARITH_CONTEXT_CO ARITH_CONTEXT_NP_F6, // NP_F6 0, 0, + 0, + 0, + 0, ARITH_CONTEXT_Q_OFFSET_FOLLOW, 0, 0, Modified: dirac/libavcodec/dirac_arith.h ============================================================================== --- dirac/libavcodec/dirac_arith.h Thu Jan 1 21:32:21 2009 (r3933) +++ dirac/libavcodec/dirac_arith.h Thu Jan 1 21:32:23 2009 (r3934) @@ -31,23 +31,23 @@ #include "bitstream.h" enum arith_context_indices { - ARITH_CONTEXT_SIGN_ZERO, - ARITH_CONTEXT_SIGN_POS, - ARITH_CONTEXT_SIGN_NEG, ARITH_CONTEXT_ZPZN_F1, ARITH_CONTEXT_ZPNN_F1, + ARITH_CONTEXT_NPZN_F1, + ARITH_CONTEXT_NPNN_F1, ARITH_CONTEXT_ZP_F2, ARITH_CONTEXT_ZP_F3, ARITH_CONTEXT_ZP_F4, ARITH_CONTEXT_ZP_F5, ARITH_CONTEXT_ZP_F6, - ARITH_CONTEXT_NPZN_F1, - ARITH_CONTEXT_NPNN_F1, ARITH_CONTEXT_NP_F2, ARITH_CONTEXT_NP_F3, ARITH_CONTEXT_NP_F4, ARITH_CONTEXT_NP_F5, ARITH_CONTEXT_NP_F6, + ARITH_CONTEXT_SIGN_ZERO, + ARITH_CONTEXT_SIGN_POS, + ARITH_CONTEXT_SIGN_NEG, ARITH_CONTEXT_COEFF_DATA, ARITH_CONTEXT_ZERO_BLOCK, ARITH_CONTEXT_Q_OFFSET_FOLLOW, Modified: dirac/libavcodec/diracdec.c ============================================================================== --- dirac/libavcodec/diracdec.c Thu Jan 1 21:32:21 2009 (r3933) +++ dirac/libavcodec/diracdec.c Thu Jan 1 21:32:23 2009 (r3934) @@ -142,9 +142,6 @@ static inline void coeff_unpack_arith(Di int coeff; int read_sign; int sign_ctx; - static const uint8_t follow_ctxs[4] = { - ARITH_CONTEXT_ZPZN_F1, ARITH_CONTEXT_ZPNN_F1, - ARITH_CONTEXT_NPZN_F1, ARITH_CONTEXT_NPNN_F1 }; /* The value of the pixel belonging to the lower level. */ if (b->parent) @@ -155,7 +152,7 @@ static inline void coeff_unpack_arith(Di sign_ctx = sign_predict(coeffp, b->orientation, x, y, b->stride); - coeff = dirac_get_arith_uint(&s->arith, follow_ctxs[(parent<<1) | nhood], + coeff = dirac_get_arith_uint(&s->arith, (parent<<1) | nhood, ARITH_CONTEXT_COEFF_DATA); read_sign = coeff; _______________________________________________ FFmpeg-soc mailing list FFmpeg-soc@mplayerhq.hu https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc