亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩视频在线你懂得| 久久久久国产精品厨房| 国产成人综合亚洲网站| 亚洲一区二区三区视频在线| 精品国内片67194| 欧美午夜精品理论片a级按摩| 国产一区视频网站| 日日骚欧美日韩| 亚洲色图.com| 久久久国产精品不卡| 91精品国产91久久久久久一区二区 | 午夜久久久久久久久久一区二区| www日韩大片| 日韩视频不卡中文| 欧美视频一二三区| 一本大道综合伊人精品热热| 丰满放荡岳乱妇91ww| 久久精品99国产精品日本| 一区二区免费在线播放| 国产精品久久久久婷婷二区次 | 亚洲乱码国产乱码精品精98午夜 | 8x福利精品第一导航| 91精品91久久久中77777| 国产91精品一区二区麻豆网站 | 99麻豆久久久国产精品免费优播| 久久精品国产精品亚洲红杏| 日韩在线一二三区| 亚洲小说欧美激情另类| 一区二区三区欧美激情| 亚洲三级在线观看| 亚洲免费高清视频在线| 国产精品久久久久久久久晋中| 国产三级久久久| 国产午夜精品美女毛片视频| 久久综合色鬼综合色| 欧美电影精品一区二区| 日韩视频一区在线观看| 精品久久一二三区| 26uuu国产电影一区二区| 日韩欧美国产一二三区| 精品欧美一区二区三区精品久久| 欧美一二三四在线| 日韩一级高清毛片| 欧美v日韩v国产v| 亚洲精品在线观看视频| 久久久久亚洲综合| 国产精品美女www爽爽爽| 国产精品免费视频网站| 亚洲欧美一区二区三区久本道91| 中文字幕制服丝袜一区二区三区| 亚洲色图在线视频| 亚洲成人tv网| 麻豆精品一区二区综合av| 蜜臀av一级做a爰片久久| 久久精品国产网站| 福利电影一区二区三区| 972aa.com艺术欧美| 日本韩国视频一区二区| 欧美高清www午色夜在线视频| 欧美一区二区三区性视频| 精品久久久久av影院| 国产香蕉久久精品综合网| 国产精品免费人成网站| 一区二区国产视频| 免费日韩伦理电影| 国产激情91久久精品导航 | 久久综合色之久久综合| 国产精品久线在线观看| 亚洲无人区一区| 国产一区二区三区在线观看免费 | 欧美亚洲禁片免费| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲国产成人在线| 亚洲高清免费在线| 韩国v欧美v亚洲v日本v| 91在线观看地址| 欧美电影免费观看完整版| 欧美高清在线精品一区| 五月婷婷另类国产| 国产一区二区伦理片| 99久久99久久精品国产片果冻| 在线免费视频一区二区| 精品国产三级a在线观看| 亚洲欧美欧美一区二区三区| 免费成人在线观看| 91麻豆免费在线观看| 精品国产免费人成电影在线观看四季 | 日本美女一区二区三区| 成人免费毛片app| 欧美日韩小视频| 亚洲男人电影天堂| 国产剧情在线观看一区二区| 欧美私模裸体表演在线观看| 欧美最新大片在线看| 日韩精品欧美精品| 成人免费毛片嘿嘿连载视频| 欧美欧美欧美欧美| 综合久久综合久久| 韩国成人精品a∨在线观看| 欧洲精品一区二区| 国产精品免费久久久久| 麻豆久久久久久| 日本高清不卡视频| 中文一区二区在线观看| 日韩成人免费在线| 色系网站成人免费| 欧美国产综合一区二区| 六月丁香综合在线视频| 欧美日韩精品欧美日韩精品 | 欧美人牲a欧美精品| 国产精品丝袜久久久久久app| 日本aⅴ免费视频一区二区三区 | 欧美手机在线视频| 中文字幕在线不卡| 国产精品一区二区三区99| 欧美一卡在线观看| 亚洲第一精品在线| 在线视频欧美精品| 国产精品二三区| 懂色av一区二区在线播放| 亚洲精品一线二线三线无人区| 丝袜美腿亚洲色图| 欧美精品一级二级三级| 1区2区3区欧美| 成人精品视频一区二区三区 | 99热精品国产| 国产精品乱人伦| 成人精品国产一区二区4080| 国产亚洲精品7777| 国产激情偷乱视频一区二区三区| 久久综合色之久久综合| 精品亚洲国内自在自线福利| 欧美一级一区二区| 美国欧美日韩国产在线播放| 欧美一区二区在线看| 三级欧美在线一区| 日韩手机在线导航| 国内精品伊人久久久久av一坑 | 久久久午夜精品理论片中文字幕| 六月丁香综合在线视频| 久久综合久久鬼色中文字| 韩国理伦片一区二区三区在线播放 | 日韩高清国产一区在线| 91精品国产色综合久久不卡蜜臀 | 91精品国产全国免费观看| 午夜精品久久久久久久99水蜜桃 | 91精品在线观看入口| 日韩黄色免费网站| 日韩美一区二区三区| 日本女人一区二区三区| 另类欧美日韩国产在线| 一区二区三区av电影| 色999日韩国产欧美一区二区| 亚洲视频1区2区| 欧美三级日韩三级| 91福利精品第一导航| 一区二区成人在线| 欧美日韩一卡二卡三卡| 另类欧美日韩国产在线| 国产亚洲欧美在线| 91免费观看视频在线| 亚洲最快最全在线视频| 91精品国产综合久久蜜臀| 久久不见久久见免费视频1| 国产视频一区不卡| 色婷婷精品大视频在线蜜桃视频| 一区二区激情小说| 欧美不卡在线视频| av午夜一区麻豆| 视频在线观看一区| 国产亚洲精品久| 欧美日韩在线免费视频| 精品一区二区在线观看| 国产精品午夜在线观看| 欧美视频一区二区三区四区| 国产一区在线视频| 一区二区三区高清在线| 精品日韩成人av| 91影院在线免费观看| 美女脱光内衣内裤视频久久影院| 久久久久久久免费视频了| 在线免费观看成人短视频| 午夜精品福利久久久| 粉嫩av一区二区三区粉嫩| 色婷婷综合久久久中文一区二区 | 在线播放亚洲一区| 国产精品系列在线观看| 亚洲国产日产av| 中文字幕欧美日韩一区| 91精品国产欧美一区二区成人| 成人白浆超碰人人人人| 日韩国产高清影视| 欧美国产日韩精品免费观看| 欧美日韩国产经典色站一区二区三区| 国产一区二区在线看| 亚洲国产视频a| 国产精品区一区二区三| 欧美成人伊人久久综合网| 色婷婷综合五月| 北条麻妃一区二区三区|