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

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

?? mpegplayer.java

?? 用java寫出的播放器
?? JAVA
?? 第 1 頁 / 共 4 頁
字號:
    return forward;  }  /**   * Returns the backward motion vector   */  public MotionVector getBackwardVector() {    return backward;  }  /**   * Resets the DCT coefficient predictors   */  public void resetDataPredictors() {    for (int i = 0; i < 3; i++)      predictor[i] = 1024;  }  /**   * Resets the motion vector predictors   */  public void resetMotionVectors() {    forward.setVector(0, 0);    backward.setVector(0, 0);  }  /**   * Parses the next encoded MPEG-1 macroblock (according to ISO 11172-2)   * decoding and dequantizing the DCT coefficient component blocks.   */  public void getMacroblock(VLCInputStream stream) throws IOException {    /* read macro block bit flags */    switch (getType()) {    case I_TYPE:      setFlags(stream.getIMBCode());      break;    case P_TYPE:      setFlags(stream.getPMBCode());      if (!isForwardPredicted())	resetMotionVectors();      if (!isIntraCoded())	resetDataPredictors();      break;    case B_TYPE:      setFlags(stream.getBMBCode());      if (isIntraCoded())	resetMotionVectors();      else	resetDataPredictors();      break;    }    /* read quantization scale */    if (isQuantScaled()) {      setScale(stream.getBits(5));    }    /* read forward motion vector */    if (isForwardPredicted()) {      getForwardVector().getMotionVector(stream);    }    /* read backward motion vector */    if (isBackwardPredicted()) {      getBackwardVector().getMotionVector(stream);    }    /* read block pattern code */    int pattern = 0;    if (isPatternCoded()) {      pattern = stream.getCBPCode();    }    /* clear DCT coefficients blocks */    for (int i = 0; i < 6; i++) {      for (int j = 0; j < 64; j++) {	block[i][j] = 0;      }    }    /* read DCT coefficient blocks */    if (isIntraCoded()) {      /* read intra coded DCT coefficients */      for (int i = 0; i < 6; i++) {	block[i][0] = predictor[i < 4 ? 0 : i - 3];	getIntraBlock(stream, block[i], i);	predictor[i < 4 ? 0 : i - 3] = block[i][0];	IDCT.transform(block[i]);      }    }    else {      /* read inter coded DCT coefficients */      for (int i = 0; i < 6; i++) {	if ((pattern & (1 << (5 - i))) != 0) {	  getInterBlock(stream, block[i]);	  IDCT.transform(block[i]);	}      }    }  }  /**   * Parses an intra coded MPEG-1 block (according to ISO 11172-2) decoding   * and dequantizing the DC and AC coefficients stored in zig zag order.   */  private void getIntraBlock(VLCInputStream stream, int block[], int component)    throws IOException {    /* decode DC coefficients */    if (component < 4)      block[0] += stream.getIntraDCLumValue() << 3;    else      block[0] += stream.getIntraDCChromValue() << 3;    /* decode AC coefficients */    for (int i = 1; i <= block.length; i++) {      int data[] = stream.getACValue();      if (data[0] == stream.EOB)	break;      int position = zigzag[i = (i + data[0]) & 63];      block[position] = (data[1] * scale * intraMatrix[i]) >> 3;    }  }  /**   * Parses a inter coded MPEG-1 block (according to ISO 11172-2) decoding   * and dequantizing the DC and AC coefficients stored in zig zag order.   */  private void getInterBlock(VLCInputStream stream, int block[])    throws IOException {    /* decode DC and AC coefficients */    for (int i = 0; i <= block.length; i++) {      int data[] = (i == 0 ? stream.getInterDCValue() : stream.getACValue());      if (data[0] == stream.EOB)	break;      data[1] += ((data[1] >> 31) << 1) + 1;      int position = zigzag[i = (i + data[0]) & 63];      block[position] = (data[1] * scale * interMatrix[i]) >> 3;    }  }}/** * Picture decoder for MPEG-1 video streams according to ISO 11172-2. */class Picture {  /**   * Picture current and predictors frame buffers   */  private int frameBuffer[];  private int forwardBuffer[];  private int backwardBuffer[];  /**   * Macroblock decoder and dequantizer   */  private Macroblock macroblock;  /**   * Dimension of the picture in pixels   */  private int width, height;  /**   * Dimension of the picture in macro blocks   */  private int mbColumns, mbRows;  /**   * Picture temporal reference number   */  private int number;  /**   * Picture synchronization delay (1/90000s ticks)   */  private int delay;  /**   * Constructs a MPEG-1 video stream picture   */  public Picture() {    /* constructs the macroblock */    macroblock = new Macroblock();    /* initialize temporal fields */    number = 0;    delay = 0;    /* initialize dimension and frame buffers */    width = height = 0;    mbColumns = mbRows = 0;    frameBuffer = null;    forwardBuffer = null;    backwardBuffer = null;  }  /**   * Changes the picture dimensions   */  public void setSize(int width, int height) {    /* set up picture dimension */    this.width = width;    this.height = height;    /* compute dimension in macro blocks */    mbColumns = (width + 15) >> 4;    mbRows = (height + 15) >> 4;    /* allocate frame buffers */    frameBuffer = new int[256 * mbRows * mbColumns];    forwardBuffer = new int[256 * mbRows * mbColumns];    backwardBuffer = new int[256 * mbRows * mbColumns];  }  /**   * Returns the picture temporal reference   */  public int getNumber() {    return number;  }  /**   * Changes the picture temporal reference   */  public void setNumber(int number) {    this.number = number;  }  /**   * Returns the picture temporal delay   */  public int getDelay() {    return delay;  }  /**   * Changes the picture temporal delay   */  public void setDelay(int delay) {    this.delay = delay;  }  /**   * Returns the macro block object   */  public Macroblock getMacroblock() {    return macroblock;  }  /**   * Returns the dimension of the picture in pixels   */  public int getWidth() {    return width;  }  public int getHeight() {    return height;  }  public int getStride() {    return mbColumns << 4;  }  /**   * Returns the last picture of the MPEG-1 video stream   */  public int[] getLastFrame() {    return backwardBuffer;  }  /**   * Parses the next picture from the MPEG-1 video stream   */  public int[] getFrame(VLCInputStream stream) throws IOException {    /* read picture temporal reference */    setNumber(stream.getBits(10));    /* read picture encoding type */    macroblock.setType(stream.getBits(3));    /* read VBV delay of this picture */    setDelay(stream.getBits(16));    /* read forward motion information */    if (macroblock.getType() != Macroblock.I_TYPE) {      macroblock.getForwardVector().getMotionInfo(stream);    }    /* read backward motion information */    if (macroblock.getType() == Macroblock.B_TYPE) {      macroblock.getBackwardVector().getMotionInfo(stream);    }    /* skip extra bit information */    while (stream.getBits(1) != 0)      stream.flushBits(8);    /* skip extensions and user data chunks */    while (stream.showCode() == BitInputStream.EXT_START_CODE ||	   stream.showCode() == BitInputStream.USER_START_CODE) {      stream.getCode();    }    /* update forward frame buffer */    if (macroblock.getType() != Macroblock.B_TYPE) {      int buffer[] = forwardBuffer;      forwardBuffer = backwardBuffer;      backwardBuffer = buffer;    }    /* parse picture slices */    while (stream.showCode() >= BitInputStream.SLICE_MIN_CODE &&	   stream.showCode() <= BitInputStream.SLICE_MAX_CODE) {      getSlice(stream, stream.getCode());    }    /* update backward frame buffer */    if (macroblock.getType() != Macroblock.B_TYPE) {      int buffer[] = backwardBuffer;      backwardBuffer = frameBuffer;      frameBuffer = buffer;      return forwardBuffer;    }    return frameBuffer;  }  /**   * Parses the next picture slice from the MPEG-1 video stream   */  private void getSlice(VLCInputStream stream, int code) throws IOException {    /* compute macro block address */    int address = (code - BitInputStream.SLICE_MIN_CODE) * mbColumns - 1;    /* read slice quantization scale */    macroblock.setScale(stream.getBits(5));    /* skip extra bit information */    while (stream.getBits(1) != 0) {      stream.flushBits(8);    }    /* reset DCT predictors and motion vectors */    macroblock.setFlags(Macroblock.EMPTY);    macroblock.resetDataPredictors();    macroblock.resetMotionVectors();    /* parse slice macro blocks */    while (stream.showBits(23) != 0) {      /* get macro block address increment */      int lastAddress = address + stream.getMBACode();      /* handle skipped macro blocks */      if (macroblock.isEmpty()) {	/* handle the first macro block address in the slice */	address = lastAddress;      }      else {	while (++address < lastAddress) {	  /* assume inter coded macro block with zero coefficients */	  macroblock.resetDataPredictors();	  /* use previous motion vectors or zero in P-picture macro blocks */	  if (macroblock.getType() == Macroblock.P_TYPE)	    macroblock.resetMotionVectors();	  /* process skipped macro block */	  if (macroblock.isBidirPredicted()) {	    motionPrediction(address, forwardBuffer, backwardBuffer,			     macroblock.getForwardVector(),			     macroblock.getBackwardVector());	  }	  else if (macroblock.isBackwardPredicted()) {	    motionPrediction(address, backwardBuffer,			     macroblock.getBackwardVector());	  }	  else {	    motionPrediction(address, forwardBuffer,			     macroblock.getForwardVector());	  }	}      }      /* decode macro block */      macroblock.getMacroblock(stream);      /* process macro block */      if (macroblock.isIntraCoded()) {	motionPrediction(address, macroblock.getData());      }      else {	if (macroblock.isBidirPredicted()) {	  motionPrediction(address, forwardBuffer, backwardBuffer,			   macroblock.getForwardVector(),			   macroblock.getBackwardVector());	}	else if (macroblock.isBackwardPredicted()) {	  motionPrediction(address, backwardBuffer,			   macroblock.getBackwardVector());	}	else {	  motionPrediction(address, forwardBuffer,			   macroblock.getForwardVector());	}	motionCompensation(address, macroblock.getData());      }    }  }  private void motionPrediction(int address, int sourceBuffer[],				MotionVector vector) {    int width = mbColumns << 4;    int offset = ((address % mbColumns) + width * (address / mbColumns)) << 4;    int deltaA = (vector.horizontal >> 1) + width * (vector.vertical >> 1);    int deltaB = (vector.horizontal & 1) + width * (vector.vertical & 1);    if (deltaB == 0) {      for (int i = 0; i < 16; i++) {	System.arraycopy(sourceBuffer, offset + deltaA,			 frameBuffer, offset, 16);	offset += width;      }    }    else {      deltaB += deltaA;      for (int i = 0; i < 16; i++) {	for (int j = 0; j < 16; j++) {	  int d0 = sourceBuffer[offset + deltaA];	  int d1 = sourceBuffer[offset + deltaB];	  int d2 = (d0 & 0xfefefe) + (d1 & 0xfefefe);	  int d3 = (d0 & d1) & 0x010101;	  frameBuffer[offset++] = (d2 >> 1) + d3;	}	offset += width - 16;      }    }  }  private void motionPrediction(int address,				int sourceBufferA[], int sourceBufferB[],				MotionVector vectorA, MotionVector vectorB) {    int width = mbColumns << 4;    int offset = ((address % mbColumns) + width * (address / mbColumns)) << 4;    int deltaA = (vectorA.horizontal >> 1) + width * (vectorA.vertical >> 1);    int deltaB = (vectorB.horizontal >> 1) + width * (vectorB.vertical >> 1);    int deltaC = (vectorA.horizontal & 1) + width * (vectorA.vertical & 1);    int deltaD = (vectorB.horizontal & 1) + width * (vectorB.vertical & 1);    if (deltaC == 0 && deltaD == 0) {      for (int i = 0; i < 16; i++) {	for (int j = 0; j < 16; j++) {	  int d0 = sourceBufferA[offset + deltaA];	  int d1 = sourceBufferB[offset + deltaB];	  int d2 = (d0 & 0xfefefe) + (d1 & 0xfefefe);	  int d3 = (d0 & d1) & 0x010101;	  frameBuffer[offset++] = (d2 >> 1) + d3;	}	offset += width - 16;      }    }    else {      deltaC += deltaA;      deltaD += deltaB;      for (int i = 0; i < 16; i++) {	for (int j = 0; j < 16; j++) {	  int d0 = sourceBufferA[offset + deltaA];	  int d1 = sourceBufferB[offset + deltaB];	  int d2 = sourceBufferA[offset + deltaC];	  int d3 = sourceBufferB[offset + deltaD];	  int d4 = ((d0 & 0xfcfcfc) + (d1 & 0xfcfcfc) +		    (d2 & 0xfcfcfc) + (d3 & 0xfcfcfc));	  int d5 = (d0 + d1 + d2 + d3 - d4) & 0x040404;	  frameBuffer[offset++] = (d4 + d5) >> 2;	}	offset += width - 16;      }    }  }  private void motionPrediction(int address, int block[][]) {    int width, offset, index;    /* compute macroblock address */    width = mbColumns << 4;    address = ((address % mbColumns) + width * (address / mbColumns)) << 4;    /* reconstruct luminance blocks */    offset = address;    index = 0;    for (int i = 0; i < 8; i++) {      for (int j = 0; j < 8; j++) {	frameBuffer[offset] = clip[512 + block[0][index]];	frameBuffer[offset+8] = clip[512 + block[1][index]];	offset++;	index++;      }      offset += width - 8;    }    offset = address + (width << 3);    index = 0;    for (int i = 0; i < 8; i++) {      for (int j = 0; j < 8; j++) {	frameBuffer[offset] = clip[512 + block[2][index]];	frameBuffer[offset+8] = clip[512 + block[3][index]];	offset++;	index++;      }      offset += width - 8;    }    /* reconstruct chrominance blocks */    offset = address;    index = 0;    for (int i = 0; i < 8; i++) {      for (int j = 0; j < 8; j++) {	int Cb = clip[512 + block[4][index]];	int Cr = clip[512 + block[5][index]];	int CbCr = (Cb << 8) + (Cr << 16);	frameBuffer[offset++] += CbCr;	frameBuffer[offset++] += CbCr;	offset += width - 2;	frameBuffer[offset++] += CbCr;	frameBuffer[offset++] += CbCr;	offset -= width;	index++;      }      offset += width + width - 16;    }  }  private void motionCompensation(int address, int block[][]) {    int width, offset, index;    /* compute macroblock address */    width = mbColumns << 4;    address = ((address % mbColumns) + width * (address / mbColumns)) << 4;    /* reconstruct luminance blocks */    offset = index = 0;    for (int i = 0; i < 8; i++) {      for (int j = 0; j < 8; j++) {	data[offset] = block[0][index];	data[offset+8] = block[1][index];	data[offset+128] = block[2][index];	data[offset+8+128] = block[3][index];	offset++;	index++;      }      offset += 8;    }    /* reconstruct chrominance blocks */    offset = index = 0;    for (int i = 0; i < 8; i++) {      for (int j = 0; j < 8; j++) {	int Y, YCbCr;	int Cb = 512 + block[4][index];	int Cr = 512 + block[5][index];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区免费看| 日韩精品在线一区| 亚洲一区二区av电影| 久久嫩草精品久久久久| 91福利区一区二区三区| 国产成人午夜99999| 日韩激情在线观看| 亚洲色大成网站www久久九九| 91精品国产手机| 在线观看欧美黄色| 成人免费视频视频在线观看免费| 日本美女视频一区二区| 一区二区三区在线视频免费 | 久久er精品视频| 亚洲一区二区三区中文字幕 | av动漫一区二区| 国产在线麻豆精品观看| 无码av免费一区二区三区试看| 日韩毛片在线免费观看| 午夜精品久久久久久久99樱桃| 欧美韩国日本综合| 日韩精品一区二区三区老鸭窝| 国产99久久精品| 亚洲成人黄色小说| 久久久久久久性| 亚洲天堂网中文字| 久久久久高清精品| 青青草精品视频| 亚洲一区二区视频在线观看| 日韩一区日韩二区| 国产精品家庭影院| 国产精品短视频| 欧美激情中文不卡| 欧美国产欧美综合| 欧美国产欧美亚州国产日韩mv天天看完整 | 91.com在线观看| 欧美日韩国产天堂| 欧美日韩国产bt| 色婷婷av一区二区三区软件| 高清不卡在线观看av| 国产成人午夜精品影院观看视频| 精品写真视频在线观看| 国产一区二区三区高清播放| 国产真实精品久久二三区| 国产精品亚洲一区二区三区在线| 国产成人免费在线观看| jizz一区二区| 色诱视频网站一区| 欧美亚洲国产怡红院影院| 91精彩视频在线| 欧美老肥妇做.爰bbww| 91精品国产综合久久福利| 欧美一区二区大片| 国产亚洲一区二区三区四区| 欧美mv和日韩mv国产网站| 精品国产区一区| 91视频你懂的| 欧美性色欧美a在线播放| 在线视频国内自拍亚洲视频| 欧美精品v国产精品v日韩精品| 欧美一区二区三区小说| 久久久精品影视| 专区另类欧美日韩| 婷婷中文字幕综合| 成人黄色小视频| 丰满放荡岳乱妇91ww| 91香蕉视频mp4| 欧美视频一区在线| 精品久久久久久无| 国产精品麻豆久久久| 一二三区精品福利视频| 日本欧美加勒比视频| 国产一区二区看久久| 一本色道久久综合亚洲精品按摩 | 久久精品一二三| 亚洲欧美在线视频观看| 日韩中文字幕亚洲一区二区va在线 | 亚洲综合精品久久| 麻豆精品久久久| aaa国产一区| 日韩欧美123| 亚洲男人电影天堂| 精品亚洲aⅴ乱码一区二区三区| eeuss鲁片一区二区三区在线看| 欧美精品在线一区二区三区| 国产午夜精品理论片a级大结局| 一区二区三区四区不卡在线| 国内成人免费视频| 欧美日韩一区二区三区四区五区| 久久亚洲欧美国产精品乐播 | 亚洲成人动漫一区| 国产成人精品影视| 欧美日韩一本到| 国产精品久久久久久久久免费丝袜 | 蜜臀va亚洲va欧美va天堂| 99国产精品久| 亚洲精品一区二区三区影院| 亚洲最新视频在线播放| 国产精品主播直播| 欧美一级黄色大片| 亚洲裸体xxx| 成人免费高清在线| 精品精品国产高清a毛片牛牛 | 中文字幕的久久| 日本特黄久久久高潮| 91社区在线播放| 久久久精品一品道一区| 日韩av电影一区| 欧美日韩视频不卡| 亚洲日本免费电影| 国产亚洲精品久| 国产精品一二三在| 国产三级久久久| 在线观看一区二区精品视频| 日韩电影在线一区二区三区| 国产欧美精品区一区二区三区| 日本黄色一区二区| 精品一区二区三区免费观看 | 麻豆一区二区三| 国产精品第13页| 欧美麻豆精品久久久久久| 欧美图片一区二区三区| 18欧美亚洲精品| 成人黄色小视频| 国产精品理论片| 成人午夜私人影院| 国产精品毛片久久久久久久| 成人综合婷婷国产精品久久免费| wwwwxxxxx欧美| 国产一区二区精品在线观看| 久久在线观看免费| 奇米色777欧美一区二区| 中文字幕二三区不卡| 韩国三级中文字幕hd久久精品| 日韩免费视频线观看| 麻豆91在线观看| 欧美一级生活片| 喷水一区二区三区| 欧美一区二区福利视频| 美女尤物国产一区| 精品国产伦一区二区三区观看体验| 日韩电影一区二区三区四区| 欧美一区二区私人影院日本| 美女一区二区在线观看| 亚洲精品一区二区三区影院| 国产精品一二三四五| 国产欧美视频一区二区三区| 成人97人人超碰人人99| 亚洲日本免费电影| 欧美日韩一区二区不卡| 青青草伊人久久| 国产亚洲一二三区| aaa亚洲精品| 亚洲丶国产丶欧美一区二区三区| 91精品婷婷国产综合久久| 精品一区二区三区免费毛片爱| 国产亚洲自拍一区| 9l国产精品久久久久麻豆| 一区二区三区四区亚洲| 欧美一区二区视频在线观看2022| 国产在线视视频有精品| 一区免费观看视频| 欧美日韩一区二区在线视频| 久久99精品国产| 亚洲特黄一级片| 91精选在线观看| 成人美女在线视频| 亚洲综合偷拍欧美一区色| 日韩欧美国产麻豆| 成人黄色软件下载| 视频一区国产视频| 国产丝袜在线精品| 欧美色国产精品| 国产精品中文欧美| 亚洲一区在线视频| 精品久久久久久久久久久久久久久久久 | 亚洲激情成人在线| 日韩一区二区三区四区五区六区| 国产福利电影一区二区三区| 一区二区高清在线| 精品日韩99亚洲| 色一情一乱一乱一91av| 精彩视频一区二区| 亚洲图片一区二区| 国产亚洲污的网站| 欧美精品黑人性xxxx| 国产成人av一区二区| 婷婷开心久久网| 国产精品美女久久久久aⅴ国产馆| 精品视频在线看| 高清不卡在线观看av| 日本欧美肥老太交大片| 亚洲女爱视频在线| 久久综合999| 91精品国产91久久综合桃花| 99re热视频精品| 国产成人综合精品三级| 日本vs亚洲vs韩国一区三区二区| 亚洲精品成人精品456| 久久精品一区八戒影视|