[svn] / branches / dev-api-3 / xvidcore / src / encoder.c Repository:
ViewVC logotype

Diff of /branches/dev-api-3/xvidcore/src/encoder.c

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

revision 786, Mon Jan 13 23:52:50 2003 UTC revision 810, Sun Jan 26 05:09:00 2003 UTC
# Line 39  Line 39 
39   *             MinChen <chenm001@163.com>   *             MinChen <chenm001@163.com>
40   *  14.04.2002 added FrameCodeB()   *  14.04.2002 added FrameCodeB()
41   *   *
42   *  $Id: encoder.c,v 1.76.2.38 2003-01-13 23:52:50 edgomez Exp $   *  $Id: encoder.c,v 1.76.2.42 2003-01-26 05:09:00 suxen_drol Exp $
43   *   *
44   ****************************************************************************/   ****************************************************************************/
45    
# Line 229  Line 229 
229    
230          pEnc->bitrate = pParam->rc_bitrate;          pEnc->bitrate = pParam->rc_bitrate;
231    
232          pEnc->iFrameNum = 0;          pEnc->iFrameNum = -1;
233          pEnc->mbParam.iMaxKeyInterval = pParam->max_key_interval;          pEnc->mbParam.iMaxKeyInterval = pParam->max_key_interval;
234    
235          /* try to allocate frame memory */          /* try to allocate frame memory */
# Line 254  Line 254 
254    
255          /* try to allocate image memory */          /* try to allocate image memory */
256    
257  #ifdef _DEBUG_PSNR          if (pParam->global & XVID_GLOBAL_EXTRASTATS)
258          image_null(&pEnc->sOriginal);          image_null(&pEnc->sOriginal);
 #endif  
259    
260          image_null(&pEnc->f_refh);          image_null(&pEnc->f_refh);
261          image_null(&pEnc->f_refv);          image_null(&pEnc->f_refv);
# Line 270  Line 269 
269          image_null(&pEnc->vInterHV);          image_null(&pEnc->vInterHV);
270          image_null(&pEnc->vInterHVf);          image_null(&pEnc->vInterHVf);
271    
272  #ifdef _DEBUG_PSNR          if (pParam->global & XVID_GLOBAL_EXTRASTATS)
273          if (image_create          {       if (image_create
274                  (&pEnc->sOriginal, pEnc->mbParam.edged_width,                  (&pEnc->sOriginal, pEnc->mbParam.edged_width,
275                   pEnc->mbParam.edged_height) < 0)                   pEnc->mbParam.edged_height) < 0)
276                  goto xvid_err_memory3;                  goto xvid_err_memory3;
277  #endif          }
278    
279          if (image_create          if (image_create
280                  (&pEnc->f_refh, pEnc->mbParam.edged_width,                  (&pEnc->f_refh, pEnc->mbParam.edged_width,
# Line 326  Line 325 
325                  goto xvid_err_memory3;                  goto xvid_err_memory3;
326    
327    
         /* B Frames specific init */  
328    
329          pEnc->mbParam.global = pParam->global;          pEnc->mbParam.global = pParam->global;
330    
331            /* B Frames specific init */
332          pEnc->mbParam.max_bframes = pParam->max_bframes;          pEnc->mbParam.max_bframes = pParam->max_bframes;
333          pEnc->mbParam.bquant_ratio = pParam->bquant_ratio;          pEnc->mbParam.bquant_ratio = pParam->bquant_ratio;
334          pEnc->mbParam.bquant_offset = pParam->bquant_offset;          pEnc->mbParam.bquant_offset = pParam->bquant_offset;
# Line 464  Line 464 
464          }          }
465    
466    xvid_err_memory3:    xvid_err_memory3:
467  #ifdef _DEBUG_PSNR  
468          image_destroy(&pEnc->sOriginal, pEnc->mbParam.edged_width,          if (pEnc->mbParam.global & XVID_GLOBAL_EXTRASTATS)
469            {       image_destroy(&pEnc->sOriginal, pEnc->mbParam.edged_width,
470                                    pEnc->mbParam.edged_height);                                    pEnc->mbParam.edged_height);
471  #endif          }
472    
473          image_destroy(&pEnc->f_refh, pEnc->mbParam.edged_width,          image_destroy(&pEnc->f_refh, pEnc->mbParam.edged_width,
474                                    pEnc->mbParam.edged_height);                                    pEnc->mbParam.edged_height);
# Line 583  Line 584 
584          image_destroy(&pEnc->f_refhv, pEnc->mbParam.edged_width,          image_destroy(&pEnc->f_refhv, pEnc->mbParam.edged_width,
585                                    pEnc->mbParam.edged_height);                                    pEnc->mbParam.edged_height);
586    
587  #ifdef _DEBUG_PSNR          if (pEnc->mbParam.global & XVID_GLOBAL_EXTRASTATS)
588          image_destroy(&pEnc->sOriginal, pEnc->mbParam.edged_width,          {       image_destroy(&pEnc->sOriginal, pEnc->mbParam.edged_width,
589                                    pEnc->mbParam.edged_height);                                    pEnc->mbParam.edged_height);
590  #endif          }
591    
592          /* Encoder structure */          /* Encoder structure */
593    
# Line 661  Line 662 
662          if (intra < 0)  return -1;          if (intra < 0)  return -1;
663          if (intra == 1) return I_VOP;          if (intra == 1) return I_VOP;
664          if (intra == 2) return B_VOP;          if (intra == 2) return B_VOP;
         if (intra == 3) return S_VOP;  
665    
666          return P_VOP;          return P_VOP;
667  }  }
# Line 690  Line 690 
690          int input_valid = 1;          int input_valid = 1;
691          int bframes_count = 0;          int bframes_count = 0;
692    
 #ifdef _DEBUG_PSNR  
         float psnr;  
         char temp[128];  
 #endif  
   
693          ENC_CHECK(pEnc);          ENC_CHECK(pEnc);
694          ENC_CHECK(pFrame);          ENC_CHECK(pFrame);
695          ENC_CHECK(pFrame->image);          ENC_CHECK(pFrame->image);
# Line 733  Line 728 
728    
729                          BitstreamPadAlways(&bs);                          BitstreamPadAlways(&bs);
730                          pFrame->length = BitstreamLength(&bs);                          pFrame->length = BitstreamLength(&bs);
                         if(pEnc->current->coding_type == P_VOP)  
731                                  pFrame->intra = 0;                                  pFrame->intra = 0;
732                          else  
                                 pFrame->intra = 3;  
733    
734                          emms();                          emms();
735    
# Line 958  Line 951 
951    
952                  inc_frame_num(pEnc);                  inc_frame_num(pEnc);
953    
954  #ifdef _DEBUG_PSNR                  if (pFrame->general & XVID_EXTRASTATS)
955                  image_copy(&pEnc->sOriginal, &pEnc->current->image,                  {       image_copy(&pEnc->sOriginal, &pEnc->current->image,
956                             pEnc->mbParam.edged_width, pEnc->mbParam.height);                             pEnc->mbParam.edged_width, pEnc->mbParam.height);
957  #endif                  }
958    
959                  emms();                  emms();
960    
# Line 1063  Line 1056 
1056                          }                          }
1057                          FrameCodeP(pEnc, &bs, &bits, 1, 0);                          FrameCodeP(pEnc, &bs, &bits, 1, 0);
1058                          bframes_count = 0;                          bframes_count = 0;
   
                         if(pEnc->current->coding_type == P_VOP)  
1059                                  pFrame->intra = 0;                                  pFrame->intra = 0;
                         else  
                                 pFrame->intra = 3;  
   
1060    
1061                  } else {                  } else {
1062    
# Line 1106  Line 1094 
1094    
1095                  FrameCodeP(pEnc, &bs, &bits, 1, 0);                  FrameCodeP(pEnc, &bs, &bits, 1, 0);
1096                  bframes_count = 0;                  bframes_count = 0;
                 if(pEnc->current->coding_type == P_VOP)  
1097                          pFrame->intra = 0;                          pFrame->intra = 0;
                 else  
                         pFrame->intra = 3;  
1098                  pEnc->flush_bframes = 1;                  pEnc->flush_bframes = 1;
1099    
1100                  if ((pEnc->mbParam.global & XVID_GLOBAL_PACKED) && (pEnc->bframenum_tail > 0)) {                  if ((pEnc->mbParam.global & XVID_GLOBAL_PACKED) && (pEnc->bframenum_tail > 0)) {
# Line 1167  Line 1152 
1152                  pResult->kblks = pEnc->current->sStat.kblks;                  pResult->kblks = pEnc->current->sStat.kblks;
1153                  pResult->mblks = pEnc->current->sStat.mblks;                  pResult->mblks = pEnc->current->sStat.mblks;
1154                  pResult->ublks = pEnc->current->sStat.ublks;                  pResult->ublks = pEnc->current->sStat.ublks;
         }  
1155    
1156          emms();                  if (pFrame->general & XVID_EXTRASTATS)
1157                    {       pResult->sse_y =
1158  #ifdef _DEBUG_PSNR                                  plane_sse( pEnc->sOriginal.y, pEnc->current->image.y,
         psnr =  
                 image_psnr(&pEnc->sOriginal, &pEnc->current->image,  
1159                                     pEnc->mbParam.edged_width, pEnc->mbParam.width,                                     pEnc->mbParam.edged_width, pEnc->mbParam.width,
1160                                     pEnc->mbParam.height);                                     pEnc->mbParam.height);
1161    
1162          printf("PSNR: %f\n", psnr);                          pResult->sse_u =
1163  //      DEBUG(temp);                                  plane_sse( pEnc->sOriginal.u, pEnc->current->image.u,
1164  #endif                                                     pEnc->mbParam.edged_width/2, pEnc->mbParam.width/2,
1165                                                       pEnc->mbParam.height/2);
1166    
1167                            pResult->sse_v =
1168                                    plane_sse( pEnc->sOriginal.v, pEnc->current->image.v,
1169                                                       pEnc->mbParam.edged_width/2, pEnc->mbParam.width/2,
1170                                                       pEnc->mbParam.height/2);
1171                    }
1172            }
1173    
1174            emms();
1175    
1176          if (pFrame->quant == 0) {          if (pFrame->quant == 0) {
1177                  RateControlUpdate(&pEnc->rate_control, pEnc->current->quant,                  RateControlUpdate(&pEnc->rate_control, pEnc->current->quant,
# Line 1214  Line 1206 
1206          uint32_t bits;          uint32_t bits;
1207          uint16_t write_vol_header = 0;          uint16_t write_vol_header = 0;
1208    
 #ifdef _DEBUG_PSNR  
1209          float psnr;          float psnr;
1210          uint8_t temp[128];          uint8_t temp[128];
 #endif  
1211    
1212          start_global_timer();          start_global_timer();
1213    
# Line 1248  Line 1238 
1238                  return XVID_ERR_FORMAT;                  return XVID_ERR_FORMAT;
1239          stop_conv_timer();          stop_conv_timer();
1240    
1241  #ifdef _DEBUG_PSNR          if (pFrame->general & XVID_EXTRASTATS)
1242          image_copy(&pEnc->sOriginal, &pEnc->current->image,          {       image_copy(&pEnc->sOriginal, &pEnc->current->image,
1243                             pEnc->mbParam.edged_width, pEnc->mbParam.height);                             pEnc->mbParam.edged_width, pEnc->mbParam.height);
1244  #endif          }
1245    
1246          emms();          emms();
1247    
# Line 1363  Line 1353 
1353                  RateControlUpdate(&pEnc->rate_control, pEnc->current->quant,                  RateControlUpdate(&pEnc->rate_control, pEnc->current->quant,
1354                                                    pFrame->length, pFrame->intra);                                                    pFrame->length, pFrame->intra);
1355          }          }
1356  #ifdef _DEBUG_PSNR          if (pFrame->general & XVID_EXTRASTATS)
1357            {
1358          psnr =          psnr =
1359                  image_psnr(&pEnc->sOriginal, &pEnc->current->image,                  image_psnr(&pEnc->sOriginal, &pEnc->current->image,
1360                                     pEnc->mbParam.edged_width, pEnc->mbParam.width,                                     pEnc->mbParam.edged_width, pEnc->mbParam.width,
1361                                     pEnc->mbParam.height);                                     pEnc->mbParam.height);
1362    
1363          snprintf(temp, 127, "PSNR: %f\n", psnr);          snprintf(temp, 127, "PSNR: %f\n", psnr);
1364  //      DEBUG(temp);          }
 #endif  
1365    
1366          pEnc->iFrameNum++;          pEnc->iFrameNum++;
1367    
# Line 1835  Line 1825 
1825                                          pEnc->vGMC.y + 16*y*pEnc->mbParam.edged_width + 16*x,                                          pEnc->vGMC.y + 16*y*pEnc->mbParam.edged_width + 16*x,
1826                                          pEnc->mbParam.edged_width, 65536);                                          pEnc->mbParam.edged_width, 65536);
1827    
1828                                    if (pEnc->current->motion_flags & PMV_CHROMA16) {
1829                                            iSAD += sad8(pEnc->current->image.u + 8*y*(pEnc->mbParam.edged_width/2) + 8*x,
1830                                            pEnc->vGMC.u + 8*y*(pEnc->mbParam.edged_width/2) + 8*x, pEnc->mbParam.edged_width/2);
1831    
1832                                            iSAD += sad8(pEnc->current->image.v + 8*y*(pEnc->mbParam.edged_width/2) + 8*x,
1833                                            pEnc->vGMC.v + 8*y*(pEnc->mbParam.edged_width/2) + 8*x, pEnc->mbParam.edged_width/2);
1834                                    }
1835    
1836                                  if (iSAD <= pMB->sad16) {               /* mode decision GMC */                                  if (iSAD <= pMB->sad16) {               /* mode decision GMC */
1837    
1838                                          if (pEnc->mbParam.m_quarterpel)                                          if (pEnc->mbParam.m_quarterpel)

Legend:
Removed from v.786  
changed lines
  Added in v.810

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