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