[FFmpeg-soc] [soc]: r3899 - dirac/libavcodec/diracdec.c
conrad
subversion at mplayerhq.hu
Sun Dec 28 08:38:01 CET 2008
Author: conrad
Date: Sun Dec 28 08:38:00 2008
New Revision: 3899
Log:
Move determining the position of the coeff out of the inner loop
Modified:
dirac/libavcodec/diracdec.c
Modified: dirac/libavcodec/diracdec.c
==============================================================================
--- dirac/libavcodec/diracdec.c Sun Dec 28 08:31:09 2008 (r3898)
+++ dirac/libavcodec/diracdec.c Sun Dec 28 08:38:00 2008 (r3899)
@@ -133,7 +133,7 @@ static inline int coeff_dequant(int coef
* @param qfact quantizer factor
*/
static inline void coeff_unpack_arith(DiracContext *s, SubBand *b,
- int x, int y,
+ int16_t *coeffp, int x, int y,
int qoffset, int qfactor)
{
int parent = 0;
@@ -142,9 +142,6 @@ static inline void coeff_unpack_arith(Di
int coeff;
int read_sign;
struct dirac_arith_context_set *context;
- int16_t *coeffp;
-
- coeffp = &b->ibuf[y * b->stride + x];
/* The value of the pixel belonging to the lower level. */
if (b->parent)
@@ -171,7 +168,7 @@ static inline void coeff_unpack_arith(Di
*coeffp = coeff;
}
-static inline void coeff_unpack_vlc(DiracContext *s, SubBand *b,
+static inline void coeff_unpack_vlc(DiracContext *s, SubBand *b, int16_t *buf,
int x, int y, int qoffset, int qfactor)
{
int coeff, sign;
@@ -180,7 +177,7 @@ static inline void coeff_unpack_vlc(Dira
if (sign && get_bits1(&s->gb))
coeff = -coeff;
- b->ibuf[y * b->stride + x] = coeff;
+ *buf = coeff;
}
/**
@@ -200,6 +197,7 @@ static inline void codeblock(DiracContex
{
int x, y;
unsigned int qoffset, qfactor;
+ int16_t *buf;
if (!blockcnt_one) {
int zero_block;
@@ -221,13 +219,16 @@ static inline void codeblock(DiracContex
qfactor = coeff_quant_factor(*quant);
qoffset = coeff_quant_offset(s->refs == 0, *quant) + 2;
- for (y = top; y < bottom; y++)
+ buf = b->ibuf + top*b->stride;
+ for (y = top; y < bottom; y++) {
for (x = left; x < right; x++) {
if (is_arith)
- coeff_unpack_arith(s, b, x, y, qoffset, qfactor);
+ coeff_unpack_arith(s, b, buf+x, x, y, qoffset, qfactor);
else
- coeff_unpack_vlc(s, b, x, y, qoffset, qfactor);
+ coeff_unpack_vlc(s, b, buf+x, x, y, qoffset, qfactor);
}
+ buf += b->stride;
+ }
}
/**
More information about the FFmpeg-soc
mailing list