comparison mpegvideo.c @ 487:cee02f2f4a5a libavcodec

grayscale only encoding
author michaelni
date Sun, 09 Jun 2002 14:04:36 +0000
parents 20108840b0e5
children 8b7a54d58549
comparison
equal deleted inserted replaced
486:fde314e1aaa1 487:cee02f2f4a5a
1419 get_pixels(s->block[0], ptr , wrap); 1419 get_pixels(s->block[0], ptr , wrap);
1420 get_pixels(s->block[1], ptr + 8, wrap); 1420 get_pixels(s->block[1], ptr + 8, wrap);
1421 get_pixels(s->block[2], ptr + 8 * wrap , wrap); 1421 get_pixels(s->block[2], ptr + 8 * wrap , wrap);
1422 get_pixels(s->block[3], ptr + 8 * wrap + 8, wrap); 1422 get_pixels(s->block[3], ptr + 8 * wrap + 8, wrap);
1423 1423
1424 wrap >>=1; 1424 if(s->flags&CODEC_FLAG_GRAY){
1425 ptr = s->new_picture[1] + (mb_y * 8 * wrap) + mb_x * 8; 1425 skip_dct[4]= 1;
1426 get_pixels(s->block[4], ptr, wrap); 1426 skip_dct[5]= 1;
1427 1427 }else{
1428 ptr = s->new_picture[2] + (mb_y * 8 * wrap) + mb_x * 8; 1428 wrap >>=1;
1429 get_pixels(s->block[5], ptr, wrap); 1429 ptr = s->new_picture[1] + (mb_y * 8 * wrap) + mb_x * 8;
1430 get_pixels(s->block[4], ptr, wrap);
1431
1432 ptr = s->new_picture[2] + (mb_y * 8 * wrap) + mb_x * 8;
1433 get_pixels(s->block[5], ptr, wrap);
1434 }
1430 }else{ 1435 }else{
1431 op_pixels_func *op_pix; 1436 op_pixels_func *op_pix;
1432 qpel_mc_func *op_qpix; 1437 qpel_mc_func *op_qpix;
1433 UINT8 *dest_y, *dest_cb, *dest_cr; 1438 UINT8 *dest_y, *dest_cb, *dest_cr;
1434 UINT8 *ptr_y, *ptr_cb, *ptr_cr; 1439 UINT8 *ptr_y, *ptr_cb, *ptr_cr;
1464 1469
1465 diff_pixels(s->block[0], ptr_y , dest_y , wrap_y); 1470 diff_pixels(s->block[0], ptr_y , dest_y , wrap_y);
1466 diff_pixels(s->block[1], ptr_y + 8, dest_y + 8, wrap_y); 1471 diff_pixels(s->block[1], ptr_y + 8, dest_y + 8, wrap_y);
1467 diff_pixels(s->block[2], ptr_y + 8 * wrap_y , dest_y + 8 * wrap_y , wrap_y); 1472 diff_pixels(s->block[2], ptr_y + 8 * wrap_y , dest_y + 8 * wrap_y , wrap_y);
1468 diff_pixels(s->block[3], ptr_y + 8 * wrap_y + 8, dest_y + 8 * wrap_y + 8, wrap_y); 1473 diff_pixels(s->block[3], ptr_y + 8 * wrap_y + 8, dest_y + 8 * wrap_y + 8, wrap_y);
1469 diff_pixels(s->block[4], ptr_cb, dest_cb, wrap_c); 1474
1470 diff_pixels(s->block[5], ptr_cr, dest_cr, wrap_c); 1475 if(s->flags&CODEC_FLAG_GRAY){
1471 1476 skip_dct[4]= 1;
1477 skip_dct[5]= 1;
1478 }else{
1479 diff_pixels(s->block[4], ptr_cb, dest_cb, wrap_c);
1480 diff_pixels(s->block[5], ptr_cr, dest_cr, wrap_c);
1481 }
1482
1472 /* pre quantization */ 1483 /* pre quantization */
1473 if(s->mc_mb_var[s->mb_width*mb_y+ mb_x]<2*s->qscale*s->qscale){ 1484 if(s->mc_mb_var[s->mb_width*mb_y+ mb_x]<2*s->qscale*s->qscale){
1474 if(pix_abs8x8(ptr_y , dest_y , wrap_y) < 20*s->qscale) skip_dct[0]= 1; 1485 if(pix_abs8x8(ptr_y , dest_y , wrap_y) < 20*s->qscale) skip_dct[0]= 1;
1475 if(pix_abs8x8(ptr_y + 8, dest_y + 8, wrap_y) < 20*s->qscale) skip_dct[1]= 1; 1486 if(pix_abs8x8(ptr_y + 8, dest_y + 8, wrap_y) < 20*s->qscale) skip_dct[1]= 1;
1476 if(pix_abs8x8(ptr_y + 8*wrap_y , dest_y + 8*wrap_y , wrap_y) < 20*s->qscale) skip_dct[2]= 1; 1487 if(pix_abs8x8(ptr_y + 8*wrap_y , dest_y + 8*wrap_y , wrap_y) < 20*s->qscale) skip_dct[2]= 1;
1542 for(i=0; i<4; i++) 1553 for(i=0; i<4; i++)
1543 dct_single_coeff_elimination(s, i, s->luma_elim_threshold, 0); 1554 dct_single_coeff_elimination(s, i, s->luma_elim_threshold, 0);
1544 if(s->chroma_elim_threshold && !s->mb_intra) 1555 if(s->chroma_elim_threshold && !s->mb_intra)
1545 for(i=4; i<6; i++) 1556 for(i=4; i<6; i++)
1546 dct_single_coeff_elimination(s, i, s->chroma_elim_threshold, 1); 1557 dct_single_coeff_elimination(s, i, s->chroma_elim_threshold, 1);
1558 }
1559
1560 if((s->flags&CODEC_FLAG_GRAY) && s->mb_intra){
1561 s->block_last_index[4]=
1562 s->block_last_index[5]= 0;
1563 s->block[4][0]=
1564 s->block[5][0]= 128;
1547 } 1565 }
1548 1566
1549 /* huffman encode */ 1567 /* huffman encode */
1550 switch(s->out_format) { 1568 switch(s->out_format) {
1551 case FMT_MPEG1: 1569 case FMT_MPEG1: