comparison h264.c @ 2628:511e3afc43e1 libavcodec

Ministry of English Composition, reporting for duty (and the word is "skipped", not "skiped"; "skiped" would rhyme with "hyped")
author melanson
date Sun, 24 Apr 2005 17:21:11 +0000
parents aaf8e94bce00
children 202cd69d8d2e
comparison
equal deleted inserted replaced
2627:bf158d23bbcc 2628:511e3afc43e1
160 int got_avcC; ///< flag used to parse avcC data only once 160 int got_avcC; ///< flag used to parse avcC data only once
161 int nal_length_size; ///< Number of bytes used for nal length (1, 2 or 4) 161 int nal_length_size; ///< Number of bytes used for nal length (1, 2 or 4)
162 162
163 int chroma_qp; //QPc 163 int chroma_qp; //QPc
164 164
165 int prev_mb_skiped; //FIXME remove (IMHO not used) 165 int prev_mb_skipped; //FIXME remove (IMHO not used)
166 166
167 //prediction stuff 167 //prediction stuff
168 int chroma_pred_mode; 168 int chroma_pred_mode;
169 int intra16x16_pred_mode; 169 int intra16x16_pred_mode;
170 170
4203 4203
4204 write_back_motion(h, mb_type); 4204 write_back_motion(h, mb_type);
4205 s->current_picture.mb_type[mb_xy]= mb_type|MB_TYPE_SKIP; 4205 s->current_picture.mb_type[mb_xy]= mb_type|MB_TYPE_SKIP;
4206 s->current_picture.qscale_table[mb_xy]= s->qscale; 4206 s->current_picture.qscale_table[mb_xy]= s->qscale;
4207 h->slice_table[ mb_xy ]= h->slice_num; 4207 h->slice_table[ mb_xy ]= h->slice_num;
4208 h->prev_mb_skiped= 1; 4208 h->prev_mb_skipped= 1;
4209 } 4209 }
4210 4210
4211 /** 4211 /**
4212 * decodes a macroblock 4212 * decodes a macroblock
4213 * @returns 0 if ok, AC_ERROR / DC_ERROR / MV_ERROR if an error is noticed 4213 * @returns 0 if ok, AC_ERROR / DC_ERROR / MV_ERROR if an error is noticed
4230 decode_mb_skip(h); 4230 decode_mb_skip(h);
4231 return 0; 4231 return 0;
4232 } 4232 }
4233 } 4233 }
4234 if(h->mb_aff_frame){ 4234 if(h->mb_aff_frame){
4235 if ( ((s->mb_y&1) == 0) || h->prev_mb_skiped) 4235 if ( ((s->mb_y&1) == 0) || h->prev_mb_skipped)
4236 h->mb_field_decoding_flag = get_bits1(&s->gb); 4236 h->mb_field_decoding_flag = get_bits1(&s->gb);
4237 }else 4237 }else
4238 h->mb_field_decoding_flag= (s->picture_structure!=PICT_FRAME); 4238 h->mb_field_decoding_flag= (s->picture_structure!=PICT_FRAME);
4239 4239
4240 h->prev_mb_skiped= 0; 4240 h->prev_mb_skipped= 0;
4241 4241
4242 mb_type= get_ue_golomb(&s->gb); 4242 mb_type= get_ue_golomb(&s->gb);
4243 if(h->slice_type == B_TYPE){ 4243 if(h->slice_type == B_TYPE){
4244 if(mb_type < 23){ 4244 if(mb_type < 23){
4245 partition_count= b_mb_type_info[mb_type].partition_count; 4245 partition_count= b_mb_type_info[mb_type].partition_count;
5207 return 0; 5207 return 0;
5208 5208
5209 } 5209 }
5210 } 5210 }
5211 if(h->mb_aff_frame){ 5211 if(h->mb_aff_frame){
5212 if ( ((s->mb_y&1) == 0) || h->prev_mb_skiped) 5212 if ( ((s->mb_y&1) == 0) || h->prev_mb_skipped)
5213 h->mb_field_decoding_flag = decode_cabac_field_decoding_flag(h); 5213 h->mb_field_decoding_flag = decode_cabac_field_decoding_flag(h);
5214 }else 5214 }else
5215 h->mb_field_decoding_flag= (s->picture_structure!=PICT_FRAME); 5215 h->mb_field_decoding_flag= (s->picture_structure!=PICT_FRAME);
5216 5216
5217 h->prev_mb_skiped = 0; 5217 h->prev_mb_skipped = 0;
5218 5218
5219 compute_mb_neighboors(h); 5219 compute_mb_neighboors(h);
5220 if( ( mb_type = decode_cabac_mb_type( h ) ) < 0 ) { 5220 if( ( mb_type = decode_cabac_mb_type( h ) ) < 0 ) {
5221 av_log( h->s.avctx, AV_LOG_ERROR, "decode_cabac_mb_type failed\n" ); 5221 av_log( h->s.avctx, AV_LOG_ERROR, "decode_cabac_mb_type failed\n" );
5222 return -1; 5222 return -1;
6626 sps->crop_left = get_ue_golomb(&s->gb); 6626 sps->crop_left = get_ue_golomb(&s->gb);
6627 sps->crop_right = get_ue_golomb(&s->gb); 6627 sps->crop_right = get_ue_golomb(&s->gb);
6628 sps->crop_top = get_ue_golomb(&s->gb); 6628 sps->crop_top = get_ue_golomb(&s->gb);
6629 sps->crop_bottom= get_ue_golomb(&s->gb); 6629 sps->crop_bottom= get_ue_golomb(&s->gb);
6630 if(sps->crop_left || sps->crop_top){ 6630 if(sps->crop_left || sps->crop_top){
6631 av_log(h->s.avctx, AV_LOG_ERROR, "insane cropping not completly supported, this could look slightly wrong ...\n"); 6631 av_log(h->s.avctx, AV_LOG_ERROR, "insane cropping not completely supported, this could look slightly wrong ...\n");
6632 } 6632 }
6633 }else{ 6633 }else{
6634 sps->crop_left = 6634 sps->crop_left =
6635 sps->crop_right = 6635 sps->crop_right =
6636 sps->crop_top = 6636 sps->crop_top =
7020 if(buf_index < 0) 7020 if(buf_index < 0)
7021 return -1; 7021 return -1;
7022 7022
7023 //FIXME do something with unavailable reference frames 7023 //FIXME do something with unavailable reference frames
7024 7024
7025 // if(ret==FRAME_SKIPED) return get_consumed_bytes(s, buf_index, buf_size); 7025 // if(ret==FRAME_SKIPPED) return get_consumed_bytes(s, buf_index, buf_size);
7026 if(!s->current_picture_ptr){ 7026 if(!s->current_picture_ptr){
7027 av_log(h->s.avctx, AV_LOG_DEBUG, "error, NO frame\n"); 7027 av_log(h->s.avctx, AV_LOG_DEBUG, "error, NO frame\n");
7028 return -1; 7028 return -1;
7029 } 7029 }
7030 7030