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++)