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

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

?? erc_api.c

?? TML的參考源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
 *      Variables for error concealment
 * \param value
 *      New value
 ************************************************************************
 */
void ercSetErrorConcealment( ercVariables_t *errorVar, int value )
{
  if ( errorVar != NULL )
    errorVar->concealment = value;
}

/*!
 ************************************************************************
 * \brief
 *      Creates a new segment in the segment-list, and marks the start MB and bit position.
 *      If the end of the previous segment was not explicitly marked by "ercStopSegment",
 *      also marks the end of the previous segment.
 *      If needed, it reallocates the segment-list for a larger storage place.
 * \param currMBNum
 *      The MB number where the new slice/segment starts
 * \param segment
 *      Segment/Slice No. counted by the caller
 * \param bitPos
 *      Bitstream pointer: number of bits read from the buffer.
 * \param errorVar
 *      Variables for error detector
 ************************************************************************
 */
void ercStartSegment( int currMBNum, int segment, u_int32 bitPos, ercVariables_t *errorVar )
{
  if ( errorVar && errorVar->concealment ) 
  {
    errorVar->currSegmentCorrupted = 0;
    if ( segment < 0 )
      segment = errorVar->currSegment;
    
    if ( segment >= errorVar->nOfSegments ) 
    {
      errorVar->segments = (ercSegment_t *) realloc(errorVar->segments,2*errorVar->nOfSegments*sizeof(ercSegment_t));
      errorVar->nOfSegments *= 2;
    }
    
    errorVar->segments[ segment ].fCorrupted = 0;
    errorVar->segments[ segment ].startBitPos = bitPos;
    errorVar->segments[ segment ].startMBPos = currMBNum;
    
    if ( segment > 0 ) 
    {
      if ( errorVar->segments[ segment-1 ].endBitPos == 0 ) 
      {
        errorVar->segments[ segment-1 ].endBitPos = bitPos;
        errorVar->segments[ segment-1 ].endMBPos = currMBNum - 1;
      }
    }//if ( segment > 0 ) 
  }   
}

/*!
 ************************************************************************
 * \brief
 *      Marks the end position of a segment.
 * \param currMBNum
 *      The last MB number of the previous segment
 * \param segment
 *      Segment/Slice No. counted by the caller
 *      If (segment<0) the internal segment counter is used.
 * \param bitPos
 *      Bitstream pointer: number of bits read from the buffer.
 * \param errorVar
 *      Variables for error detector
 ************************************************************************
 */
void ercStopSegment( int currMBNum, int segment, u_int32 bitPos, ercVariables_t *errorVar )
{
  if ( errorVar && errorVar->concealment ) 
  {
    if ( segment < 0 )
      segment = errorVar->currSegment;
    
    if ( segment > errorVar->nOfSegments ) 
    {
      return;
    }
    
    errorVar->segments[ segment ].endBitPos = bitPos;
    errorVar->segments[ segment ].endMBPos = currMBNum; //! Changed TO 12.11.2001
    errorVar->currSegment++;
  }
}

/*!
 ************************************************************************
 * \brief
 *      Marks the current segment (the one which has the "currMBNum" MB in it)
 *      as lost: all the blocks of the MBs in the segment as corrupted.
 * \param currMBNum
 *      Selects the segment where this MB number is in.
 * \param picSizeX
 *      Width of the frame in pixels.
 * \param errorVar
 *      Variables for error detector
 ************************************************************************
 */
void ercMarkCurrSegmentLost( int currMBNum, int32 picSizeX, ercVariables_t *errorVar )
{
  int i = 0, j = 0;
  
  if ( errorVar && errorVar->concealment ) 
  {
    if (errorVar->currSegmentCorrupted == 0) 
    {
      errorVar->nOfCorruptedSegments++;
      errorVar->currSegmentCorrupted = 1;
    }
     
    for ( i = 0; i < errorVar->nOfSegments; i++ ) 
    {
      if ( currMBNum >= errorVar->segments[i].startMBPos && ( currMBNum <= errorVar->segments[i].endMBPos || errorVar->segments[i].endMBPos == 0 ) ) 
      {
        /* mark all the Blocks belonging to the lost segment as corrupted */
        for ( j = errorVar->segments[i].startMBPos; j <= errorVar->segments[i].endMBPos; j++ ) 
        {
          errorVar->yCondition[MBNum2YBlock (j, 0, picSizeX)] = ERC_BLOCK_CORRUPTED;
          errorVar->yCondition[MBNum2YBlock (j, 1, picSizeX)] = ERC_BLOCK_CORRUPTED;
          errorVar->yCondition[MBNum2YBlock (j, 2, picSizeX)] = ERC_BLOCK_CORRUPTED;
          errorVar->yCondition[MBNum2YBlock (j, 3, picSizeX)] = ERC_BLOCK_CORRUPTED;
          errorVar->uCondition[j] = ERC_BLOCK_CORRUPTED;
          errorVar->vCondition[j] = ERC_BLOCK_CORRUPTED;
        }
        errorVar->segments[i].fCorrupted = 1;
        break;
      }
    }
  }
}

/*!
 ************************************************************************
 * \brief
 *      Marks the current segment (the one which has the "currMBNum" MB in it)
 *      as OK: all the blocks of the MBs in the segment as OK.
 * \param currMBNum
 *      Selects the segment where this MB number is in.
 * \param picSizeX
 *      Width of the frame in pixels.
 * \param errorVar
 *      Variables for error detector
 ************************************************************************
 */
void ercMarkCurrSegmentOK( int currMBNum, int32 picSizeX, ercVariables_t *errorVar )
{
  int i = 0, j = 0;
  
  if ( errorVar && errorVar->concealment ) 
  {
    for ( i = 0; i < errorVar->nOfSegments; i++ ) 
    {
      if ( currMBNum >= errorVar->segments[i].startMBPos && ( currMBNum <= errorVar->segments[i].endMBPos || errorVar->segments[i].endMBPos == 0 ) ) 
      {
        /* mark all the Blocks belonging to the segment as OK */
        for ( j = errorVar->segments[i].startMBPos; j <= errorVar->segments[i].endMBPos; j++ ) 
        {
          errorVar->yCondition[MBNum2YBlock (j, 0, picSizeX)] = ERC_BLOCK_OK;
          errorVar->yCondition[MBNum2YBlock (j, 1, picSizeX)] = ERC_BLOCK_OK;
          errorVar->yCondition[MBNum2YBlock (j, 2, picSizeX)] = ERC_BLOCK_OK;
          errorVar->yCondition[MBNum2YBlock (j, 3, picSizeX)] = ERC_BLOCK_OK;
          errorVar->uCondition[j] = ERC_BLOCK_OK;
          errorVar->vCondition[j] = ERC_BLOCK_OK;
        }
        errorVar->segments[i].fCorrupted = 0;
        break;
      }
    }
  }
}

/*!
 ************************************************************************
 * \brief
 *      Marks the Blocks of the given component (YUV) of the current MB as concealed.
 * \param currMBNum
 *      Selects the segment where this MB number is in.
 * \param comp
 *      Component to mark (0:Y, 1:U, 2:V, <0:All)
 * \param picSizeX
 *      Width of the frame in pixels.
 * \param errorVar
 *      Variables for error detector
 ************************************************************************
 */
void ercMarkCurrMBConcealed( int currMBNum, int comp, int32 picSizeX, ercVariables_t *errorVar )
{
  int setAll = 0;
  
  if ( errorVar && errorVar->concealment ) 
  {
    if (comp < 0) 
    {
      setAll = 1;
      comp = 0;
    }
    
    switch (comp) 
    {
    case 0:
      errorVar->yCondition[MBNum2YBlock (currMBNum, 0, picSizeX)] = ERC_BLOCK_CONCEALED;
      errorVar->yCondition[MBNum2YBlock (currMBNum, 1, picSizeX)] = ERC_BLOCK_CONCEALED;
      errorVar->yCondition[MBNum2YBlock (currMBNum, 2, picSizeX)] = ERC_BLOCK_CONCEALED;
      errorVar->yCondition[MBNum2YBlock (currMBNum, 3, picSizeX)] = ERC_BLOCK_CONCEALED;
      if (!setAll)
        break;
    case 1:
      errorVar->uCondition[currMBNum] = ERC_BLOCK_CONCEALED;
      if (!setAll)
        break;
    case 2:
      errorVar->vCondition[currMBNum] = ERC_BLOCK_CONCEALED;
    }
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
7777精品伊人久久久大香线蕉的| 在线观看av一区二区| 一区在线中文字幕| 欧美性三三影院| 国产成人亚洲综合a∨猫咪| 亚洲欧美日韩国产手机在线 | 亚洲欧美国产三级| 欧美成人一区二区三区在线观看| 99精品久久免费看蜜臀剧情介绍| 久久精工是国产品牌吗| 一区二区在线看| 国产日韩欧美一区二区三区综合 | 欧美一区二区视频免费观看| av日韩在线网站| 老司机精品视频在线| 亚洲香肠在线观看| 中文字幕日韩av资源站| 欧美精品一区二区三区在线| 欧美日韩一级黄| 色婷婷综合中文久久一本| 国产一区二区三区视频在线播放| 午夜激情综合网| 亚洲一级在线观看| 亚洲欧美另类久久久精品| 国产日韩欧美精品在线| 精品动漫一区二区三区在线观看| 欧美日韩精品欧美日韩精品一综合| 99国产精品99久久久久久| 国产一区二区毛片| 狠狠色狠狠色综合日日91app| 亚洲国产精品一区二区尤物区| 国产精品女上位| 国产精品区一区二区三| 久久久九九九九| 精品伦理精品一区| 2023国产精品视频| 精品sm在线观看| 久久综合九色综合97婷婷| 日韩欧美色综合| 精品国产乱码久久| 久久精品视频一区二区三区| 欧美v亚洲v综合ⅴ国产v| 欧美成va人片在线观看| 欧美成人高清电影在线| 精品国产免费一区二区三区四区| 欧美一级淫片007| 日韩欧美的一区| 精品99一区二区三区| 精品国产三级电影在线观看| 久久综合色播五月| 中国av一区二区三区| 中文字幕日本不卡| 亚洲一区二区在线播放相泽| 亚洲大尺度视频在线观看| 五月婷婷激情综合网| 日本一区中文字幕| 久久精品国产久精国产| 国产成人免费视频网站高清观看视频| 国产在线精品一区二区不卡了| 国产成人精品免费一区二区| 成人免费看黄yyy456| 91麻豆国产香蕉久久精品| 欧美午夜精品电影| 精品国产一区二区三区久久久蜜月 | 石原莉奈一区二区三区在线观看| 日本欧美在线观看| 国产酒店精品激情| 99国产精品久久久久久久久久| 欧美中文字幕一区二区三区| 欧美一区二区久久| 久久久久国色av免费看影院| 亚洲视频在线观看三级| 亚洲国产sm捆绑调教视频 | 亚洲精品国产成人久久av盗摄| 亚洲午夜一区二区| 精品在线一区二区| 91视频在线看| 欧美一区二区不卡视频| 国产精品免费网站在线观看| 亚洲图片欧美综合| 国产一二三精品| 色婷婷国产精品久久包臀 | 欧美激情一区二区三区不卡| 一区二区激情小说| 经典三级在线一区| 色综合久久66| 久久久99免费| 亚洲成av人综合在线观看| 国产精品一区二区三区乱码| 欧美午夜精品一区二区三区 | 2020国产成人综合网| 一区二区三区四区中文字幕| 久久99国产精品久久99| 色婷婷久久综合| 久久亚洲影视婷婷| 亚洲国产成人av| 99久久精品国产导航| 日韩精品在线看片z| 一区二区在线观看不卡| 国产乱淫av一区二区三区| 在线电影院国产精品| 1024国产精品| 国产精品一区在线观看乱码| 欧美日韩精品免费| 亚洲色图视频网| 国产黄人亚洲片| 日韩一卡二卡三卡| 亚洲高清免费观看| 99国产精品99久久久久久| 欧美xingq一区二区| 午夜激情一区二区| 欧美性xxxxxx少妇| 亚洲免费看黄网站| 成人h精品动漫一区二区三区| 日韩欧美综合在线| 亚洲第一综合色| 91蜜桃传媒精品久久久一区二区| www久久久久| 久久福利视频一区二区| 欧美一区二区性放荡片| 一区二区视频在线看| a在线欧美一区| 久久久天堂av| 国产美女精品人人做人人爽| 欧美一级艳片视频免费观看| 亚洲国产中文字幕在线视频综合| 色视频欧美一区二区三区| 国产精品美女久久久久久久网站| 精品一区二区三区蜜桃| 日韩美一区二区三区| 蜜臀av一区二区在线免费观看| 欧美三级一区二区| 亚洲综合一二区| 欧美视频一区二区三区四区| 一区二区免费在线| 欧洲日韩一区二区三区| 亚洲一区二区三区中文字幕| 色激情天天射综合网| 亚洲精品va在线观看| 欧美色男人天堂| 午夜精品久久久久久不卡8050| 欧美视频在线一区| 亚洲不卡在线观看| 欧美一区二区大片| 久久se这里有精品| 久久久美女艺术照精彩视频福利播放| 久草精品在线观看| 欧美高清在线一区二区| 99精品欧美一区二区蜜桃免费| 一区二区三区四区亚洲| 欧美日韩国产大片| 麻豆国产精品官网| 国产欧美一区二区精品忘忧草| 丁香激情综合国产| 亚洲乱码一区二区三区在线观看| 在线一区二区观看| 日本欧美一区二区| 久久久99免费| 色就色 综合激情| 日韩电影一二三区| 久久精品综合网| 色婷婷精品久久二区二区蜜臀av| 香蕉久久夜色精品国产使用方法 | 国产视频一区二区三区在线观看| 成人午夜视频在线| 亚洲1区2区3区4区| 精品乱人伦小说| 成人黄色小视频| 午夜av电影一区| 久久久精品免费网站| 91免费视频大全| 免费人成在线不卡| 国产精品系列在线| 51午夜精品国产| 成人一区二区三区中文字幕| 一区二区三区加勒比av| 精品久久久久久久人人人人传媒| 成人视屏免费看| 香蕉av福利精品导航| 国产日韩精品一区二区三区在线| 在线视频欧美精品| 国产一区欧美二区| 亚洲一区二区精品视频| 久久新电视剧免费观看| 在线精品观看国产| 国产酒店精品激情| 日日夜夜一区二区| 成人免费视频在线观看| 欧美一级一级性生活免费录像| 波多野结衣中文字幕一区| 男女激情视频一区| 亚洲视频一二三| 久久伊99综合婷婷久久伊| 欧美亚洲禁片免费| 波多野结衣的一区二区三区| 日韩成人精品视频| 亚洲精品乱码久久久久久久久| 精品国产凹凸成av人网站| 欧美人xxxx| 91免费在线播放|