# HG changeset patch # User michael # Date 1152032803 0 # Node ID 584ff64310436833af33cc4f4f3920c2ae3b9df5 # Parent 73c648ae1c74a6fc3ed2d5d98b252a6ef7dee9c2 simplify intra prediction mode decoding diff -r 73c648ae1c74 -r 584ff6431043 cavs.c --- a/cavs.c Tue Jul 04 16:42:22 2006 +0000 +++ b/cavs.c Tue Jul 04 17:06:43 2006 +0000 @@ -885,17 +885,14 @@ nA = h->pred_mode_Y[pos-1]; nB = h->pred_mode_Y[pos-3]; - if((nA == NOT_AVAIL) || (nB == NOT_AVAIL)) - predpred = 2; - else - predpred = FFMIN(nA,nB); - if(get_bits1(gb)) - h->pred_mode_Y[pos] = predpred; - else { - h->pred_mode_Y[pos] = get_bits(gb,2); - if(h->pred_mode_Y[pos] >= predpred) - h->pred_mode_Y[pos]++; + predpred = FFMIN(nA,nB); + if(predpred == NOT_AVAIL) // if either is not available + predpred = INTRA_L_LP; + if(!get_bits1(gb)){ + int rem_mode= get_bits(gb, 2); + predpred = rem_mode + (rem_mode >= predpred); } + h->pred_mode_Y[pos] = predpred; } pred_mode_uv = get_ue_golomb(gb); if(pred_mode_uv > 6) { diff -r 73c648ae1c74 -r 584ff6431043 h264.c --- a/h264.c Tue Jul 04 16:42:22 2006 +0000 +++ b/h264.c Tue Jul 04 17:06:43 2006 +0000 @@ -5258,18 +5258,11 @@ // fill_intra4x4_pred_table(h); for(i=0; i<16; i+=di){ - const int mode_coded= !get_bits1(&s->gb); - const int predicted_mode= pred_intra_mode(h, i); - int mode; - - if(mode_coded){ + int mode= pred_intra_mode(h, i); + + if(!get_bits1(&s->gb)){ const int rem_mode= get_bits(&s->gb, 3); - if(rem_mode= mode); } if(di==4)