diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index fb74f26dc2910e6a9adace2a5862b3184c0f6c3d..dfa2d2b2206049c5f9429d2d0a6567d288a25f53 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -243,6 +243,9 @@ int avfilter_config_links(AVFilterContext *filter) link->sample_aspect_ratio = inlink ? inlink->sample_aspect_ratio : (AVRational){1,1}; + if (inlink && !link->frame_rate.num && !link->frame_rate.den) + link->frame_rate = inlink->frame_rate; + if (inlink) { if (!link->w) link->w = inlink->w; diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h index 17c074fd25311a8747e81747d5d11d0d8e7e2b07..955550eb1e0de06e3e3b311f62efa21560bf5f74 100644 --- a/libavfilter/avfilter.h +++ b/libavfilter/avfilter.h @@ -738,6 +738,18 @@ struct AVFilterLink { */ int age_index; + /** + * Frame rate of the stream on the link, or 1/0 if unknown; + * if left to 0/0, will be automatically be copied from the first input + * of the source filter if it exists. + * + * Sources should set it to the best estimation of the real frame rate. + * Filters should update it if necessary depending on their function. + * Sinks can use it to set a default output frame rate. + * It is similar to the r_frae_rate field in AVStream. + */ + AVRational frame_rate; + }; /**