comparison mpegvideo.c @ 2015:3ab8f3e2ae6a libavcodec

moving motion estimation specific variables from MpegEncContext -> MotionEstContext
author michael
date Tue, 11 May 2004 01:38:46 +0000
parents 8d3540dddd1b
children f65d87bfdd5a
comparison
equal deleted inserted replaced
2014:15c885db82a8 2015:3ab8f3e2ae6a
3956 3956
3957 varc = (s->dsp.pix_norm1(pix, s->linesize) - (((unsigned)(sum*sum))>>8) + 500 + 128)>>8; 3957 varc = (s->dsp.pix_norm1(pix, s->linesize) - (((unsigned)(sum*sum))>>8) + 500 + 128)>>8;
3958 3958
3959 s->current_picture.mb_var [s->mb_stride * mb_y + mb_x] = varc; 3959 s->current_picture.mb_var [s->mb_stride * mb_y + mb_x] = varc;
3960 s->current_picture.mb_mean[s->mb_stride * mb_y + mb_x] = (sum+128)>>8; 3960 s->current_picture.mb_mean[s->mb_stride * mb_y + mb_x] = (sum+128)>>8;
3961 s->mb_var_sum_temp += varc; 3961 s->me.mb_var_sum_temp += varc;
3962 } 3962 }
3963 } 3963 }
3964 return 0; 3964 return 0;
3965 } 3965 }
3966 3966
4550 return 0; 4550 return 0;
4551 } 4551 }
4552 4552
4553 #define MERGE(field) dst->field += src->field; src->field=0 4553 #define MERGE(field) dst->field += src->field; src->field=0
4554 static void merge_context_after_me(MpegEncContext *dst, MpegEncContext *src){ 4554 static void merge_context_after_me(MpegEncContext *dst, MpegEncContext *src){
4555 MERGE(scene_change_score); 4555 MERGE(me.scene_change_score);
4556 MERGE(mc_mb_var_sum_temp); 4556 MERGE(me.mc_mb_var_sum_temp);
4557 MERGE(mb_var_sum_temp); 4557 MERGE(me.mb_var_sum_temp);
4558 } 4558 }
4559 4559
4560 static void merge_context_after_encode(MpegEncContext *dst, MpegEncContext *src){ 4560 static void merge_context_after_encode(MpegEncContext *dst, MpegEncContext *src){
4561 int i; 4561 int i;
4562 4562
4593 int bits; 4593 int bits;
4594 4594
4595 s->picture_number = picture_number; 4595 s->picture_number = picture_number;
4596 4596
4597 /* Reset the average MB variance */ 4597 /* Reset the average MB variance */
4598 s->mb_var_sum_temp = 4598 s->me.mb_var_sum_temp =
4599 s->mc_mb_var_sum_temp = 0; 4599 s->me.mc_mb_var_sum_temp = 0;
4600 4600
4601 #ifdef CONFIG_RISKY 4601 #ifdef CONFIG_RISKY
4602 /* we need to initialize some time vars before we can encode b-frames */ 4602 /* we need to initialize some time vars before we can encode b-frames */
4603 // RAL: Condition added for MPEG1VIDEO 4603 // RAL: Condition added for MPEG1VIDEO
4604 if (s->codec_id == CODEC_ID_MPEG1VIDEO || s->codec_id == CODEC_ID_MPEG2VIDEO || (s->h263_pred && !s->h263_msmpeg4)) 4604 if (s->codec_id == CODEC_ID_MPEG1VIDEO || s->codec_id == CODEC_ID_MPEG2VIDEO || (s->h263_pred && !s->h263_msmpeg4))
4605 ff_set_mpeg4_time(s, s->picture_number); //FIXME rename and use has_b_frames or similar 4605 ff_set_mpeg4_time(s, s->picture_number); //FIXME rename and use has_b_frames or similar
4606 #endif 4606 #endif
4607 4607
4608 s->scene_change_score=0; 4608 s->me.scene_change_score=0;
4609 4609
4610 s->lambda= s->current_picture_ptr->quality; //FIXME qscale / ... stuff for ME ratedistoration 4610 s->lambda= s->current_picture_ptr->quality; //FIXME qscale / ... stuff for ME ratedistoration
4611 4611
4612 if(s->pict_type==I_TYPE){ 4612 if(s->pict_type==I_TYPE){
4613 if(s->msmpeg4_version >= 3) s->no_rounding=1; 4613 if(s->msmpeg4_version >= 3) s->no_rounding=1;
4644 } 4644 }
4645 } 4645 }
4646 for(i=1; i<s->avctx->thread_count; i++){ 4646 for(i=1; i<s->avctx->thread_count; i++){
4647 merge_context_after_me(s, s->thread_context[i]); 4647 merge_context_after_me(s, s->thread_context[i]);
4648 } 4648 }
4649 s->current_picture.mc_mb_var_sum= s->current_picture_ptr->mc_mb_var_sum= s->mc_mb_var_sum_temp; 4649 s->current_picture.mc_mb_var_sum= s->current_picture_ptr->mc_mb_var_sum= s->me.mc_mb_var_sum_temp;
4650 s->current_picture. mb_var_sum= s->current_picture_ptr-> mb_var_sum= s-> mb_var_sum_temp; 4650 s->current_picture. mb_var_sum= s->current_picture_ptr-> mb_var_sum= s->me. mb_var_sum_temp;
4651 emms_c(); 4651 emms_c();
4652 4652
4653 if(s->scene_change_score > s->avctx->scenechange_threshold && s->pict_type == P_TYPE){ 4653 if(s->me.scene_change_score > s->avctx->scenechange_threshold && s->pict_type == P_TYPE){
4654 s->pict_type= I_TYPE; 4654 s->pict_type= I_TYPE;
4655 for(i=0; i<s->mb_stride*s->mb_height; i++) 4655 for(i=0; i<s->mb_stride*s->mb_height; i++)
4656 s->mb_type[i]= CANDIDATE_MB_TYPE_INTRA; 4656 s->mb_type[i]= CANDIDATE_MB_TYPE_INTRA;
4657 //printf("Scene change detected, encoding as I Frame %d %d\n", s->current_picture.mb_var_sum, s->current_picture.mc_mb_var_sum); 4657 //printf("Scene change detected, encoding as I Frame %d %d\n", s->current_picture.mb_var_sum, s->current_picture.mc_mb_var_sum);
4658 } 4658 }