diff options
author | Ronald S. Bultje <rsbultje@gmail.com> | 2015-05-14 16:38:53 -0400 |
---|---|---|
committer | Ronald S. Bultje <rsbultje@gmail.com> | 2015-05-14 16:38:53 -0400 |
commit | dc96c0f9fc96bf4167633befc074394062793322 (patch) | |
tree | 00a7c2154014b139087990c0ec0a4c50151b897b /libavcodec | |
parent | e12188e1438b09fb1304cadd404dd3aabbb660ac (diff) | |
download | ffmpeg-dc96c0f9fc96bf4167633befc074394062793322.tar.gz |
vp9: read all 4x4 blocks in sub8x8 blocks individually with scalability.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/vp9.c | 4 | ||||
-rw-r--r-- | libavcodec/vp9_mc_template.c | 5 |
2 files changed, 8 insertions, 1 deletions
diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c index a3cecf209a..6982eefd47 100644 --- a/libavcodec/vp9.c +++ b/libavcodec/vp9.c @@ -2833,6 +2833,7 @@ static av_always_inline void mc_chroma_scaled(VP9Context *s, vp9_scaled_mc_func mc_chroma_scaled(s, s->dsp.s##mc, dstu, dstv, dst_ls, srcu, srcu_ls, srcv, srcv_ls, tref, \ row, col, mv, bw, bh, w, h, bytesperpixel, \ s->mvscale[b->ref[i]], s->mvstep[b->ref[i]]) +#define SCALED 1 #define FN(x) x##_scaled_8bpp #define BYTES_PER_PIXEL 1 #include "vp9_mc_template.c" @@ -2845,6 +2846,7 @@ static av_always_inline void mc_chroma_scaled(VP9Context *s, vp9_scaled_mc_func #undef mc_chroma_dir #undef FN #undef BYTES_PER_PIXEL +#undef SCALED static av_always_inline void mc_luma_unscaled(VP9Context *s, vp9_mc_func (*mc)[2], uint8_t *dst, ptrdiff_t dst_stride, @@ -2930,6 +2932,7 @@ static av_always_inline void mc_chroma_unscaled(VP9Context *s, vp9_mc_func (*mc) row, col, mv, bw, bh, w, h, i) \ mc_chroma_unscaled(s, s->dsp.mc, dstu, dstv, dst_ls, srcu, srcu_ls, srcv, srcv_ls, tref, \ row, col, mv, bw, bh, w, h, bytesperpixel) +#define SCALED 0 #define FN(x) x##_8bpp #define BYTES_PER_PIXEL 1 #include "vp9_mc_template.c" @@ -2942,6 +2945,7 @@ static av_always_inline void mc_chroma_unscaled(VP9Context *s, vp9_mc_func (*mc) #undef mc_chroma_dir_dir #undef FN #undef BYTES_PER_PIXEL +#undef SCALED static av_always_inline void inter_recon(AVCodecContext *ctx, int bytesperpixel) { diff --git a/libavcodec/vp9_mc_template.c b/libavcodec/vp9_mc_template.c index 250e0a691c..5e6ee870b8 100644 --- a/libavcodec/vp9_mc_template.c +++ b/libavcodec/vp9_mc_template.c @@ -53,6 +53,7 @@ static void FN(inter_pred)(AVCodecContext *ctx) if (b->bs > BS_8x8) { VP56mv uvmv; +#if SCALED == 0 if (b->bs == BS_8x4) { mc_luma_dir(s, mc[3][b->filter][0], s->dst[0], ls_y, ref1->data[0], ref1->linesize[0], tref1, @@ -201,7 +202,9 @@ static void FN(inter_pred)(AVCodecContext *ctx) &b->mv[1][1], 4, 8 >> s->ss_v, w2, h2, 1); } } - } else { + } else +#endif + { av_assert2(b->bs == BS_4x4); // FIXME if two horizontally adjacent blocks have the same MV, |