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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? getvlc.c

?? MPEG2解編碼程序源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* getvlc.c, variable length decoding                                       */

/* Copyright (C) 1996, MPEG Software Simulation Group. All Rights Reserved. */

/*
 * Disclaimer of Warranty
 *
 * These software programs are available to the user without any license fee or
 * royalty on an "as is" basis.  The MPEG Software Simulation Group disclaims
 * any and all warranties, whether express, implied, or statuary, including any
 * implied warranties or merchantability or of fitness for a particular
 * purpose.  In no event shall the copyright-holder be liable for any
 * incidental, punitive, or consequential damages of any kind whatsoever
 * arising from the use of these programs.
 *
 * This disclaimer of warranty extends to the user of these programs and user's
 * customers, employees, agents, transferees, successors, and assigns.
 *
 * The MPEG Software Simulation Group does not represent or warrant that the
 * programs furnished hereunder are free of infringement of any third-party
 * patents.
 *
 * Commercial implementations of MPEG-1 and MPEG-2 video, including shareware,
 * are subject to royalty fees to patent holders.  Many of these patents are
 * general enough such that they are unavoidable regardless of implementation
 * design.
 *
 */

#include <stdio.h>

#include "config.h"
#include "global.h"
#include "getvlc.h"

/* private prototypes */
/* generic picture macroblock type processing functions */
static int Get_I_macroblock_type _ANSI_ARGS_((void));
static int Get_P_macroblock_type _ANSI_ARGS_((void));
static int Get_B_macroblock_type _ANSI_ARGS_((void));
static int Get_D_macroblock_type _ANSI_ARGS_((void));

/* spatial picture macroblock type processing functions */
static int Get_I_Spatial_macroblock_type _ANSI_ARGS_((void));
static int Get_P_Spatial_macroblock_type _ANSI_ARGS_((void));
static int Get_B_Spatial_macroblock_type _ANSI_ARGS_((void));
static int Get_SNR_macroblock_type _ANSI_ARGS_((void));

int Get_macroblock_type()
{
  int macroblock_type = 0;

  if (ld->scalable_mode==SC_SNR)
    macroblock_type = Get_SNR_macroblock_type();
  else
  {
    switch (picture_coding_type)
    {
    case I_TYPE:
      macroblock_type = ld->pict_scal ? Get_I_Spatial_macroblock_type() : Get_I_macroblock_type();
      break;
    case P_TYPE:
      macroblock_type = ld->pict_scal ? Get_P_Spatial_macroblock_type() : Get_P_macroblock_type();
      break;
    case B_TYPE:
      macroblock_type = ld->pict_scal ? Get_B_Spatial_macroblock_type() : Get_B_macroblock_type();
      break;
    case D_TYPE:
      macroblock_type = Get_D_macroblock_type();
      break;
    default:
      printf("Get_macroblock_type(): unrecognized picture coding type\n");
      break;
    }
  }

  return macroblock_type;
}

static int Get_I_macroblock_type()
{
#ifdef TRACE
  if (Trace_Flag)
    printf("macroblock_type(I) ");
#endif /* TRACE */

  if (Get_Bits1())
  {
#ifdef TRACE
    if (Trace_Flag)
      printf("(1): Intra (1)\n");
#endif /* TRACE */
    return 1;
  }

  if (!Get_Bits1())
  {
    if (!Quiet_Flag)
      printf("Invalid macroblock_type code\n");
    Fault_Flag = 1;
  }

#ifdef TRACE
  if (Trace_Flag)
    printf("(01): Intra, Quant (17)\n");
#endif /* TRACE */

  return 17;
}

static char *MBdescr[]={
  "",                  "Intra",        "No MC, Coded",         "",
  "Bwd, Not Coded",    "",             "Bwd, Coded",           "",
  "Fwd, Not Coded",    "",             "Fwd, Coded",           "",
  "Interp, Not Coded", "",             "Interp, Coded",        "",
  "",                  "Intra, Quant", "No MC, Coded, Quant",  "",
  "",                  "",             "Bwd, Coded, Quant",    "",
  "",                  "",             "Fwd, Coded, Quant",    "",
  "",                  "",             "Interp, Coded, Quant", ""
};

static int Get_P_macroblock_type()
{
  int code;

#ifdef TRACE
  if (Trace_Flag)
    printf("macroblock_type(P) (");
#endif /* TRACE */

  if ((code = Show_Bits(6))>=8)
  {
    code >>= 3;
    Flush_Buffer(PMBtab0[code].len);
#ifdef TRACE
    if (Trace_Flag)
    {
      Print_Bits(code,3,PMBtab0[code].len);
      printf("): %s (%d)\n",MBdescr[(int)PMBtab0[code].val],PMBtab0[code].val);
    }
#endif /* TRACE */
    return PMBtab0[code].val;
  }

  if (code==0)
  {
    if (!Quiet_Flag)
      printf("Invalid macroblock_type code\n");
    Fault_Flag = 1;
    return 0;
  }

  Flush_Buffer(PMBtab1[code].len);

#ifdef TRACE
  if (Trace_Flag)
  {
    Print_Bits(code,6,PMBtab1[code].len);
    printf("): %s (%d)\n",MBdescr[(int)PMBtab1[code].val],PMBtab1[code].val);
  }
#endif /* TRACE */

  return PMBtab1[code].val;
}

static int Get_B_macroblock_type()
{
  int code;

#ifdef TRACE
  if (Trace_Flag)
    printf("macroblock_type(B) (");
#endif /* TRACE */

  if ((code = Show_Bits(6))>=8)
  {
    code >>= 2;
    Flush_Buffer(BMBtab0[code].len);

#ifdef TRACE
    if (Trace_Flag)
    {
      Print_Bits(code,4,BMBtab0[code].len);
      printf("): %s (%d)\n",MBdescr[(int)BMBtab0[code].val],BMBtab0[code].val);
    }
#endif /* TRACE */

    return BMBtab0[code].val;
  }

  if (code==0)
  {
    if (!Quiet_Flag)
      printf("Invalid macroblock_type code\n");
    Fault_Flag = 1;
    return 0;
  }

  Flush_Buffer(BMBtab1[code].len);

#ifdef TRACE
  if (Trace_Flag)
  {
    Print_Bits(code,6,BMBtab1[code].len);
    printf("): %s (%d)\n",MBdescr[(int)BMBtab1[code].val],BMBtab1[code].val);
  }
#endif /* TRACE */

  return BMBtab1[code].val;
}

static int Get_D_macroblock_type()
{
  if (!Get_Bits1())
  {
    if (!Quiet_Flag)
      printf("Invalid macroblock_type code\n");
    Fault_Flag=1;
  }

  return 1;
}

/* macroblock_type for pictures with spatial scalability */
static int Get_I_Spatial_macroblock_type()
{
  int code;

#ifdef TRACE
  if (Trace_Flag)
    printf("macroblock_type(I,spat) (");
#endif /* TRACE */

  code = Show_Bits(4);

  if (code==0)
  {
    if (!Quiet_Flag)
      printf("Invalid macroblock_type code\n");
    Fault_Flag = 1;
    return 0;
  }

#ifdef TRACE
  if (Trace_Flag)
  {
    Print_Bits(code,4,spIMBtab[code].len);
    printf("): %02x\n",spIMBtab[code].val);
  }
#endif /* TRACE */

  Flush_Buffer(spIMBtab[code].len);
  return spIMBtab[code].val;
}

static int Get_P_Spatial_macroblock_type()
{
  int code;

#ifdef TRACE
  if (Trace_Flag)
    printf("macroblock_type(P,spat) (");
#endif /* TRACE */

  code = Show_Bits(7);

  if (code<2)
  {
    if (!Quiet_Flag)
      printf("Invalid macroblock_type code\n");
    Fault_Flag = 1;
    return 0;
  }

  if (code>=16)
  {
    code >>= 3;
    Flush_Buffer(spPMBtab0[code].len);

#ifdef TRACE
    if (Trace_Flag)
    {
      Print_Bits(code,4,spPMBtab0[code].len);
      printf("): %02x\n",spPMBtab0[code].val);
    }
#endif /* TRACE */

    return spPMBtab0[code].val;
  }

  Flush_Buffer(spPMBtab1[code].len);

#ifdef TRACE
  if (Trace_Flag)
  {
    Print_Bits(code,7,spPMBtab1[code].len);
    printf("): %02x\n",spPMBtab1[code].val);
  }
#endif /* TRACE */

  return spPMBtab1[code].val;
}

static int Get_B_Spatial_macroblock_type()
{
  int code;
  VLCtab *p;

#ifdef TRACE
  if (Trace_Flag)
    printf("macroblock_type(B,spat) (");
#endif /* TRACE */

  code = Show_Bits(9);

  if (code>=64)
    p = &spBMBtab0[(code>>5)-2];
  else if (code>=16)
    p = &spBMBtab1[(code>>2)-4];
  else if (code>=8)
    p = &spBMBtab2[code-8];
  else
  {
    if (!Quiet_Flag)
      printf("Invalid macroblock_type code\n");
    Fault_Flag = 1;
    return 0;
  }

  Flush_Buffer(p->len);

#ifdef TRACE
  if (Trace_Flag)
  {
    Print_Bits(code,9,p->len);
    printf("): %02x\n",p->val);
  }
#endif /* TRACE */

  return p->val;
}

static int Get_SNR_macroblock_type()
{
  int code;

#ifdef TRACE			/* *CH* */
  if (Trace_Flag)
    printf("macroblock_type(SNR) (");
#endif TRACE

  code = Show_Bits(3);

  if (code==0)
  {
    if (!Quiet_Flag)
      printf("Invalid macroblock_type code\n");
    Fault_Flag = 1;
    return 0;
  }

  Flush_Buffer(SNRMBtab[code].len);

#ifdef TRACE			/* *CH* */
  if (Trace_Flag)
  {
    Print_Bits(code,3,SNRMBtab[code].len);
    printf("): %s (%d)\n",MBdescr[(int)SNRMBtab[code].val],SNRMBtab[code].val);
  }
#endif TRACE


  return SNRMBtab[code].val;
}

int Get_motion_code()
{
  int code;

#ifdef TRACE
  if (Trace_Flag)
    printf("motion_code (");
#endif /* TRACE */

  if (Get_Bits1())
  {
#ifdef TRACE
    if (Trace_Flag)
      printf("0): 0\n");
#endif /* TRACE */
    return 0;
  }

  if ((code = Show_Bits(9))>=64)
  {
    code >>= 6;
    Flush_Buffer(MVtab0[code].len);

#ifdef TRACE
    if (Trace_Flag)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲一区二区三区在线| 日韩欧美一区二区久久婷婷| 欧美日韩免费高清一区色橹橹| 538在线一区二区精品国产| 国产午夜精品久久久久久免费视| 亚洲精品水蜜桃| 国产麻豆日韩欧美久久| 在线视频国产一区| 国产精品色在线| 99视频国产精品| 日韩三级中文字幕| 亚洲国产成人高清精品| 波多野结衣在线aⅴ中文字幕不卡| 91精品国产一区二区| 玉米视频成人免费看| 成人av影视在线观看| 精品99999| 久久精品国产精品青草| 欧美军同video69gay| 亚洲精品视频观看| 99在线精品视频| 中文字幕亚洲欧美在线不卡| 极品美女销魂一区二区三区免费| 91精品在线观看入口| 亚洲国产wwwccc36天堂| 在线观看91视频| 一区二区三区免费网站| 91亚洲精品一区二区乱码| 中文乱码免费一区二区| 国产不卡免费视频| 久久久青草青青国产亚洲免观| 精品一区二区在线免费观看| 日韩欧美www| 久草精品在线观看| 精品盗摄一区二区三区| 国产一区二区电影| 久久香蕉国产线看观看99| 国产精品夜夜爽| 亚洲国产精品成人综合| 不卡的av在线| 中文字幕一区三区| k8久久久一区二区三区| 亚洲伦理在线精品| 欧美日韩一区二区欧美激情| 日日夜夜免费精品视频| 欧美挠脚心视频网站| 亚洲高清中文字幕| 欧美久久一二区| 亚洲人成小说网站色在线| 91官网在线观看| 日韩二区三区在线观看| 日韩美女在线视频| 国产精品1区2区3区在线观看| 中文字幕高清不卡| 色狠狠色噜噜噜综合网| 免费日本视频一区| 欧美激情在线一区二区三区| 色婷婷一区二区三区四区| 天天色天天操综合| 久久女同性恋中文字幕| 一本大道久久精品懂色aⅴ| 精品制服美女丁香| 国产精品无人区| 欧美日韩美女一区二区| 韩国av一区二区三区| 亚洲图片你懂的| 在线综合视频播放| 国产91精品一区二区麻豆网站| 亚洲一区中文在线| 26uuu亚洲综合色| 欧美优质美女网站| 国产一区91精品张津瑜| 欧美激情一区二区三区全黄| 成人avav影音| 日韩一区二区免费视频| 日韩精品福利网| 精品国产91乱码一区二区三区 | 成人激情综合网站| 日韩美女视频19| 欧洲一区二区三区在线| 男人操女人的视频在线观看欧美| 欧美在线视频全部完| 免费人成在线不卡| 久久久久久电影| 亚洲精品菠萝久久久久久久| 777午夜精品免费视频| 国产老妇另类xxxxx| 国产精品久久久久久久久免费相片 | 一区二区三区丝袜| 日韩欧美一卡二卡| 国产一区二区成人久久免费影院| 亚洲欧美一区二区三区国产精品| www.日韩精品| 一区二区在线观看免费 | 国产偷国产偷亚洲高清人白洁| 在线亚洲一区二区| 亚洲乱码国产乱码精品精98午夜 | 欧美丝袜丝交足nylons图片| 亚洲国产日韩一级| 日韩一区二区三区精品视频| 日本电影亚洲天堂一区| 亚洲成av人片一区二区三区| 在线综合视频播放| 久久不见久久见免费视频7| 亚洲mv在线观看| 欧美午夜在线观看| 奇米精品一区二区三区在线观看| 中文字幕不卡在线播放| 欧美一级日韩不卡播放免费| 91亚洲国产成人精品一区二三 | 欧美精品一区二区三区一线天视频| 国产伦理精品不卡| 国产欧美日韩亚州综合 | 国产原创一区二区三区| 亚洲成人午夜电影| 精品欧美乱码久久久久久| 秋霞av亚洲一区二区三| 亚洲国产你懂的| 亚洲天堂免费在线观看视频| 精品国一区二区三区| 在线视频你懂得一区| www.色综合.com| 成人做爰69片免费看网站| 免费人成精品欧美精品| 中文字幕精品—区二区四季| 欧美大片一区二区三区| 在线不卡免费欧美| 99久久精品99国产精品| 9人人澡人人爽人人精品| 国产成人av资源| 麻豆精品一二三| 久久亚洲一区二区三区明星换脸 | 日韩精品亚洲专区| 婷婷激情综合网| 中文字幕亚洲区| 一区在线中文字幕| 精品国产欧美一区二区| 国产精品一区二区三区四区| 亚洲国产中文字幕| 午夜在线电影亚洲一区| 另类中文字幕网| 中文字幕亚洲不卡| 日韩一级欧美一级| 精品久久久网站| 色网综合在线观看| 91精品国产欧美日韩| 精品国产伦一区二区三区观看体验| 2021久久国产精品不只是精品| 久久新电视剧免费观看| 欧美激情综合五月色丁香| 欧美va亚洲va在线观看蝴蝶网| 欧美日韩免费一区二区三区| 麻豆视频观看网址久久| 亚洲自拍另类综合| 丝瓜av网站精品一区二区| 另类欧美日韩国产在线| 麻豆一区二区三区| 国产成人av电影在线观看| 极品美女销魂一区二区三区免费| 狠狠色丁香久久婷婷综合丁香| 亚洲aⅴ怡春院| 国产精品亚洲视频| 欧洲av在线精品| 欧美一卡二卡三卡| www久久久久| 国产精品麻豆久久久| 亚洲精品菠萝久久久久久久| 亚洲国产精品尤物yw在线观看| 亚洲乱码中文字幕| 免费在线视频一区| 成人精品一区二区三区中文字幕| 成人动漫一区二区| 欧美放荡的少妇| 欧美精品一区二区三区四区| 欧美一区二区三区在线电影| 欧美视频一区二区三区| 日本一区二区三区电影| 亚洲欧美日韩国产中文在线| 免费高清成人在线| 国产老妇另类xxxxx| 欧美在线观看视频在线| 亚洲视频免费在线观看| 午夜精品爽啪视频| 久久国产精品99精品国产| 91搞黄在线观看| 国产精品毛片高清在线完整版 | 日本电影欧美片| 91精品欧美综合在线观看最新 | 国产一区在线观看麻豆| 色婷婷一区二区| 精品噜噜噜噜久久久久久久久试看| 亚洲欧洲制服丝袜| 91福利社在线观看| 91精品免费在线观看| 日韩欧美视频在线 | 日本成人在线电影网| 91蝌蚪porny成人天涯| 97久久精品人人澡人人爽| 欧美午夜电影网| 亚洲同性同志一二三专区|