put_block.c
上传用户:super_houu
上传日期:2008-09-21
资源大小:4099k
文件大小:1k
源码类别:

DVD

开发平台:

Others

  1. #include "Includesysdefs.h"
  2. #include "PlaycoreCaptureLogompeg_encputvlc.h"
  3. #include "PlaycoreCaptureLogompeg_encputbits.h"
  4. #include "PlaycoreCaptureLogompeg_encenc.h"
  5. #ifdef SUPPORT_CAPTURE_LOGO
  6. CONST unsigned char zig_zag_scan[64]={
  7.   0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,
  8.   12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,
  9.   35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,
  10.   58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63
  11. };
  12. int put_blk(short *blk,int cc)
  13. {
  14.   int n, dct_diff, run, signed_level;
  15.   /* DC coefficient (7.2.1) */
  16.   dct_diff = blk[0] - pLogoCapture->dc_dct_pred[cc]; /* difference to previous block */
  17.   pLogoCapture->dc_dct_pred[cc] = blk[0];
  18.   if (cc==0)
  19.   {
  20.   putDClum(dct_diff);
  21.   }
  22.   else
  23.   {
  24.   putDCchrom(dct_diff);
  25.   }
  26.   /* AC coefficients (7.2.2) */
  27.   run = 0;
  28.   for (n=1; n<64; n++)
  29.   {
  30.     /* use appropriate entropy scanning pattern */
  31.     signed_level = blk[zig_zag_scan[n]];
  32.     if (signed_level!=0)
  33.     {
  34.       putAC(run,signed_level);
  35.       run = 0;
  36.     }
  37.     else
  38.       run++; /* count zero coefficients */
  39.   }
  40.   /* End of Block -- normative block punctuation */
  41.   putbits(2,2); /* 10 (Table B-14) */
  42.   return 1;
  43. }
  44. #endif