[cvs] / xvidcore / src / encoder.c Repository:
ViewVC logotype

Diff of /xvidcore/src/encoder.c

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

revision 1.66, Mon Jul 29 19:21:23 2002 UTC revision 1.72, Sun Aug 4 23:27:40 2002 UTC
# Line 623  Line 623 
623  #ifdef BFRAMES  #ifdef BFRAMES
624  void inc_frame_num(Encoder * pEnc)  void inc_frame_num(Encoder * pEnc)
625  {  {
         pEnc->iFrameNum++;  
626          pEnc->mbParam.m_ticks += pEnc->mbParam.fincr;          pEnc->mbParam.m_ticks += pEnc->mbParam.fincr;
627    
628          pEnc->mbParam.m_seconds = pEnc->mbParam.m_ticks / pEnc->mbParam.fbase;          pEnc->mbParam.m_seconds = pEnc->mbParam.m_ticks / pEnc->mbParam.fbase;
# Line 826  Line 825 
825    
826                  pFrame->intra = 0;                  pFrame->intra = 0;
827    
828                  BitstreamPutBits(&bs, 0x7f, 8);                  BitstreamWriteVopHeader(&bs, &pEnc->mbParam, pEnc->current, 0); // write N_VOP
829                  BitstreamPad(&bs);                  BitstreamPad(&bs);
830                  pFrame->length = BitstreamLength(&bs);                  pFrame->length = BitstreamLength(&bs);
831    
# Line 1044  Line 1043 
1043                  goto bvop_loop;                  goto bvop_loop;
1044          }          }
1045    
1046            pEnc->iFrameNum++;
1047    
1048          BitstreamPad(&bs);          BitstreamPad(&bs);
1049          pFrame->length = BitstreamLength(&bs);          pFrame->length = BitstreamLength(&bs);
1050    
# Line 1253  Line 1254 
1254    
1255  #ifdef BFRAMES  #ifdef BFRAMES
1256          inc_frame_num(pEnc);          inc_frame_num(pEnc);
 #else  
         pEnc->iFrameNum++;  
1257  #endif  #endif
1258            pEnc->iFrameNum++;
1259    
1260          stop_global_timer();          stop_global_timer();
1261          write_timer();          write_timer();
# Line 1536  Line 1535 
1535                          stop_prediction_timer();                          stop_prediction_timer();
1536    
1537                          start_timer();                          start_timer();
1538                            if (pEnc->current->global_flags & XVID_GREYSCALE)
1539                            {       pMB->cbp &= 0x3C;               /* keep only bits 5-2 */
1540                                    qcoeff[4*64+0]=0;               /* zero, because for INTRA MBs DC value is saved */
1541                                    qcoeff[5*64+0]=0;
1542                            }
1543                          MBCoding(pEnc->current, pMB, qcoeff, bs, &pEnc->sStat);                          MBCoding(pEnc->current, pMB, qcoeff, bs, &pEnc->sStat);
1544                          stop_coding_timer();                          stop_coding_timer();
1545                  }                  }
# Line 1572  Line 1576 
1576          DECLARE_ALIGNED_MATRIX(qcoeff, 6, 64, int16_t, CACHE_LINE);          DECLARE_ALIGNED_MATRIX(qcoeff, 6, 64, int16_t, CACHE_LINE);
1577    
1578          int iLimit;          int iLimit;
1579          int k;          int x, y, k;
         int x, y;  
1580          int iSearchRange;          int iSearchRange;
1581          int bIntra;          int bIntra;
1582    
# Line 1725  Line 1728 
1728                                  }                                  }
1729                                  if (!bSkip)                                  if (!bSkip)
1730                                  {                                  {
1731                                            if (pEnc->current->global_flags & XVID_GREYSCALE)
1732                                            {       pMB->cbp &= 0x3C;               /* keep only bits 5-2 */
1733                                                    qcoeff[4*64+0]=0;               /* zero, because DC for INTRA MBs DC value is saved */
1734                                                    qcoeff[5*64+0]=0;
1735                                            }
1736                                          MBCoding(pEnc->current, pMB, qcoeff, bs, &pEnc->sStat);                                          MBCoding(pEnc->current, pMB, qcoeff, bs, &pEnc->sStat);
1737                                          pMB->cbp = 0x80;                /* trick! so cbp!=0, but still nothing is written to bs */                                          pMB->cbp = 0x80;                /* trick! so cbp!=0, but still nothing is written to bs */
1738                                  }                                  }
1739                                  else                                  else
1740                                          MBSkip(bs);                                          MBSkip(bs);
1741    
   
1742  #else  #else
1743                                          MBSkip(bs);     /* without B-frames, no precautions are needed */                                          MBSkip(bs);     /* without B-frames, no precautions are needed */
1744    
1745  #endif  #endif
1746    
1747                          } else {                          } else {
1748                                    if (pEnc->current->global_flags & XVID_GREYSCALE)
1749                                    {       pMB->cbp &= 0x3C;               /* keep only bits 5-2 */
1750                                            qcoeff[4*64+0]=0;               /* zero, because DC for INTRA MBs DC value is saved */
1751                                            qcoeff[5*64+0]=0;
1752                                    }
1753                                  MBCoding(pEnc->current, pMB, qcoeff, bs, &pEnc->sStat);                                  MBCoding(pEnc->current, pMB, qcoeff, bs, &pEnc->sStat);
1754                          }                          }
1755    
# Line 1777  Line 1789 
1789  #ifdef BFRAMES  #ifdef BFRAMES
1790          /* frame drop code */          /* frame drop code */
1791          // DPRINTF(DPRINTF_DEBUG, "kmu %i %i %i", pEnc->sStat.kblks, pEnc->sStat.mblks, pEnc->sStat.ublks);          // DPRINTF(DPRINTF_DEBUG, "kmu %i %i %i", pEnc->sStat.kblks, pEnc->sStat.mblks, pEnc->sStat.ublks);
1792          if (pEnc->sStat.kblks + pEnc->sStat.mblks <=          if (pEnc->sStat.kblks + pEnc->sStat.mblks <
1793                  (pEnc->frame_drop_ratio * pEnc->mbParam.mb_width * pEnc->mbParam.mb_height) / 100)                  (pEnc->frame_drop_ratio * pEnc->mbParam.mb_width * pEnc->mbParam.mb_height) / 100)
1794          {          {
1795                  pEnc->sStat.kblks = pEnc->sStat.mblks = 0;                  pEnc->sStat.kblks = pEnc->sStat.mblks = 0;

Legend:
Removed from v.1.66  
changed lines
  Added in v.1.72

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