Mercurial > libavcodec.hg
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: |