Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(121)

Side by Side Diff: patched-ffmpeg-mt/libavcodec/dv.c

Issue 789004: ffmpeg roll of source to mar 9 version... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/ffmpeg/
Patch Set: '' Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * DV decoder 2 * DV decoder
3 * Copyright (c) 2002 Fabrice Bellard 3 * Copyright (c) 2002 Fabrice Bellard
4 * Copyright (c) 2004 Roman Shaposhnik 4 * Copyright (c) 2004 Roman Shaposhnik
5 * 5 *
6 * DV encoder 6 * DV encoder
7 * Copyright (c) 2003 Roman Shaposhnik 7 * Copyright (c) 2003 Roman Shaposhnik
8 * 8 *
9 * 50 Mbps (DVCPRO50) support 9 * 50 Mbps (DVCPRO50) support
10 * Copyright (c) 2006 Daniel Maas <dmaas@maasdigital.com> 10 * Copyright (c) 2006 Daniel Maas <dmaas@maasdigital.com>
(...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 int quant, dc, dct_mode, class1, j; 525 int quant, dc, dct_mode, class1, j;
526 int mb_index, mb_x, mb_y, last_index; 526 int mb_index, mb_x, mb_y, last_index;
527 int y_stride, linesize; 527 int y_stride, linesize;
528 DCTELEM *block, *block1; 528 DCTELEM *block, *block1;
529 int c_offset; 529 int c_offset;
530 uint8_t *y_ptr; 530 uint8_t *y_ptr;
531 const uint8_t *buf_ptr; 531 const uint8_t *buf_ptr;
532 PutBitContext pb, vs_pb; 532 PutBitContext pb, vs_pb;
533 GetBitContext gb; 533 GetBitContext gb;
534 BlockInfo mb_data[5 * DV_MAX_BPM], *mb, *mb1; 534 BlockInfo mb_data[5 * DV_MAX_BPM], *mb, *mb1;
535 DECLARE_ALIGNED_16(DCTELEM, sblock)[5*DV_MAX_BPM][64]; 535 LOCAL_ALIGNED_16(DCTELEM, sblock, [5*DV_MAX_BPM], [64]);
536 DECLARE_ALIGNED_16(uint8_t, mb_bit_buffer)[80 + 4]; /* allow some slack */ 536 LOCAL_ALIGNED_16(uint8_t, mb_bit_buffer, [80 + 4]); /* allow some slack */
537 DECLARE_ALIGNED_16(uint8_t, vs_bit_buffer)[5 * 80 + 4]; /* allow some slack */ 537 LOCAL_ALIGNED_16(uint8_t, vs_bit_buffer, [5 * 80 + 4]); /* allow some slack */
538 const int log2_blocksize = 3-s->avctx->lowres; 538 const int log2_blocksize = 3-s->avctx->lowres;
539 int is_field_mode[5]; 539 int is_field_mode[5];
540 540
541 assert((((int)mb_bit_buffer) & 7) == 0); 541 assert((((int)mb_bit_buffer) & 7) == 0);
542 assert((((int)vs_bit_buffer) & 7) == 0); 542 assert((((int)vs_bit_buffer) & 7) == 0);
543 543
544 memset(sblock, 0, sizeof(sblock)); 544 memset(sblock, 0, 5*DV_MAX_BPM*sizeof(*sblock));
545 545
546 /* pass 1 : read DC and AC coefficients in blocks */ 546 /* pass 1 : read DC and AC coefficients in blocks */
547 buf_ptr = &s->buf[work_chunk->buf_offset*80]; 547 buf_ptr = &s->buf[work_chunk->buf_offset*80];
548 block1 = &sblock[0][0]; 548 block1 = &sblock[0][0];
549 mb1 = mb_data; 549 mb1 = mb_data;
550 init_put_bits(&vs_pb, vs_bit_buffer, 5 * 80); 550 init_put_bits(&vs_pb, vs_bit_buffer, 5 * 80);
551 for (mb_index = 0; mb_index < 5; mb_index++, mb1 += s->sys->bpm, block1 += s ->sys->bpm * 64) { 551 for (mb_index = 0; mb_index < 5; mb_index++, mb1 += s->sys->bpm, block1 += s ->sys->bpm * 64) {
552 /* skip header */ 552 /* skip header */
553 quant = buf_ptr[3] & 0x0f; 553 quant = buf_ptr[3] & 0x0f;
554 buf_ptr += 4; 554 buf_ptr += 4;
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 } 826 }
827 } 827 }
828 828
829 return 0; 829 return 0;
830 } 830 }
831 831
832 static av_always_inline int dv_init_enc_block(EncBlockInfo* bi, uint8_t *data, i nt linesize, DVVideoContext *s, int bias) 832 static av_always_inline int dv_init_enc_block(EncBlockInfo* bi, uint8_t *data, i nt linesize, DVVideoContext *s, int bias)
833 { 833 {
834 const int *weight; 834 const int *weight;
835 const uint8_t* zigzag_scan; 835 const uint8_t* zigzag_scan;
836 DECLARE_ALIGNED_16(DCTELEM, blk)[64]; 836 LOCAL_ALIGNED_16(DCTELEM, blk, [64]);
837 int i, area; 837 int i, area;
838 /* We offer two different methods for class number assignment: the 838 /* We offer two different methods for class number assignment: the
839 method suggested in SMPTE 314M Table 22, and an improved 839 method suggested in SMPTE 314M Table 22, and an improved
840 method. The SMPTE method is very conservative; it assigns class 840 method. The SMPTE method is very conservative; it assigns class
841 3 (i.e. severe quantization) to any block where the largest AC 841 3 (i.e. severe quantization) to any block where the largest AC
842 component is greater than 36. FFmpeg's DV encoder tracks AC bit 842 component is greater than 36. FFmpeg's DV encoder tracks AC bit
843 consumption precisely, so there is no need to bias most blocks 843 consumption precisely, so there is no need to bias most blocks
844 towards strongly lossy compression. Instead, we assign class 2 844 towards strongly lossy compression. Instead, we assign class 2
845 to most blocks, and use class 3 only when strictly necessary 845 to most blocks, and use class 3 only when strictly necessary
846 (for blocks whose largest AC component exceeds 255). */ 846 (for blocks whose largest AC component exceeds 255). */
(...skipping 12 matching lines...) Expand all
859 bi->partial_bit_count = 0; 859 bi->partial_bit_count = 0;
860 bi->partial_bit_buffer = 0; 860 bi->partial_bit_buffer = 0;
861 bi->cur_ac = 0; 861 bi->cur_ac = 0;
862 if (data) { 862 if (data) {
863 bi->dct_mode = dv_guess_dct_mode(s, data, linesize); 863 bi->dct_mode = dv_guess_dct_mode(s, data, linesize);
864 s->get_pixels(blk, data, linesize); 864 s->get_pixels(blk, data, linesize);
865 s->fdct[bi->dct_mode](blk); 865 s->fdct[bi->dct_mode](blk);
866 } else { 866 } else {
867 /* We rely on the fact that encoding all zeros leads to an immediate EOB , 867 /* We rely on the fact that encoding all zeros leads to an immediate EOB ,
868 which is precisely what the spec calls for in the "dummy" blocks. */ 868 which is precisely what the spec calls for in the "dummy" blocks. */
869 memset(blk, 0, sizeof(blk)); 869 memset(blk, 0, 64*sizeof(*blk));
870 bi->dct_mode = 0; 870 bi->dct_mode = 0;
871 } 871 }
872 bi->mb[0] = blk[0]; 872 bi->mb[0] = blk[0];
873 873
874 zigzag_scan = bi->dct_mode ? ff_zigzag248_direct : ff_zigzag_direct; 874 zigzag_scan = bi->dct_mode ? ff_zigzag248_direct : ff_zigzag_direct;
875 weight = bi->dct_mode ? dv_weight_248 : dv_weight_88; 875 weight = bi->dct_mode ? dv_weight_248 : dv_weight_88;
876 876
877 for (area = 0; area < 4; area++) { 877 for (area = 0; area < 4; area++) {
878 bi->prev[area] = prev; 878 bi->prev[area] = prev;
879 bi->bit_size[area] = 1; // 4 areas 4 bits for EOB :) 879 bi->bit_size[area] = 1; // 4 areas 4 bits for EOB :)
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after
1352 sizeof(DVVideoContext), 1352 sizeof(DVVideoContext),
1353 dvvideo_init, 1353 dvvideo_init,
1354 NULL, 1354 NULL,
1355 dvvideo_close, 1355 dvvideo_close,
1356 dvvideo_decode_frame, 1356 dvvideo_decode_frame,
1357 CODEC_CAP_DR1, 1357 CODEC_CAP_DR1,
1358 NULL, 1358 NULL,
1359 .long_name = NULL_IF_CONFIG_SMALL("DV (Digital Video)"), 1359 .long_name = NULL_IF_CONFIG_SMALL("DV (Digital Video)"),
1360 }; 1360 };
1361 #endif 1361 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698