[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.76.2.40, Tue Jan 21 22:05:44 2003 UTC revision 1.76.2.44, Sat Feb 15 05:57:14 2003 UTC
# 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 630  Line 631 
631                  return;                  return;
632          stop_conv_timer();          stop_conv_timer();
633    
634            if ((pFrame->general & XVID_CHROMAOPT)) {
635                    image_chroma_optimize(&pEnc->queue[pEnc->queue_tail],
636                            pEnc->mbParam.width, pEnc->mbParam.height, pEnc->mbParam.edged_width);
637            }
638    
639          pEnc->queue_size++;          pEnc->queue_size++;
640          pEnc->queue_tail =  (pEnc->queue_tail + 1) % pEnc->mbParam.max_bframes;          pEnc->queue_tail =  (pEnc->queue_tail + 1) % pEnc->mbParam.max_bframes;
641  }  }
# Line 689  Line 695 
695          int input_valid = 1;          int input_valid = 1;
696          int bframes_count = 0;          int bframes_count = 0;
697    
 #ifdef _DEBUG_PSNR  
         float psnr;  
         char temp[128];  
 #endif  
   
698          ENC_CHECK(pEnc);          ENC_CHECK(pEnc);
699          ENC_CHECK(pFrame);          ENC_CHECK(pFrame);
700          ENC_CHECK(pFrame->image);          ENC_CHECK(pFrame->image);
# Line 854  Line 855 
855                  }                  }
856                  stop_conv_timer();                  stop_conv_timer();
857    
858                    if ((pFrame->general & XVID_CHROMAOPT)) {
859                            image_chroma_optimize(&pEnc->current->image,
860                                    pEnc->mbParam.width, pEnc->mbParam.height, pEnc->mbParam.edged_width);
861                    }
862    
863                  // queue input frame, and dequue next image                  // queue input frame, and dequue next image
864                  if (pEnc->queue_size > 0)                  if (pEnc->queue_size > 0)
865                  {                  {
# Line 955  Line 961 
961    
962                  inc_frame_num(pEnc);                  inc_frame_num(pEnc);
963    
964  #ifdef _DEBUG_PSNR                  if (pFrame->general & XVID_EXTRASTATS)
965                  image_copy(&pEnc->sOriginal, &pEnc->current->image,                  {       image_copy(&pEnc->sOriginal, &pEnc->current->image,
966                             pEnc->mbParam.edged_width, pEnc->mbParam.height);                             pEnc->mbParam.edged_width, pEnc->mbParam.height);
967  #endif                  }
968    
969                  emms();                  emms();
970    
# Line 1156  Line 1162 
1162                  pResult->kblks = pEnc->current->sStat.kblks;                  pResult->kblks = pEnc->current->sStat.kblks;
1163                  pResult->mblks = pEnc->current->sStat.mblks;                  pResult->mblks = pEnc->current->sStat.mblks;
1164                  pResult->ublks = pEnc->current->sStat.ublks;                  pResult->ublks = pEnc->current->sStat.ublks;
         }  
1165    
1166          emms();                  if (pFrame->general & XVID_EXTRASTATS)
1167                    {       pResult->sse_y =
1168  #ifdef _DEBUG_PSNR                                  plane_sse( pEnc->sOriginal.y, pEnc->current->image.y,
         psnr =  
                 image_psnr(&pEnc->sOriginal, &pEnc->current->image,  
1169                                     pEnc->mbParam.edged_width, pEnc->mbParam.width,                                     pEnc->mbParam.edged_width, pEnc->mbParam.width,
1170                                     pEnc->mbParam.height);                                     pEnc->mbParam.height);
1171    
1172          printf("PSNR: %f\n", psnr);                          pResult->sse_u =
1173  //      DEBUG(temp);                                  plane_sse( pEnc->sOriginal.u, pEnc->current->image.u,
1174  #endif                                                     pEnc->mbParam.edged_width/2, pEnc->mbParam.width/2,
1175                                                       pEnc->mbParam.height/2);
1176    
1177                            pResult->sse_v =
1178                                    plane_sse( pEnc->sOriginal.v, pEnc->current->image.v,
1179                                                       pEnc->mbParam.edged_width/2, pEnc->mbParam.width/2,
1180                                                       pEnc->mbParam.height/2);
1181                    }
1182            }
1183    
1184            emms();
1185    
1186          if (pFrame->quant == 0) {          if (pFrame->quant == 0) {
1187                  RateControlUpdate(&pEnc->rate_control, pEnc->current->quant,                  RateControlUpdate(&pEnc->rate_control, pEnc->current->quant,
# Line 1203  Line 1216 
1216          uint32_t bits;          uint32_t bits;
1217          uint16_t write_vol_header = 0;          uint16_t write_vol_header = 0;
1218    
 #ifdef _DEBUG_PSNR  
1219          float psnr;          float psnr;
1220          uint8_t temp[128];          uint8_t temp[128];
 #endif  
1221    
1222          start_global_timer();          start_global_timer();
1223    
# Line 1237  Line 1248 
1248                  return XVID_ERR_FORMAT;                  return XVID_ERR_FORMAT;
1249          stop_conv_timer();          stop_conv_timer();
1250    
1251  #ifdef _DEBUG_PSNR          if ((pFrame->general & XVID_CHROMAOPT)) {
1252          image_copy(&pEnc->sOriginal, &pEnc->current->image,                  image_chroma_optimize(&pEnc->current->image,
1253                            pEnc->mbParam.width, pEnc->mbParam.height, pEnc->mbParam.edged_width);
1254            }
1255    
1256            if (pFrame->general & XVID_EXTRASTATS)
1257            {       image_copy(&pEnc->sOriginal, &pEnc->current->image,
1258                             pEnc->mbParam.edged_width, pEnc->mbParam.height);                             pEnc->mbParam.edged_width, pEnc->mbParam.height);
1259  #endif          }
1260    
1261          emms();          emms();
1262    
# Line 1317  Line 1333 
1333          }          }
1334    
1335          if (pFrame->intra < 0) {          if (pFrame->intra < 0) {
1336                  if ((pEnc->iFrameNum == 0)                  if ((pEnc->iFrameNum == -1)
1337                          || ((pEnc->mbParam.iMaxKeyInterval > 0)                          || ((pEnc->mbParam.iMaxKeyInterval > 0)
1338                                  && (pEnc->iFrameNum >= pEnc->mbParam.iMaxKeyInterval))) {                                  && (pEnc->iFrameNum >= pEnc->mbParam.iMaxKeyInterval))) {
1339                          pFrame->intra = FrameCodeI(pEnc, &bs, &bits);                          pFrame->intra = FrameCodeI(pEnc, &bs, &bits);
# Line 1352  Line 1368 
1368                  RateControlUpdate(&pEnc->rate_control, pEnc->current->quant,                  RateControlUpdate(&pEnc->rate_control, pEnc->current->quant,
1369                                                    pFrame->length, pFrame->intra);                                                    pFrame->length, pFrame->intra);
1370          }          }
1371  #ifdef _DEBUG_PSNR          if (pFrame->general & XVID_EXTRASTATS)
1372            {
1373          psnr =          psnr =
1374                  image_psnr(&pEnc->sOriginal, &pEnc->current->image,                  image_psnr(&pEnc->sOriginal, &pEnc->current->image,
1375                                     pEnc->mbParam.edged_width, pEnc->mbParam.width,                                     pEnc->mbParam.edged_width, pEnc->mbParam.width,
1376                                     pEnc->mbParam.height);                                     pEnc->mbParam.height);
1377    
1378          snprintf(temp, 127, "PSNR: %f\n", psnr);          snprintf(temp, 127, "PSNR: %f\n", psnr);
1379  //      DEBUG(temp);          }
 #endif  
1380    
1381          pEnc->iFrameNum++;          pEnc->iFrameNum++;
1382    

Legend:
Removed from v.1.76.2.40  
changed lines
  Added in v.1.76.2.44

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