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
XDM_BufDesc in;
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 )
p_enc->fmt_out.video.i_frame_rate * 1000 /
p_enc->fmt_out.video.i_frame_rate_base :
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.targetBitRate = p_enc->fmt_out.i_bitrate;
dparams.intraFrameInterval = p_enc->i_iframes;
......@@ -301,7 +308,7 @@ static int davinci_InitBuffers( encoder_t *p_enc )
/* Allocate output buffer */
if( (i_ret = davinci_AllocateBuffer( status.bufInfo.minNumOutBufs,
status.bufInfo.minOutBufSize, &p_sys->out ))
status.bufInfo.minOutBufSize, &p_sys->out ))
!= VLC_SUCCESS )
{
msg_Err( p_enc, "Failed to allocate input buffers" );
......@@ -325,6 +332,29 @@ static block_t *EncodeVideo( encoder_t *p_enc, picture_t *p_pic )
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 );
/* 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