[FFmpeg-soc] [soc]: r411 - rv40/rv40.c

kostya subversion at mplayerhq.hu
Sat Jul 14 19:12:26 CEST 2007


Author: kostya
Date: Sat Jul 14 19:12:26 2007
New Revision: 411

Log:
Use data from decoded block of DCs

Modified:
   rv40/rv40.c

Modified: rv40/rv40.c
==============================================================================
--- rv40/rv40.c	(original)
+++ rv40/rv40.c	Sat Jul 14 19:12:26 2007
@@ -588,15 +588,22 @@ static int rv40_decode_macroblock(RV40De
     if(is16){
         memset(block16, 0, sizeof(block16));
         rv40_decode_block(block16, gb, &intra_vlcs[2], 3, 0);
+        rv40_dequant4x4_16x16(block16, 0, rv40_qscale_tab[r->quant],rv40_qscale_tab[r->quant]);
+        rv40_intra_inv_transform_noround(block16, 0);
     }
 
     for(i = 0; i < 16; i++, cbp >>= 1){
-        if(!(cbp & 1)) continue;
+        if(!is16 && !(cbp & 1)) continue;
         blknum = ((i & 2) >> 1) + ((i & 8) >> 2);
         blkoff = ((i & 1) << 2) + ((i & 4) << 3);
-        rv40_decode_block(s->block[blknum] + blkoff, gb, &intra_vlcs[2], luma_vlc, 0);
-        rv40_dequant4x4(s->block[blknum], blkoff, rv40_qscale_tab[r->quant],rv40_qscale_tab[r->quant]);
-        rv40_intra_inv_transform(s->block[blknum], blkoff);
+        if(cbp & 1)
+            rv40_decode_block(s->block[blknum] + blkoff, gb, &intra_vlcs[2], luma_vlc, 0);
+        if((cbp & 1) || is16){
+            if(is16) //FIXME: optimize
+                s->block[blknum][blkoff] = block16[i];
+            rv40_dequant4x4(s->block[blknum], blkoff, rv40_qscale_tab[r->quant],rv40_qscale_tab[r->quant]);
+            rv40_intra_inv_transform(s->block[blknum], blkoff);
+        }
     }
     for(; i < 24; i++, cbp >>= 1){
         if(!(cbp & 1)) continue;



More information about the FFmpeg-soc mailing list