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

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

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

revision 886, Fri Feb 21 14:49:29 2003 UTC revision 890, Sat Feb 22 08:49:45 2003 UTC
# Line 83  Line 83 
83    
84          uint32_t stride = pParam->edged_width;          uint32_t stride = pParam->edged_width;
85          uint32_t stride2 = stride / 2;          uint32_t stride2 = stride / 2;
86          uint32_t next_block = stride * ((frame->global_flags & XVID_REDUCED)?16:8);          uint32_t next_block = stride * ((frame->vop_flags & XVID_REDUCED)?16:8);
87          uint32_t i;          uint32_t i;
88          uint32_t iQuant = frame->quant;          uint32_t iQuant = frame->quant;
89          uint8_t *pY_Cur, *pU_Cur, *pV_Cur;          uint8_t *pY_Cur, *pU_Cur, *pV_Cur;
90          IMAGE *pCurrent = &frame->image;          IMAGE *pCurrent = &frame->image;
91    
92          start_timer();          start_timer();
93          if ((frame->global_flags & XVID_REDUCED))          if ((frame->vop_flags & XVID_REDUCED))
94          {          {
95                  pY_Cur = pCurrent->y + (y_pos << 5) * stride + (x_pos << 5);                  pY_Cur = pCurrent->y + (y_pos << 5) * stride + (x_pos << 5);
96                  pU_Cur = pCurrent->u + (y_pos << 4) * stride2 + (x_pos << 4);                  pU_Cur = pCurrent->u + (y_pos << 4) * stride2 + (x_pos << 4);
# Line 119  Line 119 
119          /* XXX: rrv+interlacing is buggy */          /* XXX: rrv+interlacing is buggy */
120          start_timer();          start_timer();
121          pMB->field_dct = 0;          pMB->field_dct = 0;
122          if ((frame->global_flags & XVID_INTERLACING) &&          if ((frame->vol_flags & XVID_INTERLACING) &&
123                  (x_pos>0) && (x_pos<pParam->mb_width-1) &&                  (x_pos>0) && (x_pos<pParam->mb_width-1) &&
124                  (y_pos>0) && (y_pos<pParam->mb_height-1)) {                  (y_pos>0) && (y_pos<pParam->mb_height-1)) {
125                  pMB->field_dct = MBDecideFieldDCT(data);                  pMB->field_dct = MBDecideFieldDCT(data);
# Line 133  Line 133 
133                  fdct(&data[i * 64]);                  fdct(&data[i * 64]);
134                  stop_dct_timer();                  stop_dct_timer();
135    
136                  if (pParam->m_quant_type == H263_QUANT) {                  if (!(pParam->vol_flags & XVID_MPEGQUANT)) {
137                          start_timer();                          start_timer();
138                          quant_intra(&qcoeff[i * 64], &data[i * 64], iQuant, iDcScaler);                          quant_intra(&qcoeff[i * 64], &data[i * 64], iQuant, iDcScaler);
139                          stop_quant_timer();                          stop_quant_timer();
# Line 146  Line 146 
146                  /* speedup: dont decode when encoding only ivops */                  /* speedup: dont decode when encoding only ivops */
147                  if (pParam->iMaxKeyInterval != 1 || pParam->max_bframes > 0)                  if (pParam->iMaxKeyInterval != 1 || pParam->max_bframes > 0)
148                  {                  {
149                          if (pParam->m_quant_type == H263_QUANT) {                          if (!(pParam->vol_flags & XVID_MPEGQUANT)) {
150                                  start_timer();                                  start_timer();
151                                  dequant_intra(&data[i * 64], &qcoeff[i * 64], iQuant, iDcScaler);                                  dequant_intra(&data[i * 64], &qcoeff[i * 64], iQuant, iDcScaler);
152                                  stop_iquant_timer();                                  stop_iquant_timer();
# Line 172  Line 172 
172                  }                  }
173    
174                  start_timer();                  start_timer();
175                  if ((frame->global_flags & XVID_REDUCED))                  if ((frame->vop_flags & XVID_REDUCED))
176                  {                  {
177                          copy_upsampled_8x8_16to8(pY_Cur, &data[0 * 64], stride);                          copy_upsampled_8x8_16to8(pY_Cur, &data[0 * 64], stride);
178                          copy_upsampled_8x8_16to8(pY_Cur + 16, &data[1 * 64], stride);                          copy_upsampled_8x8_16to8(pY_Cur + 16, &data[1 * 64], stride);
# Line 207  Line 207 
207    
208          uint32_t stride = pParam->edged_width;          uint32_t stride = pParam->edged_width;
209          uint32_t stride2 = stride / 2;          uint32_t stride2 = stride / 2;
210          uint32_t next_block = stride * ((frame->global_flags & XVID_REDUCED)?16:8);          uint32_t next_block = stride * ((frame->vop_flags & XVID_REDUCED)?16:8);
211          uint32_t i;          uint32_t i;
212          uint32_t iQuant = frame->quant;          uint32_t iQuant = frame->quant;
213          uint8_t *pY_Cur, *pU_Cur, *pV_Cur;          uint8_t *pY_Cur, *pU_Cur, *pV_Cur;
# Line 215  Line 215 
215          uint32_t sum;          uint32_t sum;
216          IMAGE *pCurrent = &frame->image;          IMAGE *pCurrent = &frame->image;
217    
218          if ((frame->global_flags & XVID_REDUCED))          if ((frame->vop_flags & XVID_REDUCED))
219          {          {
220                  pY_Cur = pCurrent->y + (y_pos << 5) * stride + (x_pos << 5);                  pY_Cur = pCurrent->y + (y_pos << 5) * stride + (x_pos << 5);
221                  pU_Cur = pCurrent->u + (y_pos << 4) * stride2 + (x_pos << 4);                  pU_Cur = pCurrent->u + (y_pos << 4) * stride2 + (x_pos << 4);
# Line 228  Line 228 
228    
229          start_timer();          start_timer();
230          pMB->field_dct = 0;          pMB->field_dct = 0;
231          if ((frame->global_flags & XVID_INTERLACING) &&          if ((frame->vol_flags & XVID_INTERLACING) &&
232                  (x_pos>0) && (x_pos<pParam->mb_width-1) &&                  (x_pos>0) && (x_pos<pParam->mb_width-1) &&
233                  (y_pos>0) && (y_pos<pParam->mb_height-1)) {                  (y_pos>0) && (y_pos<pParam->mb_height-1)) {
234                  pMB->field_dct = MBDecideFieldDCT(data);                  pMB->field_dct = MBDecideFieldDCT(data);
# Line 246  Line 246 
246                  fdct(&data[i * 64]);                  fdct(&data[i * 64]);
247                  stop_dct_timer();                  stop_dct_timer();
248    
249                  if (pParam->m_quant_type == 0) {                  if (!(pParam->vol_flags & XVID_MPEGQUANT)) {
250                          start_timer();                          start_timer();
251                          sum = quant_inter(&qcoeff[i * 64], &data[i * 64], iQuant);                          sum = quant_inter(&qcoeff[i * 64], &data[i * 64], iQuant);
252                          stop_quant_timer();                          stop_quant_timer();
# Line 259  Line 259 
259                  if ((sum >= TOOSMALL_LIMIT + increase_limit) || (qcoeff[i*64] != 0) ||                  if ((sum >= TOOSMALL_LIMIT + increase_limit) || (qcoeff[i*64] != 0) ||
260                          (qcoeff[i*64+1] != 0) || (qcoeff[i*64+8] != 0)) {                          (qcoeff[i*64+1] != 0) || (qcoeff[i*64+8] != 0)) {
261    
262                          if (pParam->m_quant_type == H263_QUANT) {                          if (!(pParam->vol_flags & XVID_MPEGQUANT)) {
263                                  start_timer();                                  start_timer();
264                                  dequant_inter(&data[i * 64], &qcoeff[i * 64], iQuant);                                  dequant_inter(&data[i * 64], &qcoeff[i * 64], iQuant);
265                                  stop_iquant_timer();                                  stop_iquant_timer();
# Line 283  Line 283 
283          }          }
284    
285          start_timer();          start_timer();
286          if ((frame->global_flags & XVID_REDUCED))          if ((frame->vop_flags & XVID_REDUCED))
287          {          {
288                  if (cbp & 32)                  if (cbp & 32)
289                          add_upsampled_8x8_16to8(pY_Cur, &data[0 * 64], stride);                          add_upsampled_8x8_16to8(pY_Cur, &data[0 * 64], stride);
# Line 387  Line 387 
387    
388          start_timer();          start_timer();
389          pMB->field_dct = 0;          pMB->field_dct = 0;
390          if ((frame->global_flags & XVID_INTERLACING)) {          if ((frame->vol_flags & XVID_INTERLACING)) {
391                  pMB->field_dct = MBDecideFieldDCT(data);                  pMB->field_dct = MBDecideFieldDCT(data);
392          }          }
393          stop_interlacing_timer();          stop_interlacing_timer();
# Line 411  Line 411 
411    
412          start_timer();          start_timer();
413          pMB->field_dct = 0;          pMB->field_dct = 0;
414          if ((frame->global_flags & XVID_INTERLACING)) {          if ((frame->vol_flags & XVID_INTERLACING)) {
415                  pMB->field_dct = MBDecideFieldDCT(data);                  pMB->field_dct = MBDecideFieldDCT(data);
416          }          }
417          stop_interlacing_timer();          stop_interlacing_timer();
# Line 419  Line 419 
419          for (i = 0; i < 6; i++) {          for (i = 0; i < 6; i++) {
420                  uint32_t iDcScaler = get_dc_scaler(iQuant, i < 4);                  uint32_t iDcScaler = get_dc_scaler(iQuant, i < 4);
421    
422                  if (pParam->m_quant_type == H263_QUANT) {                  if (!(pParam->vol_flags & XVID_MPEGQUANT)) {
423                          start_timer();                          start_timer();
424                          quant_intra(&qcoeff[i * 64], &data[i * 64], iQuant, iDcScaler);                          quant_intra(&qcoeff[i * 64], &data[i * 64], iQuant, iDcScaler);
425                          stop_quant_timer();                          stop_quant_timer();
# Line 451  Line 451 
451    
452          start_timer();          start_timer();
453          pMB->field_dct = 0;          pMB->field_dct = 0;
454          if ((frame->global_flags & XVID_INTERLACING)) {          if ((frame->vol_flags & XVID_INTERLACING)) {
455                  pMB->field_dct = MBDecideFieldDCT(data);                  pMB->field_dct = MBDecideFieldDCT(data);
456          }          }
457          stop_interlacing_timer();          stop_interlacing_timer();
# Line 459  Line 459 
459          for (i = 0; i < 6; i++) {          for (i = 0; i < 6; i++) {
460                  uint32_t iDcScaler = get_dc_scaler(iQuant, i < 4);                  uint32_t iDcScaler = get_dc_scaler(iQuant, i < 4);
461    
462                  if (pParam->m_quant_type == H263_QUANT) {                  if (!(pParam->vol_flags & XVID_MPEGQUANT)) {
463                          start_timer();                          start_timer();
464                          quant_intra(&qcoeff[i * 64], &data[i * 64], iQuant, iDcScaler);                          quant_intra(&qcoeff[i * 64], &data[i * 64], iQuant, iDcScaler);
465                          stop_quant_timer();                          stop_quant_timer();
# Line 482  Line 482 
482          for (i = 0; i < 6; i++) {          for (i = 0; i < 6; i++) {
483                  uint32_t iDcScaler = get_dc_scaler(iQuant, i < 4);                  uint32_t iDcScaler = get_dc_scaler(iQuant, i < 4);
484    
485                  if (pParam->m_quant_type == H263_QUANT) {                  if (!(pParam->vol_flags & XVID_MPEGQUANT)) {
486                          start_timer();                          start_timer();
487                          dequant_intra(&data[i * 64], &qcoeff[i * 64], iQuant, iDcScaler);                          dequant_intra(&data[i * 64], &qcoeff[i * 64], iQuant, iDcScaler);
488                          stop_iquant_timer();                          stop_iquant_timer();
# Line 507  Line 507 
507    
508          for (i = 0; i < 6; i++) {          for (i = 0; i < 6; i++) {
509    
510                  if (pParam->m_quant_type == 0) {                  if (!(pParam->vol_flags & XVID_MPEGQUANT)) {
511                          start_timer();                          start_timer();
512                          sum = quant_inter(&qcoeff[i * 64], &data[i * 64], iQuant);                          sum = quant_inter(&qcoeff[i * 64], &data[i * 64], iQuant);
513                          stop_quant_timer();                          stop_quant_timer();
# Line 536  Line 536 
536          for (i = 0; i < 6; i++) {          for (i = 0; i < 6; i++) {
537                  if (cbp & (1 << (5 - i)))                  if (cbp & (1 << (5 - i)))
538                  {                  {
539                          if (pParam->m_quant_type == H263_QUANT) {                          if (!(pParam->vol_flags & XVID_MPEGQUANT)) {
540                                  start_timer();                                  start_timer();
541                                  dequant_inter(&data[i * 64], &qcoeff[i * 64], iQuant);                                  dequant_inter(&data[i * 64], &qcoeff[i * 64], iQuant);
542                                  stop_iquant_timer();                                  stop_iquant_timer();

Legend:
Removed from v.886  
changed lines
  Added in v.890

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