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

Diff of /trunk/xvidcore/src/encoder.c

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

revision 157, Fri May 3 08:37:55 2002 UTC revision 189, Fri Jun 7 10:36:08 2002 UTC
# Line 32  Line 32 
32   *   *
33   *  History   *  History
34   *   *
35     *  08.05.2002 fix some problem in DEBUG mode;
36     *             MinChen <chenm001@163.com>
37   *  14.04.2002 added FrameCodeB()   *  14.04.2002 added FrameCodeB()
38   *   *
39   *  $Id: encoder.c,v 1.33 2002-05-03 08:32:49 Isibaar Exp $   *  $Id: encoder.c,v 1.38 2002-06-07 10:36:08 edgomez Exp $
40   *   *
41   ***************************************************************************/   ***************************************************************************/
42    
# Line 264  Line 266 
266  #ifdef BFRAMES  #ifdef BFRAMES
267    
268          // TODO: handle malloc() == NULL          // TODO: handle malloc() == NULL
269          pEnc->max_bframes = pParam->max_bframes;          pEnc->mbParam.max_bframes = pParam->max_bframes;
270          pEnc->bquant_ratio = pParam->bquant_ratio;          pEnc->bquant_ratio = pParam->bquant_ratio;
271          if (pEnc->max_bframes > 0)          if (pEnc->mbParam.max_bframes > 0)
272          {          {
273                  int n;                  int n;
274    
275                  pEnc->bframes = malloc(pEnc->max_bframes * sizeof(FRAMEINFO *));                  pEnc->bframes = malloc(pEnc->mbParam.max_bframes * sizeof(FRAMEINFO *));
276    
277                  for (n = 0; n < pEnc->max_bframes; n++)                  for (n = 0; n < pEnc->mbParam.max_bframes; n++)
278                  {                  {
279                          pEnc->bframes[n] = malloc(sizeof(FRAMEINFO));                          pEnc->bframes[n] = malloc(sizeof(FRAMEINFO));
280                          pEnc->bframes[n]->mbs = malloc(sizeof(MACROBLOCK) * pEnc->mbParam.mb_width * pEnc->mbParam.mb_height);                          pEnc->bframes[n]->mbs = malloc(sizeof(MACROBLOCK) * pEnc->mbParam.mb_width * pEnc->mbParam.mb_height);
# Line 299  Line 301 
301    
302          if (pParam->rc_bitrate)          if (pParam->rc_bitrate)
303          {          {
304                  RateControlInit(pParam->rc_bitrate, pParam->rc_reaction_delay_factor,                  RateControlInit(&pEnc->rate_control,
305                          pParam->rc_averaging_period, pParam->rc_buffer, pParam->fbase * 1000 / pParam->fincr,                                  pParam->rc_bitrate,
306                          pParam->max_quantizer, pParam->min_quantizer);                                  pParam->rc_reaction_delay_factor,
307                                    pParam->rc_averaging_period,
308                                    pParam->rc_buffer,
309                                    pParam->fbase * 1000 / pParam->fincr,
310                                    pParam->max_quantizer,
311                                    pParam->min_quantizer);
312          }          }
313    
314          init_timer();          init_timer();
# Line 316  Line 323 
323    
324  // =================================================================  // =================================================================
325  #ifdef BFRAMES  #ifdef BFRAMES
326          if (pEnc->max_bframes > 0)          if (pEnc->mbParam.max_bframes > 0)
327          {          {
328                  int n;                  int n;
329                  for (n = 0; n < pEnc->max_bframes; n++)                  for (n = 0; n < pEnc->mbParam.max_bframes; n++)
330                  {                  {
331                          image_destroy(&pEnc->bframes[n]->image, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height);                          image_destroy(&pEnc->bframes[n]->image, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height);
332                          free(pEnc->bframes[n]->mbs);                          free(pEnc->bframes[n]->mbs);
# Line 327  Line 334 
334                  }                  }
335                  free(pEnc->bframes);                  free(pEnc->bframes);
336          }          }
337  #endif BFRAMES  #endif
338  //====================================================================  //====================================================================
339    
340          image_destroy(&pEnc->current->image, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height);          image_destroy(&pEnc->current->image, pEnc->mbParam.edged_width, pEnc->mbParam.edged_height);
# Line 365  Line 372 
372          Bitstream bs;          Bitstream bs;
373          uint32_t bits;          uint32_t bits;
374    
375    #ifdef _DEBUG
376            float psnr;
377            char temp[128];
378    #endif
379    
380          ENC_CHECK(pEnc);          ENC_CHECK(pEnc);
381          ENC_CHECK(pFrame);          ENC_CHECK(pFrame);
382    
# Line 432  Line 444 
444    
445          SWAP(pEnc->current, pEnc->reference);          SWAP(pEnc->current, pEnc->reference);
446    
447          pEnc->current->quant = (pFrame->quant == 0) ? RateControlGetQ(0) : pFrame->quant;          pEnc->current->quant = (pFrame->quant == 0) ? RateControlGetQ(&pEnc->rate_control, 0) : pFrame->quant;
448    
449          if(pEnc->current->quant < 1)          if(pEnc->current->quant < 1)
450                  pEnc->current->quant = 1;                  pEnc->current->quant = 1;
# Line 457  Line 469 
469          stop_conv_timer();          stop_conv_timer();
470    
471  #ifdef _DEBUG  #ifdef _DEBUG
472          image_copy(&pEnc->sOriginal, &pEnc->sCurrent, pEnc->mbParam.edged_width, pEnc->mbParam.height);          image_copy(&pEnc->sOriginal, &pEnc->current->image, pEnc->mbParam.edged_width, pEnc->mbParam.height);
473  #endif  #endif
474    
475    
# Line 507  Line 519 
519                  /* note: sequences like "IIBB" decode fine with msfdam but,                  /* note: sequences like "IIBB" decode fine with msfdam but,
520                     go screwy with divx5.00 */                     go screwy with divx5.00 */
521          }          }
522          else if (pEnc->bframenum_tail >= pEnc->max_bframes)          else if (pEnc->bframenum_tail >= pEnc->mbParam.max_bframes)
523          {          {
524                  dprintf("--- PFRAME ---");                  dprintf("--- PFRAME ---");
525    
# Line 569  Line 581 
581    
582          if (pFrame->quant == 0)          if (pFrame->quant == 0)
583          {          {
584                  RateControlUpdate(pEnc->current->quant, pFrame->length, pFrame->intra);                  RateControlUpdate(&pEnc->rate_control,
585                                      pEnc->current->quant,
586                                      pFrame->length,
587                                      pFrame->intra);
588          }          }
589    
590          pEnc->iFrameNum++;          pEnc->iFrameNum++;
# Line 630  Line 645 
645    
646          if (pFrame->quant == 0)          if (pFrame->quant == 0)
647          {          {
648                  pEnc->current->quant = RateControlGetQ(0);                  pEnc->current->quant = RateControlGetQ(&pEnc->rate_control,0);
649          }          }
650          else          else
651          {          {
# Line 723  Line 738 
738    
739          if (pFrame->quant == 0)          if (pFrame->quant == 0)
740          {          {
741                  RateControlUpdate(pEnc->current->quant, pFrame->length, pFrame->intra);                  RateControlUpdate(&pEnc->rate_control,
742                                      pEnc->current->quant,
743                                      pFrame->length,
744                                      pFrame->intra);
745          }          }
746    
747  #ifdef _DEBUG  #ifdef _DEBUG

Legend:
Removed from v.157  
changed lines
  Added in v.189

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