Oops. I messed up with git send-email, and my message didn't occur in reply to this thread. So, here I am typing in Gmail..
Hi Clement and Michael, Sorry that I hadn't started a discussion on the patch before sending it for review. However this patch has been there for years in our ffmpeg version. I simply made some cosmetic changes to prepare it to send for review, hence I haven't wasted much work/time on it. That said, I think that the code we have, correctly decodes almost 100% of the edit list uploads that we receive and I think will be of good use to others, at least on a temporary basis, until a permanent solution can be agreed upon. As can be seen, the API changes to libav{format/codec/util} are very minor. I've fixed all the fate tests, and you can find in this doc https://docs.google.com/document/d/1V2nWYUcKsKv6uycRnknXzAnGjE3mL YcO_5ti5hLHUn8/pub , justifications of existing fate test reference modifications. I have also separated the patch into 4 patches . I messed up with git send-email so those patches got sent as separate mails. I am attaching them as files anyway here. On Mon, Aug 8, 2016 at 8:09 AM, Clément Bœsch <u...@pkh.me> wrote: > Hi, > > On Fri, Aug 05, 2016 at 05:18:39PM -0700, Sasi Inguva wrote: > > In YouTube we have long been receiving MOV files from users, which have > non-trivial edit lists (Those edit lists which are not just used to offset > video start from audio start) and multiple edit lists. Recently the uploads > of such files has increased with the introduction of apps that allow video > editing and upload like Vine etc. mov.c in ffmpeg does not have edit list > parsing support i.e. the support for deciding what video/audio packets > should be output with what timestamps, based on edit lists. For this > reason, we had built a basic support for edit list parsing in our version > of ffmpeg, which fixes the AVIndexEntries built by mov_build_index by > looking at edit lists, and introduces new DISCARD flags in AVPacket and > AVFrame to signal to the decoder to discard certain packets. > > > > For a while our edit list support was broken, as in it didn't properly > work for multiple edit lists and it had problems with edit-lists ending on > B-frames. But we've fixed most of these issues in recent times, and we > think that now it is in a good enough condition so that it can be submitted > to HEAD. This will not only help the vast userbase of ffmepg, but will also > help us with staying up-to-date with ffmpeg and also by adding the power of > ffmpeg developer community to our MOV support. So here's a go at it. > > What is supported: > > - multiple edit lists > > - edit lists ending on B-frames > > - zero segment duration edit lists > > > > What is not supported: > > - Changing the rate of playing with edit lists. We basically ignore > MediaRate field of edit. > > > > I have added fate tests too. Here is a no-sign-in required link to the > test files https://drive.google.com/folderview?id=0Bz6XfEJZ- > 9N3R3o3QXNHUGRqbms&usp=sharing. > > First, thanks for working on this. But it would be much much more > appropriate to discuss such changes with developers before engaging > yourself in such heavy development. As you can guess, this issue has been > discussed many times in the past within the project, and a proper solution > had yet to come out of it. It looks like the approach you took was > dismissed in the past from an infrastructure PoV. > > I will have a look to this patch later this week, but please don't follow > this corporate approach when doing such huge contribution. You're risking > too much by doing so (your work could be dismissed, or worse your work > introduce fundamental issues within the project which we'll take years to > fix because $API) > > You can use the mailing list, or simply IRC to have quick talk with us. > > -- > Clément B. > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > >
From 29e19f35e6cb2090beb13c302b5d135e4a3b2c19 Mon Sep 17 00:00:00 2001 From: Sasi Inguva <is...@google.com> Date: Tue, 9 Aug 2016 18:02:45 -0700 Subject: [PATCH 1/4] avutil/frame: Add a flag to discard frame after decode. Signed-off-by: Sasi Inguva <is...@google.com> --- libavutil/frame.c | 1 + libavutil/frame.h | 4 ++++ libavutil/version.h | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/libavutil/frame.c b/libavutil/frame.c index 662c20d..3c74931 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -114,6 +114,7 @@ static void get_frame_defaults(AVFrame *frame) frame->colorspace = AVCOL_SPC_UNSPECIFIED; frame->color_range = AVCOL_RANGE_UNSPECIFIED; frame->chroma_location = AVCHROMA_LOC_UNSPECIFIED; + frame->flags = 0; } static void free_side_data(AVFrameSideData **ptr_sd) diff --git a/libavutil/frame.h b/libavutil/frame.h index 8a41a86..1e2691e 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -396,6 +396,10 @@ typedef struct AVFrame { */ #define AV_FRAME_FLAG_CORRUPT (1 << 0) /** + * A flag to mark the frames which need to be decoded, but shouldn't be output. + */ +#define AV_FRAME_FLAG_DISCARD (1 << 2) +/** * @} */ diff --git a/libavutil/version.h b/libavutil/version.h index b2dffb7..3e94a23 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -64,7 +64,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 55 -#define LIBAVUTIL_VERSION_MINOR 28 +#define LIBAVUTIL_VERSION_MINOR 29 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ -- 2.8.0.rc3.226.g39d4020
From 5a57aa59faa969b44a462bb2f1a197690dbdef59 Mon Sep 17 00:00:00 2001 From: Sasi Inguva <is...@google.com> Date: Tue, 9 Aug 2016 18:24:06 -0700 Subject: [PATCH 4/4] lavf/mov: Add support for edit list parsing. Signed-off-by: Sasi Inguva <is...@google.com> --- libavformat/mov.c | 323 ++++++++- tests/Makefile | 1 + tests/fate/mov.mak | 28 + tests/ref/fate/filter-fps-cfr | 1 - tests/ref/fate/gaplessenc-itunes-to-ipod-aac | 12 +- tests/ref/fate/gaplessenc-pcm-to-mov-aac | 12 +- tests/ref/fate/gsm-toast | 1000 +++++++++++++------------- tests/ref/fate/h264-invalid-ref-mod | 20 +- tests/ref/fate/pcm_s16be-stereo | 2 +- tests/ref/fate/quickdraw | 12 +- tests/ref/fate/tscc2-mov | 20 +- tests/ref/lavf-fate/mov_qtrle_mace6 | 2 +- 12 files changed, 884 insertions(+), 549 deletions(-) create mode 100644 tests/fate/mov.mak diff --git a/libavformat/mov.c b/libavformat/mov.c index f4c35d7..5a53ee4 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -2769,6 +2769,312 @@ static int mov_read_sbgp(MOVContext *c, AVIOContext *pb, MOVAtom atom) return pb->eof_reached ? AVERROR_EOF : 0; } +/** + * Get ith edit list entry (media time, duration). + */ +static int get_edit_list_entry(MOVStreamContext *msc, + unsigned int edit_list_index, + int64_t *edit_list_media_time, + int64_t *edit_list_duration, + int64_t global_timescale) +{ + if (edit_list_index == msc->elst_count) { + return 0; + } + *edit_list_media_time = msc->elst_data[edit_list_index].time; + *edit_list_duration = msc->elst_data[edit_list_index].duration; + /* duration is in global timescale units;convert to msc timescale */ + *edit_list_duration *= msc->time_scale; + *edit_list_duration /= global_timescale; + return 1; +} + +/** + * Find the closest previous keyframe to the timestamp, in e_old index + * entries. + * Returns the index of the entry in st->index_entries if successful, + * else returns -1. + */ +static int64_t find_prev_closest_keyframe_index(AVStream *st, + AVIndexEntry *e_old, + int nb_old, + int64_t timestamp, + int flag) +{ + AVIndexEntry *e_keep = st->index_entries; + int nb_keep = st->nb_index_entries; + int64_t found = -1; + + st->index_entries = e_old; + st->nb_index_entries = nb_old; + found = av_index_search_timestamp(st, timestamp, flag | AVSEEK_FLAG_BACKWARD); + + /* restore AVStream state*/ + st->index_entries = e_keep; + st->nb_index_entries = nb_keep; + return found; +} + +/** + * Add index entry with the given values, to the end of st->index_entries. + * Returns the new size st->index_entries if successful, else returns -1. + */ +static int64_t add_index_entry(AVStream *st, int64_t pos, int64_t timestamp, + int size, int distance, int flags) +{ + AVIndexEntry *entries, *ie; + int64_t index = -1; + const size_t min_size_needed = (st->nb_index_entries + 1) * sizeof(AVIndexEntry); + const size_t requested_size = + min_size_needed > st->index_entries_allocated_size ? + FFMAX(min_size_needed, 2 * st->index_entries_allocated_size) : + min_size_needed; + + if((unsigned)st->nb_index_entries + 1 >= UINT_MAX / sizeof(AVIndexEntry)) + return -1; + + entries = av_fast_realloc(st->index_entries, + &st->index_entries_allocated_size, + requested_size); + if(!entries) + return -1; + + st->index_entries= entries; + + index= st->nb_index_entries++; + ie= &entries[index]; + assert(!index || ie[-1].timestamp <= timestamp); + + ie->pos = pos; + ie->timestamp = timestamp; + ie->min_distance= distance; + ie->size= size; + ie->flags = flags; + return index; +} + +/** + * Append a new ctts entry to ctts_data. + * Returns the new ctts_count if successful, else returns -1. + */ +static int64_t add_ctts_entry(MOVStts** ctts_data, int64_t* ctts_count, unsigned int* allocated_size, + int count, int duration) +{ + MOVStts *ctts_buf_new; + const size_t min_size_needed = (*ctts_count + 1) * sizeof(MOVStts); + const size_t requested_size = + min_size_needed > *allocated_size ? + FFMAX(min_size_needed, 2 * (*allocated_size)) : + min_size_needed; + + if((unsigned)(*ctts_count) + 1 >= UINT_MAX / sizeof(MOVStts)) + return -1; + + ctts_buf_new = av_fast_realloc(*ctts_data, allocated_size, requested_size); + + if(!ctts_buf_new) + return -1; + + *ctts_data = ctts_buf_new; + + ctts_buf_new[*ctts_count].count = count; + ctts_buf_new[*ctts_count].duration = duration; + + *ctts_count = (*ctts_count) + 1; + return *ctts_count; +} + +/** + * Fix st->index_entries, so that it contains only the entries (and the entries + * which are needed to decode them) that fall in the edit list time ranges. + * Also fixes the timestamps of the index entries to match the timeline + * specified the edit lists. + */ +static void mov_fix_index(MOVContext *mov, AVStream *st) +{ + MOVStreamContext *msc = st->priv_data; + AVIndexEntry *e_old = st->index_entries; + int nb_old = st->nb_index_entries; + const AVIndexEntry *e_old_end = e_old + nb_old; + const AVIndexEntry *current = NULL; + MOVStts *ctts_data_old = msc->ctts_data; + int64_t ctts_index_old = 0; + int64_t ctts_sample_old = 0; + int64_t ctts_count_old = msc->ctts_count; + int64_t edit_list_media_time = 0; + int64_t edit_list_duration = 0; + int64_t frame_duration = 0; + int64_t edit_list_dts_counter = 0; + int64_t edit_list_dts_entry_end = 0; + int64_t edit_list_start_ctts_sample = 0; + int64_t curr_cts; + int64_t edit_list_index = 0; + int64_t index; + int64_t index_ctts_count; + int flags; + unsigned int ctts_allocated_size = 0; + int64_t start_dts = 0; + int64_t edit_list_media_time_dts = 0; + int64_t edit_list_start_encountered = 0; + + + if (!msc->elst_data || msc->elst_count <= 0) { + return; + } + // Clean AVStream from traces of old index + st->index_entries = NULL; + st->index_entries_allocated_size = 0; + st->nb_index_entries = 0; + + // Clean ctts fields of MOVStreamContext + msc->ctts_data = NULL; + msc->ctts_count = 0; + msc->ctts_index = 0; + msc->ctts_sample = 0; + + // If the dts_shift is positive (in case of negative ctts values in mov), + // then negate the DTS by dts_shift + if (msc->dts_shift > 0) + edit_list_dts_entry_end -= msc->dts_shift; + + // Offset the DTS by ctts[0] to make the PTS of the first frame 0 + if (ctts_data_old && ctts_count_old > 0) { + edit_list_dts_entry_end -= ctts_data_old[0].duration; + av_log(mov->fc, AV_LOG_DEBUG, "Offset DTS by ctts[%d].duration: %d\n", 0, ctts_data_old[0].duration); + } + + start_dts = edit_list_dts_entry_end; + + while (get_edit_list_entry(msc, edit_list_index, &edit_list_media_time, + &edit_list_duration, mov->time_scale)) { + av_log(mov->fc, AV_LOG_DEBUG, "Processing st: %d, edit list %lld - media time: %lld, duration: %lld\n", + st->index, edit_list_index, edit_list_media_time, edit_list_duration); + edit_list_index++; + edit_list_dts_counter = edit_list_dts_entry_end; + edit_list_dts_entry_end += edit_list_duration; + if (edit_list_media_time == -1) { + continue; + } + //find closest previous key frame + edit_list_media_time_dts = edit_list_media_time; + if (msc->dts_shift > 0) { + edit_list_media_time_dts -= msc->dts_shift; + } + + // While reordering frame index according to edit list we must handle properly + // the scenario when edit list entry starts from none key frame. + // We find closest previous key frame and preserve it and consequent frames in index. + // All frames which are outside edit list entry time boundaries will be dropped after decoding. + if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) { + // Audio decoders like AAC need need a decoder delay samples previous to the current sample, + // to correctly decode this frame. Hence for audio right now, passing through all the samples + // to the decoder. We could be more intelligent in setting the index based on the decoder delay + // but for most cases which are simple one-edit list files, with edit-list start time as the + // encoder delay, it is not necessary. + index = 0; + } else { + index = find_prev_closest_keyframe_index(st, e_old, nb_old, edit_list_media_time_dts, 0); + } + if (index == -1) { + av_log(mov->fc, AV_LOG_ERROR, "Missing key frame while reordering index according to edit list\n"); + continue; + } + current = e_old + index; + + ctts_index_old = 0; + ctts_sample_old = 0; + + // set ctts_index properly for the found key frame + for (index_ctts_count = 0; index_ctts_count < index; index_ctts_count++) { + if (ctts_data_old && ctts_index_old < ctts_count_old) { + ctts_sample_old++; + if (ctts_data_old[ctts_index_old].count == ctts_sample_old) { + ctts_index_old++; + ctts_sample_old = 0; + } + } + } + + edit_list_start_ctts_sample = ctts_sample_old; + + // Iterate over index and arrange it according to edit list + edit_list_start_encountered = 0; + for (; current < e_old_end; current++, index++) { + // check if frame outside edit list mark it for discard + frame_duration = (current + 1 < e_old_end) ? + ((current + 1)->timestamp - current->timestamp) : edit_list_duration; + + flags = current->flags; + + // frames (pts) before or after edit list + curr_cts = current->timestamp + msc->dts_shift; + + if (ctts_data_old && ctts_index_old < ctts_count_old) { + av_log(mov->fc, AV_LOG_DEBUG, "shifted frame pts, curr_cts: %lld @ %lld, ctts: %d, ctts_count: %lld\n", + curr_cts, ctts_index_old, ctts_data_old[ctts_index_old].duration, ctts_count_old); + curr_cts += ctts_data_old[ctts_index_old].duration; + ctts_sample_old++; + if (ctts_sample_old == ctts_data_old[ctts_index_old].count) { + if (add_ctts_entry(&msc->ctts_data, &msc->ctts_count, + &ctts_allocated_size, + ctts_data_old[ctts_index_old].count - edit_list_start_ctts_sample, + ctts_data_old[ctts_index_old].duration) == -1) { + av_log(mov->fc, AV_LOG_ERROR, "Cannot add CTTS entry %lld - {%lld, %lld}\n", + ctts_index_old, + ctts_data_old[ctts_index_old].count - edit_list_start_ctts_sample, + ctts_data_old[ctts_index_old].duration); + break; + } + ctts_index_old++; + ctts_sample_old = 0; + edit_list_start_ctts_sample = 0; + } + } + if (curr_cts < edit_list_media_time || curr_cts >= (edit_list_duration + edit_list_media_time)) { + flags |= AVINDEX_DISCARD_FRAME; + av_log(mov->fc, AV_LOG_DEBUG, "drop a frame at curr_cts: %lld @ %lld\n", curr_cts, index); + } else if (edit_list_start_encountered == 0) { + edit_list_start_encountered = 1; + } + + if (add_index_entry(st, current->pos, edit_list_dts_counter, current->size, + current->min_distance, flags) == -1) { + av_log(mov->fc, AV_LOG_ERROR, "Cannot add index entry\n"); + break; + } + + // Only start incrementing DTS in frame_duration amounts, when we encounter a frame in edit list. + if (edit_list_start_encountered > 0) { + edit_list_dts_counter = edit_list_dts_counter + frame_duration; + } + + // Break when found first key frame after edit entry completion + if (((curr_cts + frame_duration) >= (edit_list_duration + edit_list_media_time)) && + ((flags & AVINDEX_KEYFRAME) || ((st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO)))) { + + if (ctts_data_old && ctts_sample_old != 0) { + if (add_ctts_entry(&msc->ctts_data, &msc->ctts_count, + &ctts_allocated_size, + ctts_sample_old - edit_list_start_ctts_sample, + ctts_data_old[ctts_index_old].duration) == -1) { + av_log(mov->fc, AV_LOG_ERROR, "Cannot add CTTS entry %lld - {%lld, %d}\n", + ctts_index_old, ctts_sample_old - edit_list_start_ctts_sample, + ctts_data_old[ctts_index_old].duration); + break; + } + } + break; + } + } + } + // Update av stream length + st->duration = edit_list_dts_entry_end - start_dts; + + // Free the old index and the old CTTS structures + av_free(e_old); + av_free(ctts_data_old); +} + static void mov_build_index(MOVContext *mov, AVStream *st) { MOVStreamContext *sc = st->priv_data; @@ -2782,7 +3088,7 @@ static void mov_build_index(MOVContext *mov, AVStream *st) uint64_t stream_size = 0; if (sc->elst_count) { - int i, edit_start_index = 0, unsupported = 0; + int i, edit_start_index = 0; int64_t empty_duration = 0; // empty duration of the first edit list entry int64_t start_time = 0; // start time of the media @@ -2795,19 +3101,14 @@ static void mov_build_index(MOVContext *mov, AVStream *st) edit_start_index = 1; } else if (i == edit_start_index && e->time >= 0) { start_time = e->time; - } else - unsupported = 1; + } } - if (unsupported) - av_log(mov->fc, AV_LOG_WARNING, "multiple edit list entries, " - "a/v desync might occur, patch welcome\n"); /* adjust first dts according to edit list */ if ((empty_duration || start_time) && mov->time_scale > 0) { if (empty_duration) empty_duration = av_rescale(empty_duration, sc->time_scale, mov->time_scale); sc->time_offset = start_time - empty_duration; - current_dts = -sc->time_offset; if (sc->ctts_count>0 && sc->stts_count>0 && sc->ctts_data[0].duration / FFMAX(sc->stts_data[0].duration, 1) > 16) { /* more than 16 frames delay, dts are likely wrong @@ -2817,7 +3118,7 @@ static void mov_build_index(MOVContext *mov, AVStream *st) } } - if (!unsupported && st->codecpar->codec_id == AV_CODEC_ID_AAC && start_time > 0) + if (st->codecpar->codec_id == AV_CODEC_ID_AAC && start_time > 0) sc->start_pad = start_time; } @@ -3051,6 +3352,9 @@ static void mov_build_index(MOVContext *mov, AVStream *st) } } } + + // Fix index according to edit lists. + mov_fix_index(mov, st); } static int test_same_origin(const char *src, const char *ref) { @@ -5349,6 +5653,9 @@ static int mov_read_packet(AVFormatContext *s, AVPacket *pkt) pkt->stream_index = sc->ffindex; pkt->dts = sample->timestamp; + if (sample->flags & AVINDEX_DISCARD_FRAME) { + pkt->flags |= AV_PKT_FLAG_DISCARD; + } if (sc->ctts_data && sc->ctts_index < sc->ctts_count) { pkt->pts = pkt->dts + sc->dts_shift + sc->ctts_data[sc->ctts_index].duration; /* update ctts context */ diff --git a/tests/Makefile b/tests/Makefile index 895944d..e191470 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -148,6 +148,7 @@ include $(SRC_PATH)/tests/fate/lossless-video.mak include $(SRC_PATH)/tests/fate/matroska.mak include $(SRC_PATH)/tests/fate/microsoft.mak include $(SRC_PATH)/tests/fate/monkeysaudio.mak +include $(SRC_PATH)/tests/fate/mov.mak include $(SRC_PATH)/tests/fate/mp3.mak include $(SRC_PATH)/tests/fate/mpc.mak include $(SRC_PATH)/tests/fate/mpeg4.mak diff --git a/tests/fate/mov.mak b/tests/fate/mov.mak new file mode 100644 index 0000000..5b3a187 --- /dev/null +++ b/tests/fate/mov.mak @@ -0,0 +1,28 @@ +FATE_MOV = fate-mov-3elist \ + fate-mov-3elist-1ctts \ + fate-mov-1elist-1ctts \ + fate-mov-1elist-noctts \ + fate-mov-elist-starts-ctts-2ndsample \ + fate-mov-1elist-ends-last-bframe \ + fate-mov-2elist-elist1-ends-bframe + +FATE_SAMPLES_AVCONV += $(FATE_MOV) + +fate-mov: $(FATE_MOV) + +# Make sure we handle edit lists correctly in normal cases. +fate-mov-1elist-noctts: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/mov-1elist-noctts.mov +fate-mov-1elist-1ctts: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/mov-1elist-1ctts.mov +fate-mov-3elist: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/mov-3elist.mov +fate-mov-3elist-1ctts: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/mov-3elist-1ctts.mov + +# Makes sure that the CTTS is also modified when we fix avindex in mov.c while parsing edit lists. +fate-mov-elist-starts-ctts-2ndsample: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/mov-elist-starts-ctts-2ndsample.mov + +# Makes sure that we handle edit lists ending on a B-frame correctly. +# The last frame in decoding order which is B-frame should be output, but the last but-one P-frame shouldn't be +# output. +fate-mov-1elist-ends-last-bframe: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/mov-1elist-ends-last-bframe.mov + +# Makes sure that we handle timestamps of packets in case of multiple edit lists with one of them ending on a B-frame correctly. +fate-mov-2elist-elist1-ends-bframe: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/mov-2elist-elist1-ends-bframe.mov \ No newline at end of file diff --git a/tests/ref/fate/filter-fps-cfr b/tests/ref/fate/filter-fps-cfr index fa71b59..242fb04 100644 --- a/tests/ref/fate/filter-fps-cfr +++ b/tests/ref/fate/filter-fps-cfr @@ -91,4 +91,3 @@ 0, 85, 85, 1, 30576, 0xd4150aad 0, 86, 86, 1, 30576, 0xd4150aad 0, 87, 87, 1, 30576, 0xd4150aad -0, 88, 88, 1, 30576, 0xd4150aad diff --git a/tests/ref/fate/gaplessenc-itunes-to-ipod-aac b/tests/ref/fate/gaplessenc-itunes-to-ipod-aac index aacb058..145bd09 100644 --- a/tests/ref/fate/gaplessenc-itunes-to-ipod-aac +++ b/tests/ref/fate/gaplessenc-itunes-to-ipod-aac @@ -1,13 +1,13 @@ [STREAM] index=0 -start_pts=0 -duration_ts=104384 +start_pts=1024 +duration_ts=103326 [/STREAM] [FORMAT] -start_time=0.000000 +start_time=0.023220 duration=2.367000 [/FORMAT] -packet|pts=-1024|dts=-1024|duration=1024 +packet|pts=0|dts=0|duration=N/A packet|pts=0|dts=0|duration=1024 packet|pts=1024|dts=1024|duration=1024 packet|pts=2048|dts=2048|duration=1024 @@ -22,7 +22,7 @@ packet|pts=98304|dts=98304|duration=1024 packet|pts=99328|dts=99328|duration=1024 packet|pts=100352|dts=100352|duration=1024 packet|pts=101376|dts=101376|duration=1024 -packet|pts=102400|dts=102400|duration=1984 +packet|pts=102400|dts=102400|duration=926 stream|nb_read_packets=102 frame|pkt_pts=0|pkt_dts=0|best_effort_timestamp=0|pkt_duration=1024|nb_samples=1024 frame|pkt_pts=1024|pkt_dts=1024|best_effort_timestamp=1024|pkt_duration=1024|nb_samples=1024 @@ -39,5 +39,5 @@ frame|pkt_pts=98304|pkt_dts=98304|best_effort_timestamp=98304|pkt_duration=1024| frame|pkt_pts=99328|pkt_dts=99328|best_effort_timestamp=99328|pkt_duration=1024|nb_samples=1024 frame|pkt_pts=100352|pkt_dts=100352|best_effort_timestamp=100352|pkt_duration=1024|nb_samples=1024 frame|pkt_pts=101376|pkt_dts=101376|best_effort_timestamp=101376|pkt_duration=1024|nb_samples=1024 -frame|pkt_pts=102400|pkt_dts=102400|best_effort_timestamp=102400|pkt_duration=1984|nb_samples=1024 +frame|pkt_pts=102400|pkt_dts=102400|best_effort_timestamp=102400|pkt_duration=926|nb_samples=1024 stream|nb_read_frames=101 diff --git a/tests/ref/fate/gaplessenc-pcm-to-mov-aac b/tests/ref/fate/gaplessenc-pcm-to-mov-aac index 05dff6e..e99c786 100644 --- a/tests/ref/fate/gaplessenc-pcm-to-mov-aac +++ b/tests/ref/fate/gaplessenc-pcm-to-mov-aac @@ -1,13 +1,13 @@ [STREAM] index=0 -start_pts=0 -duration_ts=530224 +start_pts=1024 +duration_ts=529200 [/STREAM] [FORMAT] -start_time=0.000000 +start_time=0.023220 duration=12.024000 [/FORMAT] -packet|pts=-1024|dts=-1024|duration=1024 +packet|pts=0|dts=0|duration=N/A packet|pts=0|dts=0|duration=1024 packet|pts=1024|dts=1024|duration=1024 packet|pts=2048|dts=2048|duration=1024 @@ -22,7 +22,7 @@ packet|pts=524288|dts=524288|duration=1024 packet|pts=525312|dts=525312|duration=1024 packet|pts=526336|dts=526336|duration=1024 packet|pts=527360|dts=527360|duration=1024 -packet|pts=528384|dts=528384|duration=1840 +packet|pts=528384|dts=528384|duration=816 stream|nb_read_packets=518 frame|pkt_pts=0|pkt_dts=0|best_effort_timestamp=0|pkt_duration=1024|nb_samples=1024 frame|pkt_pts=1024|pkt_dts=1024|best_effort_timestamp=1024|pkt_duration=1024|nb_samples=1024 @@ -39,5 +39,5 @@ frame|pkt_pts=524288|pkt_dts=524288|best_effort_timestamp=524288|pkt_duration=10 frame|pkt_pts=525312|pkt_dts=525312|best_effort_timestamp=525312|pkt_duration=1024|nb_samples=1024 frame|pkt_pts=526336|pkt_dts=526336|best_effort_timestamp=526336|pkt_duration=1024|nb_samples=1024 frame|pkt_pts=527360|pkt_dts=527360|best_effort_timestamp=527360|pkt_duration=1024|nb_samples=1024 -frame|pkt_pts=528384|pkt_dts=528384|best_effort_timestamp=528384|pkt_duration=1840|nb_samples=1024 +frame|pkt_pts=528384|pkt_dts=528384|best_effort_timestamp=528384|pkt_duration=816|nb_samples=1024 stream|nb_read_frames=517 diff --git a/tests/ref/fate/gsm-toast b/tests/ref/fate/gsm-toast index ebbfbbf..33bd18e 100644 --- a/tests/ref/fate/gsm-toast +++ b/tests/ref/fate/gsm-toast @@ -3,503 +3,503 @@ #codec_id 0: pcm_s16le #sample_rate 0: 8000 #channel_layout 0: 4 -0, 0, 0, 160, 320, 0x4c32ab06 -0, 160, 160, 160, 320, 0x2052a4e7 -0, 320, 320, 160, 320, 0xe9aeafca -0, 480, 480, 160, 320, 0xde83b450 -0, 640, 640, 160, 320, 0x06a6a80e -0, 800, 800, 160, 320, 0xf6aeb1e2 -0, 960, 960, 160, 320, 0x2623b40c -0, 1120, 1120, 160, 320, 0x8ec69f25 -0, 1280, 1280, 160, 320, 0xddaaac88 -0, 1440, 1440, 160, 320, 0x9e60b713 -0, 1600, 1600, 160, 320, 0xb738ab30 -0, 1760, 1760, 160, 320, 0xdb4bbb92 -0, 1920, 1920, 160, 320, 0x0370ae8b -0, 2080, 2080, 160, 320, 0xb611a3fb -0, 2240, 2240, 160, 320, 0x07ee8e3b -0, 2400, 2400, 160, 320, 0xdb1ec628 -0, 2560, 2560, 160, 320, 0xd5f1bda2 -0, 2720, 2720, 160, 320, 0xcabb9a9c -0, 2880, 2880, 160, 320, 0x16c8ad61 -0, 3040, 3040, 160, 320, 0xf76fc25e -0, 3200, 3200, 160, 320, 0x7118a10d -0, 3360, 3360, 160, 320, 0x29f9a0db -0, 3520, 3520, 160, 320, 0x41f2a4ef -0, 3680, 3680, 160, 320, 0x36dfb231 -0, 3840, 3840, 160, 320, 0xc5399eda -0, 4000, 4000, 160, 320, 0x17d4b9e0 -0, 4160, 4160, 160, 320, 0x2b5797ac -0, 4320, 4320, 160, 320, 0x0128c5e7 -0, 4480, 4480, 160, 320, 0xf4f38037 -0, 4640, 4640, 160, 320, 0x77d6b5f2 -0, 4800, 4800, 160, 320, 0xd94a93e0 -0, 4960, 4960, 160, 320, 0x968daae3 -0, 5120, 5120, 160, 320, 0xda5ba0ec -0, 5280, 5280, 160, 320, 0x316da1ec -0, 5440, 5440, 160, 320, 0x3a35b2d2 -0, 5600, 5600, 160, 320, 0xca0b988f -0, 5760, 5760, 160, 320, 0x1295b0b1 -0, 5920, 5920, 160, 320, 0xe121ae72 -0, 6080, 6080, 160, 320, 0x7da7ad43 -0, 6240, 6240, 160, 320, 0x96a49cfe -0, 6400, 6400, 160, 320, 0x70c2b1de -0, 6560, 6560, 160, 320, 0x668d88c0 -0, 6720, 6720, 160, 320, 0x5460b5a8 -0, 6880, 6880, 160, 320, 0x6ac78eab -0, 7040, 7040, 160, 320, 0x0d8dab87 -0, 7200, 7200, 160, 320, 0xe2be94af -0, 7360, 7360, 160, 320, 0x3487acdc -0, 7520, 7520, 160, 320, 0x5048955a -0, 7680, 7680, 160, 320, 0x2ef4ae0d -0, 7840, 7840, 160, 320, 0xc765b773 -0, 8000, 8000, 160, 320, 0xad96a486 -0, 8160, 8160, 160, 320, 0xb9fdbf1f -0, 8320, 8320, 160, 320, 0xf26c9ecf -0, 8480, 8480, 160, 320, 0xbcadb535 -0, 8640, 8640, 160, 320, 0xa8c897bc -0, 8800, 8800, 160, 320, 0xaa58b520 -0, 8960, 8960, 160, 320, 0xcb48a716 -0, 9120, 9120, 160, 320, 0x4d5da564 -0, 9280, 9280, 160, 320, 0x9809ae28 -0, 9440, 9440, 160, 320, 0x5baeb1e4 -0, 9600, 9600, 160, 320, 0x6a719b63 -0, 9760, 9760, 160, 320, 0xc27d92f0 -0, 9920, 9920, 160, 320, 0x0e9b9fe9 -0, 10080, 10080, 160, 320, 0xbf9d9bf7 -0, 10240, 10240, 160, 320, 0xf35aa64d -0, 10400, 10400, 160, 320, 0x26449ce8 -0, 10560, 10560, 160, 320, 0x58f4a997 -0, 10720, 10720, 160, 320, 0x155da289 -0, 10880, 10880, 160, 320, 0x63b19a5c -0, 11040, 11040, 160, 320, 0xe01aad38 -0, 11200, 11200, 160, 320, 0x4e0f9c43 -0, 11360, 11360, 160, 320, 0x9447a284 -0, 11520, 11520, 160, 320, 0xdb36a433 -0, 11680, 11680, 160, 320, 0x799a9b2c -0, 11840, 11840, 160, 320, 0x1526a162 -0, 12000, 12000, 160, 320, 0x0a4ea140 -0, 12160, 12160, 160, 320, 0xb08f9ed7 -0, 12320, 12320, 160, 320, 0x221bab76 -0, 12480, 12480, 160, 320, 0x4befacf0 -0, 12640, 12640, 160, 320, 0xac489509 -0, 12800, 12800, 160, 320, 0x57a1a5b4 -0, 12960, 12960, 160, 320, 0x81e8ab97 -0, 13120, 13120, 160, 320, 0xc6ada4d6 -0, 13280, 13280, 160, 320, 0x12489975 -0, 13440, 13440, 160, 320, 0x1da59ba9 -0, 13600, 13600, 160, 320, 0xf225ac62 -0, 13760, 13760, 160, 320, 0x8c8e9eab -0, 13920, 13920, 160, 320, 0x10599dec -0, 14080, 14080, 160, 320, 0x06c39fa5 -0, 14240, 14240, 160, 320, 0xb0efa3c4 -0, 14400, 14400, 160, 320, 0x72caadab -0, 14560, 14560, 160, 320, 0xe4619ff0 -0, 14720, 14720, 160, 320, 0x49bca017 -0, 14880, 14880, 160, 320, 0x413f9fbe -0, 15040, 15040, 160, 320, 0x6eaed0ee -0, 15200, 15200, 160, 320, 0x27e4b1eb -0, 15360, 15360, 160, 320, 0x8c42a30f -0, 15520, 15520, 160, 320, 0x0afaa0f4 -0, 15680, 15680, 160, 320, 0x0f74b76b -0, 15840, 15840, 160, 320, 0xa9a2b9d5 -0, 16000, 16000, 160, 320, 0xde2a8712 -0, 16160, 16160, 160, 320, 0xcfc8b3a2 -0, 16320, 16320, 160, 320, 0x768cadce -0, 16480, 16480, 160, 320, 0x3a8a97f1 -0, 16640, 16640, 160, 320, 0x502fa59b -0, 16800, 16800, 160, 320, 0x4c3e9b0f -0, 16960, 16960, 160, 320, 0x1cd2b111 -0, 17120, 17120, 160, 320, 0xa845a5a3 -0, 17280, 17280, 160, 320, 0xa6b8b982 -0, 17440, 17440, 160, 320, 0x4d5caab9 -0, 17600, 17600, 160, 320, 0x7993b604 -0, 17760, 17760, 160, 320, 0x8d19b37b -0, 17920, 17920, 160, 320, 0xbe48adb6 -0, 18080, 18080, 160, 320, 0x7d68ab8e -0, 18240, 18240, 160, 320, 0xbfffb0e2 -0, 18400, 18400, 160, 320, 0x90b5b7e3 -0, 18560, 18560, 160, 320, 0x9fa1b016 -0, 18720, 18720, 160, 320, 0x70abafc9 -0, 18880, 18880, 160, 320, 0x82cfad9c -0, 19040, 19040, 160, 320, 0x05f6aa2c -0, 19200, 19200, 160, 320, 0x511cbb5b -0, 19360, 19360, 160, 320, 0xd27caaa6 -0, 19520, 19520, 160, 320, 0x781ca481 -0, 19680, 19680, 160, 320, 0x12e9ad1a -0, 19840, 19840, 160, 320, 0xe46b989d -0, 20000, 20000, 160, 320, 0x76dbb0a7 -0, 20160, 20160, 160, 320, 0x10eba486 -0, 20320, 20320, 160, 320, 0x2269a7c8 -0, 20480, 20480, 160, 320, 0x084a9c7e -0, 20640, 20640, 160, 320, 0x84eda891 -0, 20800, 20800, 160, 320, 0x2ef9a639 -0, 20960, 20960, 160, 320, 0x8bb2a0dd -0, 21120, 21120, 160, 320, 0x47e5a169 -0, 21280, 21280, 160, 320, 0x98faae42 -0, 21440, 21440, 160, 320, 0x81d2aba4 -0, 21600, 21600, 160, 320, 0x5af8bb33 -0, 21760, 21760, 160, 320, 0x331e8d9f -0, 21920, 21920, 160, 320, 0xd9b0c09a -0, 22080, 22080, 160, 320, 0xbaf9bfcf -0, 22240, 22240, 160, 320, 0x54e89ab5 -0, 22400, 22400, 160, 320, 0x1d62c1d2 -0, 22560, 22560, 160, 320, 0xead6b436 -0, 22720, 22720, 160, 320, 0x465f98bc -0, 22880, 22880, 160, 320, 0xe707a346 -0, 23040, 23040, 160, 320, 0xf66cb1c2 -0, 23200, 23200, 160, 320, 0xcfc89ae6 -0, 23360, 23360, 160, 320, 0x0b10b796 -0, 23520, 23520, 160, 320, 0xb29caf2c -0, 23680, 23680, 160, 320, 0x0284a9d1 -0, 23840, 23840, 160, 320, 0xb966b5fc -0, 24000, 24000, 160, 320, 0x2defa630 -0, 24160, 24160, 160, 320, 0xcdcd8ef3 -0, 24320, 24320, 160, 320, 0xa81bba2b -0, 24480, 24480, 160, 320, 0x6bc0aeb1 -0, 24640, 24640, 160, 320, 0x38d8ac82 -0, 24800, 24800, 160, 320, 0xeb66a865 -0, 24960, 24960, 160, 320, 0x4fff9cd9 -0, 25120, 25120, 160, 320, 0x6819a19b -0, 25280, 25280, 160, 320, 0xfd7c93ce -0, 25440, 25440, 160, 320, 0xa7419f63 -0, 25600, 25600, 160, 320, 0x572caacb -0, 25760, 25760, 160, 320, 0x918fb1de -0, 25920, 25920, 160, 320, 0x0088a675 -0, 26080, 26080, 160, 320, 0x19229cf7 -0, 26240, 26240, 160, 320, 0x827ea812 -0, 26400, 26400, 160, 320, 0x6c258ef7 -0, 26560, 26560, 160, 320, 0x6a89b8fe -0, 26720, 26720, 160, 320, 0x166c9ce0 -0, 26880, 26880, 160, 320, 0x68b39db7 -0, 27040, 27040, 160, 320, 0x3d5aa8ec -0, 27200, 27200, 160, 320, 0x25e09ff3 -0, 27360, 27360, 160, 320, 0x759aa4ce -0, 27520, 27520, 160, 320, 0xe5aab0ea -0, 27680, 27680, 160, 320, 0xf0359e9a -0, 27840, 27840, 160, 320, 0x51199fff -0, 28000, 28000, 160, 320, 0xb04aa236 -0, 28160, 28160, 160, 320, 0xe09da0e3 -0, 28320, 28320, 160, 320, 0x144f98a9 -0, 28480, 28480, 160, 320, 0x0b4e9f8d -0, 28640, 28640, 160, 320, 0xbb69a090 -0, 28800, 28800, 160, 320, 0xec6e9b5b -0, 28960, 28960, 160, 320, 0x4f86a477 -0, 29120, 29120, 160, 320, 0x4a179d04 -0, 29280, 29280, 160, 320, 0x9682a375 -0, 29440, 29440, 160, 320, 0x3c6ba55e -0, 29600, 29600, 160, 320, 0x50c0ab50 -0, 29760, 29760, 160, 320, 0xe58ea907 -0, 29920, 29920, 160, 320, 0xc5eaa021 -0, 30080, 30080, 160, 320, 0x38859f01 -0, 30240, 30240, 160, 320, 0x73f8a540 -0, 30400, 30400, 160, 320, 0x395da234 -0, 30560, 30560, 160, 320, 0x7f50b144 -0, 30720, 30720, 160, 320, 0x45568ceb -0, 30880, 30880, 160, 320, 0xd0508dec -0, 31040, 31040, 160, 320, 0x60aba7e4 -0, 31200, 31200, 160, 320, 0x4b24b15f -0, 31360, 31360, 160, 320, 0xbfc9afd6 -0, 31520, 31520, 160, 320, 0xf0f2ad49 -0, 31680, 31680, 160, 320, 0xeea0a426 -0, 31840, 31840, 160, 320, 0xff07a7c9 -0, 32000, 32000, 160, 320, 0xce1fc788 -0, 32160, 32160, 160, 320, 0xc074ae9b -0, 32320, 32320, 160, 320, 0x51649696 -0, 32480, 32480, 160, 320, 0x24399744 -0, 32640, 32640, 160, 320, 0xfb0eb920 -0, 32800, 32800, 160, 320, 0x3bf8af5c -0, 32960, 32960, 160, 320, 0xeab69ee0 -0, 33120, 33120, 160, 320, 0x182696bb -0, 33280, 33280, 160, 320, 0x36e6af72 -0, 33440, 33440, 160, 320, 0x48cc9ecc -0, 33600, 33600, 160, 320, 0xfb3ca7b8 -0, 33760, 33760, 160, 320, 0xe01aa4b4 -0, 33920, 33920, 160, 320, 0x5c6dac8c -0, 34080, 34080, 160, 320, 0x072fbd93 -0, 34240, 34240, 160, 320, 0xc8899ccc -0, 34400, 34400, 160, 320, 0xdcc990ac -0, 34560, 34560, 160, 320, 0x28e0a9d0 -0, 34720, 34720, 160, 320, 0x0cdbaa11 -0, 34880, 34880, 160, 320, 0x8f4ca093 -0, 35040, 35040, 160, 320, 0x7ee79ea9 -0, 35200, 35200, 160, 320, 0xa762b695 -0, 35360, 35360, 160, 320, 0x9af0b5da -0, 35520, 35520, 160, 320, 0x1f2cb0e7 -0, 35680, 35680, 160, 320, 0x6029b8bb -0, 35840, 35840, 160, 320, 0xf2f7acec -0, 36000, 36000, 160, 320, 0xb3e5b5be -0, 36160, 36160, 160, 320, 0x266ba8a6 -0, 36320, 36320, 160, 320, 0x4ff59296 -0, 36480, 36480, 160, 320, 0x11d1b9ac -0, 36640, 36640, 160, 320, 0x749197f7 -0, 36800, 36800, 160, 320, 0x8192b517 -0, 36960, 36960, 160, 320, 0xde129dbe -0, 37120, 37120, 160, 320, 0x85e4a096 -0, 37280, 37280, 160, 320, 0xdebf9182 -0, 37440, 37440, 160, 320, 0x7a4ba0bf -0, 37600, 37600, 160, 320, 0x55fe9fcd -0, 37760, 37760, 160, 320, 0xd242adec -0, 37920, 37920, 160, 320, 0xeaf5b159 -0, 38080, 38080, 160, 320, 0xfcb1a571 -0, 38240, 38240, 160, 320, 0x62fabda0 -0, 38400, 38400, 160, 320, 0x45a9abcc -0, 38560, 38560, 160, 320, 0x07af974b -0, 38720, 38720, 160, 320, 0xc2a0b4fd -0, 38880, 38880, 160, 320, 0xc30abccd -0, 39040, 39040, 160, 320, 0xd33ca61c -0, 39200, 39200, 160, 320, 0x3c33d11a -0, 39360, 39360, 160, 320, 0x9c2ca0ac -0, 39520, 39520, 160, 320, 0xa5d69777 -0, 39680, 39680, 160, 320, 0xb7d2c6b8 -0, 39840, 39840, 160, 320, 0x34bbaab9 -0, 40000, 40000, 160, 320, 0x3e7baccb -0, 40160, 40160, 160, 320, 0x92c6b7e6 -0, 40320, 40320, 160, 320, 0xc810a18a -0, 40480, 40480, 160, 320, 0x06a09f56 -0, 40640, 40640, 160, 320, 0x8804a504 -0, 40800, 40800, 160, 320, 0x783ba7d5 -0, 40960, 40960, 160, 320, 0x24dcada6 -0, 41120, 41120, 160, 320, 0x4af796be -0, 41280, 41280, 160, 320, 0x1454b19c -0, 41440, 41440, 160, 320, 0x0ad0a56e -0, 41600, 41600, 160, 320, 0x8944a44e -0, 41760, 41760, 160, 320, 0x31069ebd -0, 41920, 41920, 160, 320, 0x19cb9812 -0, 42080, 42080, 160, 320, 0xac75abe2 -0, 42240, 42240, 160, 320, 0x0162a200 -0, 42400, 42400, 160, 320, 0xa2d7a4b2 -0, 42560, 42560, 160, 320, 0x078ca611 -0, 42720, 42720, 160, 320, 0x0ec39b40 -0, 42880, 42880, 160, 320, 0xe8f794b2 -0, 43040, 43040, 160, 320, 0xc2cfb258 -0, 43200, 43200, 160, 320, 0xe4759061 -0, 43360, 43360, 160, 320, 0xb1b6aea4 -0, 43520, 43520, 160, 320, 0x9bfb96df -0, 43680, 43680, 160, 320, 0xcc61b5d3 -0, 43840, 43840, 160, 320, 0xd14e8df9 -0, 44000, 44000, 160, 320, 0xd9d5bbf5 -0, 44160, 44160, 160, 320, 0x4d9fa9b0 -0, 44320, 44320, 160, 320, 0xf606abfc -0, 44480, 44480, 160, 320, 0x720baa19 -0, 44640, 44640, 160, 320, 0x7f7cac49 -0, 44800, 44800, 160, 320, 0xceab9b54 -0, 44960, 44960, 160, 320, 0x645fa70a -0, 45120, 45120, 160, 320, 0xa081a40f -0, 45280, 45280, 160, 320, 0x21d78f8c -0, 45440, 45440, 160, 320, 0xedf3abc6 -0, 45600, 45600, 160, 320, 0x17679637 -0, 45760, 45760, 160, 320, 0x1cb1ae04 -0, 45920, 45920, 160, 320, 0x17cd9f62 -0, 46080, 46080, 160, 320, 0xf4bca3ab -0, 46240, 46240, 160, 320, 0xb3bd9152 -0, 46400, 46400, 160, 320, 0x4e1e9825 -0, 46560, 46560, 160, 320, 0x037e9a56 -0, 46720, 46720, 160, 320, 0xd7589fcc -0, 46880, 46880, 160, 320, 0x5f949e90 -0, 47040, 47040, 160, 320, 0xe133a495 -0, 47200, 47200, 160, 320, 0x7cb7a52c -0, 47360, 47360, 160, 320, 0xb8b29d95 -0, 47520, 47520, 160, 320, 0x01bca472 -0, 47680, 47680, 160, 320, 0xbcc69895 -0, 47840, 47840, 160, 320, 0xabffa0ee -0, 48000, 48000, 160, 320, 0xe6629eca -0, 48160, 48160, 160, 320, 0x572da7cd -0, 48320, 48320, 160, 320, 0x3017972d -0, 48480, 48480, 160, 320, 0xac4e9c78 -0, 48640, 48640, 160, 320, 0x112f9c45 -0, 48800, 48800, 160, 320, 0x05e9a64d -0, 48960, 48960, 160, 320, 0x8f7394d4 -0, 49120, 49120, 160, 320, 0xbaeea07e -0, 49280, 49280, 160, 320, 0xd757c00e -0, 49440, 49440, 160, 320, 0x8aa09783 -0, 49600, 49600, 160, 320, 0x31d4ae7a -0, 49760, 49760, 160, 320, 0x221493e8 -0, 49920, 49920, 160, 320, 0x92f4a3a7 -0, 50080, 50080, 160, 320, 0xbd5bafd9 -0, 50240, 50240, 160, 320, 0x1895b760 -0, 50400, 50400, 160, 320, 0x7a4eacdd -0, 50560, 50560, 160, 320, 0xc9f7a1c3 -0, 50720, 50720, 160, 320, 0xd750be06 -0, 50880, 50880, 160, 320, 0x641d9a6f -0, 51040, 51040, 160, 320, 0x70d6b6ff -0, 51200, 51200, 160, 320, 0x1fd3a546 -0, 51360, 51360, 160, 320, 0x72cfaabe -0, 51520, 51520, 160, 320, 0x2e61b6ce -0, 51680, 51680, 160, 320, 0x4813a091 -0, 51840, 51840, 160, 320, 0xbfe7bc0f -0, 52000, 52000, 160, 320, 0x8c759c1f -0, 52160, 52160, 160, 320, 0xf4c1c952 -0, 52320, 52320, 160, 320, 0x00fdaa79 -0, 52480, 52480, 160, 320, 0x2ffda252 -0, 52640, 52640, 160, 320, 0x841aa523 -0, 52800, 52800, 160, 320, 0x8c079e5e -0, 52960, 52960, 160, 320, 0x96e9a83f -0, 53120, 53120, 160, 320, 0x5926a639 -0, 53280, 53280, 160, 320, 0x02e1a07b -0, 53440, 53440, 160, 320, 0x2972a999 -0, 53600, 53600, 160, 320, 0x30c89c62 -0, 53760, 53760, 160, 320, 0x83f5a263 -0, 53920, 53920, 160, 320, 0xa3909667 -0, 54080, 54080, 160, 320, 0xd5309fd4 -0, 54240, 54240, 160, 320, 0x3154a571 -0, 54400, 54400, 160, 320, 0x51039a5e -0, 54560, 54560, 160, 320, 0xf167a344 -0, 54720, 54720, 160, 320, 0x8e709d7d -0, 54880, 54880, 160, 320, 0x936fa0fd -0, 55040, 55040, 160, 320, 0x024b9e3c -0, 55200, 55200, 160, 320, 0x2ea1aa75 -0, 55360, 55360, 160, 320, 0x33f0a2bb -0, 55520, 55520, 160, 320, 0xbf079d2d -0, 55680, 55680, 160, 320, 0x847ba2c8 -0, 55840, 55840, 160, 320, 0x37e1a767 -0, 56000, 56000, 160, 320, 0xb607acbb -0, 56160, 56160, 160, 320, 0x1288ac6d -0, 56320, 56320, 160, 320, 0xf60e98b3 -0, 56480, 56480, 160, 320, 0xc6b5abdd -0, 56640, 56640, 160, 320, 0x7feaa710 -0, 56800, 56800, 160, 320, 0x77329fcd -0, 56960, 56960, 160, 320, 0x91a6a715 -0, 57120, 57120, 160, 320, 0xd0e99f24 -0, 57280, 57280, 160, 320, 0x07089f61 -0, 57440, 57440, 160, 320, 0x2bbda900 -0, 57600, 57600, 160, 320, 0xad3da0d5 -0, 57760, 57760, 160, 320, 0x997ba6d2 -0, 57920, 57920, 160, 320, 0xb15b9dcb -0, 58080, 58080, 160, 320, 0x17cea82f -0, 58240, 58240, 160, 320, 0xab51a73e -0, 58400, 58400, 160, 320, 0x77a1abd6 -0, 58560, 58560, 160, 320, 0x0bddacad -0, 58720, 58720, 160, 320, 0x43b3bdc4 -0, 58880, 58880, 160, 320, 0xefe0a9ba -0, 59040, 59040, 160, 320, 0x8eb4bc2f -0, 59200, 59200, 160, 320, 0x39cdc190 -0, 59360, 59360, 160, 320, 0x1ef3baff -0, 59520, 59520, 160, 320, 0x1a6ab7e2 -0, 59680, 59680, 160, 320, 0x444ccc69 -0, 59840, 59840, 160, 320, 0x05ebb598 -0, 60000, 60000, 160, 320, 0x4ac5b0ad -0, 60160, 60160, 160, 320, 0x0ee5ba52 -0, 60320, 60320, 160, 320, 0x501d9fa0 -0, 60480, 60480, 160, 320, 0x2038a9f4 -0, 60640, 60640, 160, 320, 0xa61cb8b3 -0, 60800, 60800, 160, 320, 0xdd009777 -0, 60960, 60960, 160, 320, 0x2a2db86d -0, 61120, 61120, 160, 320, 0xe9bab3bc -0, 61280, 61280, 160, 320, 0xf7f8a056 -0, 61440, 61440, 160, 320, 0x514caf14 -0, 61600, 61600, 160, 320, 0xa220b149 -0, 61760, 61760, 160, 320, 0xbf7ea183 -0, 61920, 61920, 160, 320, 0x1d8dc5c6 -0, 62080, 62080, 160, 320, 0x9182a8ea -0, 62240, 62240, 160, 320, 0x31eba026 -0, 62400, 62400, 160, 320, 0xcfbcc3df -0, 62560, 62560, 160, 320, 0x3d8cb7ae -0, 62720, 62720, 160, 320, 0xbe39aec0 -0, 62880, 62880, 160, 320, 0xd236bf71 -0, 63040, 63040, 160, 320, 0x9377b0b2 -0, 63200, 63200, 160, 320, 0xb5e6b2df -0, 63360, 63360, 160, 320, 0xa3b9bbce -0, 63520, 63520, 160, 320, 0xa7bda251 -0, 63680, 63680, 160, 320, 0xbf9ab162 -0, 63840, 63840, 160, 320, 0x6928b9cb -0, 64000, 64000, 160, 320, 0xf5cca209 -0, 64160, 64160, 160, 320, 0xfdf4afad -0, 64320, 64320, 160, 320, 0xe7e7c216 -0, 64480, 64480, 160, 320, 0x0c5797c6 -0, 64640, 64640, 160, 320, 0x66c1a9ca -0, 64800, 64800, 160, 320, 0x6b5ca48d -0, 64960, 64960, 160, 320, 0xec04968a -0, 65120, 65120, 160, 320, 0xaaada691 -0, 65280, 65280, 160, 320, 0x77c3a624 -0, 65440, 65440, 160, 320, 0xaed9a5d5 -0, 65600, 65600, 160, 320, 0x360fac41 -0, 65760, 65760, 160, 320, 0xa05ea727 -0, 65920, 65920, 160, 320, 0x9f7b9f83 -0, 66080, 66080, 160, 320, 0x474bc4c2 -0, 66240, 66240, 160, 320, 0xb6078d3b -0, 66400, 66400, 160, 320, 0x8e15a8f9 -0, 66560, 66560, 160, 320, 0x7dc7d4a8 -0, 66720, 66720, 160, 320, 0x55ceab6b -0, 66880, 66880, 160, 320, 0x982cc94f -0, 67040, 67040, 160, 320, 0x6153948f -0, 67200, 67200, 160, 320, 0x5338c621 -0, 67360, 67360, 160, 320, 0x2e2db6e8 -0, 67520, 67520, 160, 320, 0x28e3a9c3 -0, 67680, 67680, 160, 320, 0x74d7b435 -0, 67840, 67840, 160, 320, 0xcf17a10c -0, 68000, 68000, 160, 320, 0xf1f9ac8c -0, 68160, 68160, 160, 320, 0x35e0b480 -0, 68320, 68320, 160, 320, 0x5e60b3a4 -0, 68480, 68480, 160, 320, 0x20579b26 -0, 68640, 68640, 160, 320, 0x3e27b89b -0, 68800, 68800, 160, 320, 0x02e4af94 -0, 68960, 68960, 160, 320, 0x6d6897f1 -0, 69120, 69120, 160, 320, 0x1582b267 -0, 69280, 69280, 160, 320, 0x33ba9eb3 -0, 69440, 69440, 160, 320, 0xb6acad7d -0, 69600, 69600, 160, 320, 0x1969a6c2 -0, 69760, 69760, 160, 320, 0x363fa350 -0, 69920, 69920, 160, 320, 0xae50bf65 -0, 70080, 70080, 160, 320, 0x0877a50f -0, 70240, 70240, 160, 320, 0x66e2a42f -0, 70400, 70400, 160, 320, 0x0b0abcb3 -0, 70560, 70560, 160, 320, 0x23a9afaa -0, 70720, 70720, 160, 320, 0xc3729b40 -0, 70880, 70880, 160, 320, 0xdd3fc7e2 -0, 71040, 71040, 160, 320, 0x7e0494af -0, 71200, 71200, 160, 320, 0xcbd096fb -0, 71360, 71360, 160, 320, 0x5d71b303 -0, 71520, 71520, 160, 320, 0xeedca04a -0, 71680, 71680, 160, 320, 0x2836a47d -0, 71840, 71840, 160, 320, 0x7237c2a0 -0, 72000, 72000, 160, 320, 0x7c009bc0 -0, 72160, 72160, 160, 320, 0xc9dcb366 -0, 72320, 72320, 160, 320, 0x4993aac8 -0, 72480, 72480, 160, 320, 0x05ec9954 -0, 72640, 72640, 160, 320, 0xa955bd5c -0, 72800, 72800, 160, 320, 0x9018aea3 -0, 72960, 72960, 160, 320, 0x780cca52 -0, 73120, 73120, 160, 320, 0x9b8f95f6 -0, 73280, 73280, 160, 320, 0xcd7bb178 -0, 73440, 73440, 160, 320, 0xfec6b443 -0, 73600, 73600, 160, 320, 0xe214abb6 -0, 73760, 73760, 160, 320, 0xdcbebb38 -0, 73920, 73920, 160, 320, 0xe683a30d -0, 74080, 74080, 160, 320, 0xe4cdb197 -0, 74240, 74240, 160, 320, 0xa426c432 -0, 74400, 74400, 160, 320, 0x761ba6cc -0, 74560, 74560, 160, 320, 0xcc9aa6aa -0, 74720, 74720, 160, 320, 0x742bd03d -0, 74880, 74880, 160, 320, 0x61d9a511 -0, 75040, 75040, 160, 320, 0x3021a4dd -0, 75200, 75200, 160, 320, 0x6970bbc0 -0, 75360, 75360, 160, 320, 0x76f5a037 -0, 75520, 75520, 160, 320, 0x758d91f2 -0, 75680, 75680, 160, 320, 0xe854a2f1 -0, 75840, 75840, 160, 320, 0xf994a6f8 -0, 76000, 76000, 160, 320, 0x31ebaf40 -0, 76160, 76160, 160, 320, 0x24699970 -0, 76320, 76320, 160, 320, 0x37dda53e -0, 76480, 76480, 160, 320, 0xa857a752 -0, 76640, 76640, 160, 320, 0xc483ad1d -0, 76800, 76800, 160, 320, 0x5966add9 -0, 76960, 76960, 160, 320, 0x4dbab89c -0, 77120, 77120, 160, 320, 0x2f0bb0e6 -0, 77280, 77280, 160, 320, 0x913aaa88 -0, 77440, 77440, 160, 320, 0x245dc1c3 -0, 77600, 77600, 160, 320, 0xb085c5ad -0, 77760, 77760, 160, 320, 0x9cf1b0fa -0, 77920, 77920, 160, 320, 0x6887b543 -0, 78080, 78080, 160, 320, 0xcad69feb -0, 78240, 78240, 160, 320, 0xc12a8ddb -0, 78400, 78400, 160, 320, 0x01d1bc5a -0, 78560, 78560, 160, 320, 0x3018b7e8 -0, 78720, 78720, 160, 320, 0x6431b0ef -0, 78880, 78880, 160, 320, 0x3a53998e -0, 79040, 79040, 160, 320, 0x1c80a6c6 -0, 79200, 79200, 160, 320, 0x6639adc5 -0, 79360, 79360, 160, 320, 0x92489f9a -0, 79520, 79520, 160, 320, 0x8cafad00 -0, 79680, 79680, 160, 320, 0xca0392e1 -0, 79840, 79840, 160, 320, 0x30a9ae88 +0, 0, 0, 160, 320, 0x2052a4e7 +0, 160, 160, 160, 320, 0xe9aeafca +0, 320, 320, 160, 320, 0xde83b450 +0, 480, 480, 160, 320, 0x06a6a80e +0, 640, 640, 160, 320, 0xf6aeb1e2 +0, 800, 800, 160, 320, 0x2623b40c +0, 960, 960, 160, 320, 0x8ec69f25 +0, 1120, 1120, 160, 320, 0xddaaac88 +0, 1280, 1280, 160, 320, 0x9e60b713 +0, 1440, 1440, 160, 320, 0xb738ab30 +0, 1600, 1600, 160, 320, 0xdb4bbb92 +0, 1760, 1760, 160, 320, 0x0370ae8b +0, 1920, 1920, 160, 320, 0xb611a3fb +0, 2080, 2080, 160, 320, 0x07ee8e3b +0, 2240, 2240, 160, 320, 0xdb1ec628 +0, 2400, 2400, 160, 320, 0xd5f1bda2 +0, 2560, 2560, 160, 320, 0xcabb9a9c +0, 2720, 2720, 160, 320, 0x16c8ad61 +0, 2880, 2880, 160, 320, 0xf76fc25e +0, 3040, 3040, 160, 320, 0x7118a10d +0, 3200, 3200, 160, 320, 0x29f9a0db +0, 3360, 3360, 160, 320, 0x41f2a4ef +0, 3520, 3520, 160, 320, 0x36dfb231 +0, 3680, 3680, 160, 320, 0xc5399eda +0, 3840, 3840, 160, 320, 0x17d4b9e0 +0, 4000, 4000, 160, 320, 0x2b5797ac +0, 4160, 4160, 160, 320, 0x0128c5e7 +0, 4320, 4320, 160, 320, 0xf4f38037 +0, 4480, 4480, 160, 320, 0x77d6b5f2 +0, 4640, 4640, 160, 320, 0xd94a93e0 +0, 4800, 4800, 160, 320, 0x968daae3 +0, 4960, 4960, 160, 320, 0xda5ba0ec +0, 5120, 5120, 160, 320, 0x316da1ec +0, 5280, 5280, 160, 320, 0x3a35b2d2 +0, 5440, 5440, 160, 320, 0xca0b988f +0, 5600, 5600, 160, 320, 0x1295b0b1 +0, 5760, 5760, 160, 320, 0xe121ae72 +0, 5920, 5920, 160, 320, 0x7da7ad43 +0, 6080, 6080, 160, 320, 0x96a49cfe +0, 6240, 6240, 160, 320, 0x70c2b1de +0, 6400, 6400, 160, 320, 0x668d88c0 +0, 6560, 6560, 160, 320, 0x5460b5a8 +0, 6720, 6720, 160, 320, 0x6ac78eab +0, 6880, 6880, 160, 320, 0x0d8dab87 +0, 7040, 7040, 160, 320, 0xe2be94af +0, 7200, 7200, 160, 320, 0x3487acdc +0, 7360, 7360, 160, 320, 0x5048955a +0, 7520, 7520, 160, 320, 0x2ef4ae0d +0, 7680, 7680, 160, 320, 0xc765b773 +0, 7840, 7840, 160, 320, 0xad96a486 +0, 8000, 8000, 160, 320, 0xb9fdbf1f +0, 8160, 8160, 160, 320, 0xf26c9ecf +0, 8320, 8320, 160, 320, 0xbcadb535 +0, 8480, 8480, 160, 320, 0xa8c897bc +0, 8640, 8640, 160, 320, 0xaa58b520 +0, 8800, 8800, 160, 320, 0xcb48a716 +0, 8960, 8960, 160, 320, 0x4d5da564 +0, 9120, 9120, 160, 320, 0x9809ae28 +0, 9280, 9280, 160, 320, 0x5baeb1e4 +0, 9440, 9440, 160, 320, 0x6a719b63 +0, 9600, 9600, 160, 320, 0xc27d92f0 +0, 9760, 9760, 160, 320, 0x0e9b9fe9 +0, 9920, 9920, 160, 320, 0xbf9d9bf7 +0, 10080, 10080, 160, 320, 0xf35aa64d +0, 10240, 10240, 160, 320, 0x26449ce8 +0, 10400, 10400, 160, 320, 0x58f4a997 +0, 10560, 10560, 160, 320, 0x155da289 +0, 10720, 10720, 160, 320, 0x63b19a5c +0, 10880, 10880, 160, 320, 0xe01aad38 +0, 11040, 11040, 160, 320, 0x4e0f9c43 +0, 11200, 11200, 160, 320, 0x9447a284 +0, 11360, 11360, 160, 320, 0xdb36a433 +0, 11520, 11520, 160, 320, 0x799a9b2c +0, 11680, 11680, 160, 320, 0x1526a162 +0, 11840, 11840, 160, 320, 0x0a4ea140 +0, 12000, 12000, 160, 320, 0xb08f9ed7 +0, 12160, 12160, 160, 320, 0x221bab76 +0, 12320, 12320, 160, 320, 0x4befacf0 +0, 12480, 12480, 160, 320, 0xac489509 +0, 12640, 12640, 160, 320, 0x57a1a5b4 +0, 12800, 12800, 160, 320, 0x81e8ab97 +0, 12960, 12960, 160, 320, 0xc6ada4d6 +0, 13120, 13120, 160, 320, 0x12489975 +0, 13280, 13280, 160, 320, 0x1da59ba9 +0, 13440, 13440, 160, 320, 0xf225ac62 +0, 13600, 13600, 160, 320, 0x8c8e9eab +0, 13760, 13760, 160, 320, 0x10599dec +0, 13920, 13920, 160, 320, 0x06c39fa5 +0, 14080, 14080, 160, 320, 0xb0efa3c4 +0, 14240, 14240, 160, 320, 0x72caadab +0, 14400, 14400, 160, 320, 0xe4619ff0 +0, 14560, 14560, 160, 320, 0x49bca017 +0, 14720, 14720, 160, 320, 0x413f9fbe +0, 14880, 14880, 160, 320, 0x6eaed0ee +0, 15040, 15040, 160, 320, 0x27e4b1eb +0, 15200, 15200, 160, 320, 0x8c42a30f +0, 15360, 15360, 160, 320, 0x0afaa0f4 +0, 15520, 15520, 160, 320, 0x0f74b76b +0, 15680, 15680, 160, 320, 0xa9a2b9d5 +0, 15840, 15840, 160, 320, 0xde2a8712 +0, 16000, 16000, 160, 320, 0xcfc8b3a2 +0, 16160, 16160, 160, 320, 0x768cadce +0, 16320, 16320, 160, 320, 0x3a8a97f1 +0, 16480, 16480, 160, 320, 0x502fa59b +0, 16640, 16640, 160, 320, 0x4c3e9b0f +0, 16800, 16800, 160, 320, 0x1cd2b111 +0, 16960, 16960, 160, 320, 0xa845a5a3 +0, 17120, 17120, 160, 320, 0xa6b8b982 +0, 17280, 17280, 160, 320, 0x4d5caab9 +0, 17440, 17440, 160, 320, 0x7993b604 +0, 17600, 17600, 160, 320, 0x8d19b37b +0, 17760, 17760, 160, 320, 0xbe48adb6 +0, 17920, 17920, 160, 320, 0x7d68ab8e +0, 18080, 18080, 160, 320, 0xbfffb0e2 +0, 18240, 18240, 160, 320, 0x90b5b7e3 +0, 18400, 18400, 160, 320, 0x9fa1b016 +0, 18560, 18560, 160, 320, 0x70abafc9 +0, 18720, 18720, 160, 320, 0x82cfad9c +0, 18880, 18880, 160, 320, 0x05f6aa2c +0, 19040, 19040, 160, 320, 0x511cbb5b +0, 19200, 19200, 160, 320, 0xd27caaa6 +0, 19360, 19360, 160, 320, 0x781ca481 +0, 19520, 19520, 160, 320, 0x12e9ad1a +0, 19680, 19680, 160, 320, 0xe46b989d +0, 19840, 19840, 160, 320, 0x76dbb0a7 +0, 20000, 20000, 160, 320, 0x10eba486 +0, 20160, 20160, 160, 320, 0x2269a7c8 +0, 20320, 20320, 160, 320, 0x084a9c7e +0, 20480, 20480, 160, 320, 0x84eda891 +0, 20640, 20640, 160, 320, 0x2ef9a639 +0, 20800, 20800, 160, 320, 0x8bb2a0dd +0, 20960, 20960, 160, 320, 0x47e5a169 +0, 21120, 21120, 160, 320, 0x98faae42 +0, 21280, 21280, 160, 320, 0x81d2aba4 +0, 21440, 21440, 160, 320, 0x5af8bb33 +0, 21600, 21600, 160, 320, 0x331e8d9f +0, 21760, 21760, 160, 320, 0xd9b0c09a +0, 21920, 21920, 160, 320, 0xbaf9bfcf +0, 22080, 22080, 160, 320, 0x54e89ab5 +0, 22240, 22240, 160, 320, 0x1d62c1d2 +0, 22400, 22400, 160, 320, 0xead6b436 +0, 22560, 22560, 160, 320, 0x465f98bc +0, 22720, 22720, 160, 320, 0xe707a346 +0, 22880, 22880, 160, 320, 0xf66cb1c2 +0, 23040, 23040, 160, 320, 0xcfc89ae6 +0, 23200, 23200, 160, 320, 0x0b10b796 +0, 23360, 23360, 160, 320, 0xb29caf2c +0, 23520, 23520, 160, 320, 0x0284a9d1 +0, 23680, 23680, 160, 320, 0xb966b5fc +0, 23840, 23840, 160, 320, 0x2defa630 +0, 24000, 24000, 160, 320, 0xcdcd8ef3 +0, 24160, 24160, 160, 320, 0xa81bba2b +0, 24320, 24320, 160, 320, 0x6bc0aeb1 +0, 24480, 24480, 160, 320, 0x38d8ac82 +0, 24640, 24640, 160, 320, 0xeb66a865 +0, 24800, 24800, 160, 320, 0x4fff9cd9 +0, 24960, 24960, 160, 320, 0x6819a19b +0, 25120, 25120, 160, 320, 0xfd7c93ce +0, 25280, 25280, 160, 320, 0xa7419f63 +0, 25440, 25440, 160, 320, 0x572caacb +0, 25600, 25600, 160, 320, 0x918fb1de +0, 25760, 25760, 160, 320, 0x0088a675 +0, 25920, 25920, 160, 320, 0x19229cf7 +0, 26080, 26080, 160, 320, 0x827ea812 +0, 26240, 26240, 160, 320, 0x6c258ef7 +0, 26400, 26400, 160, 320, 0x6a89b8fe +0, 26560, 26560, 160, 320, 0x166c9ce0 +0, 26720, 26720, 160, 320, 0x68b39db7 +0, 26880, 26880, 160, 320, 0x3d5aa8ec +0, 27040, 27040, 160, 320, 0x25e09ff3 +0, 27200, 27200, 160, 320, 0x759aa4ce +0, 27360, 27360, 160, 320, 0xe5aab0ea +0, 27520, 27520, 160, 320, 0xf0359e9a +0, 27680, 27680, 160, 320, 0x51199fff +0, 27840, 27840, 160, 320, 0xb04aa236 +0, 28000, 28000, 160, 320, 0xe09da0e3 +0, 28160, 28160, 160, 320, 0x144f98a9 +0, 28320, 28320, 160, 320, 0x0b4e9f8d +0, 28480, 28480, 160, 320, 0xbb69a090 +0, 28640, 28640, 160, 320, 0xec6e9b5b +0, 28800, 28800, 160, 320, 0x4f86a477 +0, 28960, 28960, 160, 320, 0x4a179d04 +0, 29120, 29120, 160, 320, 0x9682a375 +0, 29280, 29280, 160, 320, 0x3c6ba55e +0, 29440, 29440, 160, 320, 0x50c0ab50 +0, 29600, 29600, 160, 320, 0xe58ea907 +0, 29760, 29760, 160, 320, 0xc5eaa021 +0, 29920, 29920, 160, 320, 0x38859f01 +0, 30080, 30080, 160, 320, 0x73f8a540 +0, 30240, 30240, 160, 320, 0x395da234 +0, 30400, 30400, 160, 320, 0x7f50b144 +0, 30560, 30560, 160, 320, 0x45568ceb +0, 30720, 30720, 160, 320, 0xd0508dec +0, 30880, 30880, 160, 320, 0x60aba7e4 +0, 31040, 31040, 160, 320, 0x4b24b15f +0, 31200, 31200, 160, 320, 0xbfc9afd6 +0, 31360, 31360, 160, 320, 0xf0f2ad49 +0, 31520, 31520, 160, 320, 0xeea0a426 +0, 31680, 31680, 160, 320, 0xff07a7c9 +0, 31840, 31840, 160, 320, 0xce1fc788 +0, 32000, 32000, 160, 320, 0xc074ae9b +0, 32160, 32160, 160, 320, 0x51649696 +0, 32320, 32320, 160, 320, 0x24399744 +0, 32480, 32480, 160, 320, 0xfb0eb920 +0, 32640, 32640, 160, 320, 0x3bf8af5c +0, 32800, 32800, 160, 320, 0xeab69ee0 +0, 32960, 32960, 160, 320, 0x182696bb +0, 33120, 33120, 160, 320, 0x36e6af72 +0, 33280, 33280, 160, 320, 0x48cc9ecc +0, 33440, 33440, 160, 320, 0xfb3ca7b8 +0, 33600, 33600, 160, 320, 0xe01aa4b4 +0, 33760, 33760, 160, 320, 0x5c6dac8c +0, 33920, 33920, 160, 320, 0x072fbd93 +0, 34080, 34080, 160, 320, 0xc8899ccc +0, 34240, 34240, 160, 320, 0xdcc990ac +0, 34400, 34400, 160, 320, 0x28e0a9d0 +0, 34560, 34560, 160, 320, 0x0cdbaa11 +0, 34720, 34720, 160, 320, 0x8f4ca093 +0, 34880, 34880, 160, 320, 0x7ee79ea9 +0, 35040, 35040, 160, 320, 0xa762b695 +0, 35200, 35200, 160, 320, 0x9af0b5da +0, 35360, 35360, 160, 320, 0x1f2cb0e7 +0, 35520, 35520, 160, 320, 0x6029b8bb +0, 35680, 35680, 160, 320, 0xf2f7acec +0, 35840, 35840, 160, 320, 0xb3e5b5be +0, 36000, 36000, 160, 320, 0x266ba8a6 +0, 36160, 36160, 160, 320, 0x4ff59296 +0, 36320, 36320, 160, 320, 0x11d1b9ac +0, 36480, 36480, 160, 320, 0x749197f7 +0, 36640, 36640, 160, 320, 0x8192b517 +0, 36800, 36800, 160, 320, 0xde129dbe +0, 36960, 36960, 160, 320, 0x85e4a096 +0, 37120, 37120, 160, 320, 0xdebf9182 +0, 37280, 37280, 160, 320, 0x7a4ba0bf +0, 37440, 37440, 160, 320, 0x55fe9fcd +0, 37600, 37600, 160, 320, 0xd242adec +0, 37760, 37760, 160, 320, 0xeaf5b159 +0, 37920, 37920, 160, 320, 0xfcb1a571 +0, 38080, 38080, 160, 320, 0x62fabda0 +0, 38240, 38240, 160, 320, 0x45a9abcc +0, 38400, 38400, 160, 320, 0x07af974b +0, 38560, 38560, 160, 320, 0xc2a0b4fd +0, 38720, 38720, 160, 320, 0xc30abccd +0, 38880, 38880, 160, 320, 0xd33ca61c +0, 39040, 39040, 160, 320, 0x3c33d11a +0, 39200, 39200, 160, 320, 0x9c2ca0ac +0, 39360, 39360, 160, 320, 0xa5d69777 +0, 39520, 39520, 160, 320, 0xb7d2c6b8 +0, 39680, 39680, 160, 320, 0x34bbaab9 +0, 39840, 39840, 160, 320, 0x3e7baccb +0, 40000, 40000, 160, 320, 0x92c6b7e6 +0, 40160, 40160, 160, 320, 0xc810a18a +0, 40320, 40320, 160, 320, 0x06a09f56 +0, 40480, 40480, 160, 320, 0x8804a504 +0, 40640, 40640, 160, 320, 0x783ba7d5 +0, 40800, 40800, 160, 320, 0x24dcada6 +0, 40960, 40960, 160, 320, 0x4af796be +0, 41120, 41120, 160, 320, 0x1454b19c +0, 41280, 41280, 160, 320, 0x0ad0a56e +0, 41440, 41440, 160, 320, 0x8944a44e +0, 41600, 41600, 160, 320, 0x31069ebd +0, 41760, 41760, 160, 320, 0x19cb9812 +0, 41920, 41920, 160, 320, 0xac75abe2 +0, 42080, 42080, 160, 320, 0x0162a200 +0, 42240, 42240, 160, 320, 0xa2d7a4b2 +0, 42400, 42400, 160, 320, 0x078ca611 +0, 42560, 42560, 160, 320, 0x0ec39b40 +0, 42720, 42720, 160, 320, 0xe8f794b2 +0, 42880, 42880, 160, 320, 0xc2cfb258 +0, 43040, 43040, 160, 320, 0xe4759061 +0, 43200, 43200, 160, 320, 0xb1b6aea4 +0, 43360, 43360, 160, 320, 0x9bfb96df +0, 43520, 43520, 160, 320, 0xcc61b5d3 +0, 43680, 43680, 160, 320, 0xd14e8df9 +0, 43840, 43840, 160, 320, 0xd9d5bbf5 +0, 44000, 44000, 160, 320, 0x4d9fa9b0 +0, 44160, 44160, 160, 320, 0xf606abfc +0, 44320, 44320, 160, 320, 0x720baa19 +0, 44480, 44480, 160, 320, 0x7f7cac49 +0, 44640, 44640, 160, 320, 0xceab9b54 +0, 44800, 44800, 160, 320, 0x645fa70a +0, 44960, 44960, 160, 320, 0xa081a40f +0, 45120, 45120, 160, 320, 0x21d78f8c +0, 45280, 45280, 160, 320, 0xedf3abc6 +0, 45440, 45440, 160, 320, 0x17679637 +0, 45600, 45600, 160, 320, 0x1cb1ae04 +0, 45760, 45760, 160, 320, 0x17cd9f62 +0, 45920, 45920, 160, 320, 0xf4bca3ab +0, 46080, 46080, 160, 320, 0xb3bd9152 +0, 46240, 46240, 160, 320, 0x4e1e9825 +0, 46400, 46400, 160, 320, 0x037e9a56 +0, 46560, 46560, 160, 320, 0xd7589fcc +0, 46720, 46720, 160, 320, 0x5f949e90 +0, 46880, 46880, 160, 320, 0xe133a495 +0, 47040, 47040, 160, 320, 0x7cb7a52c +0, 47200, 47200, 160, 320, 0xb8b29d95 +0, 47360, 47360, 160, 320, 0x01bca472 +0, 47520, 47520, 160, 320, 0xbcc69895 +0, 47680, 47680, 160, 320, 0xabffa0ee +0, 47840, 47840, 160, 320, 0xe6629eca +0, 48000, 48000, 160, 320, 0x572da7cd +0, 48160, 48160, 160, 320, 0x3017972d +0, 48320, 48320, 160, 320, 0xac4e9c78 +0, 48480, 48480, 160, 320, 0x112f9c45 +0, 48640, 48640, 160, 320, 0x05e9a64d +0, 48800, 48800, 160, 320, 0x8f7394d4 +0, 48960, 48960, 160, 320, 0xbaeea07e +0, 49120, 49120, 160, 320, 0xd757c00e +0, 49280, 49280, 160, 320, 0x8aa09783 +0, 49440, 49440, 160, 320, 0x31d4ae7a +0, 49600, 49600, 160, 320, 0x221493e8 +0, 49760, 49760, 160, 320, 0x92f4a3a7 +0, 49920, 49920, 160, 320, 0xbd5bafd9 +0, 50080, 50080, 160, 320, 0x1895b760 +0, 50240, 50240, 160, 320, 0x7a4eacdd +0, 50400, 50400, 160, 320, 0xc9f7a1c3 +0, 50560, 50560, 160, 320, 0xd750be06 +0, 50720, 50720, 160, 320, 0x641d9a6f +0, 50880, 50880, 160, 320, 0x70d6b6ff +0, 51040, 51040, 160, 320, 0x1fd3a546 +0, 51200, 51200, 160, 320, 0x72cfaabe +0, 51360, 51360, 160, 320, 0x2e61b6ce +0, 51520, 51520, 160, 320, 0x4813a091 +0, 51680, 51680, 160, 320, 0xbfe7bc0f +0, 51840, 51840, 160, 320, 0x8c759c1f +0, 52000, 52000, 160, 320, 0xf4c1c952 +0, 52160, 52160, 160, 320, 0x00fdaa79 +0, 52320, 52320, 160, 320, 0x2ffda252 +0, 52480, 52480, 160, 320, 0x841aa523 +0, 52640, 52640, 160, 320, 0x8c079e5e +0, 52800, 52800, 160, 320, 0x96e9a83f +0, 52960, 52960, 160, 320, 0x5926a639 +0, 53120, 53120, 160, 320, 0x02e1a07b +0, 53280, 53280, 160, 320, 0x2972a999 +0, 53440, 53440, 160, 320, 0x30c89c62 +0, 53600, 53600, 160, 320, 0x83f5a263 +0, 53760, 53760, 160, 320, 0xa3909667 +0, 53920, 53920, 160, 320, 0xd5309fd4 +0, 54080, 54080, 160, 320, 0x3154a571 +0, 54240, 54240, 160, 320, 0x51039a5e +0, 54400, 54400, 160, 320, 0xf167a344 +0, 54560, 54560, 160, 320, 0x8e709d7d +0, 54720, 54720, 160, 320, 0x936fa0fd +0, 54880, 54880, 160, 320, 0x024b9e3c +0, 55040, 55040, 160, 320, 0x2ea1aa75 +0, 55200, 55200, 160, 320, 0x33f0a2bb +0, 55360, 55360, 160, 320, 0xbf079d2d +0, 55520, 55520, 160, 320, 0x847ba2c8 +0, 55680, 55680, 160, 320, 0x37e1a767 +0, 55840, 55840, 160, 320, 0xb607acbb +0, 56000, 56000, 160, 320, 0x1288ac6d +0, 56160, 56160, 160, 320, 0xf60e98b3 +0, 56320, 56320, 160, 320, 0xc6b5abdd +0, 56480, 56480, 160, 320, 0x7feaa710 +0, 56640, 56640, 160, 320, 0x77329fcd +0, 56800, 56800, 160, 320, 0x91a6a715 +0, 56960, 56960, 160, 320, 0xd0e99f24 +0, 57120, 57120, 160, 320, 0x07089f61 +0, 57280, 57280, 160, 320, 0x2bbda900 +0, 57440, 57440, 160, 320, 0xad3da0d5 +0, 57600, 57600, 160, 320, 0x997ba6d2 +0, 57760, 57760, 160, 320, 0xb15b9dcb +0, 57920, 57920, 160, 320, 0x17cea82f +0, 58080, 58080, 160, 320, 0xab51a73e +0, 58240, 58240, 160, 320, 0x77a1abd6 +0, 58400, 58400, 160, 320, 0x0bddacad +0, 58560, 58560, 160, 320, 0x43b3bdc4 +0, 58720, 58720, 160, 320, 0xefe0a9ba +0, 58880, 58880, 160, 320, 0x8eb4bc2f +0, 59040, 59040, 160, 320, 0x39cdc190 +0, 59200, 59200, 160, 320, 0x1ef3baff +0, 59360, 59360, 160, 320, 0x1a6ab7e2 +0, 59520, 59520, 160, 320, 0x444ccc69 +0, 59680, 59680, 160, 320, 0x05ebb598 +0, 59840, 59840, 160, 320, 0x4ac5b0ad +0, 60000, 60000, 160, 320, 0x0ee5ba52 +0, 60160, 60160, 160, 320, 0x501d9fa0 +0, 60320, 60320, 160, 320, 0x2038a9f4 +0, 60480, 60480, 160, 320, 0xa61cb8b3 +0, 60640, 60640, 160, 320, 0xdd009777 +0, 60800, 60800, 160, 320, 0x2a2db86d +0, 60960, 60960, 160, 320, 0xe9bab3bc +0, 61120, 61120, 160, 320, 0xf7f8a056 +0, 61280, 61280, 160, 320, 0x514caf14 +0, 61440, 61440, 160, 320, 0xa220b149 +0, 61600, 61600, 160, 320, 0xbf7ea183 +0, 61760, 61760, 160, 320, 0x1d8dc5c6 +0, 61920, 61920, 160, 320, 0x9182a8ea +0, 62080, 62080, 160, 320, 0x31eba026 +0, 62240, 62240, 160, 320, 0xcfbcc3df +0, 62400, 62400, 160, 320, 0x3d8cb7ae +0, 62560, 62560, 160, 320, 0xbe39aec0 +0, 62720, 62720, 160, 320, 0xd236bf71 +0, 62880, 62880, 160, 320, 0x9377b0b2 +0, 63040, 63040, 160, 320, 0xb5e6b2df +0, 63200, 63200, 160, 320, 0xa3b9bbce +0, 63360, 63360, 160, 320, 0xa7bda251 +0, 63520, 63520, 160, 320, 0xbf9ab162 +0, 63680, 63680, 160, 320, 0x6928b9cb +0, 63840, 63840, 160, 320, 0xf5cca209 +0, 64000, 64000, 160, 320, 0xfdf4afad +0, 64160, 64160, 160, 320, 0xe7e7c216 +0, 64320, 64320, 160, 320, 0x0c5797c6 +0, 64480, 64480, 160, 320, 0x66c1a9ca +0, 64640, 64640, 160, 320, 0x6b5ca48d +0, 64800, 64800, 160, 320, 0xec04968a +0, 64960, 64960, 160, 320, 0xaaada691 +0, 65120, 65120, 160, 320, 0x77c3a624 +0, 65280, 65280, 160, 320, 0xaed9a5d5 +0, 65440, 65440, 160, 320, 0x360fac41 +0, 65600, 65600, 160, 320, 0xa05ea727 +0, 65760, 65760, 160, 320, 0x9f7b9f83 +0, 65920, 65920, 160, 320, 0x474bc4c2 +0, 66080, 66080, 160, 320, 0xb6078d3b +0, 66240, 66240, 160, 320, 0x8e15a8f9 +0, 66400, 66400, 160, 320, 0x7dc7d4a8 +0, 66560, 66560, 160, 320, 0x55ceab6b +0, 66720, 66720, 160, 320, 0x982cc94f +0, 66880, 66880, 160, 320, 0x6153948f +0, 67040, 67040, 160, 320, 0x5338c621 +0, 67200, 67200, 160, 320, 0x2e2db6e8 +0, 67360, 67360, 160, 320, 0x28e3a9c3 +0, 67520, 67520, 160, 320, 0x74d7b435 +0, 67680, 67680, 160, 320, 0xcf17a10c +0, 67840, 67840, 160, 320, 0xf1f9ac8c +0, 68000, 68000, 160, 320, 0x35e0b480 +0, 68160, 68160, 160, 320, 0x5e60b3a4 +0, 68320, 68320, 160, 320, 0x20579b26 +0, 68480, 68480, 160, 320, 0x3e27b89b +0, 68640, 68640, 160, 320, 0x02e4af94 +0, 68800, 68800, 160, 320, 0x6d6897f1 +0, 68960, 68960, 160, 320, 0x1582b267 +0, 69120, 69120, 160, 320, 0x33ba9eb3 +0, 69280, 69280, 160, 320, 0xb6acad7d +0, 69440, 69440, 160, 320, 0x1969a6c2 +0, 69600, 69600, 160, 320, 0x363fa350 +0, 69760, 69760, 160, 320, 0xae50bf65 +0, 69920, 69920, 160, 320, 0x0877a50f +0, 70080, 70080, 160, 320, 0x66e2a42f +0, 70240, 70240, 160, 320, 0x0b0abcb3 +0, 70400, 70400, 160, 320, 0x23a9afaa +0, 70560, 70560, 160, 320, 0xc3729b40 +0, 70720, 70720, 160, 320, 0xdd3fc7e2 +0, 70880, 70880, 160, 320, 0x7e0494af +0, 71040, 71040, 160, 320, 0xcbd096fb +0, 71200, 71200, 160, 320, 0x5d71b303 +0, 71360, 71360, 160, 320, 0xeedca04a +0, 71520, 71520, 160, 320, 0x2836a47d +0, 71680, 71680, 160, 320, 0x7237c2a0 +0, 71840, 71840, 160, 320, 0x7c009bc0 +0, 72000, 72000, 160, 320, 0xc9dcb366 +0, 72160, 72160, 160, 320, 0x4993aac8 +0, 72320, 72320, 160, 320, 0x05ec9954 +0, 72480, 72480, 160, 320, 0xa955bd5c +0, 72640, 72640, 160, 320, 0x9018aea3 +0, 72800, 72800, 160, 320, 0x780cca52 +0, 72960, 72960, 160, 320, 0x9b8f95f6 +0, 73120, 73120, 160, 320, 0xcd7bb178 +0, 73280, 73280, 160, 320, 0xfec6b443 +0, 73440, 73440, 160, 320, 0xe214abb6 +0, 73600, 73600, 160, 320, 0xdcbebb38 +0, 73760, 73760, 160, 320, 0xe683a30d +0, 73920, 73920, 160, 320, 0xe4cdb197 +0, 74080, 74080, 160, 320, 0xa426c432 +0, 74240, 74240, 160, 320, 0x761ba6cc +0, 74400, 74400, 160, 320, 0xcc9aa6aa +0, 74560, 74560, 160, 320, 0x742bd03d +0, 74720, 74720, 160, 320, 0x61d9a511 +0, 74880, 74880, 160, 320, 0x3021a4dd +0, 75040, 75040, 160, 320, 0x6970bbc0 +0, 75200, 75200, 160, 320, 0x76f5a037 +0, 75360, 75360, 160, 320, 0x758d91f2 +0, 75520, 75520, 160, 320, 0xe854a2f1 +0, 75680, 75680, 160, 320, 0xf994a6f8 +0, 75840, 75840, 160, 320, 0x31ebaf40 +0, 76000, 76000, 160, 320, 0x24699970 +0, 76160, 76160, 160, 320, 0x37dda53e +0, 76320, 76320, 160, 320, 0xa857a752 +0, 76480, 76480, 160, 320, 0xc483ad1d +0, 76640, 76640, 160, 320, 0x5966add9 +0, 76800, 76800, 160, 320, 0x4dbab89c +0, 76960, 76960, 160, 320, 0x2f0bb0e6 +0, 77120, 77120, 160, 320, 0x913aaa88 +0, 77280, 77280, 160, 320, 0x245dc1c3 +0, 77440, 77440, 160, 320, 0xb085c5ad +0, 77600, 77600, 160, 320, 0x9cf1b0fa +0, 77760, 77760, 160, 320, 0x6887b543 +0, 77920, 77920, 160, 320, 0xcad69feb +0, 78080, 78080, 160, 320, 0xc12a8ddb +0, 78240, 78240, 160, 320, 0x01d1bc5a +0, 78400, 78400, 160, 320, 0x3018b7e8 +0, 78560, 78560, 160, 320, 0x6431b0ef +0, 78720, 78720, 160, 320, 0x3a53998e +0, 78880, 78880, 160, 320, 0x1c80a6c6 +0, 79040, 79040, 160, 320, 0x6639adc5 +0, 79200, 79200, 160, 320, 0x92489f9a +0, 79360, 79360, 160, 320, 0x8cafad00 +0, 79520, 79520, 160, 320, 0xca0392e1 +0, 79680, 79680, 160, 320, 0x30a9ae88 +0, 79840, 79840, 160, 320, 0xc54ca946 diff --git a/tests/ref/fate/h264-invalid-ref-mod b/tests/ref/fate/h264-invalid-ref-mod index 09271fe..8c4af67 100644 --- a/tests/ref/fate/h264-invalid-ref-mod +++ b/tests/ref/fate/h264-invalid-ref-mod @@ -3,13 +3,13 @@ #codec_id 0: rawvideo #dimensions 0: 1920x1080 #sar 0: 1/1 -0, 1, 1, 1, 6220800, 0x89daa15e -0, 2, 2, 1, 6220800, 0xcf52e254 -0, 3, 3, 1, 6220800, 0x91132c13 -0, 4, 4, 1, 6220800, 0x37b8be91 -0, 5, 5, 1, 6220800, 0x2b09bafa -0, 6, 6, 1, 6220800, 0x06d79d8d -0, 7, 7, 1, 6220800, 0x8e793c1d -0, 8, 8, 1, 6220800, 0xea0fd885 -0, 9, 9, 1, 6220800, 0x7786a2ad -0, 10, 10, 1, 6220800, 0xed4f9dd9 +0, 0, 0, 1, 6220800, 0x89daa15e +0, 1, 1, 1, 6220800, 0xcf52e254 +0, 2, 2, 1, 6220800, 0x91132c13 +0, 3, 3, 1, 6220800, 0x37b8be91 +0, 4, 4, 1, 6220800, 0x2b09bafa +0, 5, 5, 1, 6220800, 0x06d79d8d +0, 6, 6, 1, 6220800, 0x8e793c1d +0, 7, 7, 1, 6220800, 0xea0fd885 +0, 8, 8, 1, 6220800, 0x7786a2ad +0, 9, 9, 1, 6220800, 0xed4f9dd9 \ No newline at end of file diff --git a/tests/ref/fate/pcm_s16be-stereo b/tests/ref/fate/pcm_s16be-stereo index 2500ba2..6d29a67 100644 --- a/tests/ref/fate/pcm_s16be-stereo +++ b/tests/ref/fate/pcm_s16be-stereo @@ -1 +1 @@ -f0c0fd7615cdef66fa72f5816632ca9b +759cf5d12a4b2fb653e61f5219331f14 diff --git a/tests/ref/fate/quickdraw b/tests/ref/fate/quickdraw index c3bb0a5..5746929 100644 --- a/tests/ref/fate/quickdraw +++ b/tests/ref/fate/quickdraw @@ -4,4 +4,14 @@ #dimensions 0: 640x480 #sar 0: 0/1 0, 0, 0, 1, 921600, 0xc0e68764 -0, 2, 2, 1, 921600, 0x01a16629 +0, 1, 1, 1, 921600, 0xc0e68764 +0, 2, 2, 1, 921600, 0xc0e68764 +0, 3, 3, 1, 921600, 0xc0e68764 +0, 4, 4, 1, 921600, 0xc0e68764 +0, 5, 5, 1, 921600, 0xc0e68764 +0, 7, 7, 1, 921600, 0x01a16629 +0, 9, 9, 1, 921600, 0x01a16629 +0, 10, 10, 1, 921600, 0x01a16629 +0, 11, 11, 1, 921600, 0x01a16629 +0, 12, 12, 1, 921600, 0x01a16629 +0, 13, 13, 1, 921600, 0x01a16629 diff --git a/tests/ref/fate/tscc2-mov b/tests/ref/fate/tscc2-mov index 8714a87..679f5bb 100644 --- a/tests/ref/fate/tscc2-mov +++ b/tests/ref/fate/tscc2-mov @@ -3,18 +3,8 @@ #codec_id 0: rawvideo #dimensions 0: 892x441 #sar 0: 0/1 -0, 0, 0, 1, 1180116, 0x01d01336 -0, 1, 1, 1, 1180116, 0x01d01336 -0, 2, 2, 1, 1180116, 0x01d01336 -0, 3, 3, 1, 1180116, 0x01d01336 -0, 4, 4, 1, 1180116, 0x01d01336 -0, 5, 5, 1, 1180116, 0x01d01336 -0, 6, 6, 1, 1180116, 0x01d01336 -0, 7, 7, 1, 1180116, 0x01d01336 -0, 8, 8, 1, 1180116, 0x01d01336 -0, 9, 9, 1, 1180116, 0x01d01336 -0, 10, 10, 1, 1180116, 0x056fdadd -0, 11, 11, 1, 1180116, 0x6f73e080 -0, 12, 12, 1, 1180116, 0x5244d9e5 -0, 13, 13, 1, 1180116, 0x629bf10f -0, 14, 14, 1, 1180116, 0x97c726cb +0, 0, 0, 1, 1180116, 0x056fdadd +0, 1, 1, 1, 1180116, 0x6f73e080 +0, 2, 2, 1, 1180116, 0x5244d9e5 +0, 3, 3, 1, 1180116, 0x629bf10f +0, 4, 4, 1, 1180116, 0x97c726cb diff --git a/tests/ref/lavf-fate/mov_qtrle_mace6 b/tests/ref/lavf-fate/mov_qtrle_mace6 index b6ecea5..30c705e 100644 --- a/tests/ref/lavf-fate/mov_qtrle_mace6 +++ b/tests/ref/lavf-fate/mov_qtrle_mace6 @@ -1,3 +1,3 @@ -db3e70328340fcb3cd0e06c215fadaa3 *./tests/data/lavf-fate/lavf.mov +dcc9c4c182a5809dee9a9366f4533797 *./tests/data/lavf-fate/lavf.mov 1270387 ./tests/data/lavf-fate/lavf.mov ./tests/data/lavf-fate/lavf.mov CRC=0x5ec66f68 -- 2.8.0.rc3.226.g39d4020
From 73a0bb05cc550740e9d5696893064b311f349512 Mon Sep 17 00:00:00 2001 From: Sasi Inguva <is...@google.com> Date: Tue, 9 Aug 2016 18:19:19 -0700 Subject: [PATCH 3/4] lavc: Add a flag in AVPacket to discard packet after decoding. Discard frames after decoding based on the flag. Signed-off-by: Sasi Inguva <is...@google.com> --- libavcodec/avcodec.h | 6 ++++++ libavcodec/utils.c | 14 +++++++++++++- libavcodec/version.h | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 3b21537..d68da01 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1621,6 +1621,12 @@ typedef struct AVPacket { } AVPacket; #define AV_PKT_FLAG_KEY 0x0001 ///< The packet contains a keyframe #define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted +/** + * Flag is used to discard packets which are required to maintain valid + * decoder state but are not required for output and should be dropped + * after decoding. + **/ +#define AV_PKT_FLAG_DISCARD 0x0004 enum AVSideDataParamChangeFlags { AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT = 0x0001, diff --git a/libavcodec/utils.c b/libavcodec/utils.c index f7adb52..399cf72 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -784,6 +784,12 @@ int ff_init_buffer_info(AVCodecContext *avctx, AVFrame *frame) } } add_metadata_from_side_data(pkt, frame); + + if (pkt->flags & AV_PKT_FLAG_DISCARD) { + frame->flags |= AV_FRAME_FLAG_DISCARD; + } else { + frame->flags = (frame->flags & ~AV_FRAME_FLAG_DISCARD); + } } else { frame->pkt_pts = AV_NOPTS_VALUE; av_frame_set_pkt_pos (frame, -1); @@ -2248,7 +2254,9 @@ fail: if(ret == tmp.size) ret = avpkt->size; } - + if (picture->flags & AV_FRAME_FLAG_DISCARD) { + *got_picture_ptr = 0; + } if (*got_picture_ptr) { if (!avctx->refcounted_frames) { int err = unrefcount_frame(avci, picture); @@ -2412,6 +2420,10 @@ int attribute_align_arg avcodec_decode_audio4(AVCodecContext *avctx, avctx->internal->skip_samples = 0; } } + + if ((frame->flags & AV_FRAME_FLAG_DISCARD) && avctx->internal->skip_samples <= 0) { + *got_frame_ptr = 0; + } fail: avctx->internal->pkt = NULL; if (did_split) { diff --git a/libavcodec/version.h b/libavcodec/version.h index 4ded1ee..a697261 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -28,7 +28,7 @@ #include "libavutil/version.h" #define LIBAVCODEC_VERSION_MAJOR 57 -#define LIBAVCODEC_VERSION_MINOR 51 +#define LIBAVCODEC_VERSION_MINOR 52 #define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ -- 2.8.0.rc3.226.g39d4020
From 2131dfda89a7c013cba353fc8f5de79ccb0c23b5 Mon Sep 17 00:00:00 2001 From: Sasi Inguva <is...@google.com> Date: Tue, 9 Aug 2016 18:11:57 -0700 Subject: [PATCH 2/4] avformat/avframe.h: Add a flag in AVIndexEntry to discard frame after decoding. Signed-off-by: Sasi Inguva <is...@google.com> --- libavformat/avformat.h | 3 +++ libavformat/version.h | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/libavformat/avformat.h b/libavformat/avformat.h index d8a6cf3..8cf1401 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -814,6 +814,9 @@ typedef struct AVIndexEntry { * is known */ #define AVINDEX_KEYFRAME 0x0001 +#define AVINDEX_DISCARD_FRAME 0x0002 /** + * Flag is used to indicate which frame should be discarded after decoding. + */ int flags:2; int size:30; //Yeah, trying to keep the size of this small to reduce memory requirements (it is 24 vs. 32 bytes due to possible 8-byte alignment). int min_distance; /**< Minimum distance between this and the previous keyframe, used to avoid unneeded searching. */ diff --git a/libavformat/version.h b/libavformat/version.h index 07df407..f23d427 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -32,7 +32,7 @@ // Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium) // Also please add any ticket numbers that you belive might be affected here #define LIBAVFORMAT_VERSION_MAJOR 57 -#define LIBAVFORMAT_VERSION_MINOR 46 +#define LIBAVFORMAT_VERSION_MINOR 47 #define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ -- 2.8.0.rc3.226.g39d4020
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel