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

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

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

revision 1057, Mon Jun 9 19:20:56 2003 UTC revision 1065, Wed Jun 11 12:37:41 2003 UTC
# Line 21  Line 21 
21   *  along with this program ; if not, write to the Free Software   *  along with this program ; if not, write to the Free Software
22   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
23   *   *
24   * $Id: encoder.c,v 1.95.2.28 2003-06-09 19:20:56 edgomez Exp $   * $Id: encoder.c,v 1.95.2.29 2003-06-11 12:37:41 suxen_drol Exp $
25   *   *
26   ****************************************************************************/   ****************************************************************************/
27    
# Line 205  Line 205 
205      if ((pEnc->mbParam.plugin_flags & XVID_REQDQUANTS)) {      if ((pEnc->mbParam.plugin_flags & XVID_REQDQUANTS)) {
206              pEnc->temp_dquants = (int *) xvid_malloc(pEnc->mbParam.mb_width *              pEnc->temp_dquants = (int *) xvid_malloc(pEnc->mbParam.mb_width *
207                                              pEnc->mbParam.mb_height * sizeof(int), CACHE_LINE);                                              pEnc->mbParam.mb_height * sizeof(int), CACHE_LINE);
208            if (pEnc->temp_dquants==NULL)
209                goto xvid_err_memory1a;
210      }      }
     /* XXX: error checking */  
211    
212          /* bframes */          /* bframes */
213          pEnc->mbParam.max_bframes = MAX(create->max_bframes, 0);          pEnc->mbParam.max_bframes = MAX(create->max_bframes, 0);
# Line 224  Line 225 
225    
226      /* max keyframe interval */      /* max keyframe interval */
227      pEnc->mbParam.iMaxKeyInterval = create->max_key_interval <= 0 ?      pEnc->mbParam.iMaxKeyInterval = create->max_key_interval <= 0 ?
228                  10 * pEnc->mbParam.fbase / pEnc->mbParam.fincr : create->max_key_interval;                  (10 * pEnc->mbParam.fbase) / pEnc->mbParam.fincr : create->max_key_interval;
   
         /* Bitrate allocator defaults  
   
         if ((create->min_quantizer <= 0) || (create->min_quantizer > 31))  
                 create->min_quantizer = 1;  
   
         if ((create->max_quantizer <= 0) || (create->max_quantizer > 31))  
                 create->max_quantizer = 31;  
   
         if (create->max_quantizer < create->min_quantizer)  
                 create->max_quantizer = create->min_quantizer; */  
   
229    
230      /* allocate working frame-image memory */      /* allocate working frame-image memory */
231    
# Line 509  Line 498 
498          xvid_free(pEnc->current);          xvid_free(pEnc->current);
499          xvid_free(pEnc->reference);          xvid_free(pEnc->reference);
500    
501      xvid_err_memory1a:
502      if ((pEnc->mbParam.plugin_flags & XVID_REQDQUANTS)) {      if ((pEnc->mbParam.plugin_flags & XVID_REQDQUANTS)) {
503              xvid_free(pEnc->temp_dquants);              xvid_free(pEnc->temp_dquants);
504      }      }
# Line 706  Line 696 
696                          memset(data.dquant, 0, data.mb_width*data.mb_height);                          memset(data.dquant, 0, data.mb_width*data.mb_height);
697          }          }
698    
699          /* todo: [vol,vop,motion]_flags*/          data.vol_flags = frame->vol_flags;
700            data.vop_flags = frame->vop_flags;
701            data.motion_flags = frame->motion_flags;
702    
703      } else { /* XVID_PLG_AFTER */      } else { /* XVID_PLG_AFTER */
704          if ((pEnc->mbParam.plugin_flags & XVID_REQORIGINAL)) {          if ((pEnc->mbParam.plugin_flags & XVID_REQORIGINAL)) {
# Line 803  Line 795 
795                  frame->mbs[j*pEnc->mbParam.mb_width + i].dquant = 0;                  frame->mbs[j*pEnc->mbParam.mb_width + i].dquant = 0;
796              }              }
797          }          }
798          /* todo: [vol,vop,motion]_flags*/  
799            frame->vol_flags = data.vol_flags;
800            frame->vop_flags = data.vop_flags;
801            frame->motion_flags = data.motion_flags;
802      }      }
803  }  }
804    
# Line 1412  Line 1407 
1407          pEnc->fMvPrevSigma = -1;          pEnc->fMvPrevSigma = -1;
1408          pEnc->mbParam.m_fcode = 2;          pEnc->mbParam.m_fcode = 2;
1409    
     /* XXX: hinted me  
         if (pEnc->current->global_flags & XVID_HINTEDME_GET) {  
                 HintedMEGet(pEnc, 1);  
         }*/  
   
1410          return 1;                                       /* intra */          return 1;                                       /* intra */
1411  }  }
1412    
# Line 1463  Line 1453 
1453    
1454          pEnc->mbParam.m_rounding_type = 1 - pEnc->mbParam.m_rounding_type;          pEnc->mbParam.m_rounding_type = 1 - pEnc->mbParam.m_rounding_type;
1455          pEnc->current->rounding_type = pEnc->mbParam.m_rounding_type;          pEnc->current->rounding_type = pEnc->mbParam.m_rounding_type;
         /* pEnc->current->quarterpel =  pEnc->mbParam.m_quarterpel; */  
1456          pEnc->current->fcode = pEnc->mbParam.m_fcode;          pEnc->current->fcode = pEnc->mbParam.m_fcode;
1457    
1458          if (!force_inter)          if (!force_inter)
# Line 1487  Line 1476 
1476      SetMacroblockQuants(&pEnc->mbParam, pEnc->current);      SetMacroblockQuants(&pEnc->mbParam, pEnc->current);
1477    
1478          start_timer();          start_timer();
1479          /*if (pEnc->current->global_flags & XVID_HINTEDME_SET)          bIntra = MotionEstimation(&pEnc->mbParam, pEnc->current, pEnc->reference,
                 HintedMESet(pEnc, &bIntra);  
         else*/  
                 bIntra =  
                         MotionEstimation(&pEnc->mbParam, pEnc->current, pEnc->reference,  
1480                           &pEnc->vInterH, &pEnc->vInterV, &pEnc->vInterHV,                           &pEnc->vInterH, &pEnc->vInterV, &pEnc->vInterHV,
1481                           iLimit);                           iLimit);
1482    
# Line 1736  Line 1721 
1721    
1722          emms();          emms();
1723    
     /* XXX: hinted me  
         if (pEnc->current->global_flags & XVID_HINTEDME_GET) {  
                 HintedMEGet(pEnc, 0);  
         }*/  
   
1724          if (pEnc->current->sStat.iMvCount == 0)          if (pEnc->current->sStat.iMvCount == 0)
1725                  pEnc->current->sStat.iMvCount = 1;                  pEnc->current->sStat.iMvCount = 1;
1726    
# Line 1783  Line 1763 
1763                  pEnc->current->quant = pEnc->reference->quant;                  pEnc->current->quant = pEnc->reference->quant;
1764                  pEnc->current->motion_flags = pEnc->reference->motion_flags;                  pEnc->current->motion_flags = pEnc->reference->motion_flags;
1765                  pEnc->current->rounding_type = pEnc->reference->rounding_type;                  pEnc->current->rounding_type = pEnc->reference->rounding_type;
                 /* pEnc->current->quarterpel =  pEnc->reference->quarterpel; */  
1766                  pEnc->current->fcode = pEnc->reference->fcode;                  pEnc->current->fcode = pEnc->reference->fcode;
1767                  pEnc->current->bcode = pEnc->reference->bcode;                  pEnc->current->bcode = pEnc->reference->bcode;
1768                  image_copy(&pEnc->current->image, &pEnc->reference->image, pEnc->mbParam.edged_width, pEnc->mbParam.height);                  image_copy(&pEnc->current->image, &pEnc->reference->image, pEnc->mbParam.edged_width, pEnc->mbParam.height);
# Line 1849  Line 1828 
1828          }          }
1829  #endif  #endif
1830    
         /* frame->quarterpel =  pEnc->mbParam.m_quarterpel; */  
   
1831          /* forward  */          /* forward  */
1832          image_setedges(f_ref, pEnc->mbParam.edged_width,          image_setedges(f_ref, pEnc->mbParam.edged_width,
1833                                     pEnc->mbParam.edged_height, pEnc->mbParam.width,                                     pEnc->mbParam.edged_height, pEnc->mbParam.width,
# Line 1872  Line 1849 
1849          stop_inter_timer();          stop_inter_timer();
1850    
1851          start_timer();          start_timer();
   
1852          MotionEstimationBVOP(&pEnc->mbParam, frame,          MotionEstimationBVOP(&pEnc->mbParam, frame,
1853                                                   ((int32_t)(pEnc->current->stamp - frame->stamp)),                              /* time_bp */                                                   ((int32_t)(pEnc->current->stamp - frame->stamp)),                              /* time_bp */
1854                                                   ((int32_t)(pEnc->current->stamp - pEnc->reference->stamp)),    /* time_pp */                                                   ((int32_t)(pEnc->current->stamp - pEnc->reference->stamp)),    /* time_pp */
# Line 1880  Line 1856 
1856                                                   &pEnc->f_refh, &pEnc->f_refv, &pEnc->f_refhv,                                                   &pEnc->f_refh, &pEnc->f_refv, &pEnc->f_refhv,
1857                                                   pEnc->current, b_ref, &pEnc->vInterH,                                                   pEnc->current, b_ref, &pEnc->vInterH,
1858                                                   &pEnc->vInterV, &pEnc->vInterHV);                                                   &pEnc->vInterV, &pEnc->vInterHV);
   
   
1859          stop_motion_timer();          stop_motion_timer();
1860    
         /*  
         if (test_quant_type(&pEnc->mbParam, pEnc->current)) {  
                 BitstreamWriteVolHeader(bs, pEnc->mbParam.width, pEnc->mbParam.height, pEnc->mbParam.quant_type);  
         }  
         */  
   
1861          frame->coding_type = B_VOP;          frame->coding_type = B_VOP;
1862    
1863          set_timecodes(frame, pEnc->reference,pEnc->mbParam.fbase);          set_timecodes(frame, pEnc->reference,pEnc->mbParam.fbase);

Legend:
Removed from v.1057  
changed lines
  Added in v.1065

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