Mercurial > libavcodec.hg
comparison wmv2.c @ 2979:bfabfdf9ce55 libavcodec
COSMETICS: tabs --> spaces, some prettyprinting
author | diego |
---|---|
date | Thu, 22 Dec 2005 01:10:11 +0000 |
parents | ef2149182f1c |
children | 0b546eab515d |
comparison
equal
deleted
inserted
replaced
2978:403183bbb505 | 2979:bfabfdf9ce55 |
---|---|
204 uint8_t *coded_block; | 204 uint8_t *coded_block; |
205 | 205 |
206 handle_slices(s); | 206 handle_slices(s); |
207 | 207 |
208 if (!s->mb_intra) { | 208 if (!s->mb_intra) { |
209 /* compute cbp */ | 209 /* compute cbp */ |
210 set_stat(ST_INTER_MB); | 210 set_stat(ST_INTER_MB); |
211 cbp = 0; | 211 cbp = 0; |
212 for (i = 0; i < 6; i++) { | 212 for (i = 0; i < 6; i++) { |
213 if (s->block_last_index[i] >= 0) | 213 if (s->block_last_index[i] >= 0) |
214 cbp |= 1 << (5 - i); | 214 cbp |= 1 << (5 - i); |
215 } | 215 } |
216 | 216 |
217 put_bits(&s->pb, | 217 put_bits(&s->pb, |
218 wmv2_inter_table[w->cbp_table_index][cbp + 64][1], | 218 wmv2_inter_table[w->cbp_table_index][cbp + 64][1], |
219 wmv2_inter_table[w->cbp_table_index][cbp + 64][0]); | 219 wmv2_inter_table[w->cbp_table_index][cbp + 64][0]); |
220 | 220 |
221 /* motion vector */ | 221 /* motion vector */ |
222 h263_pred_motion(s, 0, 0, &pred_x, &pred_y); | 222 h263_pred_motion(s, 0, 0, &pred_x, &pred_y); |
223 msmpeg4_encode_motion(s, motion_x - pred_x, | 223 msmpeg4_encode_motion(s, motion_x - pred_x, |
224 motion_y - pred_y); | 224 motion_y - pred_y); |
225 } else { | 225 } else { |
226 /* compute cbp */ | 226 /* compute cbp */ |
227 cbp = 0; | 227 cbp = 0; |
228 coded_cbp = 0; | 228 coded_cbp = 0; |
229 for (i = 0; i < 6; i++) { | 229 for (i = 0; i < 6; i++) { |
230 int val, pred; | 230 int val, pred; |
231 val = (s->block_last_index[i] >= 1); | 231 val = (s->block_last_index[i] >= 1); |
232 cbp |= val << (5 - i); | 232 cbp |= val << (5 - i); |
233 if (i < 4) { | 233 if (i < 4) { |
234 /* predict value for close blocks only for luma */ | 234 /* predict value for close blocks only for luma */ |
235 pred = coded_block_pred(s, i, &coded_block); | 235 pred = coded_block_pred(s, i, &coded_block); |
236 *coded_block = val; | 236 *coded_block = val; |
237 val = val ^ pred; | 237 val = val ^ pred; |
238 } | 238 } |
239 coded_cbp |= val << (5 - i); | 239 coded_cbp |= val << (5 - i); |
240 } | 240 } |
241 #if 0 | 241 #if 0 |
242 if (coded_cbp) | 242 if (coded_cbp) |
243 printf("cbp=%x %x\n", cbp, coded_cbp); | 243 printf("cbp=%x %x\n", cbp, coded_cbp); |
244 #endif | 244 #endif |
245 | 245 |
251 put_bits(&s->pb, | 251 put_bits(&s->pb, |
252 wmv2_inter_table[w->cbp_table_index][cbp][1], | 252 wmv2_inter_table[w->cbp_table_index][cbp][1], |
253 wmv2_inter_table[w->cbp_table_index][cbp][0]); | 253 wmv2_inter_table[w->cbp_table_index][cbp][0]); |
254 } | 254 } |
255 set_stat(ST_INTRA_MB); | 255 set_stat(ST_INTRA_MB); |
256 put_bits(&s->pb, 1, 0); /* no AC prediction yet */ | 256 put_bits(&s->pb, 1, 0); /* no AC prediction yet */ |
257 if(s->inter_intra_pred){ | 257 if(s->inter_intra_pred){ |
258 s->h263_aic_dir=0; | 258 s->h263_aic_dir=0; |
259 put_bits(&s->pb, table_inter_intra[s->h263_aic_dir][1], table_inter_intra[s->h263_aic_dir][0]); | 259 put_bits(&s->pb, table_inter_intra[s->h263_aic_dir][1], table_inter_intra[s->h263_aic_dir][0]); |
260 } | 260 } |
261 } | 261 } |
398 s->dc_table_index = get_bits1(&s->gb); | 398 s->dc_table_index = get_bits1(&s->gb); |
399 } | 399 } |
400 s->inter_intra_pred= 0; | 400 s->inter_intra_pred= 0; |
401 s->no_rounding = 1; | 401 s->no_rounding = 1; |
402 if(s->avctx->debug&FF_DEBUG_PICT_INFO){ | 402 if(s->avctx->debug&FF_DEBUG_PICT_INFO){ |
403 av_log(s->avctx, AV_LOG_DEBUG, "qscale:%d rlc:%d rl:%d dc:%d mbrl:%d j_type:%d \n", | 403 av_log(s->avctx, AV_LOG_DEBUG, "qscale:%d rlc:%d rl:%d dc:%d mbrl:%d j_type:%d \n", |
404 s->qscale, | 404 s->qscale, |
405 s->rl_chroma_table_index, | 405 s->rl_chroma_table_index, |
406 s->rl_table_index, | 406 s->rl_table_index, |
407 s->dc_table_index, | 407 s->dc_table_index, |
408 s->per_mb_rl_table, | 408 s->per_mb_rl_table, |
409 w->j_type); | 409 w->j_type); |
410 } | 410 } |
411 }else{ | 411 }else{ |
412 int cbp_index; | 412 int cbp_index; |
449 s->inter_intra_pred= 0;//(s->width*s->height < 320*240 && s->bit_rate<=II_BITRATE); | 449 s->inter_intra_pred= 0;//(s->width*s->height < 320*240 && s->bit_rate<=II_BITRATE); |
450 s->no_rounding ^= 1; | 450 s->no_rounding ^= 1; |
451 | 451 |
452 if(s->avctx->debug&FF_DEBUG_PICT_INFO){ | 452 if(s->avctx->debug&FF_DEBUG_PICT_INFO){ |
453 av_log(s->avctx, AV_LOG_DEBUG, "rl:%d rlc:%d dc:%d mv:%d mbrl:%d qp:%d mspel:%d per_mb_abt:%d abt_type:%d cbp:%d ii:%d\n", | 453 av_log(s->avctx, AV_LOG_DEBUG, "rl:%d rlc:%d dc:%d mv:%d mbrl:%d qp:%d mspel:%d per_mb_abt:%d abt_type:%d cbp:%d ii:%d\n", |
454 s->rl_table_index, | 454 s->rl_table_index, |
455 s->rl_chroma_table_index, | 455 s->rl_chroma_table_index, |
456 s->dc_table_index, | 456 s->dc_table_index, |
457 s->mv_table_index, | 457 s->mv_table_index, |
458 s->per_mb_rl_table, | 458 s->per_mb_rl_table, |
459 s->qscale, | 459 s->qscale, |
460 s->mspel, | 460 s->mspel, |
461 w->per_mb_abt, | 461 w->per_mb_abt, |
462 w->abt_type, | 462 w->abt_type, |
732 } | 732 } |
733 | 733 |
734 code = get_vlc2(&s->gb, mb_non_intra_vlc[w->cbp_table_index].table, MB_NON_INTRA_VLC_BITS, 3); | 734 code = get_vlc2(&s->gb, mb_non_intra_vlc[w->cbp_table_index].table, MB_NON_INTRA_VLC_BITS, 3); |
735 if (code < 0) | 735 if (code < 0) |
736 return -1; | 736 return -1; |
737 s->mb_intra = (~code & 0x40) >> 6; | 737 s->mb_intra = (~code & 0x40) >> 6; |
738 | 738 |
739 cbp = code & 0x3f; | 739 cbp = code & 0x3f; |
740 } else { | 740 } else { |
741 s->mb_intra = 1; | 741 s->mb_intra = 1; |
742 code = get_vlc2(&s->gb, ff_msmp4_mb_i_vlc.table, MB_INTRA_VLC_BITS, 2); | 742 code = get_vlc2(&s->gb, ff_msmp4_mb_i_vlc.table, MB_INTRA_VLC_BITS, 2); |
785 s->mv[0][0][0] = mx; | 785 s->mv[0][0][0] = mx; |
786 s->mv[0][0][1] = my; | 786 s->mv[0][0][1] = my; |
787 | 787 |
788 for (i = 0; i < 6; i++) { | 788 for (i = 0; i < 6; i++) { |
789 if (wmv2_decode_inter_block(w, block[i], i, (cbp >> (5 - i)) & 1) < 0) | 789 if (wmv2_decode_inter_block(w, block[i], i, (cbp >> (5 - i)) & 1) < 0) |
790 { | 790 { |
791 av_log(s->avctx, AV_LOG_ERROR, "\nerror while decoding inter block: %d x %d (%d)\n", s->mb_x, s->mb_y, i); | 791 av_log(s->avctx, AV_LOG_ERROR, "\nerror while decoding inter block: %d x %d (%d)\n", s->mb_x, s->mb_y, i); |
792 return -1; | 792 return -1; |
793 } | 793 } |
794 } | 794 } |
795 } else { | 795 } else { |
796 //if(s->pict_type==P_TYPE) | 796 //if(s->pict_type==P_TYPE) |
797 // printf("%d%d ", s->inter_intra_pred, cbp); | 797 // printf("%d%d ", s->inter_intra_pred, cbp); |
798 //printf("I at %d %d %d %06X\n", s->mb_x, s->mb_y, ((cbp&3)? 1 : 0) +((cbp&0x3C)? 2 : 0), show_bits(&s->gb, 24)); | 798 //printf("I at %d %d %d %06X\n", s->mb_x, s->mb_y, ((cbp&3)? 1 : 0) +((cbp&0x3C)? 2 : 0), show_bits(&s->gb, 24)); |
807 } | 807 } |
808 | 808 |
809 s->dsp.clear_blocks(s->block[0]); | 809 s->dsp.clear_blocks(s->block[0]); |
810 for (i = 0; i < 6; i++) { | 810 for (i = 0; i < 6; i++) { |
811 if (msmpeg4_decode_block(s, block[i], i, (cbp >> (5 - i)) & 1, NULL) < 0) | 811 if (msmpeg4_decode_block(s, block[i], i, (cbp >> (5 - i)) & 1, NULL) < 0) |
812 { | 812 { |
813 av_log(s->avctx, AV_LOG_ERROR, "\nerror while decoding intra block: %d x %d (%d)\n", s->mb_x, s->mb_y, i); | 813 av_log(s->avctx, AV_LOG_ERROR, "\nerror while decoding intra block: %d x %d (%d)\n", s->mb_x, s->mb_y, i); |
814 return -1; | 814 return -1; |
815 } | 815 } |
816 } | 816 } |
817 } | 817 } |
818 | 818 |
819 return 0; | 819 return 0; |
820 } | 820 } |