On Wed, 2015-10-28 at 11:31 +0100, Luca Barbato wrote:
> On 28/10/15 05:24, John Stebbins wrote:
> > On 10/27/2015 07:51 PM, Vittorio Giovara wrote:
> > > On Tue, Oct 27, 2015 at 9:17 PM, John Stebbins
> > > <stebb...@jetheaddev.com> wrote:
> > > > From: Nicolas George <nicolas.geo...@normalesup.org>
> > > > 
> > > > (cherry picked from commit
> > > > 7b42036b3b23c85f473bf9369e37fa8da22eaf93)
> > > (this comment is valid for the next patches too) there is no such
> > > hash
> > > in the libav tree, you should either mention its a ffmpeg hash or
> > > just
> > > remove it since the commit name is unchanged.
> > 
> > I can amend the comments, but most people know where these are being
> > cherry picked from
> > 
> > > > ---
> > > >   libavfilter/avfilter.c |  2 ++
> > > >   libavfilter/avfilter.h | 12 ++++++++++++
> > > >   2 files changed, 14 insertions(+)
> > > > 
> > > > diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
> > > > index 64b2645..cd98d16 100644
> > > > --- a/libavfilter/avfilter.c
> > > > +++ b/libavfilter/avfilter.c
> > > > @@ -195,6 +195,8 @@ int avfilter_config_links(AVFilterContext
> > > > *filter)
> > > >                           link->src->inputs[0]
> > > > ->sample_aspect_ratio :
> > > > (AVRational){1,1};
> > > > 
> > > >                   if (link->src->nb_inputs) {
> > > > +                    if (!link->frame_rate.num && !link
> > > > ->frame_rate.den)
> > > > +                        link->frame_rate =
> > > > link->src->inputs[0]->frame_rate;
> > > >                       if (!link->w)
> > > >                           link->w = link->src->inputs[0]->w;
> > > >                       if (!link->h)
> > > > diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h
> > > > index 9dbfeea..0b670e0 100644
> > > > --- a/libavfilter/avfilter.h
> > > > +++ b/libavfilter/avfilter.h
> > > > @@ -375,6 +375,18 @@ struct AVFilterLink {
> > > >           AVLINK_STARTINIT,       ///< started, but incomplete
> > > >           AVLINK_INIT             ///< complete
> > > >       } init_state;
> > > > +
> > > > +    /**
> > > > +     * Frame rate of the stream on the link, or 1/0 if unknown;
> > > would 0/1 be safer? also where is it initialized?
> > 
> > This comment seems to be misleading. Any filter that
> > doesn't explicitly override frame_rate passes input frame_rate along
> > to the next stage in the filter chain. If it's not set in buffersrc,
> > it's
> > value is 0/0 and that just gets passed through the chain (until some
> > filter sets the frame_rate or it reaches buffersink).
> > 
> > IMO the whole initial bit about "unknown" value should just
> > be omitted.
> 
> Since the set got scattered I couldn't follow and I assumed that would
> be implemented as documented.
> 
> If is not please get an updated set and then lets think again what
> that
> should be.
> 
> Ideally makes sense to build a filter chain that preserves the frame
> rate and forwards it if it is known (since then some rate controls
> could
> use it), but also would be beneficial forward the information that the
> data doesn't have a frame rate, even a nominal one.
> 
> 

I will address current comments and post the patches again.
But I'm not quite sure what you are asking for.  The code as it stands
forwards whatever value frame_rate has through the filter chain.
frame_rate is initialized to 0/0 when the AVFilterLink is av_mallocz'd
and it can be initialized by buffersrc which sets a default value of
0/0.  

So if you do not explicitly set frame_rate in buffersrc and no filter
converts to a specific frame_rate (e.g. vf_fps), you will get 0/0 at the
end of the filter chain.  There are filters (interlace, framepack, and
yadif) that multiply input frame_rate.num or frame_rate.den by 2, but if
input frame_rate is 0/0, it will still be 0/0 at the end of the filter
chain.

Maybe you are just asking to keep the comment, but correct it to say "or
0/0 if unknown"?  That would make sense.
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to