[svn] / branches / Isibaar / xvidcore / src / encoder.c Repository:
ViewVC logotype

Diff of /branches/Isibaar/xvidcore/src/encoder.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1002, Sat May 3 10:05:56 2003 UTC revision 1004, Sat May 3 23:26:55 2003 UTC
# Line 26  Line 26 
26   *  along with this program; if not, write to the Free Software   *  along with this program; if not, write to the Free Software
27   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
28   *   *
29   *  $Id: encoder.c,v 1.99 2003-04-09 12:02:26 syskin Exp $   *  $Id: encoder.c,v 1.99.2.1 2003-05-03 23:24:30 Isibaar Exp $
30   *   *
31   ****************************************************************************/   ****************************************************************************/
32    
# Line 73  Line 73 
73                                            Bitstream * bs,                                            Bitstream * bs,
74                                            uint32_t * pBits,                                            uint32_t * pBits,
75                                            bool force_inter,                                            bool force_inter,
76                                            bool vol_header);                                            bool vol_header,
77                                              int interpolate);
78    
79  static void FrameCodeB(Encoder * pEnc,  static void FrameCodeB(Encoder * pEnc,
80                                             FRAMEINFO * frame,                                             FRAMEINFO * frame,
81                                             Bitstream * bs,                                             Bitstream * bs,
82                                             uint32_t * pBits);                                             uint32_t * pBits,
83                                               int interpolate_forward,
84                                               int interpolate_backward);
85    
86  /*****************************************************************************  /*****************************************************************************
87   * Local data   * Local data
# Line 677  Line 680 
680    
681          int input_valid = 1;          int input_valid = 1;
682          int bframes_count = 0;          int bframes_count = 0;
683            int interpolate_forward = 1;
684            int interpolate_backward = 1;
685    
686          ENC_CHECK(pEnc);          ENC_CHECK(pEnc);
687          ENC_CHECK(pFrame);          ENC_CHECK(pFrame);
# Line 711  Line 716 
716    
717                          SWAP(FRAMEINFO *, pEnc->current, pEnc->bframes[pEnc->bframenum_tail]);                          SWAP(FRAMEINFO *, pEnc->current, pEnc->bframes[pEnc->bframenum_tail]);
718    
719                          FrameCodeP(pEnc, &bs, &bits, 1, 0);                          if (pEnc->mbParam.m_quarterpel)
720                                    pEnc->current->global_flags |= XVID_QUARTERPEL;
721                            else
722                                    pEnc->current->global_flags &= ~XVID_QUARTERPEL;
723    
724                            FrameCodeP(pEnc, &bs, &bits, 1, 0, interpolate_backward);
725                          bframes_count = 0;                          bframes_count = 0;
726                            interpolate_forward = 0;
727                            interpolate_backward = 1;
728    
729                          BitstreamPadAlways(&bs);                          BitstreamPadAlways(&bs);
730                          pFrame->length = BitstreamLength(&bs);                          pFrame->length = BitstreamLength(&bs);
# Line 727  Line 739 
739                                  pResult->kblks = pEnc->current->sStat.kblks;                                  pResult->kblks = pEnc->current->sStat.kblks;
740                                  pResult->mblks = pEnc->current->sStat.mblks;                                  pResult->mblks = pEnc->current->sStat.mblks;
741                                  pResult->ublks = pEnc->current->sStat.ublks;                                  pResult->ublks = pEnc->current->sStat.ublks;
742                                    pResult->iblks = pEnc->current->sStat.iblks;
743                                    pResult->qblks = pEnc->current->sStat.qblks;
744                          }                          }
745    
746                          return XVID_ERR_OK;                          return XVID_ERR_OK;
# Line 737  Line 751 
751                                  pEnc->bframenum_head, pEnc->bframenum_tail,                                  pEnc->bframenum_head, pEnc->bframenum_tail,
752                                  pEnc->queue_head, pEnc->queue_tail, pEnc->queue_size);                                  pEnc->queue_head, pEnc->queue_tail, pEnc->queue_size);
753    
754                  FrameCodeB(pEnc, pEnc->bframes[pEnc->bframenum_head], &bs, &bits);                  if (pEnc->mbParam.m_quarterpel)
755                            pEnc->current->global_flags |= XVID_QUARTERPEL;
756                    else
757                            pEnc->current->global_flags &= ~XVID_QUARTERPEL;
758    
759                    FrameCodeB(pEnc, pEnc->bframes[pEnc->bframenum_head], &bs,
760                                       &bits, interpolate_forward, interpolate_backward);
761                  pEnc->bframenum_head++;                  pEnc->bframenum_head++;
762    
763                    interpolate_forward = 0;
764                    interpolate_backward = 0;
765    
766                  BitstreamPadAlways(&bs);                  BitstreamPadAlways(&bs);
767                  pFrame->length = BitstreamLength(&bs);                  pFrame->length = BitstreamLength(&bs);
768                  pFrame->intra = 2;                  pFrame->intra = 2;
# Line 750  Line 773 
773                          pResult->kblks = pEnc->current->sStat.kblks;                          pResult->kblks = pEnc->current->sStat.kblks;
774                          pResult->mblks = pEnc->current->sStat.mblks;                          pResult->mblks = pEnc->current->sStat.mblks;
775                          pResult->ublks = pEnc->current->sStat.ublks;                          pResult->ublks = pEnc->current->sStat.ublks;
776                            pResult->iblks = pEnc->current->sStat.iblks;
777                            pResult->qblks = pEnc->current->sStat.qblks;
778                  }                  }
779    
780                  emms();                  emms();
# Line 799  Line 824 
824                                  pResult->kblks = pEnc->current->sStat.kblks;                                  pResult->kblks = pEnc->current->sStat.kblks;
825                                  pResult->mblks = pEnc->current->sStat.mblks;                                  pResult->mblks = pEnc->current->sStat.mblks;
826                                  pResult->ublks = pEnc->current->sStat.ublks;                                  pResult->ublks = pEnc->current->sStat.ublks;
827                                    pResult->iblks = pEnc->current->sStat.iblks;
828                                    pResult->qblks = pEnc->current->sStat.qblks;
829                          }                          }
830    
831                          emms();                          emms();
# Line 910  Line 937 
937                                  pResult->kblks = 0;                                  pResult->kblks = 0;
938                                  pResult->mblks = 0;                                  pResult->mblks = 0;
939                                  pResult->ublks = 0;                                  pResult->ublks = 0;
940                                    pResult->iblks = 0;
941                                    pResult->qblks = 0;
942                          }                          }
943                  } else {                  } else {
944    
# Line 919  Line 948 
948                                  pResult->kblks = pEnc->current->sStat.kblks;                                  pResult->kblks = pEnc->current->sStat.kblks;
949                                  pResult->mblks = pEnc->current->sStat.mblks;                                  pResult->mblks = pEnc->current->sStat.mblks;
950                                  pResult->ublks = pEnc->current->sStat.ublks;                                  pResult->ublks = pEnc->current->sStat.ublks;
951                                    pResult->iblks = pEnc->current->sStat.iblks;
952                                    pResult->qblks = pEnc->current->sStat.qblks;
953                          }                          }
954    
955                  }                  }
# Line 1057  Line 1088 
1088                          if ((pEnc->mbParam.global & XVID_GLOBAL_DEBUG)) {                          if ((pEnc->mbParam.global & XVID_GLOBAL_DEBUG)) {
1089                                  image_printf(&pEnc->current->image, pEnc->mbParam.edged_width, pEnc->mbParam.height, 5, 100, "DX50 BVOP->PVOP");                                  image_printf(&pEnc->current->image, pEnc->mbParam.edged_width, pEnc->mbParam.height, 5, 100, "DX50 BVOP->PVOP");
1090                          }                          }
1091                          FrameCodeP(pEnc, &bs, &bits, 1, 0);  
1092                            if (pEnc->mbParam.m_quarterpel)
1093                                    pEnc->current->global_flags |= XVID_QUARTERPEL;
1094                            else
1095                                    pEnc->current->global_flags &= ~XVID_QUARTERPEL;
1096    
1097                            FrameCodeP(pEnc, &bs, &bits, 1, 0, interpolate_backward);
1098                          bframes_count = 0;                          bframes_count = 0;
1099                          pFrame->intra = 0;                          pFrame->intra = 0;
1100                            interpolate_forward = 0;
1101                            interpolate_backward = 1;
1102    
1103                  } else {                  } else {
1104    
1105                            if (pEnc->mbParam.m_quarterpel)
1106                                    pEnc->current->global_flags |= XVID_QUARTERPEL;
1107                            else
1108                                    pEnc->current->global_flags &= ~XVID_QUARTERPEL;
1109    
1110                          FrameCodeI(pEnc, &bs, &bits);                          FrameCodeI(pEnc, &bs, &bits);
1111                          bframes_count = 0;                          bframes_count = 0;
1112                            interpolate_forward = 1;
1113                            interpolate_backward = 1;
1114                          pFrame->intra = 1;                          pFrame->intra = 1;
1115    
1116                          pEnc->bframenum_dx50bvop = -1;                          pEnc->bframenum_dx50bvop = -1;
# Line 1095  Line 1141 
1141                          image_printf(&pEnc->current->image, pEnc->mbParam.edged_width, pEnc->mbParam.height, 5, 200, "PVOP");                          image_printf(&pEnc->current->image, pEnc->mbParam.edged_width, pEnc->mbParam.height, 5, 200, "PVOP");
1142                  }                  }
1143    
1144                  FrameCodeP(pEnc, &bs, &bits, 1, 0);                  if (pEnc->mbParam.m_quarterpel)
1145                            pEnc->current->global_flags |= XVID_QUARTERPEL;
1146                    else
1147                            pEnc->current->global_flags &= ~XVID_QUARTERPEL;
1148    
1149                    FrameCodeP(pEnc, &bs, &bits, 1, 0, interpolate_backward);
1150                  bframes_count = 0;                  bframes_count = 0;
1151                  pFrame->intra = 0;                  pFrame->intra = 0;
1152                    interpolate_forward = 0;
1153                    interpolate_backward = 1;
1154                  pEnc->flush_bframes = 1;                  pEnc->flush_bframes = 1;
1155    
1156                  if ((pEnc->mbParam.global & XVID_GLOBAL_PACKED) && (pEnc->bframenum_tail > 0)) {                  if ((pEnc->mbParam.global & XVID_GLOBAL_PACKED) && (pEnc->bframenum_tail > 0)) {
# Line 1155  Line 1208 
1208                  pResult->kblks = pEnc->current->sStat.kblks;                  pResult->kblks = pEnc->current->sStat.kblks;
1209                  pResult->mblks = pEnc->current->sStat.mblks;                  pResult->mblks = pEnc->current->sStat.mblks;
1210                  pResult->ublks = pEnc->current->sStat.ublks;                  pResult->ublks = pEnc->current->sStat.ublks;
1211                    pResult->iblks = pEnc->current->sStat.iblks;
1212                    pResult->qblks = pEnc->current->sStat.qblks;
1213    
1214                  if (pFrame->general & XVID_EXTRASTATS)                  if (pFrame->general & XVID_EXTRASTATS)
1215                  {       pResult->sse_y =                  {       pResult->sse_y =
# Line 1208  Line 1263 
1263          Bitstream bs;          Bitstream bs;
1264          uint32_t bits;          uint32_t bits;
1265          uint16_t write_vol_header = 0;          uint16_t write_vol_header = 0;
1266            unsigned int old_qpel;
1267    
1268          float psnr;          float psnr;
1269          char temp[128];          char temp[128];
# Line 1261  Line 1317 
1317                  pEnc->current->quant = pFrame->quant;                  pEnc->current->quant = pFrame->quant;
1318          }          }
1319    
1320            old_qpel = pEnc->mbParam.m_quarterpel;
1321    
1322          if ((pEnc->current->global_flags & XVID_QUARTERPEL))          if ((pEnc->current->global_flags & XVID_QUARTERPEL))
1323                  pEnc->mbParam.m_quarterpel = 1;                  pEnc->mbParam.m_quarterpel = 1;
1324          else          else
# Line 1331  Line 1389 
1389                                  && (pEnc->iFrameNum >= pEnc->mbParam.iMaxKeyInterval))) {                                  && (pEnc->iFrameNum >= pEnc->mbParam.iMaxKeyInterval))) {
1390                          pFrame->intra = FrameCodeI(pEnc, &bs, &bits);                          pFrame->intra = FrameCodeI(pEnc, &bs, &bits);
1391                  } else {                  } else {
1392                          pFrame->intra = FrameCodeP(pEnc, &bs, &bits, 0, write_vol_header);                          if (old_qpel != pEnc->mbParam.m_quarterpel)
1393                                    pEnc->mbParam.m_quarterpel = old_qpel;
1394                            pFrame->intra = FrameCodeP(pEnc, &bs, &bits, 0, write_vol_header, 1);
1395                  }                  }
1396          } else {          } else {
1397                  if (pFrame->intra == 1) {                  if (pFrame->intra == 1) {
1398                          pFrame->intra = FrameCodeI(pEnc, &bs, &bits);                          pFrame->intra = FrameCodeI(pEnc, &bs, &bits);
1399                  } else {                  } else {
1400                          pFrame->intra = FrameCodeP(pEnc, &bs, &bits, 1, write_vol_header);                          if (old_qpel != pEnc->mbParam.m_quarterpel)
1401                                    pEnc->mbParam.m_quarterpel = old_qpel;
1402                            pFrame->intra = FrameCodeP(pEnc, &bs, &bits, 1, write_vol_header, 1);
1403                  }                  }
1404    
1405          }          }
# Line 1356  Line 1418 
1418                  pResult->kblks = pEnc->current->sStat.kblks;                  pResult->kblks = pEnc->current->sStat.kblks;
1419                  pResult->mblks = pEnc->current->sStat.mblks;                  pResult->mblks = pEnc->current->sStat.mblks;
1420                  pResult->ublks = pEnc->current->sStat.ublks;                  pResult->ublks = pEnc->current->sStat.ublks;
1421                    pResult->iblks = pEnc->current->sStat.iblks;
1422                    pResult->qblks = pEnc->current->sStat.qblks;
1423          }          }
1424    
1425          emms();          emms();
# Line 1646  Line 1710 
1710          pEnc->current->sStat.iTextBits = 0;          pEnc->current->sStat.iTextBits = 0;
1711          pEnc->current->sStat.kblks = mb_width * mb_height;          pEnc->current->sStat.kblks = mb_width * mb_height;
1712          pEnc->current->sStat.mblks = pEnc->current->sStat.ublks = 0;          pEnc->current->sStat.mblks = pEnc->current->sStat.ublks = 0;
1713            pEnc->current->sStat.iblks = pEnc->current->sStat.qblks = 0;
1714    
1715          for (y = 0; y < mb_height; y++)          for (y = 0; y < mb_height; y++)
1716                  for (x = 0; x < mb_width; x++) {                  for (x = 0; x < mb_width; x++) {
# Line 1701  Line 1766 
1766                     Bitstream * bs,                     Bitstream * bs,
1767                     uint32_t * pBits,                     uint32_t * pBits,
1768                     bool force_inter,                     bool force_inter,
1769                     bool vol_header)                     bool vol_header,
1770                       int interpolate)
1771  {  {
1772          float fSigma;          float fSigma;
1773    
# Line 1715  Line 1781 
1781          int x, y, k;          int x, y, k;
1782          int iSearchRange;          int iSearchRange;
1783          int bIntra, skip_possible;          int bIntra, skip_possible;
1784            IMAGE *refh, *refv, *refhv;
1785    
1786          /* IMAGE *pCurrent = &pEnc->current->image; */          /* IMAGE *pCurrent = &pEnc->current->image; */
1787          IMAGE *pRef = &pEnc->reference->image;          IMAGE *pRef = &pEnc->reference->image;
# Line 1725  Line 1792 
1792                  mb_height = (pEnc->mbParam.height + 31) / 32;                  mb_height = (pEnc->mbParam.height + 31) / 32;
1793          }          }
1794    
         start_timer();  
         image_setedges(pRef, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height,  
                                    pEnc->mbParam.width, pEnc->mbParam.height);  
         stop_edges_timer();  
   
1795          pEnc->mbParam.m_rounding_type = 1 - pEnc->mbParam.m_rounding_type;          pEnc->mbParam.m_rounding_type = 1 - pEnc->mbParam.m_rounding_type;
1796          pEnc->current->rounding_type = pEnc->mbParam.m_rounding_type;          pEnc->current->rounding_type = pEnc->mbParam.m_rounding_type;
1797          pEnc->current->quarterpel =  pEnc->mbParam.m_quarterpel;          pEnc->current->quarterpel =  pEnc->mbParam.m_quarterpel;
# Line 1740  Line 1802 
1802          else          else
1803                  iLimit = mb_width * mb_height + 1;                  iLimit = mb_width * mb_height + 1;
1804    
1805            if((interpolate) || (pEnc->current->rounding_type != 0)) {
1806                    start_timer();
1807                    image_setedges(pRef, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height,
1808                                               pEnc->mbParam.width, pEnc->mbParam.height);
1809                    stop_edges_timer();
1810    
1811          if ((pEnc->current->global_flags & XVID_HALFPEL)) {          if ((pEnc->current->global_flags & XVID_HALFPEL)) {
1812                  start_timer();                  start_timer();
1813                  image_interpolate(pRef, &pEnc->vInterH, &pEnc->vInterV,                  image_interpolate(pRef, &pEnc->vInterH, &pEnc->vInterV,
# Line 1750  Line 1818 
1818                  stop_inter_timer();                  stop_inter_timer();
1819          }          }
1820    
1821                    refh = &pEnc->vInterH;
1822                    refv = &pEnc->vInterV;
1823                    refhv = &pEnc->vInterHV;
1824            }
1825            else {
1826                    refh = &pEnc->f_refh;
1827                    refv = &pEnc->f_refv;
1828                    refhv = &pEnc->f_refhv;
1829            }
1830    
1831          pEnc->current->coding_type = P_VOP;          pEnc->current->coding_type = P_VOP;
1832    
1833          start_timer();          start_timer();
# Line 1758  Line 1836 
1836          else          else
1837                  bIntra =                  bIntra =
1838                          MotionEstimation(&pEnc->mbParam, pEnc->current, pEnc->reference,                          MotionEstimation(&pEnc->mbParam, pEnc->current, pEnc->reference,
1839                                                   &pEnc->vInterH, &pEnc->vInterV, &pEnc->vInterHV,                                                   refh, refv, refhv,
1840                                                   iLimit);                                                   iLimit);
1841    
1842          stop_motion_timer();          stop_motion_timer();
# Line 1794  Line 1872 
1872    
1873          pEnc->current->sStat.iTextBits = pEnc->current->sStat.iMvSum = pEnc->current->sStat.iMvCount =          pEnc->current->sStat.iTextBits = pEnc->current->sStat.iMvSum = pEnc->current->sStat.iMvCount =
1874                  pEnc->current->sStat.kblks = pEnc->current->sStat.mblks = pEnc->current->sStat.ublks = 0;                  pEnc->current->sStat.kblks = pEnc->current->sStat.mblks = pEnc->current->sStat.ublks = 0;
1875            pEnc->current->sStat.iblks = pEnc->current->sStat.qblks = 0;
1876    
1877    
1878          for (y = 0; y < mb_height; y++) {          for (y = 0; y < mb_height; y++) {
# Line 1855  Line 1934 
1934    
1935                          start_timer();                          start_timer();
1936                          MBMotionCompensation(pMB, x, y, &pEnc->reference->image,                          MBMotionCompensation(pMB, x, y, &pEnc->reference->image,
1937                                                                   &pEnc->vInterH, &pEnc->vInterV,                                                                   refh, refv,
1938                                                                   &pEnc->vInterHV, &pEnc->vGMC,                                                                   refhv, &pEnc->vGMC,
1939                                                                   &pEnc->current->image,                                                                   &pEnc->current->image,
1940                                                                   dct_codes, pEnc->mbParam.width,                                                                   dct_codes, pEnc->mbParam.width,
1941                                                                   pEnc->mbParam.height,                                                                   pEnc->mbParam.height,
# Line 1895  Line 1974 
1974                                  pEnc->current->sStat.ublks++;                                  pEnc->current->sStat.ublks++;
1975                          }                          }
1976    
1977                            if(pEnc->mbParam.m_quarterpel) {
1978                                    for (k = 0; k < ((pMB->mode == MODE_INTER4V) ? 4 : 1); k++) {
1979                                            if (((pMB->qmvs[k].x % 4) != 0) || ((pMB->qmvs[k].y % 4) != 0))
1980                                                    pEnc->current->sStat.iblks++;
1981    
1982                                            if (((pMB->qmvs[k].x % 4) & 1) || ((pMB->qmvs[k].y % 4) & 1))
1983                                                    pEnc->current->sStat.qblks++;
1984                                    }
1985                            }
1986    
1987                          start_timer();                          start_timer();
1988    
1989                          /* Finished processing the MB, now check if to CODE or SKIP */                          /* Finished processing the MB, now check if to CODE or SKIP */
# Line 2089  Line 2178 
2178  FrameCodeB(Encoder * pEnc,  FrameCodeB(Encoder * pEnc,
2179                     FRAMEINFO * frame,                     FRAMEINFO * frame,
2180                     Bitstream * bs,                     Bitstream * bs,
2181                     uint32_t * pBits)                     uint32_t * pBits,
2182                       int interpolate_forward,
2183                       int interpolate_backward)
2184  {  {
2185          DECLARE_ALIGNED_MATRIX(dct_codes, 6, 64, int16_t, CACHE_LINE);          DECLARE_ALIGNED_MATRIX(dct_codes, 6, 64, int16_t, CACHE_LINE);
2186          DECLARE_ALIGNED_MATRIX(qcoeff, 6, 64, int16_t, CACHE_LINE);          DECLARE_ALIGNED_MATRIX(qcoeff, 6, 64, int16_t, CACHE_LINE);
# Line 2114  Line 2205 
2205    
2206          frame->quarterpel =  pEnc->mbParam.m_quarterpel;          frame->quarterpel =  pEnc->mbParam.m_quarterpel;
2207    
2208            if ((interpolate_forward) || ((pEnc->mbParam.m_rounding_type != 1) && interpolate_backward)) {
2209    
2210          /* forward  */          /* forward  */
2211          image_setedges(f_ref, pEnc->mbParam.edged_width,          image_setedges(f_ref, pEnc->mbParam.edged_width,
2212                                     pEnc->mbParam.edged_height, pEnc->mbParam.width,                                     pEnc->mbParam.edged_height, pEnc->mbParam.width,
2213                                     pEnc->mbParam.height);                                     pEnc->mbParam.height);
2214          start_timer();          start_timer();
2215          image_interpolate(f_ref, &pEnc->f_refh, &pEnc->f_refv, &pEnc->f_refhv,                  image_interpolate(f_ref, &pEnc->vInterH, &pEnc->vInterV, &pEnc->vInterHV,
2216                                            pEnc->mbParam.edged_width, pEnc->mbParam.edged_height,                                            pEnc->mbParam.edged_width, pEnc->mbParam.edged_height,
2217                                            pEnc->mbParam.m_quarterpel, 0);                                            pEnc->mbParam.m_quarterpel, 0);
2218          stop_inter_timer();          stop_inter_timer();
2219            }
2220    
2221            if (interpolate_backward) {
2222    
2223          /* backward */          /* backward */
2224          image_setedges(b_ref, pEnc->mbParam.edged_width,          image_setedges(b_ref, pEnc->mbParam.edged_width,
2225                                     pEnc->mbParam.edged_height, pEnc->mbParam.width,                                     pEnc->mbParam.edged_height, pEnc->mbParam.width,
2226                                     pEnc->mbParam.height);                                     pEnc->mbParam.height);
2227          start_timer();          start_timer();
2228          image_interpolate(b_ref, &pEnc->vInterH, &pEnc->vInterV, &pEnc->vInterHV,                  image_interpolate(b_ref, &pEnc->f_refh, &pEnc->f_refv, &pEnc->f_refhv,
2229                                            pEnc->mbParam.edged_width, pEnc->mbParam.edged_height,                                            pEnc->mbParam.edged_width, pEnc->mbParam.edged_height,
2230                                            pEnc->mbParam.m_quarterpel, 0);                                            pEnc->mbParam.m_quarterpel, 0);
2231          stop_inter_timer();          stop_inter_timer();
2232            }
2233    
2234          start_timer();          start_timer();
2235    
2236          MotionEstimationBVOP(&pEnc->mbParam, frame,          MotionEstimationBVOP(&pEnc->mbParam, frame,
2237                                                   ((int32_t)(pEnc->current->stamp - frame->stamp)),                              /* time_bp */                                                   ((int32_t)(pEnc->current->stamp - frame->stamp)),                              /* time_bp */
2238                                                   ((int32_t)(pEnc->current->stamp - pEnc->reference->stamp)),    /* time_pp */                                                   ((int32_t)(pEnc->current->stamp - pEnc->reference->stamp)),    /* time_pp */
2239                                                   pEnc->reference->mbs, f_ref,                                                   pEnc->reference->mbs, f_ref, &pEnc->vInterH,
2240                                                   &pEnc->f_refh, &pEnc->f_refv, &pEnc->f_refhv,                                                   &pEnc->vInterV, &pEnc->vInterHV,
2241                                                   pEnc->current, b_ref, &pEnc->vInterH,                                                   pEnc->current, b_ref, &pEnc->f_refh, &pEnc->f_refv, &pEnc->f_refhv);
                                                  &pEnc->vInterV, &pEnc->vInterHV);  
   
2242    
2243          stop_motion_timer();          stop_motion_timer();
2244          /*          /*
# Line 2163  Line 2258 
2258          frame->sStat.iMvSum = 0;          frame->sStat.iMvSum = 0;
2259          frame->sStat.iMvCount = 0;          frame->sStat.iMvCount = 0;
2260          frame->sStat.kblks = frame->sStat.mblks = frame->sStat.ublks = 0;          frame->sStat.kblks = frame->sStat.mblks = frame->sStat.ublks = 0;
2261            frame->sStat.iblks = frame->sStat.qblks = 0;
2262    
2263    
2264          for (y = 0; y < pEnc->mbParam.mb_height; y++) {          for (y = 0; y < pEnc->mbParam.mb_height; y++) {
# Line 2178  Line 2274 
2274    
2275                          if (mb->mode != MODE_DIRECT_NONE_MV) {                          if (mb->mode != MODE_DIRECT_NONE_MV) {
2276                                  MBMotionCompensationBVOP(&pEnc->mbParam, mb, x, y, &frame->image,                                  MBMotionCompensationBVOP(&pEnc->mbParam, mb, x, y, &frame->image,
2277                                                                           f_ref, &pEnc->f_refh, &pEnc->f_refv,                                                                           f_ref, &pEnc->vInterH, &pEnc->vInterV,
2278                                                                           &pEnc->f_refhv, b_ref, &pEnc->vInterH,                                                                           &pEnc->vInterHV, b_ref, &pEnc->f_refh,
2279                                                                           &pEnc->vInterV, &pEnc->vInterHV,                                                                           &pEnc->f_refv, &pEnc->f_refhv,
2280                                                                           dct_codes);                                                                           dct_codes);
2281    
2282                                  if (mb->mode == MODE_DIRECT_NO4V) mb->mode = MODE_DIRECT;                                  if (mb->mode == MODE_DIRECT_NO4V) mb->mode = MODE_DIRECT;

Legend:
Removed from v.1002  
changed lines
  Added in v.1004

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4