Mercurial > libavcodec.hg
comparison msmpeg4.c @ 6481:493dc59d469a libavcodec
add FF_ prefix to all (frame)_TYPE usage
author | aurel |
---|---|
date | Sun, 09 Mar 2008 23:31:02 +0000 |
parents | 8e63d869a904 |
children | 778ecab25dd8 |
comparison
equal
deleted
inserted
replaced
6480:6f01a499e785 | 6481:493dc59d469a |
---|---|
261 for(last=0; last<2; last++){ | 261 for(last=0; last<2; last++){ |
262 int inter_count = s->ac_stats[0][0][level][run][last] + s->ac_stats[0][1][level][run][last]; | 262 int inter_count = s->ac_stats[0][0][level][run][last] + s->ac_stats[0][1][level][run][last]; |
263 int intra_luma_count = s->ac_stats[1][0][level][run][last]; | 263 int intra_luma_count = s->ac_stats[1][0][level][run][last]; |
264 int intra_chroma_count= s->ac_stats[1][1][level][run][last]; | 264 int intra_chroma_count= s->ac_stats[1][1][level][run][last]; |
265 | 265 |
266 if(s->pict_type==I_TYPE){ | 266 if(s->pict_type==FF_I_TYPE){ |
267 size += intra_luma_count *rl_length[i ][level][run][last]; | 267 size += intra_luma_count *rl_length[i ][level][run][last]; |
268 chroma_size+= intra_chroma_count*rl_length[i+3][level][run][last]; | 268 chroma_size+= intra_chroma_count*rl_length[i+3][level][run][last]; |
269 }else{ | 269 }else{ |
270 size+= intra_luma_count *rl_length[i ][level][run][last] | 270 size+= intra_luma_count *rl_length[i ][level][run][last] |
271 +intra_chroma_count*rl_length[i+3][level][run][last] | 271 +intra_chroma_count*rl_length[i+3][level][run][last] |
286 } | 286 } |
287 | 287 |
288 // printf("type:%d, best:%d, qp:%d, var:%d, mcvar:%d, size:%d //\n", | 288 // printf("type:%d, best:%d, qp:%d, var:%d, mcvar:%d, size:%d //\n", |
289 // s->pict_type, best, s->qscale, s->mb_var_sum, s->mc_mb_var_sum, best_size); | 289 // s->pict_type, best, s->qscale, s->mb_var_sum, s->mc_mb_var_sum, best_size); |
290 | 290 |
291 if(s->pict_type==P_TYPE) chroma_best= best; | 291 if(s->pict_type==FF_P_TYPE) chroma_best= best; |
292 | 292 |
293 memset(s->ac_stats, 0, sizeof(int)*(MAX_LEVEL+1)*(MAX_RUN+1)*2*2*2); | 293 memset(s->ac_stats, 0, sizeof(int)*(MAX_LEVEL+1)*(MAX_RUN+1)*2*2*2); |
294 | 294 |
295 s->rl_table_index = best; | 295 s->rl_table_index = best; |
296 s->rl_chroma_table_index= chroma_best; | 296 s->rl_chroma_table_index= chroma_best; |
297 | 297 |
298 if(s->pict_type != s->last_non_b_pict_type){ | 298 if(s->pict_type != s->last_non_b_pict_type){ |
299 s->rl_table_index= 2; | 299 s->rl_table_index= 2; |
300 if(s->pict_type==I_TYPE) | 300 if(s->pict_type==FF_I_TYPE) |
301 s->rl_chroma_table_index= 1; | 301 s->rl_chroma_table_index= 1; |
302 else | 302 else |
303 s->rl_chroma_table_index= 2; | 303 s->rl_chroma_table_index= 2; |
304 } | 304 } |
305 | 305 |
322 s->dc_table_index = 1; | 322 s->dc_table_index = 1; |
323 s->mv_table_index = 1; /* only if P frame */ | 323 s->mv_table_index = 1; /* only if P frame */ |
324 s->use_skip_mb_code = 1; /* only if P frame */ | 324 s->use_skip_mb_code = 1; /* only if P frame */ |
325 s->per_mb_rl_table = 0; | 325 s->per_mb_rl_table = 0; |
326 if(s->msmpeg4_version==4) | 326 if(s->msmpeg4_version==4) |
327 s->inter_intra_pred= (s->width*s->height < 320*240 && s->bit_rate<=II_BITRATE && s->pict_type==P_TYPE); | 327 s->inter_intra_pred= (s->width*s->height < 320*240 && s->bit_rate<=II_BITRATE && s->pict_type==FF_P_TYPE); |
328 //printf("%d %d %d %d %d\n", s->pict_type, s->bit_rate, s->inter_intra_pred, s->width, s->height); | 328 //printf("%d %d %d %d %d\n", s->pict_type, s->bit_rate, s->inter_intra_pred, s->width, s->height); |
329 | 329 |
330 if (s->pict_type == I_TYPE) { | 330 if (s->pict_type == FF_I_TYPE) { |
331 s->slice_height= s->mb_height/1; | 331 s->slice_height= s->mb_height/1; |
332 put_bits(&s->pb, 5, 0x16 + s->mb_height/s->slice_height); | 332 put_bits(&s->pb, 5, 0x16 + s->mb_height/s->slice_height); |
333 | 333 |
334 if(s->msmpeg4_version==4){ | 334 if(s->msmpeg4_version==4){ |
335 msmpeg4_encode_ext_header(s); | 335 msmpeg4_encode_ext_header(s); |
548 if (coded_cbp) | 548 if (coded_cbp) |
549 printf("cbp=%x %x\n", cbp, coded_cbp); | 549 printf("cbp=%x %x\n", cbp, coded_cbp); |
550 #endif | 550 #endif |
551 | 551 |
552 if(s->msmpeg4_version<=2){ | 552 if(s->msmpeg4_version<=2){ |
553 if (s->pict_type == I_TYPE) { | 553 if (s->pict_type == FF_I_TYPE) { |
554 put_bits(&s->pb, | 554 put_bits(&s->pb, |
555 v2_intra_cbpc[cbp&3][1], v2_intra_cbpc[cbp&3][0]); | 555 v2_intra_cbpc[cbp&3][1], v2_intra_cbpc[cbp&3][0]); |
556 } else { | 556 } else { |
557 if (s->use_skip_mb_code) | 557 if (s->use_skip_mb_code) |
558 put_bits(&s->pb, 1, 0); /* mb coded */ | 558 put_bits(&s->pb, 1, 0); /* mb coded */ |
563 put_bits(&s->pb, 1, 0); /* no AC prediction yet */ | 563 put_bits(&s->pb, 1, 0); /* no AC prediction yet */ |
564 put_bits(&s->pb, | 564 put_bits(&s->pb, |
565 cbpy_tab[cbp>>2][1], | 565 cbpy_tab[cbp>>2][1], |
566 cbpy_tab[cbp>>2][0]); | 566 cbpy_tab[cbp>>2][0]); |
567 }else{ | 567 }else{ |
568 if (s->pict_type == I_TYPE) { | 568 if (s->pict_type == FF_I_TYPE) { |
569 put_bits(&s->pb, | 569 put_bits(&s->pb, |
570 ff_msmp4_mb_i_table[coded_cbp][1], ff_msmp4_mb_i_table[coded_cbp][0]); | 570 ff_msmp4_mb_i_table[coded_cbp][1], ff_msmp4_mb_i_table[coded_cbp][0]); |
571 } else { | 571 } else { |
572 if (s->use_skip_mb_code) | 572 if (s->use_skip_mb_code) |
573 put_bits(&s->pb, 1, 0); /* mb coded */ | 573 put_bits(&s->pb, 1, 0); /* mb coded */ |
1174 | 1174 |
1175 num= get_bits(&s->gb, 5); // frame number */ | 1175 num= get_bits(&s->gb, 5); // frame number */ |
1176 } | 1176 } |
1177 | 1177 |
1178 s->pict_type = get_bits(&s->gb, 2) + 1; | 1178 s->pict_type = get_bits(&s->gb, 2) + 1; |
1179 if (s->pict_type != I_TYPE && | 1179 if (s->pict_type != FF_I_TYPE && |
1180 s->pict_type != P_TYPE){ | 1180 s->pict_type != FF_P_TYPE){ |
1181 av_log(s->avctx, AV_LOG_ERROR, "invalid picture type\n"); | 1181 av_log(s->avctx, AV_LOG_ERROR, "invalid picture type\n"); |
1182 return -1; | 1182 return -1; |
1183 } | 1183 } |
1184 #if 0 | 1184 #if 0 |
1185 { | 1185 { |
1186 static int had_i=0; | 1186 static int had_i=0; |
1187 if(s->pict_type == I_TYPE) had_i=1; | 1187 if(s->pict_type == FF_I_TYPE) had_i=1; |
1188 if(!had_i) return -1; | 1188 if(!had_i) return -1; |
1189 } | 1189 } |
1190 #endif | 1190 #endif |
1191 s->chroma_qscale= s->qscale = get_bits(&s->gb, 5); | 1191 s->chroma_qscale= s->qscale = get_bits(&s->gb, 5); |
1192 if(s->qscale==0){ | 1192 if(s->qscale==0){ |
1193 av_log(s->avctx, AV_LOG_ERROR, "invalid qscale\n"); | 1193 av_log(s->avctx, AV_LOG_ERROR, "invalid qscale\n"); |
1194 return -1; | 1194 return -1; |
1195 } | 1195 } |
1196 | 1196 |
1197 if (s->pict_type == I_TYPE) { | 1197 if (s->pict_type == FF_I_TYPE) { |
1198 code = get_bits(&s->gb, 5); | 1198 code = get_bits(&s->gb, 5); |
1199 if(s->msmpeg4_version==1){ | 1199 if(s->msmpeg4_version==1){ |
1200 if(code==0 || code>s->mb_height){ | 1200 if(code==0 || code>s->mb_height){ |
1201 av_log(s->avctx, AV_LOG_ERROR, "invalid slice height %d\n", code); | 1201 av_log(s->avctx, AV_LOG_ERROR, "invalid slice height %d\n", code); |
1202 return -1; | 1202 return -1; |
1426 | 1426 |
1427 static int msmpeg4v12_decode_mb(MpegEncContext *s, DCTELEM block[6][64]) | 1427 static int msmpeg4v12_decode_mb(MpegEncContext *s, DCTELEM block[6][64]) |
1428 { | 1428 { |
1429 int cbp, code, i; | 1429 int cbp, code, i; |
1430 | 1430 |
1431 if (s->pict_type == P_TYPE) { | 1431 if (s->pict_type == FF_P_TYPE) { |
1432 if (s->use_skip_mb_code) { | 1432 if (s->use_skip_mb_code) { |
1433 if (get_bits1(&s->gb)) { | 1433 if (get_bits1(&s->gb)) { |
1434 /* skip mb */ | 1434 /* skip mb */ |
1435 s->mb_intra = 0; | 1435 s->mb_intra = 0; |
1436 for(i=0;i<6;i++) | 1436 for(i=0;i<6;i++) |
1493 s->ac_pred = get_bits1(&s->gb); | 1493 s->ac_pred = get_bits1(&s->gb); |
1494 cbp|= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1)<<2; //FIXME check errors | 1494 cbp|= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1)<<2; //FIXME check errors |
1495 } else{ | 1495 } else{ |
1496 s->ac_pred = 0; | 1496 s->ac_pred = 0; |
1497 cbp|= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1)<<2; //FIXME check errors | 1497 cbp|= get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1)<<2; //FIXME check errors |
1498 if(s->pict_type==P_TYPE) cbp^=0x3C; | 1498 if(s->pict_type==FF_P_TYPE) cbp^=0x3C; |
1499 } | 1499 } |
1500 } | 1500 } |
1501 | 1501 |
1502 s->dsp.clear_blocks(s->block[0]); | 1502 s->dsp.clear_blocks(s->block[0]); |
1503 for (i = 0; i < 6; i++) { | 1503 for (i = 0; i < 6; i++) { |
1514 { | 1514 { |
1515 int cbp, code, i; | 1515 int cbp, code, i; |
1516 uint8_t *coded_val; | 1516 uint8_t *coded_val; |
1517 uint32_t * const mb_type_ptr= &s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride ]; | 1517 uint32_t * const mb_type_ptr= &s->current_picture.mb_type[ s->mb_x + s->mb_y*s->mb_stride ]; |
1518 | 1518 |
1519 if (s->pict_type == P_TYPE) { | 1519 if (s->pict_type == FF_P_TYPE) { |
1520 if (s->use_skip_mb_code) { | 1520 if (s->use_skip_mb_code) { |
1521 if (get_bits1(&s->gb)) { | 1521 if (get_bits1(&s->gb)) { |
1522 /* skip mb */ | 1522 /* skip mb */ |
1523 s->mb_intra = 0; | 1523 s->mb_intra = 0; |
1524 for(i=0;i<6;i++) | 1524 for(i=0;i<6;i++) |