Commit 288f6784 authored by Jean-Paul Saman's avatar Jean-Paul Saman

davinci encoder: fps measurements

parent 93509622
...@@ -59,6 +59,12 @@ struct encoder_sys_t ...@@ -59,6 +59,12 @@ struct encoder_sys_t
XDM_BufDesc in; XDM_BufDesc in;
XDM_BufDesc out; XDM_BufDesc out;
/* stats */
mtime_t i_pts_start;
mtime_t i_pts_end;
int i_fps;
int i_pics;
}; };
/***************************************************************************** /*****************************************************************************
...@@ -257,6 +263,7 @@ static int davinci_InitBuffers( encoder_t *p_enc ) ...@@ -257,6 +263,7 @@ static int davinci_InitBuffers( encoder_t *p_enc )
p_enc->fmt_out.video.i_frame_rate * 1000 / p_enc->fmt_out.video.i_frame_rate * 1000 /
p_enc->fmt_out.video.i_frame_rate_base : p_enc->fmt_out.video.i_frame_rate_base :
p_enc->i_iframes * 1000; /* Frames per 1000 seconds */ p_enc->i_iframes * 1000; /* Frames per 1000 seconds */
p_sys->i_fps = dparams.refFrameRate / 1000;
dparams.targetFrameRate = dparams.refFrameRate; /* input fps = output fps */ dparams.targetFrameRate = dparams.refFrameRate; /* input fps = output fps */
dparams.targetBitRate = p_enc->fmt_out.i_bitrate; dparams.targetBitRate = p_enc->fmt_out.i_bitrate;
dparams.intraFrameInterval = p_enc->i_iframes; dparams.intraFrameInterval = p_enc->i_iframes;
...@@ -325,6 +332,29 @@ static block_t *EncodeVideo( encoder_t *p_enc, picture_t *p_pic ) ...@@ -325,6 +332,29 @@ static block_t *EncodeVideo( encoder_t *p_enc, picture_t *p_pic )
return NULL; return NULL;
} }
p_sys->i_pics++;
if( p_sys->i_pics == 1 )
{
p_sys->i_pts_start = mdate();
}
if( p_sys->i_pics == p_sys->i_fps )
{
mtime_t i_diff; /* in us */
double f_fps;
p_sys->i_pts_end = mdate(); /* in us */
i_diff = (p_sys->i_pts_end - p_sys->i_pts_start);
f_fps = (double)((i_diff / (int64_t)p_sys->i_pics)); /* 1 frame per us */
f_fps = ((double)1/f_fps) * (double)1000000;
msg_Info( p_enc, "Encoder: %d frames per %"PRId64" micro seconds (%4.2f fps)",
p_sys->i_pics, i_diff, f_fps );
/* reset timers */
p_sys->i_pics = 0;
p_sys->i_pts_start = p_sys->i_pts_end = (mtime_t)0;
}
davinci_CopyPictureToXDM( p_enc, &p_sys->in, p_pic ); davinci_CopyPictureToXDM( p_enc, &p_sys->in, p_pic );
/* Configure input */ /* Configure input */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment