aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/vp56.c
diff options
context:
space:
mode:
authorRonald S. Bultje <rsbultje@gmail.com>2013-03-12 07:28:12 -0700
committerMartin Storsjö <martin@martin.st>2013-04-15 12:32:05 +0300
commit015821229f96bf7e677f2a711a58dbea3009f574 (patch)
tree2247f2d16c077a1f887656b8859b164eca6b84df /libavcodec/vp56.c
parent5941978e71d2c3a8e2a7e87951e081e0b2e77da9 (diff)
downloadffmpeg-015821229f96bf7e677f2a711a58dbea3009f574.tar.gz
vp3: Use full transpose for all IDCTs
This way, the special IDCT permutations are no longer needed. This is similar to how H264 does it, and removes the dsputil dependency imposed by the scantable code. Also remove the unused type == 0 cases from the plain C version of the idct. Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavcodec/vp56.c')
-rw-r--r--libavcodec/vp56.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/libavcodec/vp56.c b/libavcodec/vp56.c
index b93f75da7e..1a83f00f47 100644
--- a/libavcodec/vp56.c
+++ b/libavcodec/vp56.c
@@ -263,7 +263,7 @@ static VP56mb vp56_decode_mv(VP56Context *s, int row, int col)
static void vp56_add_predictors_dc(VP56Context *s, VP56Frame ref_frame)
{
- int idx = s->scantable.permutated[0];
+ int idx = s->idct_scantable[0];
int b;
for (b=0; b<6; b++) {
@@ -661,8 +661,11 @@ av_cold int ff_vp56_init(AVCodecContext *avctx, int flip, int has_alpha)
ff_videodsp_init(&s->vdsp, 8);
ff_vp3dsp_init(&s->vp3dsp, avctx->flags);
ff_vp56dsp_init(&s->vp56dsp, avctx->codec->id);
- ff_init_scantable_permutation(s->dsp.idct_permutation, s->vp3dsp.idct_perm);
- ff_init_scantable(s->dsp.idct_permutation, &s->scantable,ff_zigzag_direct);
+ for (i = 0; i < 64; i++) {
+#define T(x) (x >> 3) | ((x & 7) << 3)
+ s->idct_scantable[i] = T(ff_zigzag_direct[i]);
+#undef T
+ }
for (i = 0; i < FF_ARRAY_ELEMS(s->frames); i++) {
s->frames[i] = av_frame_alloc();