ffmpeg | branch: master | Martin Storsjö <mar...@martin.st> | Mon Mar 16 00:18:37 2015 +0200| [30a041887f89cd97c372ad6a516da6e012f2c88b] | committer: Martin Storsjö
ismindex: Calculate the pts duration of trun atoms, not the dts duration Since the duration is compared to the tfra durations/intervals which are expressed in pts, calculate that here as well. Signed-off-by: Martin Storsjö <mar...@martin.st> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=30a041887f89cd97c372ad6a516da6e012f2c88b --- tools/ismindex.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tools/ismindex.c b/tools/ismindex.c index 387b185..f3bfec0 100644 --- a/tools/ismindex.c +++ b/tools/ismindex.c @@ -228,10 +228,12 @@ fail: static int64_t read_trun_duration(AVIOContext *in, int default_duration, int64_t end) { - int64_t ret = 0; + int64_t dts = 0; int64_t pos; int flags, i; int entries; + int64_t first_pts = 0; + int64_t max_pts = 0; avio_r8(in); /* version */ flags = avio_rb24(in); if (default_duration <= 0 && !(flags & MOV_TRUN_SAMPLE_DURATION)) { @@ -246,19 +248,23 @@ static int64_t read_trun_duration(AVIOContext *in, int default_duration, pos = avio_tell(in); for (i = 0; i < entries && pos < end; i++) { int sample_duration = default_duration; + int64_t pts = dts; if (flags & MOV_TRUN_SAMPLE_DURATION) sample_duration = avio_rb32(in); if (flags & MOV_TRUN_SAMPLE_SIZE) avio_rb32(in); if (flags & MOV_TRUN_SAMPLE_FLAGS) avio_rb32(in); - if (flags & MOV_TRUN_SAMPLE_CTS) avio_rb32(in); + if (flags & MOV_TRUN_SAMPLE_CTS) pts += avio_rb32(in); if (sample_duration < 0) { fprintf(stderr, "Negative sample duration %d\n", sample_duration); return -1; } - ret += sample_duration; + if (i == 0) + first_pts = pts; + max_pts = FFMAX(max_pts, pts + sample_duration); + dts += sample_duration; pos = avio_tell(in); } - return ret; + return max_pts - first_pts; } static int64_t read_moof_duration(AVIOContext *in, int64_t offset) _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog