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