diff options
author | Anton Khirnov <anton@khirnov.net> | 2016-03-22 15:52:45 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2016-03-28 09:51:10 +0200 |
commit | c2a4ca944d9029a3c162f8f3ddd317b83a7bd600 (patch) | |
tree | da665652f20ebc29be141abc791252325c058146 | |
parent | c73fb9efb22c8d66d24de2716f7f9970f234c3c3 (diff) | |
download | ffmpeg-c2a4ca944d9029a3c162f8f3ddd317b83a7bd600.tar.gz |
svq3: eliminate write_back_intra_pred_mode() usage
This function depends on the h264 internals and is so tiny that just
copying the code out is the simplest replacement.
-rw-r--r-- | libavcodec/svq3.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libavcodec/svq3.c b/libavcodec/svq3.c index 9d99da5517..f3582f6cad 100644 --- a/libavcodec/svq3.c +++ b/libavcodec/svq3.c @@ -714,6 +714,9 @@ static int svq3_decode_mb(SVQ3Context *s, unsigned int mb_type) mb_type = MB_TYPE_16x16; } else if (mb_type == 8 || mb_type == 33) { /* INTRA4x4 */ + int8_t *i4x4 = sl->intra4x4_pred_mode + h->mb2br_xy[sl->mb_xy]; + int8_t *i4x4_cache = sl->intra4x4_pred_mode_cache; + memset(sl->intra4x4_pred_mode_cache, -1, 8 * 5 * sizeof(int8_t)); if (mb_type == 8) { @@ -759,7 +762,10 @@ static int svq3_decode_mb(SVQ3Context *s, unsigned int mb_type) memset(&sl->intra4x4_pred_mode_cache[scan8[0] + 8 * i], DC_PRED, 4); } - write_back_intra_pred_mode(h, sl); + AV_COPY32(i4x4, i4x4_cache + 4 + 8 * 4); + i4x4[4] = i4x4_cache[7 + 8 * 3]; + i4x4[5] = i4x4_cache[7 + 8 * 2]; + i4x4[6] = i4x4_cache[7 + 8 * 1]; if (mb_type == 8) { ff_h264_check_intra4x4_pred_mode(h, sl); |