changeset 4145:a5fca6fd5e4c libavcodec

Move idct block array variable onto rtjpeg_decode_frame_yuv420 stack since it is only used there and is only 128 byte large. Also make it aligned to fix playback with altivec.
author reimar
date Sun, 05 Nov 2006 16:18:37 +0000
parents dc52a253f51b
children c09e31f70a30
files rtjpeg.c rtjpeg.h
diffstat 2 files changed, 13 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/rtjpeg.c	Sun Nov 05 15:10:33 2006 +0000
+++ b/rtjpeg.c	Sun Nov 05 16:18:37 2006 +0000
@@ -98,6 +98,7 @@
  */
 int rtjpeg_decode_frame_yuv420(RTJpegContext *c, AVFrame *f,
                                uint8_t *buf, int buf_size) {
+    DECLARE_ALIGNED_16(DCTELEM, block[64]);
     GetBitContext gb;
     int w = c->w / 16, h = c->h / 16;
     int x, y;
@@ -106,23 +107,23 @@
     init_get_bits(&gb, buf, buf_size * 8);
     for (y = 0; y < h; y++) {
         for (x = 0; x < w; x++) {
-            if (get_block(&gb, c->block, c->scan, c->lquant))
-                c->dsp->idct_put(y1, f->linesize[0], c->block);
+            if (get_block(&gb, block, c->scan, c->lquant))
+                c->dsp->idct_put(y1, f->linesize[0], block);
             y1 += 8;
-            if (get_block(&gb, c->block, c->scan, c->lquant))
-                c->dsp->idct_put(y1, f->linesize[0], c->block);
+            if (get_block(&gb, block, c->scan, c->lquant))
+                c->dsp->idct_put(y1, f->linesize[0], block);
             y1 += 8;
-            if (get_block(&gb, c->block, c->scan, c->lquant))
-                c->dsp->idct_put(y2, f->linesize[0], c->block);
+            if (get_block(&gb, block, c->scan, c->lquant))
+                c->dsp->idct_put(y2, f->linesize[0], block);
             y2 += 8;
-            if (get_block(&gb, c->block, c->scan, c->lquant))
-                c->dsp->idct_put(y2, f->linesize[0], c->block);
+            if (get_block(&gb, block, c->scan, c->lquant))
+                c->dsp->idct_put(y2, f->linesize[0], block);
             y2 += 8;
-            if (get_block(&gb, c->block, c->scan, c->cquant))
-                c->dsp->idct_put(u, f->linesize[1], c->block);
+            if (get_block(&gb, block, c->scan, c->cquant))
+                c->dsp->idct_put(u, f->linesize[1], block);
             u += 8;
-            if (get_block(&gb, c->block, c->scan, c->cquant))
-                c->dsp->idct_put(v, f->linesize[2], c->block);
+            if (get_block(&gb, block, c->scan, c->cquant))
+                c->dsp->idct_put(v, f->linesize[2], block);
             v += 8;
         }
         y1 += 2 * 8 * (f->linesize[0] - w);
--- a/rtjpeg.h	Sun Nov 05 15:10:33 2006 +0000
+++ b/rtjpeg.h	Sun Nov 05 16:18:37 2006 +0000
@@ -25,7 +25,6 @@
 typedef struct {
     int w, h;
     DSPContext *dsp;
-    DCTELEM block[64];
     uint8_t scan[64];
     uint32_t lquant[64];
     uint32_t cquant[64];