diff mbox

[FFmpeg-devel] lavf/mov.c: Fix timestamps to be strictly monotonic for video also.

Message ID 20180329225809.39277-1-isasi@isasi.mtv.corp.google.com
State Superseded
Headers show

Commit Message

Sasi Inguva March 29, 2018, 10:58 p.m. UTC
Signed-off-by: Sasi Inguva <isasi@isasi.mtv.corp.google.com>
---
 libavformat/mov.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

Comments

Michael Niedermayer March 31, 2018, 10:16 p.m. UTC | #1
On Thu, Mar 29, 2018 at 03:58:09PM -0700, Sasi Inguva wrote:
> Signed-off-by: Sasi Inguva <isasi@isasi.mtv.corp.google.com>
> ---
>  libavformat/mov.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)

The commit message should explain why this change is done.
Not just what is changed


[...]

> @@ -3594,7 +3595,7 @@ static void mov_fix_index(MOVContext *mov, AVStream *st)
>                      edit_list_start_encountered = 1;
>                      // Make timestamps strictly monotonically increasing for audio, by rewriting timestamps for
>                      // discarded packets.
> -                    if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && frame_duration_buffer) {
> +                    if (frame_duration_buffer) {

The comment above needs an update too i think

thx

[...]
diff mbox

Patch

diff --git a/libavformat/mov.c b/libavformat/mov.c
index cb6f3a45de..6b13742e4d 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -3568,7 +3568,7 @@  static void mov_fix_index(MOVContext *mov, AVStream *st)
                     flags |= AVINDEX_DISCARD_FRAME;
                     av_log(mov->fc, AV_LOG_DEBUG, "drop a frame at curr_cts: %"PRId64" @ %"PRId64"\n", curr_cts, index);
 
-                    if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && edit_list_start_encountered == 0) {
+                    if (edit_list_start_encountered == 0) {
                         num_discarded_begin++;
                         frame_duration_buffer = av_realloc(frame_duration_buffer,
                                                            num_discarded_begin * sizeof(int64_t));
@@ -3579,7 +3579,8 @@  static void mov_fix_index(MOVContext *mov, AVStream *st)
                         frame_duration_buffer[num_discarded_begin - 1] = frame_duration;
 
                         // Increment skip_samples for the first non-zero audio edit list
-                        if (first_non_zero_audio_edit > 0 && st->codecpar->codec_id != AV_CODEC_ID_VORBIS) {
+                        if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO &&
+                            first_non_zero_audio_edit > 0 && st->codecpar->codec_id != AV_CODEC_ID_VORBIS) {
                             st->skip_samples += frame_duration;
                         }
                     }
@@ -3594,7 +3595,7 @@  static void mov_fix_index(MOVContext *mov, AVStream *st)
                     edit_list_start_encountered = 1;
                     // Make timestamps strictly monotonically increasing for audio, by rewriting timestamps for
                     // discarded packets.
-                    if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && frame_duration_buffer) {
+                    if (frame_duration_buffer) {
                         fix_index_entry_timestamps(st, st->nb_index_entries, edit_list_dts_counter,
                                                    frame_duration_buffer, num_discarded_begin);
                         av_freep(&frame_duration_buffer);