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:09:53 +0100
commit848af79decd25aff03a17d5fd736181b4f2108c5 (patch)
tree45a0f87d4b5ef3409bebad9eb90268bb3ff65cef
parent50ff83e3afa75535bea839873f3e4c2356a979f6 (diff)
downloadffmpeg-848af79decd25aff03a17d5fd736181b4f2108c5.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 46711528a0..9b1ffaf935 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++;