Mercurial > libavcodec.hg
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 |