On 12/13/2013 11:37 AM, Justin Ruggles wrote:
On 12/13/2013 06:55 AM, Vittorio Giovara wrote:
This avoids skipping perfectly formed frames that only lack timestamp.
Partially fixes 361.
---
I am not sure of the ramification of this change so I'm posting this
as RFC (although it survided one fate session).
While I was tackling this bug
https://bugzilla.libav.org/show_bug.cgi?id=361 I noticed that in
certain conditions an fps filter was added and that frames were
discarded because they lacked pts. However it is normal that an AVC
elementary stream may lack pts so there should be "fake" or "default"
ones provided when none is available.
So to correctly mux an AVC file with this patch one has only to
supply -r and set the muxing framerate. I wrote 'partially' in the
"fix bug" section because of this additional requirement; maybe it
can be dropped in favour of a log message explaining to add -r.
Maybe bump is in order?
Cheers,
Vittorio
libavfilter/vf_fps.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/libavfilter/vf_fps.c b/libavfilter/vf_fps.c
index 5f62ffd..630bb02 100644
--- a/libavfilter/vf_fps.c
+++ b/libavfilter/vf_fps.c
@@ -176,6 +176,14 @@ static int filter_frame(AVFilterLink *inlink,
AVFrame *buf)
int64_t delta;
int i, ret;
+ // avoid discarding frames when possible
+ if (s->pts == AV_NOPTS_VALUE && 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,
+ inlink->time_base);
+ }
+
s->frames_in++;
/* discard frames until we get the first timestamp */
if (s->pts == AV_NOPTS_VALUE) {
vf_fps is definitely the wrong place to be making up fake timestamps
when they are missing. The setpts filter can possibly do what you want.
Also, regarding that bug report, the 264 demuxer has a -framerate
option, which may resolve the issue.
-Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel