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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? marker.c

?? h261協議的h261編碼碼,lib_261.h里面提供了詳細的接口和說明.
?? C
字號:
/*************************************************************
Copyright (C) 1990, 1991, 1993 Andy C. Hung, all rights reserved.
PUBLIC DOMAIN LICENSE: Stanford University Portable Video Research
Group. If you use this software, you agree to the following: This
program package is purely experimental, and is licensed "as is".
Permission is granted to use, modify, and distribute this program
without charge for any purpose, provided this license/ disclaimer
notice appears in the copies.  No warranty or maintenance is given,
either expressed or implied.  In no event shall the author(s) be
liable to you or a third party for any special, incidental,
consequential, or other damages, arising out of the use or inability
to use the program for any purpose (or the loss of data), even if we
have been advised of such possibilities.  Any public reference or
advertisement of this source code should refer to it as the Portable
Video Research Group (PVRG) code, and not by any author(s) (or
Stanford University) name.
*************************************************************/
/*
************************************************************
marker.c

This file contains most of the marker information.

************************************************************
*/

/*LABEL marker.c */

#include <stdlib.h>
#include "globals.h"
#include "marker.h"

/*PUBLIC*/

extern void WritePictureHeader_en();
//extern void ReadPictureHeader();
extern void WriteGOBHeader_en();
//extern int ReadHeaderHeader();
//extern void ReadHeaderTrailer();
//extern void ReadGOBHeader();
extern void WriteMBHeader_en();
//extern int ReadMBHeader();

/*PRIVATE*/

extern int TemporalReference;
extern int PType;
extern int Type2;
extern int MType;
extern int GQuant;
extern int MQuant;
extern int MVDH;
extern int MVDV;
extern int CBP;
extern int ParityEnable;
extern int PSpareEnable;
extern int GSpareEnable;
extern int Parity;
extern int PSpare;
extern int GSpare;
extern int GRead;
extern int MBA;
extern int LastMBA;

extern int LastMVDV;
extern int LastMVDH;

extern int LastMType;

extern int QuantMType[];
extern int CBPMType[];
extern int MFMType[];


extern FSTORE *CFS;

extern int bit_set_mask[];
extern int extend_mask[];

extern DHUFF *MBADHuff;
extern DHUFF *MVDDHuff;
extern DHUFF *CBPDHuff;
extern DHUFF *T3DHuff;

extern EHUFF *MBAEHuff;
extern EHUFF *MVDEHuff;
extern EHUFF *CBPEHuff;
extern EHUFF *T3EHuff;

extern int NumberBitsCoded;

int MacroAttributeBits=0;
int MotionVectorBits=0;

/*START*/
/*BFUNC

WritePictureHeader_en() writes the header of picture out to the stream.
One of these is necessary before every frame is transmitted.

EFUNC*/

void WritePictureHeader_en()
{
  BEGIN("WritePictureHeader_en");

  mputv_en(PSC_LENGTH,PSC);
  mputv_en(5,TemporalReference);
//#ifdef VERSION_1_0
//  mputv_en(13,PType);
//  if (ParityEnable)
//    {
//      mputb_en(1);
//      mputv_en(8,ParityFS(CFS));
//    }
//  else
//    mputb_en(0);  /* No Parity */
//  if (PSpareEnable)
//    {
//      mputb_en(1);
//      mputv_en(16,PSpare);
//    }
//  else
//    mputb_en(0);  /* No Spare */
//#else
  mputv_en(6,PType);
  if (PSpareEnable)
    {
      mputb_en(1);
      mputv_en(8,PSpare);
    }
  mputb_en(0);  /* No Spare */
//#endif
}

/*BFUNC

ReadPictureHeader() reads the header off of the stream. It assumes
that the first PSC has already been read in. (Necessary to tell the
difference between a new picture and another GOB.)

EFUNC*/

//void ReadPictureHeader()
//{
//  BEGIN("ReadPictureHeader");
//
//  TemporalReference = mgetv(5);
//
////#ifdef VERSION_1_0
////  PType = mgetv(13);
////  if (mgetb())
////    {
////      ParityEnable = 1;
////      Parity = mgetv(8);
////    }
////  else
////    ParityEnable = 0;
////  if (mgetb())
////    {
////      PSpareEnable=1;
////      PSpare = mgetv(16);
////    }
////  else
////    PSpareEnable = 0;
////#else
//  PType = mgetv(6);
//  for(PSpareEnable = 0;mgetb();)
//    {
//      PSpareEnable=1;
//      PSpare = mgetv(8);
//    }
////#endif
//}

/*BFUNC

WriteGOBHeader_en() writes a GOB out to the stream.

EFUNC*/

void WriteGOBHeader_en()
{
  BEGIN("WriteGOBHeader_en");

  mputv_en(GBSC_LENGTH,GBSC);
  mputv_en(4,GRead+1);
//#ifdef VERSION_1_0
//  mputv_en(6,Type2);
//#endif
  mputv_en(5,GQuant);
//#ifdef VERSION_1_0
//  if (GSpareEnable)
//    {
//      mputb_en(1);
//      mputv_en(16,GSpare);
//    }
//  //else
//    mputb_en(0);
//#else
  if (GSpareEnable)
    {
      mputb_en(1);
      mputv_en(8,GSpare);
    }
  mputb_en(0);
//#endif
}

/*BFUNC

ReadHeaderTrailer() reads the trailer of the PSC or GBSC code. It is
used to determine whether it is just a GOB or a new picture.

EFUNC*/

//void ReadHeaderTrailer()
//{
//  BEGIN("ReadHeaderTrailer");
//
//  GRead = mgetv(4)-1;
//}

/*BFUNC

ReadHeaderHeader() reads the header header off of the stream. This is
a precursor to the GOB read or the PSC read. It returns -1 on error.

EFUNC*/

//int ReadHeaderHeader()
//{
//  BEGIN("ReadHeaderHeader");
//  int input;
//
//  if ((input = mgetv(GBSC_LENGTH)) != GBSC)
//    {
//      if (seof()==0)
//	{
//	  WHEREAMI();
//	  printf("Illegal GOB Start Code. Read: %d\n",input);
//	}
//      return(-1);
//    }
//  return(0);
//}
//

/*BFUNC

ReadGOBHeader() reads the GOB information off of the stream. We assume
that the first bits have been read in by ReadHeaderHeader... or some
such routine.

EFUNC*/

//void ReadGOBHeader()
//{
//	BEGIN("ReadGOBHeader");
//    
////#ifdef VERSION_1_0
////	Type2 = mgetv(6);
////#endif
//	GQuant = mgetv(5);
//
////#ifdef VERSION_1_0
//	//if (mgetb())
//	//{
//	//	GSpareEnable = 1;
//	//	GSpare = mgetv(16);
//	//}
//	//else
//		GSpareEnable=0;
////#else
//	for(GSpareEnable=0;mgetb();)
//	{
//		GSpareEnable = 1;
//        
//		GSpare = mgetv(8);
//	}
////#endif
//}

/*BFUNC

WriteMBHeader_en() writes a macro-block out to the stream.

EFUNC*/

void WriteMBHeader_en()
{
  BEGIN("WriteMBHeader_en");
  int TempH,TempV,Start;
  
  Start=swtell_en();
  if (!Encode_en(MBA,MBAEHuff))
    {
      WHEREAMI();
      printf("Attempting to write an empty Huffman code.\n");
      exit(ERROR_HUFFMAN_ENCODE);
    }
  if (!Encode_en(MType,T3EHuff))
    {
      WHEREAMI();
      printf("Attempting to write an empty Huffman code.\n");
      exit(ERROR_HUFFMAN_ENCODE);
    }
  if (QuantMType[MType])
    mputv_en(5,MQuant);

  NumberBitsCoded=0;
  if (MFMType[MType])
    {
      if ((!MFMType[LastMType])||(MBA!=1)||
	  (LastMBA==-1)||(LastMBA==10)||(LastMBA==21))
	{
	  if (!Encode_en(MVDH&0x1f,MVDEHuff)||
	       !Encode_en(MVDV&0x1f,MVDEHuff))
	    {
	      WHEREAMI();
	      printf("Cannot encode motion vectors.\n");
	    }
	}
      else
	{
	  TempH = MVDH - LastMVDH;
	  if (TempH < -16) TempH += 32;
	  if (TempH > 15) TempH -= 32;
	  TempV = MVDV - LastMVDV;
	  if (TempV < -16) TempV += 32;
	  if (TempV > 15) TempV -= 32;
	  if (!Encode_en(TempH&0x1f,MVDEHuff)||!Encode_en(TempV&0x1f,MVDEHuff))
	    {
	      WHEREAMI();
	      printf("Cannot encode motion vectors.\n");
	    }
	}
      LastMVDV = MVDV;
      LastMVDH = MVDH;
    }
  else
    {
      LastMVDV=LastMVDH=MVDV=MVDH=0; /* Redundant in most cases */
    }

  MotionVectorBits+=NumberBitsCoded;
  if (CBPMType[MType])
    {
      if (!Encode_en(CBP,CBPEHuff))
	{
	  WHEREAMI();
	  printf("CBP write error\n");
	  exit(-1);
	}
    }
  MacroAttributeBits+=(swtell_en()-Start);
}

/*BFUNC

ReadMBHeader() reads the macroblock header from the stream.

EFUNC*/

//int ReadMBHeader()
//{
//  BEGIN("ReadMBHeader");
//  int ReadMVDH,ReadMVDV;
//
//  do
//    {
//      MBA = Decode(MBADHuff);
//	  //printf("MBA = %d\n",MBA);
//    }
//  while(MBA == 34);  /* Get rid of stuff bits */
//  if (MBA == 35) return(-1); /* Start of Picture Headers */
//
//  LastMType = MType;
//  MType = Decode(T3DHuff);
//  if (QuantMType[MType])
//    MQuant = mgetv(5);
//  if (MFMType[MType])
//    {
//      if ((!MFMType[LastMType])||(MBA!=1)||
//	  (LastMBA==-1)||(LastMBA==10)||(LastMBA==21))
//	  {
//	    MVDH = Decode(MVDDHuff);
//	    if (MVDH & bit_set_mask[4])
//	      MVDH |= extend_mask[4];
//	    MVDV = Decode(MVDDHuff);
//	    if (MVDV & bit_set_mask[4])
//	      MVDV |= extend_mask[4];
//	  }
//      else
//	{
//	  ReadMVDH = Decode(MVDDHuff);
//	  if (ReadMVDH & bit_set_mask[4])
//	    ReadMVDH |= extend_mask[4];
//	  MVDH += ReadMVDH;
//	  
//	  ReadMVDV = Decode(MVDDHuff);
//	  if (ReadMVDV & bit_set_mask[4])
//	    ReadMVDV |= extend_mask[4];
//	  MVDV += ReadMVDV;
//
//	  if (MVDH < -16) MVDH += 32;
//	  if (MVDH > 15) MVDH -= 32;
//	  if (MVDV < -16) MVDV += 32;
//	  if (MVDV > 15) MVDV -= 32;
//	}
//    }
//  else
//    {
//      MVDV=MVDH=0;  /* Theoretically redundant */
//    }
//  if (CBPMType[MType])
//    CBP = Decode(CBPDHuff);
//  return(0);
//}

/*END*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www久久精品| 99久久99久久免费精品蜜臀| 亚洲色图欧美激情| 精品福利一区二区三区| 精品欧美一区二区在线观看| 日韩欧美国产一区二区在线播放 | 高清在线成人网| 成人精品免费看| 狠狠狠色丁香婷婷综合激情| 婷婷成人激情在线网| 天堂一区二区在线| 丝瓜av网站精品一区二区| 亚洲电影欧美电影有声小说| 日韩精品一区第一页| 久久狠狠亚洲综合| 国产精品亚洲视频| 99精品视频在线观看免费| 91久久精品网| 欧美一级理论片| 亚洲国产精品二十页| 亚洲日本中文字幕区| 亚洲国产精品久久人人爱| 午夜精品免费在线观看| 久久99深爱久久99精品| av不卡免费在线观看| 欧美系列亚洲系列| 日韩精品专区在线| 国产亚洲成年网址在线观看| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产一区91精品张津瑜| 成人午夜私人影院| 欧美三片在线视频观看| 精品国产1区二区| 亚洲日本一区二区| 捆绑调教一区二区三区| 97精品久久久久中文字幕| 欧美二区在线观看| 欧美国产在线观看| 奇米精品一区二区三区在线观看| 国产精品一区免费在线观看| 91免费在线视频观看| 69久久夜色精品国产69蝌蚪网| 精品少妇一区二区三区免费观看 | 夜夜嗨av一区二区三区| 秋霞午夜鲁丝一区二区老狼| av不卡免费电影| 精品国产网站在线观看| 亚洲乱码中文字幕综合| 激情五月婷婷综合| 欧美亚洲图片小说| 中文av一区二区| 精品亚洲国内自在自线福利| 91福利区一区二区三区| 国产日韩精品一区| 免费成人av在线播放| 色94色欧美sute亚洲线路一久| 欧美电视剧在线看免费| 亚洲福利一区二区三区| 97精品电影院| 国产精品每日更新在线播放网址 | 国产午夜精品久久久久久免费视| 亚洲午夜在线电影| av午夜精品一区二区三区| 精品黑人一区二区三区久久| 日韩和的一区二区| 欧美色图12p| 亚洲资源在线观看| 日本韩国精品一区二区在线观看| 国产精品私人自拍| 高清国产一区二区| 久久久一区二区三区捆绑**| 蜜乳av一区二区| 欧美一区二区私人影院日本| 性做久久久久久免费观看| 色天天综合久久久久综合片| 中文字幕一区二区三区四区不卡 | 亚洲国产乱码最新视频| 91国产视频在线观看| 中文字幕在线一区| 99久久综合国产精品| 国产欧美日韩在线视频| 国产精品一区二区你懂的| 久久久综合精品| 成人动漫av在线| 亚洲天堂a在线| 在线亚洲高清视频| 一区二区三区在线观看国产 | 欧美高清视频一二三区| 婷婷久久综合九色国产成人| 4438成人网| 国产一区在线观看视频| 久久精品亚洲麻豆av一区二区| 国产精品1区二区.| 国产精品九色蝌蚪自拍| 91激情在线视频| 午夜电影久久久| 精品999久久久| yourporn久久国产精品| 亚洲国产cao| 7878成人国产在线观看| 美女视频黄频大全不卡视频在线播放| www亚洲一区| 一本色道久久综合亚洲精品按摩| 亚洲第四色夜色| 久久综合99re88久久爱| 不卡欧美aaaaa| 天天色 色综合| 欧美精品一区二区三区四区 | 国产精品一区二区久久不卡| 国产精品久久久久久久久免费桃花| av在线播放一区二区三区| 亚洲一二三区视频在线观看| 欧美电影免费观看高清完整版在线 | 美脚の诱脚舐め脚责91| 中文字幕乱码日本亚洲一区二区 | 男人的天堂亚洲一区| 久久久久久久久久久黄色| 91蝌蚪porny| 加勒比av一区二区| 亚洲精品免费在线| 欧美精品一区二区三区四区 | 欧美体内she精视频| 久久99精品国产.久久久久久| 亚洲欧洲日韩av| 精品久久久久久综合日本欧美| 97精品国产97久久久久久久久久久久| 日本va欧美va瓶| 亚洲免费在线视频一区 二区| 欧美第一区第二区| 欧美日韩国产成人在线91| 国产大陆精品国产| 欧美aaaaa成人免费观看视频| 亚洲天堂a在线| 国产精品国产三级国产有无不卡 | 久久久精品tv| 777欧美精品| 在线亚洲高清视频| 99久久精品国产一区二区三区 | a亚洲天堂av| 国产主播一区二区| 日韩在线播放一区二区| 亚洲人成电影网站色mp4| 久久久精品tv| 久久综合给合久久狠狠狠97色69| 91精品国产免费| 91麻豆精品国产91久久久久| 91成人免费网站| 色屁屁一区二区| 色哟哟国产精品| av福利精品导航| 不卡的电视剧免费网站有什么| 国产精品乡下勾搭老头1| 精品午夜久久福利影院| 麻豆视频观看网址久久| 麻豆91精品视频| 蜜臀久久久99精品久久久久久| 日韩中文字幕av电影| 免费看欧美美女黄的网站| 日本一不卡视频| 日本中文在线一区| 玖玖九九国产精品| 久久99精品网久久| 国产精品亚洲成人| 成人福利在线看| 日韩片之四级片| 欧美一二三在线| 久久这里只有精品6| 国产三级欧美三级日产三级99 | 99re这里只有精品视频首页| 99这里只有久久精品视频| jlzzjlzz国产精品久久| 欧美色精品天天在线观看视频| 欧美老人xxxx18| 欧美精品一区二区三区蜜臀| 国产精品视频九色porn| 亚洲日本va午夜在线电影| 一区二区三区在线不卡| 日韩成人一级大片| 国产精品亚洲一区二区三区在线| 国产高清不卡一区| 在线一区二区观看| 日韩女优视频免费观看| 国产午夜久久久久| 亚洲精品成人悠悠色影视| 男人的天堂亚洲一区| 国产激情一区二区三区桃花岛亚洲| 国产91精品免费| 色999日韩国产欧美一区二区| 日韩精品一区二区三区在线| 国产精品乱码一区二三区小蝌蚪| 亚洲欧美欧美一区二区三区| 丝袜美腿成人在线| 国产成人在线色| 欧美艳星brazzers| 久久婷婷国产综合国色天香| 日韩理论片在线| 亚洲夂夂婷婷色拍ww47| 玖玖九九国产精品| 在线免费观看日韩欧美| 欧美tickle裸体挠脚心vk|