comparison mpeg12.c @ 4119:85438e10d72d libavcodec

reindentation, patch by From: Steve Lhomme, slhomme divxcorp com
author diego
date Wed, 01 Nov 2006 21:09:14 +0000
parents ee762ee26dc2
children 2205aefb22b7
comparison
equal deleted inserted replaced
4118:a1786732cd62 4119:85438e10d72d
3107 3107
3108 if(avctx->debug & FF_DEBUG_STARTCODE){ 3108 if(avctx->debug & FF_DEBUG_STARTCODE){
3109 av_log(avctx, AV_LOG_DEBUG, "%3X at %zd left %d\n", start_code, buf_ptr-buf, input_size); 3109 av_log(avctx, AV_LOG_DEBUG, "%3X at %zd left %d\n", start_code, buf_ptr-buf, input_size);
3110 } 3110 }
3111 3111
3112 /* prepare data for next start code */ 3112 /* prepare data for next start code */
3113 switch(start_code) { 3113 switch(start_code) {
3114 case SEQ_START_CODE: 3114 case SEQ_START_CODE:
3115 mpeg1_decode_sequence(avctx, buf_ptr, 3115 mpeg1_decode_sequence(avctx, buf_ptr,
3116 input_size); 3116 input_size);
3117 break;
3118
3119 case PICTURE_START_CODE:
3120 /* we have a complete image : we try to decompress it */
3121 mpeg1_decode_picture(avctx,
3122 buf_ptr, input_size);
3123 break;
3124 case EXT_START_CODE:
3125 mpeg_decode_extension(avctx,
3126 buf_ptr, input_size);
3127 break;
3128 case USER_START_CODE:
3129 mpeg_decode_user_data(avctx,
3130 buf_ptr, input_size);
3131 break;
3132 case GOP_START_CODE:
3133 s2->first_field=0;
3134 mpeg_decode_gop(avctx,
3135 buf_ptr, input_size);
3136 break;
3137 default:
3138 if (start_code >= SLICE_MIN_START_CODE &&
3139 start_code <= SLICE_MAX_START_CODE) {
3140 int mb_y= start_code - SLICE_MIN_START_CODE;
3141
3142 if(s2->last_picture_ptr==NULL){
3143 /* skip b frames if we dont have reference frames */
3144 if(s2->pict_type==B_TYPE) break;
3145 /* skip P frames if we dont have reference frame no valid header */
3146 // if(s2->pict_type==P_TYPE && s2->first_field && !s2->first_slice) break;
3147 }
3148 /* skip b frames if we are in a hurry */
3149 if(avctx->hurry_up && s2->pict_type==B_TYPE) break;
3150 if( (avctx->skip_frame >= AVDISCARD_NONREF && s2->pict_type==B_TYPE)
3151 ||(avctx->skip_frame >= AVDISCARD_NONKEY && s2->pict_type!=I_TYPE)
3152 || avctx->skip_frame >= AVDISCARD_ALL)
3117 break; 3153 break;
3118 3154 /* skip everything if we are in a hurry>=5 */
3119 case PICTURE_START_CODE: 3155 if(avctx->hurry_up>=5) break;
3120 /* we have a complete image : we try to decompress it */ 3156
3121 mpeg1_decode_picture(avctx, 3157 if (!s->mpeg_enc_ctx_allocated) break;
3122 buf_ptr, input_size); 3158
3123 break; 3159 if(s2->codec_id == CODEC_ID_MPEG2VIDEO){
3124 case EXT_START_CODE: 3160 if(mb_y < avctx->skip_top || mb_y >= s2->mb_height - avctx->skip_bottom)
3125 mpeg_decode_extension(avctx, 3161 break;
3126 buf_ptr, input_size); 3162 }
3127 break; 3163
3128 case USER_START_CODE: 3164 if(s2->first_slice){
3129 mpeg_decode_user_data(avctx, 3165 s2->first_slice=0;
3130 buf_ptr, input_size); 3166 if(mpeg_field_start(s2) < 0)
3131 break; 3167 return -1;
3132 case GOP_START_CODE: 3168 }
3133 s2->first_field=0; 3169
3134 mpeg_decode_gop(avctx, 3170 if(avctx->thread_count > 1){
3135 buf_ptr, input_size); 3171 int threshold= (s2->mb_height*s->slice_count + avctx->thread_count/2) / avctx->thread_count;
3136 break; 3172 if(threshold <= mb_y){
3137 default: 3173 MpegEncContext *thread_context= s2->thread_context[s->slice_count];
3138 if (start_code >= SLICE_MIN_START_CODE && 3174
3139 start_code <= SLICE_MAX_START_CODE) { 3175 thread_context->start_mb_y= mb_y;
3140 int mb_y= start_code - SLICE_MIN_START_CODE; 3176 thread_context->end_mb_y = s2->mb_height;
3141 3177 if(s->slice_count){
3142 if(s2->last_picture_ptr==NULL){ 3178 s2->thread_context[s->slice_count-1]->end_mb_y= mb_y;
3143 /* skip b frames if we dont have reference frames */ 3179 ff_update_duplicate_context(thread_context, s2);
3144 if(s2->pict_type==B_TYPE) break;
3145 /* skip P frames if we dont have reference frame no valid header */
3146 // if(s2->pict_type==P_TYPE && s2->first_field && !s2->first_slice) break;
3147 } 3180 }
3148 /* skip b frames if we are in a hurry */ 3181 init_get_bits(&thread_context->gb, buf_ptr, input_size*8);
3149 if(avctx->hurry_up && s2->pict_type==B_TYPE) break; 3182 s->slice_count++;
3150 if( (avctx->skip_frame >= AVDISCARD_NONREF && s2->pict_type==B_TYPE)
3151 ||(avctx->skip_frame >= AVDISCARD_NONKEY && s2->pict_type!=I_TYPE)
3152 || avctx->skip_frame >= AVDISCARD_ALL)
3153 break;
3154 /* skip everything if we are in a hurry>=5 */
3155 if(avctx->hurry_up>=5) break;
3156
3157 if (!s->mpeg_enc_ctx_allocated) break;
3158
3159 if(s2->codec_id == CODEC_ID_MPEG2VIDEO){
3160 if(mb_y < avctx->skip_top || mb_y >= s2->mb_height - avctx->skip_bottom)
3161 break;
3162 }
3163
3164 if(s2->first_slice){
3165 s2->first_slice=0;
3166 if(mpeg_field_start(s2) < 0)
3167 return -1;
3168 }
3169
3170 if(avctx->thread_count > 1){
3171 int threshold= (s2->mb_height*s->slice_count + avctx->thread_count/2) / avctx->thread_count;
3172 if(threshold <= mb_y){
3173 MpegEncContext *thread_context= s2->thread_context[s->slice_count];
3174
3175 thread_context->start_mb_y= mb_y;
3176 thread_context->end_mb_y = s2->mb_height;
3177 if(s->slice_count){
3178 s2->thread_context[s->slice_count-1]->end_mb_y= mb_y;
3179 ff_update_duplicate_context(thread_context, s2);
3180 }
3181 init_get_bits(&thread_context->gb, buf_ptr, input_size*8);
3182 s->slice_count++;
3183 }
3184 buf_ptr += 2; //FIXME add minimum num of bytes per slice
3185 }else{
3186 ret = mpeg_decode_slice(s, mb_y, &buf_ptr, input_size);
3187 emms_c();
3188
3189 if(ret < 0){
3190 if(s2->resync_mb_x>=0 && s2->resync_mb_y>=0)
3191 ff_er_add_slice(s2, s2->resync_mb_x, s2->resync_mb_y, s2->mb_x, s2->mb_y, AC_ERROR|DC_ERROR|MV_ERROR);
3192 }else{
3193 ff_er_add_slice(s2, s2->resync_mb_x, s2->resync_mb_y, s2->mb_x-1, s2->mb_y, AC_END|DC_END|MV_END);
3194 }
3195 }
3196 } 3183 }
3197 break; 3184 buf_ptr += 2; //FIXME add minimum num of bytes per slice
3198 } 3185 }else{
3186 ret = mpeg_decode_slice(s, mb_y, &buf_ptr, input_size);
3187 emms_c();
3188
3189 if(ret < 0){
3190 if(s2->resync_mb_x>=0 && s2->resync_mb_y>=0)
3191 ff_er_add_slice(s2, s2->resync_mb_x, s2->resync_mb_y, s2->mb_x, s2->mb_y, AC_ERROR|DC_ERROR|MV_ERROR);
3192 }else{
3193 ff_er_add_slice(s2, s2->resync_mb_x, s2->resync_mb_y, s2->mb_x-1, s2->mb_y, AC_END|DC_END|MV_END);
3194 }
3195 }
3196 }
3197 break;
3198 }
3199 } 3199 }
3200 } 3200 }
3201 3201
3202 static int mpeg_decode_end(AVCodecContext *avctx) 3202 static int mpeg_decode_end(AVCodecContext *avctx)
3203 { 3203 {