aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-12-22 18:47:28 +0100
committerCarl Eugen Hoyos <cehoyos@ag.or.at>2013-12-24 08:06:42 +0100
commit5c502e5d4141709db616b1ab4576f8dbabdd216f (patch)
tree2afb7d2c94934ff4646e2e0f11d0fa6143f88303
parentfa45feefad0e653ff32a216e7bb98095a10ba49e (diff)
downloadffmpeg-5c502e5d4141709db616b1ab4576f8dbabdd216f.tar.gz
nutenc/write_index: warn if 2 consecutive keyframes have the same PTS and discard the 2nd
This fixes an assertion failure and regression and restores previous behaviour Fixes Ticket3197 An alternative would be to fail hard in this case and refuse to mux such data. Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit de2a2caf4dedb28a959d0ff6f02751bb6c3ff033)
-rw-r--r--libavformat/nutenc.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/libavformat/nutenc.c b/libavformat/nutenc.c
index 2d8d2652ee..974b62431b 100644
--- a/libavformat/nutenc.c
+++ b/libavformat/nutenc.c
@@ -584,8 +584,15 @@ static int write_index(NUTContext *nut, AVIOContext *bc) {
int64_t last_pts= -1;
int j, k;
for (j=0; j<nut->sp_count; j++) {
- int flag = (nus->keyframe_pts[j] != AV_NOPTS_VALUE) ^ (j+1 == nut->sp_count);
+ int flag;
int n = 0;
+
+ if (j && nus->keyframe_pts[j] == nus->keyframe_pts[j-1]) {
+ av_log(nut->avf, AV_LOG_WARNING, "Multiple keyframes with same PTS\n");
+ nus->keyframe_pts[j] = AV_NOPTS_VALUE;
+ }
+
+ flag = (nus->keyframe_pts[j] != AV_NOPTS_VALUE) ^ (j+1 == nut->sp_count);
for (; j<nut->sp_count && (nus->keyframe_pts[j] != AV_NOPTS_VALUE) == flag; j++)
n++;