Mercurial > libavcodec.hg
comparison h264.c @ 11282:cf41a3e8e14e libavcodec
Keep mvd_table values of only 2 mb rows.
author | michael |
---|---|
date | Thu, 25 Feb 2010 02:42:25 +0000 |
parents | c12d6c6c027e |
children | 853e93a50fe5 |
comparison
equal
deleted
inserted
replaced
11281:11fb96e94573 | 11282:cf41a3e8e14e |
---|---|
661 av_freep(&h->slice_table_base); | 661 av_freep(&h->slice_table_base); |
662 h->slice_table= NULL; | 662 h->slice_table= NULL; |
663 av_freep(&h->list_counts); | 663 av_freep(&h->list_counts); |
664 | 664 |
665 av_freep(&h->mb2b_xy); | 665 av_freep(&h->mb2b_xy); |
666 av_freep(&h->mb2br_xy); | |
666 av_freep(&h->mb2b8_xy); | 667 av_freep(&h->mb2b8_xy); |
667 | 668 |
668 for(i = 0; i < MAX_THREADS; i++) { | 669 for(i = 0; i < MAX_THREADS; i++) { |
669 hx = h->thread_context[i]; | 670 hx = h->thread_context[i]; |
670 if(!hx) continue; | 671 if(!hx) continue; |
763 | 764 |
764 memset(h->slice_table_base, -1, (big_mb_num+s->mb_stride) * sizeof(*h->slice_table_base)); | 765 memset(h->slice_table_base, -1, (big_mb_num+s->mb_stride) * sizeof(*h->slice_table_base)); |
765 h->slice_table= h->slice_table_base + s->mb_stride*2 + 1; | 766 h->slice_table= h->slice_table_base + s->mb_stride*2 + 1; |
766 | 767 |
767 FF_ALLOCZ_OR_GOTO(h->s.avctx, h->mb2b_xy , big_mb_num * sizeof(uint32_t), fail); | 768 FF_ALLOCZ_OR_GOTO(h->s.avctx, h->mb2b_xy , big_mb_num * sizeof(uint32_t), fail); |
769 FF_ALLOCZ_OR_GOTO(h->s.avctx, h->mb2br_xy , big_mb_num * sizeof(uint32_t), fail); | |
768 FF_ALLOCZ_OR_GOTO(h->s.avctx, h->mb2b8_xy , big_mb_num * sizeof(uint32_t), fail); | 770 FF_ALLOCZ_OR_GOTO(h->s.avctx, h->mb2b8_xy , big_mb_num * sizeof(uint32_t), fail); |
769 for(y=0; y<s->mb_height; y++){ | 771 for(y=0; y<s->mb_height; y++){ |
770 for(x=0; x<s->mb_width; x++){ | 772 for(x=0; x<s->mb_width; x++){ |
771 const int mb_xy= x + y*s->mb_stride; | 773 const int mb_xy= x + y*s->mb_stride; |
772 const int b_xy = 4*x + 4*y*h->b_stride; | 774 const int b_xy = 4*x + 4*y*h->b_stride; |
773 const int b8_xy= 2*x + 2*y*h->b8_stride; | 775 const int b8_xy= 2*x + 2*y*h->b8_stride; |
774 | 776 |
775 h->mb2b_xy [mb_xy]= b_xy; | 777 h->mb2b_xy [mb_xy]= b_xy; |
778 h->mb2br_xy[mb_xy]= FMO ? b_xy : (b_xy % (8*h->b_stride)); | |
776 h->mb2b8_xy[mb_xy]= b8_xy; | 779 h->mb2b8_xy[mb_xy]= b8_xy; |
777 } | 780 } |
778 } | 781 } |
779 | 782 |
780 s->obmc_scratchpad = NULL; | 783 s->obmc_scratchpad = NULL; |
795 dst->intra4x4_pred_mode = src->intra4x4_pred_mode; | 798 dst->intra4x4_pred_mode = src->intra4x4_pred_mode; |
796 dst->non_zero_count = src->non_zero_count; | 799 dst->non_zero_count = src->non_zero_count; |
797 dst->slice_table = src->slice_table; | 800 dst->slice_table = src->slice_table; |
798 dst->cbp_table = src->cbp_table; | 801 dst->cbp_table = src->cbp_table; |
799 dst->mb2b_xy = src->mb2b_xy; | 802 dst->mb2b_xy = src->mb2b_xy; |
803 dst->mb2br_xy = src->mb2br_xy; | |
800 dst->mb2b8_xy = src->mb2b8_xy; | 804 dst->mb2b8_xy = src->mb2b8_xy; |
801 dst->chroma_pred_mode_table = src->chroma_pred_mode_table; | 805 dst->chroma_pred_mode_table = src->chroma_pred_mode_table; |
802 dst->mvd_table[0] = src->mvd_table[0]; | 806 dst->mvd_table[0] = src->mvd_table[0]; |
803 dst->mvd_table[1] = src->mvd_table[1]; | 807 dst->mvd_table[1] = src->mvd_table[1]; |
804 dst->direct_table = src->direct_table; | 808 dst->direct_table = src->direct_table; |