[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.95.2.59, Wed Dec 17 15:16:16 2003 UTC revision 1.95.2.65, Mon Mar 29 17:37:55 2004 UTC
# Line 123  Line 123 
123          if (create->width%2 || create->height%2)          if (create->width%2 || create->height%2)
124                  return XVID_ERR_FAIL;                  return XVID_ERR_FAIL;
125    
126            if (create->width<=0 || create->height<=0)
127                    return XVID_ERR_FAIL;
128    
129          /* allocate encoder struct */          /* allocate encoder struct */
130    
131          pEnc = (Encoder *) xvid_malloc(sizeof(Encoder), CACHE_LINE);          pEnc = (Encoder *) xvid_malloc(sizeof(Encoder), CACHE_LINE);
# Line 652  Line 655 
655                  data.max_quant[i] = pEnc->mbParam.max_quant[i];                  data.max_quant[i] = pEnc->mbParam.max_quant[i];
656          }          }
657    
658          data.reference.csp = XVID_CSP_USER;          data.reference.csp = XVID_CSP_PLANAR;
659          data.reference.plane[0] = pEnc->reference->image.y;          data.reference.plane[0] = pEnc->reference->image.y;
660          data.reference.plane[1] = pEnc->reference->image.u;          data.reference.plane[1] = pEnc->reference->image.u;
661          data.reference.plane[2] = pEnc->reference->image.v;          data.reference.plane[2] = pEnc->reference->image.v;
# Line 660  Line 663 
663          data.reference.stride[1] = pEnc->mbParam.edged_width/2;          data.reference.stride[1] = pEnc->mbParam.edged_width/2;
664          data.reference.stride[2] = pEnc->mbParam.edged_width/2;          data.reference.stride[2] = pEnc->mbParam.edged_width/2;
665    
666          data.current.csp = XVID_CSP_USER;          data.current.csp = XVID_CSP_PLANAR;
667          data.current.plane[0] = frame->image.y;          data.current.plane[0] = frame->image.y;
668          data.current.plane[1] = frame->image.u;          data.current.plane[1] = frame->image.u;
669          data.current.plane[2] = frame->image.v;          data.current.plane[2] = frame->image.v;
# Line 690  Line 693 
693    
694          } else { /* XVID_PLG_AFTER */          } else { /* XVID_PLG_AFTER */
695                  if ((pEnc->mbParam.plugin_flags & XVID_REQORIGINAL)) {                  if ((pEnc->mbParam.plugin_flags & XVID_REQORIGINAL)) {
696                          data.original.csp = XVID_CSP_USER;                          data.original.csp = XVID_CSP_PLANAR;
697                          data.original.plane[0] = original->y;                          data.original.plane[0] = original->y;
698                          data.original.plane[1] = original->u;                          data.original.plane[1] = original->u;
699                          data.original.plane[2] = original->v;                          data.original.plane[2] = original->v;
# Line 1121  Line 1124 
1124    
1125          pEnc->current->fincr = pEnc->mbParam.fincr>0 ? pEnc->mbParam.fincr : frame->fincr;          pEnc->current->fincr = pEnc->mbParam.fincr>0 ? pEnc->mbParam.fincr : frame->fincr;
1126          inc_frame_num(pEnc);          inc_frame_num(pEnc);
1127          pEnc->current->vol_flags = pEnc->mbParam.vol_flags;          pEnc->current->vol_flags = frame->vol_flags;
1128          pEnc->current->vop_flags = frame->vop_flags;          pEnc->current->vop_flags = frame->vop_flags;
1129          pEnc->current->motion_flags = frame->motion;          pEnc->current->motion_flags = frame->motion;
1130          pEnc->current->fcode = pEnc->mbParam.m_fcode;          pEnc->current->fcode = pEnc->mbParam.m_fcode;
# Line 1156  Line 1159 
1159                  }                  }
1160          }          }
1161    
1162            if (type != I_VOP)
1163                    pEnc->current->vol_flags = pEnc->mbParam.vol_flags; /* don't allow VOL changes here */
1164    
1165          /* bframes buffer overflow check */          /* bframes buffer overflow check */
1166          if (type == B_VOP && pEnc->bframenum_tail >= pEnc->mbParam.max_bframes) {          if (type == B_VOP && pEnc->bframenum_tail >= pEnc->mbParam.max_bframes) {
1167                  type = P_VOP;                  type = P_VOP;
# Line 1268  Line 1274 
1274                  pEnc->iFrameNum = 1;                  pEnc->iFrameNum = 1;
1275    
1276                  /* ---- update vol flags at IVOP ----------- */                  /* ---- update vol flags at IVOP ----------- */
1277                  pEnc->mbParam.vol_flags = frame->vol_flags;                  pEnc->mbParam.vol_flags = pEnc->current->vol_flags;
1278    
1279                  /* Aspect ratio */                  /* Aspect ratio */
1280                  switch(frame->par) {                  switch(frame->par) {
# Line 1437  Line 1443 
1443                  start_timer();                  start_timer();
1444                  image_setedges(&pEnc->current->image,                  image_setedges(&pEnc->current->image,
1445                          pEnc->mbParam.edged_width, pEnc->mbParam.edged_height,                          pEnc->mbParam.edged_width, pEnc->mbParam.edged_height,
1446                          pEnc->mbParam.width, pEnc->mbParam.height);                          pEnc->mbParam.width, pEnc->mbParam.height, 0);
1447                  stop_edges_timer();                  stop_edges_timer();
1448          }          }
1449    
# Line 1449  Line 1455 
1455    
1456          SetMacroblockQuants(&pEnc->mbParam, pEnc->current);          SetMacroblockQuants(&pEnc->mbParam, pEnc->current);
1457    
1458          BitstreamWriteVolHeader(bs, &pEnc->mbParam);          BitstreamWriteVolHeader(bs, &pEnc->mbParam, pEnc->current);
1459    
1460          set_timecodes(pEnc->current,pEnc->reference,pEnc->mbParam.fbase);          set_timecodes(pEnc->current,pEnc->reference,pEnc->mbParam.fbase);
1461    
# Line 1548  Line 1554 
1554          if (!reference->is_edged) {          if (!reference->is_edged) {
1555                  start_timer();                  start_timer();
1556                  image_setedges(pRef, pParam->edged_width, pParam->edged_height,                  image_setedges(pRef, pParam->edged_width, pParam->edged_height,
1557                                             pParam->width, pParam->height);                                             pParam->width, pParam->height, 0);
1558                  stop_edges_timer();                  stop_edges_timer();
1559                  reference->is_edged = 1;                  reference->is_edged = 1;
1560          }          }
# Line 1644  Line 1650 
1650    
1651          set_timecodes(current,reference,pParam->fbase);          set_timecodes(current,reference,pParam->fbase);
1652          if (vol_header)          if (vol_header)
1653          {       BitstreamWriteVolHeader(bs, &pEnc->mbParam);          {       BitstreamWriteVolHeader(bs, &pEnc->mbParam, current);
1654                  BitstreamPad(bs);                  BitstreamPad(bs);
1655          }          }
1656    
# Line 1946  Line 1952 
1952          if (!pEnc->reference->is_edged) {          if (!pEnc->reference->is_edged) {
1953                  image_setedges(f_ref, pEnc->mbParam.edged_width,                  image_setedges(f_ref, pEnc->mbParam.edged_width,
1954                                             pEnc->mbParam.edged_height, pEnc->mbParam.width,                                             pEnc->mbParam.edged_height, pEnc->mbParam.width,
1955                                             pEnc->mbParam.height);                                             pEnc->mbParam.height, 0);
1956                  pEnc->current->is_edged = 1;                  pEnc->current->is_edged = 1;
1957          }          }
1958    
# Line 1963  Line 1969 
1969          if (!pEnc->current->is_edged) {          if (!pEnc->current->is_edged) {
1970                  image_setedges(b_ref, pEnc->mbParam.edged_width,                  image_setedges(b_ref, pEnc->mbParam.edged_width,
1971                                             pEnc->mbParam.edged_height, pEnc->mbParam.width,                                             pEnc->mbParam.edged_height, pEnc->mbParam.width,
1972                                             pEnc->mbParam.height);                                             pEnc->mbParam.height, 0);
1973                  pEnc->current->is_edged = 1;                  pEnc->current->is_edged = 1;
1974          }          }
1975    

Legend:
Removed from v.1.95.2.59  
changed lines
  Added in v.1.95.2.65

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