亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? parseblock.c

?? MPEG2 PLAYER in linux
?? C
字號(hào):
/* * parseblock.c -- * *      Procedures to read in the values of a block and store them *      in a place where the player can use them. * *//* * Copyright (c) 1995 The Regents of the University of California. * All rights reserved. *  * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement is * hereby granted, provided that the above copyright notice and the following * two paragraphs appear in all copies of this software. *  * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *  * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. *//* * Portions of this software Copyright (c) 1995 Brown University. * All rights reserved. *  * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement * is hereby granted, provided that the above copyright notice and the * following two paragraphs appear in all copies of this software. *  * IN NO EVENT SHALL BROWN UNIVERSITY BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF BROWN * UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *  * BROWN UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" * BASIS, AND BROWN UNIVERSITY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, * SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */#define NO_SANITY_CHECKS#include <assert.h>#include "video.h"#include "proto.h"#include "decoders.h"/*   Changes to make the code reentrant:      deglobalized: curBits, bitOffset, bitLength, bitBuffer, curVidStream,      zigzag_direct now a const int variable initialized once   -lsh@cs.brown.edu (Loring Holden) *//* External declarations. */extern const int zigzag_direct[];#ifdef DCPRECextern int dcprec;#endif/* Macro for returning 1 if num is positive, -1 if negative, 0 if 0. */#define Sign(num) ((num > 0) ? 1 : ((num == 0) ? 0 : -1))/* *-------------------------------------------------------------- * * ParseReconBlock -- * *    Parse values for block structure from bitstream. *      n is an indication of the position of the block within *      the macroblock (i.e. 0-5) and indicates the type of  *      block (i.e. luminance or chrominance). Reconstructs *      coefficients from values parsed and puts in  *      block.dct_recon array in vid stream structure. *      sparseFlag is set when the block contains only one *      coeffictient and is used by the IDCT. * * Results: *     * * Side effects: *      Bit stream irreversibly parsed. * *-------------------------------------------------------------- */#define DCT_recon blockPtr->dct_recon#define DCT_dc_y_past blockPtr->dct_dc_y_past#define DCT_dc_cr_past blockPtr->dct_dc_cr_past#define DCT_dc_cb_past blockPtr->dct_dc_cb_past#define DECODE_DCT_COEFF_FIRST DecodeDCTCoeffFirst#define DECODE_DCT_COEFF_NEXT DecodeDCTCoeffNextvoidParseReconBlock(n, vid_stream)     int n;     VidStream *vid_stream;{#ifdef RISC  unsigned int temp_curBits;  int temp_bitOffset;  int temp_bufLength;  unsigned int *temp_bitBuffer;#endif  Block *blockPtr = &vid_stream->block;  int coeffCount=0;    if (vid_stream->buf_length < 100)    correct_underflow(vid_stream);#ifdef RISC  temp_curBits = vid_stream->curBits;  temp_bitOffset = vid_stream->buf_offset;  temp_bufLength = vid_stream->buf_length;  temp_bitBuffer = bitBuffer;#endif  {    /*     * Copy the VidStream fields curBits, bitOffset, and bitBuffer     * into local variables with the same names, so the macros use the     * local variables instead.  This allows register allocation and     * can provide 1-2 fps speedup.  On machines with not so many registers,     * don't do this.     */#ifdef RISC    register unsigned int curBits = temp_curBits;    register int bitOffset = temp_bitOffset;    register int bufLength = temp_bufLength;    register unsigned int *bitBuffer = temp_bitBuffer;#endif    int diff;    int size, level=0, i, run, pos, coeff;    short int *reconptr;    unsigned char *iqmatrixptr, *niqmatrixptr;    int qscale;    reconptr = DCT_recon[0];    /*      * Hand coded version of memset that's a little faster...     * Old call:     *    memset((char *) DCT_recon, 0, 64*sizeof(short int));     */    {      INT32 *p;      p = (INT32 *) reconptr;      p[0] = p[1] = p[2] = p[3] = p[4] = p[5] = p[6] = p[7] = p[8] = p[9] =       p[10] = p[11] = p[12] = p[13] = p[14] = p[15] = p[16] = p[17] = p[18] =      p[19] = p[20] = p[21] = p[22] = p[23] = p[24] = p[25] = p[26] = p[27] =      p[28] = p[29] = p[30] = p[31] = 0;    }    if (vid_stream->mblock.mb_intra) {      if (n < 4) {    /*     * Get the luminance bits.  This code has been hand optimized to     * get by the normal bit parsing routines.  We get some speedup     * by grabbing the next 16 bits and parsing things locally.     * Thus, calls are translated as:     *     *    show_bitsX  <-->   next16bits >> (16-X)     *    get_bitsX   <-->   val = next16bits >> (16-flushed-X);     *               flushed += X;     *               next16bits &= bitMask[flushed];     *    flush_bitsX <-->   flushed += X;     *               next16bits &= bitMask[flushed];     *     * I've streamlined the code a lot, so that we don't have to mask     * out the low order bits and a few of the extra adds are removed.     *    bsmith     */    unsigned int next16bits, index, flushed;        show_bits16(next16bits);        index = next16bits >> (16-5);        if (index < 31) {          size = dct_dc_size_luminance[index].value;          flushed = dct_dc_size_luminance[index].num_bits;        } else {          index = next16bits >> (16-9);          index -= 0x1f0;          size = dct_dc_size_luminance1[index].value;          flushed = dct_dc_size_luminance1[index].num_bits;        }        next16bits &= bitMask[16+flushed];        if (size != 0) {          flushed += size;          diff = next16bits >> (16-flushed);          if (!(diff & bitTest[32-size])) {            diff = rBitMask[size] | (diff + 1);          }        } else {          diff = 0;        }        flush_bits(flushed);        if (n == 0) {          coeff = diff << 3;          if (vid_stream->mblock.mb_address -              vid_stream->mblock.past_intra_addr > 1) {            coeff += 1024;          } else {		    coeff += DCT_dc_y_past;          }          DCT_dc_y_past = coeff;        } else {          coeff = DCT_dc_y_past + (diff << 3);          DCT_dc_y_past = coeff;        }      } else { /* n = 4 or 5 */        /*     * Get the chrominance bits.  This code has been hand optimized to     * as described above     */    unsigned int next16bits, index, flushed;        show_bits16(next16bits);        index = next16bits >> (16-5);        if (index < 31) {          size = dct_dc_size_chrominance[index].value;          flushed = dct_dc_size_chrominance[index].num_bits;        } else {          index = next16bits >> (16-10);          index -= 0x3e0;          size = dct_dc_size_chrominance1[index].value;          flushed = dct_dc_size_chrominance1[index].num_bits;        }        next16bits &= bitMask[16+flushed];            if (size != 0) {          flushed += size;          diff = next16bits >> (16-flushed);          if (!(diff & bitTest[32-size])) {            diff = rBitMask[size] | (diff + 1);          }        } else {          diff = 0;        }        flush_bits(flushed);          /* We test 5 first; a result of the mixup of Cr and Cb */        if (n == 5) {          coeff = diff << 3;          if (vid_stream->mblock.mb_address -              vid_stream->mblock.past_intra_addr > 1) {            coeff += 1024;          } else {            coeff += DCT_dc_cr_past;          }          DCT_dc_cr_past = coeff;        } else {          coeff = diff << 3;          if (vid_stream->mblock.mb_address -              vid_stream->mblock.past_intra_addr > 1) {            coeff += 1024;          } else {            coeff += DCT_dc_cb_past;          }          DCT_dc_cb_past = coeff;        }      }            *reconptr = coeff;      i = 0;       pos = 0;      coeffCount = (coeff != 0);          if (vid_stream->picture.code_type != 4) {            qscale = vid_stream->slice.quant_scale;        iqmatrixptr = vid_stream->intra_quant_matrix[0];            while(1) {                DECODE_DCT_COEFF_NEXT(run, level);          if (run >= END_OF_BLOCK) break;          i = i + run + 1;          pos = zigzag_direct[i];          /* quantizes and oddifies each coefficient */          if (level < 0) {            coeff = ((level<<1) * qscale *                      ((int) (iqmatrixptr[pos]))) / 16;             coeff += (1 - (coeff & 1));          } else {            coeff = ((level<<1) * qscale *                      ((int) (*(iqmatrixptr+pos)))) >> 4;             coeff -= (1 - (coeff & 1));          }#ifdef QUANT_CHECK          printf ("coeff: %d\n", coeff);#endif          reconptr[pos] = coeff;          coeffCount++;        }#ifdef QUANT_CHECK		printf ("\n");#endif#ifdef ANALYSIS         {          extern unsigned int *mbCoeffPtr;          mbCoeffPtr[pos]++;        }#endif        flush_bits(2);		goto end;      }    } else { /* non-intra-coded macroblock */            niqmatrixptr = vid_stream->non_intra_quant_matrix[0];      qscale = vid_stream->slice.quant_scale;            DECODE_DCT_COEFF_FIRST(run, level);      i = run;      pos = zigzag_direct[i];        /* quantizes and oddifies each coefficient */      if (level < 0) {        coeff = (((level<<1) - 1) * qscale *                  ((int) (niqmatrixptr[pos]))) / 16; 	if ((coeff & 1) == 0) {coeff = coeff + 1;}      } else {        coeff = (((level<<1) + 1) * qscale *                  ((int) (*(niqmatrixptr+pos)))) >> 4; 	coeff = (coeff-1) | 1; /* equivalent to: if ((coeff&1)==0) coeff = coeff - 1; */      }      reconptr[pos] = coeff;      if (coeff) {          coeffCount = 1;      }      if (vid_stream->picture.code_type != 4) {            while(1) {                DECODE_DCT_COEFF_NEXT(run, level);          if (run >= END_OF_BLOCK) {	       	break;          }          i = i+run+1;          pos = zigzag_direct[i];          if (level < 0) {            coeff = (((level<<1) - 1) * qscale *                      ((int) (niqmatrixptr[pos]))) / 16;             if ((coeff & 1) == 0) {coeff = coeff + 1;}          } else {            coeff = (((level<<1) + 1) * qscale *                      ((int) (*(niqmatrixptr+pos)))) >> 4;             coeff = (coeff-1) | 1; /* equivalent to: if ((coeff&1)==0) coeff = coeff - 1; */          }          reconptr[pos] = coeff;          coeffCount++;        } /* end while */#ifdef ANALYSIS        {          extern unsigned int *mbCoeffPtr;          mbCoeffPtr[pos]++;        }#endif        flush_bits(2);        goto end;      } /* end if (vid_stream->picture.code_type != 4) */    }      end:    if (coeffCount == 1) {      j_rev_dct_sparse (reconptr, pos);    }    else {#ifdef FLOATDCT      if (qualityFlag) {     	float_idct(reconptr);      } else {#endif        j_rev_dct(reconptr);#ifdef FLOATDCT      }#endif    }#ifdef RISC    temp_curBits = vid_stream->curBits;    temp_bitOffset = vid_stream->bit_offset;    temp_bufLength = vid_stream->buf_length;    temp_bitBuffer = bitBuffer;#endif  }#ifdef RISC  vid_stream->curBits = temp_curBits;  vid_stream->bitOffset = temp_bitOffset;  vid_stream->buf_length = temp_bufLength;  bitBuffer = temp_bitBuffer;#endif}    #undef DCT_recon #undef DCT_dc_y_past #undef DCT_dc_cr_past #undef DCT_dc_cb_past /* *-------------------------------------------------------------- * * ParseAwayBlock -- * *    Parses off block values, throwing them away. *      Used with grayscale dithering. * * Results: *    None. * * Side effects: *      None. * *-------------------------------------------------------------- */voidParseAwayBlock(n, vid_stream)     int n;     VidStream *vid_stream;{  unsigned int diff;  unsigned int size, run;  int level;  if (vid_stream->buf_length < 100)    correct_underflow(vid_stream);  if (vid_stream->mblock.mb_intra) {    /* If the block is a luminance block... */    if (n < 4) {      /* Parse and decode size of first coefficient. */      DecodeDCTDCSizeLum(size);      /* Parse first coefficient. */      if (size != 0) {        get_bitsn(size, diff);      }    }    /* Otherwise, block is chrominance block... */    else {      /* Parse and decode size of first coefficient. */      DecodeDCTDCSizeChrom(size);      /* Parse first coefficient. */      if (size != 0) {        get_bitsn(size, diff);      }    }  }  /* Otherwise, block is not intracoded... */  else {    /* Decode and set first coefficient. */    DECODE_DCT_COEFF_FIRST(run, level);  }  /* If picture is not D type (i.e. I, P, or B)... */  if (vid_stream->picture.code_type != 4) {    /* While end of macroblock has not been reached... */    while (1) {      /* Get the dct_coeff_next */      DECODE_DCT_COEFF_NEXT(run, level);      if (run >= END_OF_BLOCK) break;    }    /* End_of_block */    flush_bits(2);  }}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美群妇大交群的观看方式| 亚洲在线视频网站| 久久久精品国产99久久精品芒果| 日韩欧美中文字幕一区| 91精品国产综合久久国产大片| 欧美一区二区在线免费播放| 日韩一二三四区| 精品久久一区二区| 国产婷婷色一区二区三区在线| 欧美激情在线免费观看| 中文字幕日韩精品一区| 亚洲人成精品久久久久| 亚洲国产成人高清精品| 青娱乐精品在线视频| 国模一区二区三区白浆| 粉嫩一区二区三区性色av| 99re这里只有精品6| 91成人在线精品| 91精品国产品国语在线不卡| 26uuu精品一区二区在线观看| 久久亚洲捆绑美女| 国产精品成人网| 亚洲一区av在线| 日本不卡免费在线视频| 国产精一品亚洲二区在线视频| 大胆亚洲人体视频| 91福利在线播放| 日韩一级大片在线| 中文字幕在线一区| 亚洲综合色噜噜狠狠| 老司机午夜精品| 99热在这里有精品免费| 欧美蜜桃一区二区三区| 26uuu久久综合| 亚洲精品午夜久久久| 日本成人在线视频网站| 成人深夜福利app| 欧美日韩五月天| 久久亚洲精品国产精品紫薇| 亚洲卡通动漫在线| 美女网站色91| 99久久精品免费精品国产| 欧美精品乱人伦久久久久久| 欧美激情中文字幕| 丝袜美腿亚洲色图| 不卡的av网站| 欧美变态tickle挠乳网站| 国产精品久久久久久久久快鸭 | 久久久久久久久久久久久女国产乱 | eeuss影院一区二区三区| 欧美亚洲精品一区| 久久亚洲春色中文字幕久久久| 亚洲婷婷综合色高清在线| 麻豆成人免费电影| 色成年激情久久综合| 亚洲精品一区二区三区蜜桃下载 | 亚洲老司机在线| 韩国成人福利片在线播放| 色综合天天综合色综合av| 精品国产一区久久| 亚洲电影在线播放| 99久久国产综合精品色伊| 欧美一区三区四区| 亚洲欧美激情小说另类| 国产伦精品一区二区三区免费迷| 欧美色视频在线观看| 国产精品素人一区二区| 久久精品噜噜噜成人88aⅴ | 亚洲视频精选在线| 国产精品影视在线观看| 日韩欧美国产三级电影视频| 亚洲人成网站在线| 国产成人免费网站| 精品久久久久一区| 日韩av电影免费观看高清完整版 | 国产一区视频网站| 欧美剧情片在线观看| 亚洲免费成人av| www.性欧美| 久久久影视传媒| 九九九久久久精品| 欧美一区二区三区喷汁尤物| 亚洲成av人片在www色猫咪| 99热在这里有精品免费| 国产欧美视频一区二区| 韩国一区二区在线观看| 日韩视频一区在线观看| 午夜久久久久久电影| 欧美性猛片xxxx免费看久爱| 亚洲免费资源在线播放| 91亚洲男人天堂| 最近中文字幕一区二区三区| 成人手机电影网| 中文一区二区在线观看| 国产aⅴ综合色| 欧美国产国产综合| www.在线成人| 亚洲色图19p| k8久久久一区二区三区| 国产精品毛片高清在线完整版 | 日韩欧美亚洲国产精品字幕久久久 | 亚洲国产精品嫩草影院| 色婷婷av一区二区三区软件| 亚洲黄色性网站| 91久久精品一区二区三| 一级中文字幕一区二区| 欧美日韩另类一区| 丝袜美腿亚洲色图| 精品日产卡一卡二卡麻豆| 黑人巨大精品欧美一区| 国产欧美精品一区二区三区四区 | 色视频欧美一区二区三区| 亚洲卡通动漫在线| 欧美日韩一区二区三区视频| 三级欧美韩日大片在线看| 日韩三区在线观看| 狠狠色丁香久久婷婷综| 国产女同互慰高潮91漫画| 99久久久免费精品国产一区二区 | 91无套直看片红桃| 一区二区三区 在线观看视频| 欧美片在线播放| 久久66热偷产精品| 国产女人18水真多18精品一级做| a在线欧美一区| 亚洲亚洲精品在线观看| 在线不卡中文字幕| 韩国欧美国产一区| 1024成人网| 欧美久久久久久久久久| 韩国v欧美v亚洲v日本v| 自拍视频在线观看一区二区| 欧美视频中文字幕| 激情欧美一区二区| 亚洲三级免费观看| 91精品国产欧美一区二区成人| 国产盗摄女厕一区二区三区| 一区二区高清在线| xnxx国产精品| 91蝌蚪porny九色| 日本在线播放一区二区三区| 国产亚洲成年网址在线观看| 欧美在线一二三四区| 精彩视频一区二区| 伊人夜夜躁av伊人久久| 欧美本精品男人aⅴ天堂| 91一区二区在线观看| 日韩av一区二| 国产精品久久久久7777按摩| 欧美一区二区三区小说| 91在线国产观看| 紧缚奴在线一区二区三区| 亚洲欧美福利一区二区| 欧美大片在线观看一区二区| 色94色欧美sute亚洲13| 韩国女主播一区| 亚欧色一区w666天堂| 欧美激情综合五月色丁香 | 天天综合天天做天天综合| 国产亚洲污的网站| 在线不卡中文字幕播放| 99视频热这里只有精品免费| 久久99最新地址| 亚洲大片一区二区三区| 国产精品女上位| 精品国产123| 欧美日本精品一区二区三区| av一二三不卡影片| 国产乱人伦精品一区二区在线观看 | 久久精品免视看| 欧美疯狂做受xxxx富婆| 色哟哟日韩精品| 国产aⅴ综合色| 精品一区二区三区在线观看国产| 亚洲国产一区二区在线播放| 中文字幕一区二区5566日韩| 久久品道一品道久久精品| 日韩一区二区三区高清免费看看| 99re成人在线| 成人av资源在线| 国产.欧美.日韩| 久久99精品久久久久婷婷| 午夜精品久久久久久不卡8050| 亚洲欧美在线另类| 国产欧美一区二区精品忘忧草| 精品人在线二区三区| 91精品国产综合久久香蕉麻豆| 欧美色成人综合| 色综合久久综合中文综合网| 成人成人成人在线视频| 成人性色生活片免费看爆迷你毛片| 老司机精品视频一区二区三区| 日本欧美久久久久免费播放网| 亚洲高清视频的网址| 亚洲一区二区在线观看视频| 亚洲品质自拍视频| 亚洲精品日韩一| 亚洲伊人色欲综合网| 一区二区三区.www| 亚洲曰韩产成在线|