@ -25,6 +25,8 @@
* a filter enforcing given constant framerate
*/
# include <float.h>
# include "libavutil/common.h"
# include "libavutil/fifo.h"
# include "libavutil/mathematics.h"
@ -61,7 +63,7 @@ typedef struct FPSContext {
# define F AV_OPT_FLAG_FILTERING_PARAM
static const AVOption fps_options [ ] = {
{ " fps " , " A string describing desired output framerate " , OFFSET ( framerate ) , AV_OPT_TYPE_VIDEO_RATE , { . str = " 25 " } , . flags = V | F } ,
{ " start_time " , " Assume the first PTS should be this value. " , OFFSET ( start_time ) , AV_OPT_TYPE_DOUBLE , { . dbl = - 9223372036854775808.0 } , INT64_MIN , INT64 _MAX, V } ,
{ " start_time " , " Assume the first PTS should be this value. " , OFFSET ( start_time ) , AV_OPT_TYPE_DOUBLE , { . dbl = DBL_MAX } , - DBL_MAX , DBL _MAX, V } ,
{ " round " , " set rounding method for timestamps " , OFFSET ( rounding ) , AV_OPT_TYPE_INT , { . i64 = AV_ROUND_NEAR_INF } , 0 , 5 , V | F , " round " } ,
{ " zero " , " round towards 0 " , OFFSET ( rounding ) , AV_OPT_TYPE_CONST , { . i64 = AV_ROUND_ZERO } , 0 , 5 , V | F , " round " } ,
{ " inf " , " round away from 0 " , OFFSET ( rounding ) , AV_OPT_TYPE_CONST , { . i64 = AV_ROUND_INF } , 0 , 5 , V | F , " round " } ,
@ -182,7 +184,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
if ( ret < 0 )
return ret ;
if ( s - > start_time ! = AV_NOPTS_VALUE ) {
if ( s - > start_time ! = DBL_MAX ) {
double first_pts = s - > start_time * AV_TIME_BASE ;
first_pts = FFMIN ( FFMAX ( first_pts , INT64_MIN ) , INT64_MAX ) ;
s - > first_pts = s - > pts = av_rescale_q ( first_pts , AV_TIME_BASE_Q ,