Split ff_set_mpeg4_time() and move the non mpeg4 specific part
into mpegvideo_enc.c. Originally committed as revision 9577 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
153696a663
commit
7da31a80b7
@ -2259,25 +2259,12 @@ void ff_mpeg4_stuffing(PutBitContext * pbc)
|
||||
}
|
||||
|
||||
/* must be called before writing the header */
|
||||
void ff_set_mpeg4_time(MpegEncContext * s, int picture_number){
|
||||
int time_div, time_mod;
|
||||
|
||||
assert(s->current_picture_ptr->pts != AV_NOPTS_VALUE);
|
||||
s->time= s->current_picture_ptr->pts*s->avctx->time_base.num;
|
||||
|
||||
time_div= s->time/s->avctx->time_base.den;
|
||||
time_mod= s->time%s->avctx->time_base.den;
|
||||
|
||||
void ff_set_mpeg4_time(MpegEncContext * s){
|
||||
if(s->pict_type==B_TYPE){
|
||||
s->pb_time= s->pp_time - (s->last_non_b_time - s->time);
|
||||
assert(s->pb_time > 0 && s->pb_time < s->pp_time);
|
||||
ff_mpeg4_init_direct_mv(s);
|
||||
}else{
|
||||
s->last_time_base= s->time_base;
|
||||
s->time_base= time_div;
|
||||
s->pp_time= s->time - s->last_non_b_time;
|
||||
s->last_non_b_time= s->time;
|
||||
assert(picture_number==0 || s->pp_time > 0);
|
||||
s->time_base= s->time/s->avctx->time_base.den;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -834,7 +834,7 @@ int16_t *h263_pred_motion(MpegEncContext * s, int block, int dir,
|
||||
int *px, int *py);
|
||||
void mpeg4_pred_ac(MpegEncContext * s, DCTELEM *block, int n,
|
||||
int dir);
|
||||
void ff_set_mpeg4_time(MpegEncContext * s, int picture_number);
|
||||
void ff_set_mpeg4_time(MpegEncContext * s);
|
||||
void mpeg4_encode_picture_header(MpegEncContext *s, int picture_number);
|
||||
#ifdef CONFIG_ENCODERS
|
||||
void h263_encode_init(MpegEncContext *s);
|
||||
|
@ -2671,6 +2671,21 @@ static int estimate_qp(MpegEncContext *s, int dry_run){
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* must be called before writing the header */
|
||||
static void set_frame_distances(MpegEncContext * s){
|
||||
assert(s->current_picture_ptr->pts != AV_NOPTS_VALUE);
|
||||
s->time= s->current_picture_ptr->pts*s->avctx->time_base.num;
|
||||
|
||||
if(s->pict_type==B_TYPE){
|
||||
s->pb_time= s->pp_time - (s->last_non_b_time - s->time);
|
||||
assert(s->pb_time > 0 && s->pb_time < s->pp_time);
|
||||
}else{
|
||||
s->pp_time= s->time - s->last_non_b_time;
|
||||
s->last_non_b_time= s->time;
|
||||
assert(s->picture_number==0 || s->pp_time > 0);
|
||||
}
|
||||
}
|
||||
|
||||
static int encode_picture(MpegEncContext *s, int picture_number)
|
||||
{
|
||||
int i;
|
||||
@ -2685,7 +2700,9 @@ static int encode_picture(MpegEncContext *s, int picture_number)
|
||||
/* we need to initialize some time vars before we can encode b-frames */
|
||||
// RAL: Condition added for MPEG1VIDEO
|
||||
if (s->codec_id == CODEC_ID_MPEG1VIDEO || s->codec_id == CODEC_ID_MPEG2VIDEO || (s->h263_pred && !s->h263_msmpeg4))
|
||||
ff_set_mpeg4_time(s, s->picture_number); //FIXME rename and use has_b_frames or similar
|
||||
set_frame_distances(s);
|
||||
if(ENABLE_MPEG4_ENCODER && s->codec_id == CODEC_ID_MPEG4)
|
||||
ff_set_mpeg4_time(s);
|
||||
|
||||
s->me.scene_change_score=0;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user