Mercurial > libavcodec.hg
comparison h264_cabac.c @ 11201:4e2d74d7bad8 libavcodec
Speedup decode_cabac_field_decoding_flag() by 9 cpu cycles.
author | michael |
---|---|
date | Thu, 18 Feb 2010 12:13:21 +0000 |
parents | 5e583a785508 |
children | cb29d50bf6d4 |
comparison
equal
deleted
inserted
replaced
11200:cd8a77473dd1 | 11201:4e2d74d7bad8 |
---|---|
705 } | 705 } |
706 } | 706 } |
707 | 707 |
708 static int decode_cabac_field_decoding_flag(H264Context *h) { | 708 static int decode_cabac_field_decoding_flag(H264Context *h) { |
709 MpegEncContext * const s = &h->s; | 709 MpegEncContext * const s = &h->s; |
710 const long mba_xy = h->mb_xy - 1L; | |
711 const long mbb_xy = h->mb_xy - 2L*s->mb_stride; | 710 const long mbb_xy = h->mb_xy - 2L*s->mb_stride; |
712 | 711 |
713 unsigned long ctx = 0; | 712 unsigned long ctx = 0; |
714 | 713 |
715 ctx += (s->current_picture.mb_type[mba_xy]>>7)&(h->slice_table[mba_xy] == h->slice_num); | 714 ctx += h->mb_field_decoding_flag & !!s->mb_x; //for FMO:(s->current_picture.mb_type[mba_xy]>>7)&(h->slice_table[mba_xy] == h->slice_num); |
716 ctx += (s->current_picture.mb_type[mbb_xy]>>7)&(h->slice_table[mbb_xy] == h->slice_num); | 715 ctx += (s->current_picture.mb_type[mbb_xy]>>7)&(h->slice_table[mbb_xy] == h->slice_num); |
717 | 716 |
718 return get_cabac_noinline( &h->cabac, &(h->cabac_state+70)[ctx] ); | 717 return get_cabac_noinline( &h->cabac, &(h->cabac_state+70)[ctx] ); |
719 } | 718 } |
720 | 719 |