diff options
author | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2015-05-17 12:58:44 +0200 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2015-05-17 12:58:44 +0200 |
commit | 83356cf6cceb835e9bbed0ca94accb2cc32fcf03 (patch) | |
tree | cf2794e55b3ff31b1fb3f8b8195740a9305c7b14 | |
parent | ee8c18387d02a7ee5ee3317cf1cecd84a7e0d91a (diff) | |
download | ffmpeg-83356cf6cceb835e9bbed0ca94accb2cc32fcf03.tar.gz |
lavc/vc1: Never decode vc1 as gray if gray decoding was not enabled.
-rw-r--r-- | libavcodec/vc1_block.c | 36 | ||||
-rw-r--r-- | libavcodec/vc1_loopfilter.c | 4 | ||||
-rw-r--r-- | libavcodec/vc1_mc.c | 12 | ||||
-rw-r--r-- | libavcodec/vc1dec.c | 6 |
4 files changed, 29 insertions, 29 deletions
diff --git a/libavcodec/vc1_block.c b/libavcodec/vc1_block.c index 495e46bf52..65b4ccfa50 100644 --- a/libavcodec/vc1_block.c +++ b/libavcodec/vc1_block.c @@ -1327,7 +1327,7 @@ static int vc1_decode_p_mb(VC1Context *v) vc1_decode_intra_block(v, s->block[i], i, val, mquant, (i & 4) ? v->codingset2 : v->codingset); - if ((i>3) && (s->flags & CODEC_FLAG_GRAY)) + if (CONFIG_GRAY && (i>3) && (s->flags & CODEC_FLAG_GRAY)) continue; v->vc1dsp.vc1_inv_trans_8x8(s->block[i]); if (v->rangeredfrm) @@ -1348,7 +1348,7 @@ static int vc1_decode_p_mb(VC1Context *v) } else if (val) { pat = vc1_decode_p_block(v, s->block[i], i, mquant, ttmb, first_block, s->dest[dst_idx] + off, (i & 4) ? s->uvlinesize : s->linesize, - (i & 4) && (s->flags & CODEC_FLAG_GRAY), &block_tt); + CONFIG_GRAY && (i & 4) && (s->flags & CODEC_FLAG_GRAY), &block_tt); block_cbp |= pat << (i << 2); if (!v->ttmbf && ttmb < 8) ttmb = -1; @@ -1438,7 +1438,7 @@ static int vc1_decode_p_mb(VC1Context *v) vc1_decode_intra_block(v, s->block[i], i, is_coded[i], mquant, (i & 4) ? v->codingset2 : v->codingset); - if ((i>3) && (s->flags & CODEC_FLAG_GRAY)) + if (CONFIG_GRAY && (i>3) && (s->flags & CODEC_FLAG_GRAY)) continue; v->vc1dsp.vc1_inv_trans_8x8(s->block[i]); if (v->rangeredfrm) @@ -1460,7 +1460,7 @@ static int vc1_decode_p_mb(VC1Context *v) pat = vc1_decode_p_block(v, s->block[i], i, mquant, ttmb, first_block, s->dest[dst_idx] + off, (i & 4) ? s->uvlinesize : s->linesize, - (i & 4) && (s->flags & CODEC_FLAG_GRAY), + CONFIG_GRAY && (i & 4) && (s->flags & CODEC_FLAG_GRAY), &block_tt); block_cbp |= pat << (i << 2); if (!v->ttmbf && ttmb < 8) @@ -1586,7 +1586,7 @@ static int vc1_decode_p_mb_intfr(VC1Context *v) vc1_decode_intra_block(v, s->block[i], i, val, mquant, (i & 4) ? v->codingset2 : v->codingset); - if ((i>3) && (s->flags & CODEC_FLAG_GRAY)) continue; + if (CONFIG_GRAY && (i>3) && (s->flags & CODEC_FLAG_GRAY)) continue; v->vc1dsp.vc1_inv_trans_8x8(s->block[i]); if (i < 4) { stride_y = s->linesize << fieldtx; @@ -1672,7 +1672,7 @@ static int vc1_decode_p_mb_intfr(VC1Context *v) pat = vc1_decode_p_block(v, s->block[i], i, mquant, ttmb, first_block, s->dest[dst_idx] + off, (i & 4) ? s->uvlinesize : (s->linesize << fieldtx), - (i & 4) && (s->flags & CODEC_FLAG_GRAY), &block_tt); + CONFIG_GRAY && (i & 4) && (s->flags & CODEC_FLAG_GRAY), &block_tt); block_cbp |= pat << (i << 2); if (!v->ttmbf && ttmb < 8) ttmb = -1; @@ -1751,7 +1751,7 @@ static int vc1_decode_p_mb_intfi(VC1Context *v) vc1_decode_intra_block(v, s->block[i], i, val, mquant, (i & 4) ? v->codingset2 : v->codingset); - if ((i>3) && (s->flags & CODEC_FLAG_GRAY)) + if (CONFIG_GRAY && (i>3) && (s->flags & CODEC_FLAG_GRAY)) continue; v->vc1dsp.vc1_inv_trans_8x8(s->block[i]); off = (i & 4) ? 0 : ((i & 1) * 8 + (i & 2) * 4 * s->linesize); @@ -1805,7 +1805,7 @@ static int vc1_decode_p_mb_intfi(VC1Context *v) pat = vc1_decode_p_block(v, s->block[i], i, mquant, ttmb, first_block, s->dest[dst_idx] + off, (i & 4) ? s->uvlinesize : s->linesize, - (i & 4) && (s->flags & CODEC_FLAG_GRAY), + CONFIG_GRAY && (i & 4) && (s->flags & CODEC_FLAG_GRAY), &block_tt); block_cbp |= pat << (i << 2); if (!v->ttmbf && ttmb < 8) @@ -1952,7 +1952,7 @@ static void vc1_decode_b_mb(VC1Context *v) vc1_decode_intra_block(v, s->block[i], i, val, mquant, (i & 4) ? v->codingset2 : v->codingset); - if ((i>3) && (s->flags & CODEC_FLAG_GRAY)) + if (CONFIG_GRAY && (i>3) && (s->flags & CODEC_FLAG_GRAY)) continue; v->vc1dsp.vc1_inv_trans_8x8(s->block[i]); if (v->rangeredfrm) @@ -1966,7 +1966,7 @@ static void vc1_decode_b_mb(VC1Context *v) vc1_decode_p_block(v, s->block[i], i, mquant, ttmb, first_block, s->dest[dst_idx] + off, (i & 4) ? s->uvlinesize : s->linesize, - (i & 4) && (s->flags & CODEC_FLAG_GRAY), NULL); + CONFIG_GRAY && (i & 4) && (s->flags & CODEC_FLAG_GRAY), NULL); if (!v->ttmbf && ttmb < 8) ttmb = -1; first_block = 0; @@ -2027,7 +2027,7 @@ static void vc1_decode_b_mb_intfi(VC1Context *v) vc1_decode_intra_block(v, s->block[i], i, val, mquant, (i & 4) ? v->codingset2 : v->codingset); - if ((i>3) && (s->flags & CODEC_FLAG_GRAY)) + if (CONFIG_GRAY && (i>3) && (s->flags & CODEC_FLAG_GRAY)) continue; v->vc1dsp.vc1_inv_trans_8x8(s->block[i]); if (v->rangeredfrm) @@ -2125,7 +2125,7 @@ static void vc1_decode_b_mb_intfi(VC1Context *v) vc1_decode_p_block(v, s->block[i], i, mquant, ttmb, first_block, s->dest[dst_idx] + off, (i & 4) ? s->uvlinesize : s->linesize, - (i & 4) && (s->flags & CODEC_FLAG_GRAY), NULL); + CONFIG_GRAY && (i & 4) && (s->flags & CODEC_FLAG_GRAY), NULL); if (!v->ttmbf && ttmb < 8) ttmb = -1; first_block = 0; @@ -2250,7 +2250,7 @@ static int vc1_decode_b_mb_intfr(VC1Context *v) vc1_decode_intra_block(v, s->block[i], i, val, mquant, (i & 4) ? v->codingset2 : v->codingset); - if (i > 3 && (s->flags & CODEC_FLAG_GRAY)) + if (CONFIG_GRAY && i > 3 && (s->flags & CODEC_FLAG_GRAY)) continue; v->vc1dsp.vc1_inv_trans_8x8(s->block[i]); if (i < 4) { @@ -2416,7 +2416,7 @@ static int vc1_decode_b_mb_intfr(VC1Context *v) pat = vc1_decode_p_block(v, s->block[i], i, mquant, ttmb, first_block, s->dest[dst_idx] + off, (i & 4) ? s->uvlinesize : (s->linesize << fieldtx), - (i & 4) && (s->flags & CODEC_FLAG_GRAY), &block_tt); + CONFIG_GRAY && (i & 4) && (s->flags & CODEC_FLAG_GRAY), &block_tt); block_cbp |= pat << (i << 2); if (!v->ttmbf && ttmb < 8) ttmb = -1; @@ -2559,7 +2559,7 @@ static void vc1_decode_i_blocks(VC1Context *v) vc1_decode_i_block(v, s->block[k], k, val, (k < 4) ? v->codingset : v->codingset2); - if (k > 3 && (s->flags & CODEC_FLAG_GRAY)) + if (CONFIG_GRAY && k > 3 && (s->flags & CODEC_FLAG_GRAY)) continue; v->vc1dsp.vc1_inv_trans_8x8(s->block[k]); if (v->pq >= 9 && v->overlap) { @@ -2583,7 +2583,7 @@ static void vc1_decode_i_blocks(VC1Context *v) if (s->mb_x) { v->vc1dsp.vc1_h_overlap(s->dest[0], s->linesize); v->vc1dsp.vc1_h_overlap(s->dest[0] + 8 * s->linesize, s->linesize); - if (!(s->flags & CODEC_FLAG_GRAY)) { + if (!CONFIG_GRAY || !(s->flags & CODEC_FLAG_GRAY)) { v->vc1dsp.vc1_h_overlap(s->dest[1], s->uvlinesize); v->vc1dsp.vc1_h_overlap(s->dest[2], s->uvlinesize); } @@ -2593,7 +2593,7 @@ static void vc1_decode_i_blocks(VC1Context *v) if (!s->first_slice_line) { v->vc1dsp.vc1_v_overlap(s->dest[0], s->linesize); v->vc1dsp.vc1_v_overlap(s->dest[0] + 8, s->linesize); - if (!(s->flags & CODEC_FLAG_GRAY)) { + if (!CONFIG_GRAY || !(s->flags & CODEC_FLAG_GRAY)) { v->vc1dsp.vc1_v_overlap(s->dest[1], s->uvlinesize); v->vc1dsp.vc1_v_overlap(s->dest[2], s->uvlinesize); } @@ -2722,7 +2722,7 @@ static void vc1_decode_i_blocks_adv(VC1Context *v) vc1_decode_i_block_adv(v, block[k], k, val, (k < 4) ? v->codingset : v->codingset2, mquant); - if (k > 3 && (s->flags & CODEC_FLAG_GRAY)) + if (CONFIG_GRAY && k > 3 && (s->flags & CODEC_FLAG_GRAY)) continue; v->vc1dsp.vc1_inv_trans_8x8(block[k]); } diff --git a/libavcodec/vc1_loopfilter.c b/libavcodec/vc1_loopfilter.c index 1a7037fcb2..f7eec17e25 100644 --- a/libavcodec/vc1_loopfilter.c +++ b/libavcodec/vc1_loopfilter.c @@ -110,7 +110,7 @@ void ff_vc1_loop_filter_iblk_delayed(VC1Context *v, int pq) if (s->mb_x >= 2) v->vc1dsp.vc1_h_loop_filter16(s->dest[0] - 16 * s->linesize - 16, s->linesize, pq); v->vc1dsp.vc1_h_loop_filter16(s->dest[0] - 16 * s->linesize - 8, s->linesize, pq); - if (s->mb_x >= 2 && !(s->flags & CODEC_FLAG_GRAY)) { + if (s->mb_x >= 2 && (!CONFIG_GRAY || !(s->flags & CODEC_FLAG_GRAY))) { for (j = 0; j < 2; j++) { v->vc1dsp.vc1_h_loop_filter8(s->dest[j + 1] - 8 * s->uvlinesize - 8, s->uvlinesize, pq); } @@ -121,7 +121,7 @@ void ff_vc1_loop_filter_iblk_delayed(VC1Context *v, int pq) if (s->mb_x) v->vc1dsp.vc1_h_loop_filter16(s->dest[0] - 16 * s->linesize, s->linesize, pq); v->vc1dsp.vc1_h_loop_filter16(s->dest[0] - 16 * s->linesize + 8, s->linesize, pq); - if (s->mb_x && !(s->flags & CODEC_FLAG_GRAY)) { + if (s->mb_x && (!CONFIG_GRAY || !(s->flags & CODEC_FLAG_GRAY))) { for (j = 0; j < 2; j++) { v->vc1dsp.vc1_h_loop_filter8(s->dest[j + 1] - 8 * s->uvlinesize, s->uvlinesize, pq); } diff --git a/libavcodec/vc1_mc.c b/libavcodec/vc1_mc.c index 569aad03e8..6236036dbf 100644 --- a/libavcodec/vc1_mc.c +++ b/libavcodec/vc1_mc.c @@ -270,7 +270,7 @@ void ff_vc1_mc_1mv(VC1Context *v, int dir) } /* for grayscale we should not try to read from unknown area */ - if (s->flags & CODEC_FLAG_GRAY) { + if (CONFIG_GRAY && s->flags & CODEC_FLAG_GRAY) { srcU = s->edge_emu_buffer + 18 * s->linesize; srcV = s->edge_emu_buffer + 18 * s->linesize; } @@ -332,7 +332,7 @@ void ff_vc1_mc_1mv(VC1Context *v, int dir) s->hdsp.put_no_rnd_pixels_tab[0][dxy](s->dest[0], srcY, s->linesize, 16); } - if (s->flags & CODEC_FLAG_GRAY) return; + if (CONFIG_GRAY && s->flags & CODEC_FLAG_GRAY) return; /* Chroma MC always uses qpel bilinear */ uvmx = (uvmx & 3) << 1; uvmy = (uvmy & 3) << 1; @@ -517,7 +517,7 @@ void ff_vc1_mc_4mv_chroma(VC1Context *v, int dir) if (!v->field_mode && !v->s.last_picture.f->data[0]) return; - if (s->flags & CODEC_FLAG_GRAY) + if (CONFIG_GRAY && s->flags & CODEC_FLAG_GRAY) return; /* calculate chroma MV vector from four luma MVs */ @@ -654,7 +654,7 @@ void ff_vc1_mc_4mv_chroma4(VC1Context *v, int dir, int dir2, int avg) int use_ic; uint8_t (*lutuv)[256]; - if (s->flags & CODEC_FLAG_GRAY) + if (CONFIG_GRAY && s->flags & CODEC_FLAG_GRAY) return; for (i = 0; i < 4; i++) { @@ -800,7 +800,7 @@ void ff_vc1_interp_mc(VC1Context *v) } /* for grayscale we should not try to read from unknown area */ - if (s->flags & CODEC_FLAG_GRAY) { + if (CONFIG_GRAY && s->flags & CODEC_FLAG_GRAY) { srcU = s->edge_emu_buffer + 18 * s->linesize; srcV = s->edge_emu_buffer + 18 * s->linesize; } @@ -864,7 +864,7 @@ void ff_vc1_interp_mc(VC1Context *v) s->hdsp.avg_no_rnd_pixels_tab[dxy](s->dest[0], srcY, s->linesize, 16); } - if (s->flags & CODEC_FLAG_GRAY) return; + if (CONFIG_GRAY && s->flags & CODEC_FLAG_GRAY) return; /* Chroma MC always uses qpel blilinear */ uvmx = (uvmx & 3) << 1; uvmy = (uvmy & 3) << 1; diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index ad1d4d9fb1..99c3d0ce27 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -190,7 +190,7 @@ static void vc1_draw_sprites(VC1Context *v, SpriteData* sd) } alpha = av_clip_uint16(sd->coefs[1][6]); - for (plane = 0; plane < (s->flags&CODEC_FLAG_GRAY ? 1 : 3); plane++) { + for (plane = 0; plane < (CONFIG_GRAY && s->flags&CODEC_FLAG_GRAY ? 1 : 3); plane++) { int width = v->output_width>>!!plane; for (row = 0; row < v->output_height>>!!plane; row++) { @@ -311,7 +311,7 @@ static void vc1_sprite_flush(AVCodecContext *avctx) wrong but it looks better than doing nothing. */ if (f && f->data[0]) - for (plane = 0; plane < (s->flags&CODEC_FLAG_GRAY ? 1 : 3); plane++) + for (plane = 0; plane < (CONFIG_GRAY && s->flags&CODEC_FLAG_GRAY ? 1 : 3); plane++) for (i = 0; i < v->sprite_height>>!!plane; i++) memset(f->data[plane] + i * f->linesize[plane], plane ? 128 : 0, f->linesize[plane]); @@ -427,7 +427,7 @@ static av_cold int vc1_decode_init(AVCodecContext *avctx) if (!avctx->extradata_size || !avctx->extradata) return -1; - if (!(avctx->flags & CODEC_FLAG_GRAY)) + if (!CONFIG_GRAY || !(avctx->flags & CODEC_FLAG_GRAY)) avctx->pix_fmt = ff_get_format(avctx, avctx->codec->pix_fmts); else { avctx->pix_fmt = AV_PIX_FMT_GRAY8; |