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;