- if (get_block(&gb, block, c->scan, c->lquant))
- c->dsp->idct_put(y1, f->linesize[0], block);
+#define BLOCK(quant, dst, stride) do { \
+ int res = get_block(&gb, block, c->scan, quant); \
+ if (res < 0) \
+ return res; \
+ if (res > 0) \
+ c->dsp->idct_put(dst, stride, block); \
+} while (0)
+ int16_t *block = c->block;
+ BLOCK(c->lquant, y1, f->linesize[0]);