[FFmpeg-devel] [PATCH 2/3] lavf/mov.c: Make audio timestamps strictly monotonically increasing inside an edit list.
Moritz Barsnick
barsnick at gmx.net
Tue Sep 27 22:02:48 EEST 2016
On Tue, Sep 27, 2016 at 09:28:13 -0700, Sasi Inguva wrote:
> if (curr_cts < edit_list_media_time || curr_cts >= (edit_list_duration + edit_list_media_time)) {
> - if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && curr_cts < edit_list_media_time &&
> - curr_cts + frame_duration > edit_list_media_time &&
> - st->skip_samples == 0 && msc->start_pad == 0) {
> - st->skip_samples = msc->start_pad = edit_list_media_time - curr_cts;
> -
> - // Shift the index entry timestamp by skip_samples to be correct.
> - edit_list_dts_counter -= st->skip_samples;
> + if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && st->codecpar->codec_id != AV_CODEC_ID_VORBIS &&
> + curr_cts < edit_list_media_time && curr_cts + frame_duration > edit_list_media_time &&
> + first_non_zero_audio_edit > 0) {
> + packet_skip_samples = edit_list_media_time - curr_cts;
> + st->skip_samples += packet_skip_samples;
> +
> + // Shift the index entry timestamp by packet_skip_samples to be correct.
> + edit_list_dts_counter -= packet_skip_samples;
> if (edit_list_start_encountered == 0) {
> - edit_list_start_encountered = 1;
> + edit_list_start_encountered = 1;
> + // Make timestamps strictly monotonically increasing for audio, by rewriting timestamps for
> + // discarded packets.
> + 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);
> + }
Something's fishy with your indentation here.
> + if (!frame_duration_buffer) {
> + av_log(mov->fc, AV_LOG_ERROR, "Cannot reallocate frame duration buffer\n");
> + break;
> + }
I fail to see the whole code block (and I have problems applying the
patch). What is this breaking from?
Moritz
More information about the ffmpeg-devel
mailing list