On 10/27/2015 07:51 PM, Vittorio Giovara wrote:
On Tue, Oct 27, 2015 at 9:17 PM, John Stebbins <[email protected]> wrote:
From: Nicolas George <[email protected]>

(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.

+     * 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.
that field has been absent for a long time, I suppose it refers to
avg_frame_rate now

It's an old comment.  This code was introduced in 2012.

+     */
+    AVRational frame_rate;
  };
question, would it be simpler or is it possible at all to avoid adding
a new field and use time_base to calculate framerate when needed
instead?

thanks

No. time_base != 1 / frame_rate. For example, the time_base in HandBrake is 1/90000. This is what we initialize the time_base to in buffersrc. You need a time_base such as this to represent variable frame rate timestamps for frames. The filter chain can modify the time_base to make it == 1 / frame_rate in special cases (e.g. vf_fps), but in general
they are completely different things.


_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to