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 }