Mercurial > libavcodec.hg
comparison cavs.c @ 3409:584ff6431043 libavcodec
simplify intra prediction mode decoding
author | michael |
---|---|
date | Tue, 04 Jul 2006 17:06:43 +0000 |
parents | 73c648ae1c74 |
children | 3b72265410f3 |
comparison
equal
deleted
inserted
replaced
3408:73c648ae1c74 | 3409:584ff6431043 |
---|---|
883 int nA,nB,predpred; | 883 int nA,nB,predpred; |
884 int pos = scan3x3[block]; | 884 int pos = scan3x3[block]; |
885 | 885 |
886 nA = h->pred_mode_Y[pos-1]; | 886 nA = h->pred_mode_Y[pos-1]; |
887 nB = h->pred_mode_Y[pos-3]; | 887 nB = h->pred_mode_Y[pos-3]; |
888 if((nA == NOT_AVAIL) || (nB == NOT_AVAIL)) | 888 predpred = FFMIN(nA,nB); |
889 predpred = 2; | 889 if(predpred == NOT_AVAIL) // if either is not available |
890 else | 890 predpred = INTRA_L_LP; |
891 predpred = FFMIN(nA,nB); | 891 if(!get_bits1(gb)){ |
892 if(get_bits1(gb)) | 892 int rem_mode= get_bits(gb, 2); |
893 h->pred_mode_Y[pos] = predpred; | 893 predpred = rem_mode + (rem_mode >= predpred); |
894 else { | 894 } |
895 h->pred_mode_Y[pos] = get_bits(gb,2); | 895 h->pred_mode_Y[pos] = predpred; |
896 if(h->pred_mode_Y[pos] >= predpred) | |
897 h->pred_mode_Y[pos]++; | |
898 } | |
899 } | 896 } |
900 pred_mode_uv = get_ue_golomb(gb); | 897 pred_mode_uv = get_ue_golomb(gb); |
901 if(pred_mode_uv > 6) { | 898 if(pred_mode_uv > 6) { |
902 av_log(h->s.avctx, AV_LOG_ERROR, "illegal intra chroma pred mode\n"); | 899 av_log(h->s.avctx, AV_LOG_ERROR, "illegal intra chroma pred mode\n"); |
903 pred_mode_uv = 0; | 900 pred_mode_uv = 0; |