mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-18 13:35:13 +00:00
lavf/mov: Add support for edit list parsing.
Signed-off-by: Sasi Inguva <isasi@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
a53201879c
commit
ca6cae73db
@ -34,6 +34,7 @@
|
||||
#include "libavutil/intfloat.h"
|
||||
#include "libavutil/mathematics.h"
|
||||
#include "libavutil/time_internal.h"
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/avstring.h"
|
||||
#include "libavutil/dict.h"
|
||||
#include "libavutil/display.h"
|
||||
@ -2756,6 +2757,348 @@ 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(const 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 */
|
||||
if (global_timescale == 0) {
|
||||
avpriv_request_sample(msc, "Support for mvhd.timescale = 0 with editlists");
|
||||
return 0;
|
||||
}
|
||||
*edit_list_duration = av_rescale(*edit_list_duration, msc->time_scale,
|
||||
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.
|
||||
*
|
||||
* This function is similar to ff_add_index_entry in libavformat/utils.c
|
||||
* except that here we are always unconditionally adding an index entry to
|
||||
* the end, instead of searching the entries list and skipping the add if
|
||||
* there is an existing entry with the same timestamp.
|
||||
* This is needed because the mov_fix_index calls this func with the same
|
||||
* unincremented timestamp for successive discarded frames.
|
||||
*/
|
||||
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);
|
||||
|
||||
// Double the allocation each time, to lower memory fragmentation.
|
||||
// Another difference from ff_add_index_entry function.
|
||||
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];
|
||||
|
||||
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, unsigned int* 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;
|
||||
int64_t search_timestamp = 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 %"PRId64" - media time: %"PRId64", duration: %"PRId64"\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;
|
||||
}
|
||||
|
||||
// If we encounter a non-negative edit list reset the skip_samples/start_pad fields and set them
|
||||
// according to the edit list below.
|
||||
if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
|
||||
st->skip_samples = msc->start_pad = 0;
|
||||
}
|
||||
|
||||
//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.
|
||||
search_timestamp = edit_list_media_time_dts;
|
||||
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 we seek to a frame 1 sec. before the
|
||||
// edit_list_media_time to cover the decoder delay.
|
||||
search_timestamp = FFMAX(search_timestamp - mov->time_scale, e_old[0].timestamp);
|
||||
}
|
||||
|
||||
index = find_prev_closest_keyframe_index(st, e_old, nb_old, search_timestamp, 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: %"PRId64" @ %"PRId64", ctts: %d, ctts_count: %"PRId64"\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 %"PRId64" - {%"PRId64", %d}\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)) {
|
||||
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 (edit_list_start_encountered == 0) {
|
||||
edit_list_start_encountered = 1;
|
||||
}
|
||||
|
||||
av_log(mov->fc, AV_LOG_DEBUG, "skip %d audio samples from curr_cts: %"PRId64"\n", st->skip_samples, curr_cts);
|
||||
} else {
|
||||
flags |= AVINDEX_DISCARD_FRAME;
|
||||
av_log(mov->fc, AV_LOG_DEBUG, "drop a frame at curr_cts: %"PRId64" @ %"PRId64"\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 %"PRId64" - {%"PRId64", %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;
|
||||
@ -2769,7 +3112,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
|
||||
|
||||
@ -2782,23 +3125,15 @@ 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 (!unsupported && st->codecpar->codec_id == AV_CODEC_ID_AAC && start_time > 0)
|
||||
sc->start_pad = start_time;
|
||||
}
|
||||
|
||||
/* only use old uncompressed audio chunk demuxing when stts specifies it */
|
||||
@ -3031,6 +3366,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) {
|
||||
@ -5330,6 +5668,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 */
|
||||
|
@ -32,7 +32,7 @@
|
||||
// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
|
||||
// Also please add any ticket numbers that you believe might be affected here
|
||||
#define LIBAVFORMAT_VERSION_MAJOR 57
|
||||
#define LIBAVFORMAT_VERSION_MINOR 49
|
||||
#define LIBAVFORMAT_VERSION_MINOR 50
|
||||
#define LIBAVFORMAT_VERSION_MICRO 100
|
||||
|
||||
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
||||
|
@ -149,6 +149,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
|
||||
|
28
tests/fate/mov.mak
Normal file
28
tests/fate/mov.mak
Normal file
@ -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
|
@ -1,5 +1,5 @@
|
||||
9b95afdb39b426a33bc962889f820aed *tests/data/fate/copy-trac236.mov
|
||||
630802 tests/data/fate/copy-trac236.mov
|
||||
d6e3d97b522ce881ed29c5da74cc7e63 *tests/data/fate/copy-trac236.mov
|
||||
630810 tests/data/fate/copy-trac236.mov
|
||||
#tb 0: 100/2997
|
||||
#media_type 0: video
|
||||
#codec_id 0: rawvideo
|
||||
|
@ -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
|
||||
|
@ -1,13 +1,13 @@
|
||||
[STREAM]
|
||||
index=0
|
||||
start_pts=0
|
||||
duration_ts=104384
|
||||
duration_ts=103326
|
||||
[/STREAM]
|
||||
[FORMAT]
|
||||
start_time=0.000000
|
||||
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
|
||||
|
@ -1,13 +1,13 @@
|
||||
[STREAM]
|
||||
index=0
|
||||
start_pts=0
|
||||
duration_ts=530224
|
||||
duration_ts=529200
|
||||
[/STREAM]
|
||||
[FORMAT]
|
||||
start_time=0.000000
|
||||
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
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
57
tests/ref/fate/mov-1elist-1ctts
Normal file
57
tests/ref/fate/mov-1elist-1ctts
Normal file
@ -0,0 +1,57 @@
|
||||
#format: frame checksums
|
||||
#version: 2
|
||||
#hash: MD5
|
||||
#tb 0: 1/24
|
||||
#media_type 0: video
|
||||
#codec_id 0: rawvideo
|
||||
#dimensions 0: 640x480
|
||||
#sar 0: 0/1
|
||||
#stream#, dts, pts, duration, size, hash
|
||||
0, 0, 0, 1, 460800, 3dd21395fc5d3429f9b08492f47af093
|
||||
0, 1, 1, 1, 460800, 117009cceecc160c385dac3d344505c9
|
||||
0, 2, 2, 1, 460800, c093aa6e8747287cfeb758f2da7476d1
|
||||
0, 3, 3, 1, 460800, 6b7c94a3363f3381f7f930ac02b0c975
|
||||
0, 4, 4, 1, 460800, 87c3824a0ef3566f1a384c3c3e2b0d96
|
||||
0, 5, 5, 1, 460800, 3de48f3009a159e4737b5993102266de
|
||||
0, 6, 6, 1, 460800, 2be0ed1afe921093645af2ff917281ab
|
||||
0, 7, 7, 1, 460800, a89170c8413305fdba8d413a5080e57a
|
||||
0, 8, 8, 1, 460800, 5a3be131222c223ef8eccd9636330839
|
||||
0, 9, 9, 1, 460800, 01068b423526481b9732214c16b9e229
|
||||
0, 10, 10, 1, 460800, f9ea60560154e82d77e2661c34dca143
|
||||
0, 11, 11, 1, 460800, d77f5b82e34ea5a450076a85141a5618
|
||||
0, 12, 12, 1, 460800, 91ff4efcfc3a2301fb2329139e0e71a2
|
||||
0, 13, 13, 1, 460800, af8d914008f5f64f2ec1fadfae8bc697
|
||||
0, 14, 14, 1, 460800, abb2c4fd1f1ce3c449236da246b62bef
|
||||
0, 15, 15, 1, 460800, 66b0558f03dd5a472836fea045dd06ea
|
||||
0, 16, 16, 1, 460800, 224207d3e5b93fc4e8c71b782aabca51
|
||||
0, 17, 17, 1, 460800, ef975cfa7bc4de88f1333eb301f7ebdd
|
||||
0, 18, 18, 1, 460800, d75bf790003d2b1ee56bea0cef068e8e
|
||||
0, 19, 19, 1, 460800, d7a16935d7f808cca046db971e5b612a
|
||||
0, 20, 20, 1, 460800, f49d06ca4995c267fdc8c674c992cdd1
|
||||
0, 21, 21, 1, 460800, f53fd634154dec26ec85b6bef01ba890
|
||||
0, 22, 22, 1, 460800, d2d36371e50ace43ae4d2bab092a24c3
|
||||
0, 23, 23, 1, 460800, a4c08f4979e7dc914d69a170e198656c
|
||||
0, 24, 24, 1, 460800, 0d128e33f156fcc228d92117d56a5f93
|
||||
0, 25, 25, 1, 460800, 52fb8fc75c848ed9bc61d5129473f3fb
|
||||
0, 26, 26, 1, 460800, 5517f79d2ccb4fc93ede061bfcd632ea
|
||||
0, 27, 27, 1, 460800, c24fea9e8d02240328de3cb520904a6b
|
||||
0, 28, 28, 1, 460800, 0cbe46a4b91a0bd235d5e74084058e61
|
||||
0, 29, 29, 1, 460800, 355b17c2feb6b809c95bb71b333a670d
|
||||
0, 30, 30, 1, 460800, 063643ba941293ba95e024da202267cb
|
||||
0, 31, 31, 1, 460800, 8b31727d492fa9b25e025a1f45425b16
|
||||
0, 32, 32, 1, 460800, 45c5901c24d2ae2304b3e82c075a96bf
|
||||
0, 33, 33, 1, 460800, b7d4449d0e2157093727cb0f00648751
|
||||
0, 34, 34, 1, 460800, 167642e702f645853c974531853987f8
|
||||
0, 35, 35, 1, 460800, 2eb4596d675f099bab6c3b40ce30fd88
|
||||
0, 36, 36, 1, 460800, 8dd1aec35b92610cb22bedd3c54cb26a
|
||||
0, 37, 37, 1, 460800, 8eacf32e58d9a731467aba0f61d9e60f
|
||||
0, 38, 38, 1, 460800, 6a735f86d18ebe265894f633071a25d7
|
||||
0, 39, 39, 1, 460800, 843b0c938845b72e1c23bc39f7479cba
|
||||
0, 40, 40, 1, 460800, ca2099b43141cb9131505ab40ac3959f
|
||||
0, 41, 41, 1, 460800, e65322e1929def11f9985683365ab6bf
|
||||
0, 42, 42, 1, 460800, 565410a8c2f4b50a192f9590e6ab32c0
|
||||
0, 43, 43, 1, 460800, fa9a8ac625854cc279a07766ddad6e6f
|
||||
0, 44, 44, 1, 460800, a46ac62886c48edef3dc58de34a2a004
|
||||
0, 45, 45, 1, 460800, 414e01b6c24e71efc9c58f65dc0f4aca
|
||||
0, 46, 46, 1, 460800, e0501b903f21b490da049e51e7a02bae
|
||||
0, 47, 47, 1, 460800, 48b30eec1e9d862ee54b136045e1d90f
|
56
tests/ref/fate/mov-1elist-ends-last-bframe
Normal file
56
tests/ref/fate/mov-1elist-ends-last-bframe
Normal file
@ -0,0 +1,56 @@
|
||||
#format: frame checksums
|
||||
#version: 2
|
||||
#hash: MD5
|
||||
#tb 0: 1/24
|
||||
#media_type 0: video
|
||||
#codec_id 0: rawvideo
|
||||
#dimensions 0: 640x480
|
||||
#sar 0: 0/1
|
||||
#stream#, dts, pts, duration, size, hash
|
||||
0, 0, 0, 1, 460800, b3d774603a22dbf9e952465c0d295166
|
||||
0, 1, 1, 1, 460800, d8f88e4269888dfadeb15bec662a3851
|
||||
0, 2, 2, 1, 460800, 6d6e686070143f797f8f1eca43d9cf28
|
||||
0, 3, 3, 1, 460800, a934f883968e71f22df044f043e61b14
|
||||
0, 4, 4, 1, 460800, 83dc65c7703f43ce97c87eea7191f69e
|
||||
0, 5, 5, 1, 460800, d633ab0dba64277b104ff5c2e1983424
|
||||
0, 6, 6, 1, 460800, 6c7d2c7481bd11584d68dbb9262d8351
|
||||
0, 7, 7, 1, 460800, 59b0bbc661b79ba82d726ca4d28255f2
|
||||
0, 8, 8, 1, 460800, 821cd7ca0adc4d6a3f10419b6c4283a6
|
||||
0, 9, 9, 1, 460800, 4655b1d6e8237b2e880f5b4140f7cf08
|
||||
0, 10, 10, 1, 460800, 264858653f9ac0623ffc87ca5e4c9939
|
||||
0, 11, 11, 1, 460800, b7129e91b9a6b4f8582747f12cafa52e
|
||||
0, 12, 12, 1, 460800, 1f6596fba655e213fd5c2ea99a891138
|
||||
0, 13, 13, 1, 460800, c8d67dc8fa8bdca263060ae542e55278
|
||||
0, 14, 14, 1, 460800, 57aa680b64b140eaeaa7f4250c12b59e
|
||||
0, 15, 15, 1, 460800, b87e8a9c0701cd8811dd38292b9994f7
|
||||
0, 16, 16, 1, 460800, 2427eb2900c8e18da0f36e47799a5ed8
|
||||
0, 17, 17, 1, 460800, 710a727a7ba51bc2938ca83376c6edd6
|
||||
0, 18, 18, 1, 460800, 44d5ce80804d9ca470f9e5348c66e9b3
|
||||
0, 19, 19, 1, 460800, 448e1fc3af42c4143e5fc4120090cdd6
|
||||
0, 20, 20, 1, 460800, 7c2c4c61843cfdd033b8fa295766a524
|
||||
0, 21, 21, 1, 460800, 20a197cb4e20857e135d4c10945987f6
|
||||
0, 22, 22, 1, 460800, 7534b00e60f6920da7b767aef0876e65
|
||||
0, 23, 23, 1, 460800, b88cedb84145f07226d5573aa57a1cce
|
||||
0, 24, 24, 1, 460800, 620751271985df3728b6dbc627974183
|
||||
0, 25, 25, 1, 460800, 643719b26ac93f93d1674fee97c58a35
|
||||
0, 26, 26, 1, 460800, 5d3f8fa9abab0256afbf4285cd337804
|
||||
0, 27, 27, 1, 460800, a6c302c54c6481088f9c27189ecda5a8
|
||||
0, 28, 28, 1, 460800, 2851ad86c15a1dc7b6d4a0fe8f15de8f
|
||||
0, 29, 29, 1, 460800, 42157005018908c810b1840856778482
|
||||
0, 30, 30, 1, 460800, 2541042038568329922fd6f7187aad49
|
||||
0, 31, 31, 1, 460800, 855b9ecfa9da66ef5971fcea7e515890
|
||||
0, 32, 32, 1, 460800, 85df610183efce5de91946cb909019c9
|
||||
0, 33, 33, 1, 460800, 369bce83d8aa0ac3cfb853b7e2886896
|
||||
0, 34, 34, 1, 460800, b428e7b294e5ac0d316971e02a25b12a
|
||||
0, 35, 35, 1, 460800, aa66321995b890e8dbd0d7b188ecb19c
|
||||
0, 36, 36, 1, 460800, 1533e3c85fd9d1f6710442653b936ef0
|
||||
0, 37, 37, 1, 460800, 99f3d38c95f1e4c0b442007a466f77cb
|
||||
0, 38, 38, 1, 460800, 30e007d8a4c0f0cfa22c8b6051980b59
|
||||
0, 39, 39, 1, 460800, fef21426b54048af617211234ee9b602
|
||||
0, 40, 40, 1, 460800, ff9a482c793a8e9950c0aa7e2845ca0e
|
||||
0, 41, 41, 1, 460800, ac0bb586786c35a51bdb6a5514ff54b9
|
||||
0, 42, 42, 1, 460800, bb008ec74fe642d6350bb1b4c922a6b0
|
||||
0, 43, 43, 1, 460800, 3e4255d1e817b9c6fa2cfbb0f198069d
|
||||
0, 44, 44, 1, 460800, 0fe04242f0441fa5c90e69ca015f4b2d
|
||||
0, 45, 45, 1, 460800, f14c12ec008a56c9aa99ef1be857ad23
|
||||
0, 46, 46, 1, 460800, 43ac558397b699ac82f7e12810c7ade9
|
57
tests/ref/fate/mov-1elist-noctts
Normal file
57
tests/ref/fate/mov-1elist-noctts
Normal file
@ -0,0 +1,57 @@
|
||||
#format: frame checksums
|
||||
#version: 2
|
||||
#hash: MD5
|
||||
#tb 0: 1/24
|
||||
#media_type 0: video
|
||||
#codec_id 0: rawvideo
|
||||
#dimensions 0: 640x480
|
||||
#sar 0: 0/1
|
||||
#stream#, dts, pts, duration, size, hash
|
||||
0, 0, 0, 1, 460800, 3dd21395fc5d3429f9b08492f47af093
|
||||
0, 1, 1, 1, 460800, 117009cceecc160c385dac3d344505c9
|
||||
0, 2, 2, 1, 460800, c093aa6e8747287cfeb758f2da7476d1
|
||||
0, 3, 3, 1, 460800, 6b7c94a3363f3381f7f930ac02b0c975
|
||||
0, 4, 4, 1, 460800, 87c3824a0ef3566f1a384c3c3e2b0d96
|
||||
0, 5, 5, 1, 460800, 3de48f3009a159e4737b5993102266de
|
||||
0, 6, 6, 1, 460800, 2be0ed1afe921093645af2ff917281ab
|
||||
0, 7, 7, 1, 460800, a89170c8413305fdba8d413a5080e57a
|
||||
0, 8, 8, 1, 460800, 5a3be131222c223ef8eccd9636330839
|
||||
0, 9, 9, 1, 460800, 01068b423526481b9732214c16b9e229
|
||||
0, 10, 10, 1, 460800, f9ea60560154e82d77e2661c34dca143
|
||||
0, 11, 11, 1, 460800, d77f5b82e34ea5a450076a85141a5618
|
||||
0, 12, 12, 1, 460800, 91ff4efcfc3a2301fb2329139e0e71a2
|
||||
0, 13, 13, 1, 460800, af8d914008f5f64f2ec1fadfae8bc697
|
||||
0, 14, 14, 1, 460800, abb2c4fd1f1ce3c449236da246b62bef
|
||||
0, 15, 15, 1, 460800, 66b0558f03dd5a472836fea045dd06ea
|
||||
0, 16, 16, 1, 460800, 224207d3e5b93fc4e8c71b782aabca51
|
||||
0, 17, 17, 1, 460800, ef975cfa7bc4de88f1333eb301f7ebdd
|
||||
0, 18, 18, 1, 460800, d75bf790003d2b1ee56bea0cef068e8e
|
||||
0, 19, 19, 1, 460800, d7a16935d7f808cca046db971e5b612a
|
||||
0, 20, 20, 1, 460800, f49d06ca4995c267fdc8c674c992cdd1
|
||||
0, 21, 21, 1, 460800, f53fd634154dec26ec85b6bef01ba890
|
||||
0, 22, 22, 1, 460800, d2d36371e50ace43ae4d2bab092a24c3
|
||||
0, 23, 23, 1, 460800, a4c08f4979e7dc914d69a170e198656c
|
||||
0, 24, 24, 1, 460800, 0d128e33f156fcc228d92117d56a5f93
|
||||
0, 25, 25, 1, 460800, 52fb8fc75c848ed9bc61d5129473f3fb
|
||||
0, 26, 26, 1, 460800, 5517f79d2ccb4fc93ede061bfcd632ea
|
||||
0, 27, 27, 1, 460800, c24fea9e8d02240328de3cb520904a6b
|
||||
0, 28, 28, 1, 460800, 0cbe46a4b91a0bd235d5e74084058e61
|
||||
0, 29, 29, 1, 460800, 355b17c2feb6b809c95bb71b333a670d
|
||||
0, 30, 30, 1, 460800, 063643ba941293ba95e024da202267cb
|
||||
0, 31, 31, 1, 460800, 8b31727d492fa9b25e025a1f45425b16
|
||||
0, 32, 32, 1, 460800, 45c5901c24d2ae2304b3e82c075a96bf
|
||||
0, 33, 33, 1, 460800, b7d4449d0e2157093727cb0f00648751
|
||||
0, 34, 34, 1, 460800, 167642e702f645853c974531853987f8
|
||||
0, 35, 35, 1, 460800, 2eb4596d675f099bab6c3b40ce30fd88
|
||||
0, 36, 36, 1, 460800, 8dd1aec35b92610cb22bedd3c54cb26a
|
||||
0, 37, 37, 1, 460800, 8eacf32e58d9a731467aba0f61d9e60f
|
||||
0, 38, 38, 1, 460800, 6a735f86d18ebe265894f633071a25d7
|
||||
0, 39, 39, 1, 460800, 843b0c938845b72e1c23bc39f7479cba
|
||||
0, 40, 40, 1, 460800, ca2099b43141cb9131505ab40ac3959f
|
||||
0, 41, 41, 1, 460800, e65322e1929def11f9985683365ab6bf
|
||||
0, 42, 42, 1, 460800, 565410a8c2f4b50a192f9590e6ab32c0
|
||||
0, 43, 43, 1, 460800, fa9a8ac625854cc279a07766ddad6e6f
|
||||
0, 44, 44, 1, 460800, a46ac62886c48edef3dc58de34a2a004
|
||||
0, 45, 45, 1, 460800, 414e01b6c24e71efc9c58f65dc0f4aca
|
||||
0, 46, 46, 1, 460800, e0501b903f21b490da049e51e7a02bae
|
||||
0, 47, 47, 1, 460800, 48b30eec1e9d862ee54b136045e1d90f
|
51
tests/ref/fate/mov-2elist-elist1-ends-bframe
Normal file
51
tests/ref/fate/mov-2elist-elist1-ends-bframe
Normal file
@ -0,0 +1,51 @@
|
||||
#format: frame checksums
|
||||
#version: 2
|
||||
#hash: MD5
|
||||
#tb 0: 1/24
|
||||
#media_type 0: video
|
||||
#codec_id 0: rawvideo
|
||||
#dimensions 0: 640x480
|
||||
#sar 0: 0/1
|
||||
#stream#, dts, pts, duration, size, hash
|
||||
0, 0, 0, 1, 460800, b3d774603a22dbf9e952465c0d295166
|
||||
0, 1, 1, 1, 460800, d8f88e4269888dfadeb15bec662a3851
|
||||
0, 2, 2, 1, 460800, 6d6e686070143f797f8f1eca43d9cf28
|
||||
0, 3, 3, 1, 460800, a934f883968e71f22df044f043e61b14
|
||||
0, 4, 4, 1, 460800, 83dc65c7703f43ce97c87eea7191f69e
|
||||
0, 5, 5, 1, 460800, d633ab0dba64277b104ff5c2e1983424
|
||||
0, 6, 6, 1, 460800, 6c7d2c7481bd11584d68dbb9262d8351
|
||||
0, 7, 7, 1, 460800, 59b0bbc661b79ba82d726ca4d28255f2
|
||||
0, 8, 8, 1, 460800, 821cd7ca0adc4d6a3f10419b6c4283a6
|
||||
0, 9, 9, 1, 460800, 4655b1d6e8237b2e880f5b4140f7cf08
|
||||
0, 10, 10, 1, 460800, 264858653f9ac0623ffc87ca5e4c9939
|
||||
0, 11, 11, 1, 460800, b7129e91b9a6b4f8582747f12cafa52e
|
||||
0, 12, 12, 1, 460800, 1f6596fba655e213fd5c2ea99a891138
|
||||
0, 13, 13, 1, 460800, c8d67dc8fa8bdca263060ae542e55278
|
||||
0, 14, 14, 1, 460800, 57aa680b64b140eaeaa7f4250c12b59e
|
||||
0, 15, 15, 1, 460800, b87e8a9c0701cd8811dd38292b9994f7
|
||||
0, 16, 16, 1, 460800, 2427eb2900c8e18da0f36e47799a5ed8
|
||||
0, 17, 17, 1, 460800, 710a727a7ba51bc2938ca83376c6edd6
|
||||
0, 18, 18, 1, 460800, 620751271985df3728b6dbc627974183
|
||||
0, 19, 19, 1, 460800, 643719b26ac93f93d1674fee97c58a35
|
||||
0, 20, 20, 1, 460800, 5d3f8fa9abab0256afbf4285cd337804
|
||||
0, 21, 21, 1, 460800, a6c302c54c6481088f9c27189ecda5a8
|
||||
0, 22, 22, 1, 460800, 2851ad86c15a1dc7b6d4a0fe8f15de8f
|
||||
0, 23, 23, 1, 460800, 42157005018908c810b1840856778482
|
||||
0, 24, 24, 1, 460800, 2541042038568329922fd6f7187aad49
|
||||
0, 25, 25, 1, 460800, 855b9ecfa9da66ef5971fcea7e515890
|
||||
0, 26, 26, 1, 460800, 85df610183efce5de91946cb909019c9
|
||||
0, 27, 27, 1, 460800, 369bce83d8aa0ac3cfb853b7e2886896
|
||||
0, 28, 28, 1, 460800, b428e7b294e5ac0d316971e02a25b12a
|
||||
0, 29, 29, 1, 460800, aa66321995b890e8dbd0d7b188ecb19c
|
||||
0, 30, 30, 1, 460800, 1533e3c85fd9d1f6710442653b936ef0
|
||||
0, 31, 31, 1, 460800, 99f3d38c95f1e4c0b442007a466f77cb
|
||||
0, 32, 32, 1, 460800, 30e007d8a4c0f0cfa22c8b6051980b59
|
||||
0, 33, 33, 1, 460800, fef21426b54048af617211234ee9b602
|
||||
0, 34, 34, 1, 460800, ff9a482c793a8e9950c0aa7e2845ca0e
|
||||
0, 35, 35, 1, 460800, ac0bb586786c35a51bdb6a5514ff54b9
|
||||
0, 36, 36, 1, 460800, bb008ec74fe642d6350bb1b4c922a6b0
|
||||
0, 37, 37, 1, 460800, 3e4255d1e817b9c6fa2cfbb0f198069d
|
||||
0, 38, 38, 1, 460800, 0fe04242f0441fa5c90e69ca015f4b2d
|
||||
0, 39, 39, 1, 460800, f14c12ec008a56c9aa99ef1be857ad23
|
||||
0, 40, 40, 1, 460800, 43ac558397b699ac82f7e12810c7ade9
|
||||
0, 41, 41, 1, 460800, 35431eb1a8be4f05d08d23380655178c
|
57
tests/ref/fate/mov-3elist
Normal file
57
tests/ref/fate/mov-3elist
Normal file
@ -0,0 +1,57 @@
|
||||
#format: frame checksums
|
||||
#version: 2
|
||||
#hash: MD5
|
||||
#tb 0: 1/24
|
||||
#media_type 0: video
|
||||
#codec_id 0: rawvideo
|
||||
#dimensions 0: 640x480
|
||||
#sar 0: 0/1
|
||||
#stream#, dts, pts, duration, size, hash
|
||||
0, 0, 0, 1, 460800, 80fbbdec589e15e6c493b44d243f92a9
|
||||
0, 1, 1, 1, 460800, f4b23293bb2ecf69cc3570853d8c56a1
|
||||
0, 2, 2, 1, 460800, 0c03ce2c1c6ec405d7455465ecd559a3
|
||||
0, 3, 3, 1, 460800, 7921791695537fba2c3c123da4834cb9
|
||||
0, 4, 4, 1, 460800, 30c8e2903a561b84d4cbaf95c668d236
|
||||
0, 5, 5, 1, 460800, 7ff42e998217c17592ddf6b584f26cef
|
||||
0, 6, 6, 1, 460800, 5e402c48bf097db2d31b82bb4194a382
|
||||
0, 7, 7, 1, 460800, 824c49e92c8ae6d99a0207b514dd756c
|
||||
0, 8, 8, 1, 460800, 24f189216a1d9cf2313b2d6dbe3dbdd3
|
||||
0, 9, 9, 1, 460800, 519179a8e74275d26b183374637e003f
|
||||
0, 10, 10, 1, 460800, f18331ddcef0adf5b069bfa98baf8db4
|
||||
0, 11, 11, 1, 460800, 081f61688690d47dbdddd5384e5d5a70
|
||||
0, 12, 12, 1, 460800, 90dbf019b9035433371a8df41a9268b7
|
||||
0, 13, 13, 1, 460800, bb5adfb9c66732898b34186eca1667ba
|
||||
0, 14, 14, 1, 460800, cc08cfd64f37783ecddaf143f6ad78bc
|
||||
0, 15, 15, 1, 460800, b8ae21d024fe4df903d56f4521993c72
|
||||
0, 16, 16, 1, 460800, b45a99907f045dcadf0a2befc11555e3
|
||||
0, 17, 17, 1, 460800, 603ba935845e65ab6cccbbec88bbf60d
|
||||
0, 18, 18, 1, 460800, df80c8d3e6a77258a306903f17995a18
|
||||
0, 19, 19, 1, 460800, 4b7e90c0a5fd0e0cd958d47f0afac636
|
||||
0, 20, 20, 1, 460800, 9feb6e36182f1745be6387edea240eb6
|
||||
0, 21, 21, 1, 460800, 86e6de4bd0a5ff7558f4cf6c1ec3930d
|
||||
0, 22, 22, 1, 460800, 726b69df77edbe7b503d4698656d1320
|
||||
0, 23, 23, 1, 460800, d282fb7a953ac205b0a43d00c2d60a33
|
||||
0, 24, 24, 1, 460800, eece3daa70cc20208dd75d91ac84c8fd
|
||||
0, 25, 25, 1, 460800, c86d23e73bcce351fc315fb1f13348da
|
||||
0, 26, 26, 1, 460800, 93497b4f7c5ad9d61212239b7c9d2770
|
||||
0, 27, 27, 1, 460800, eb217d2c12de67903835a8c58f620488
|
||||
0, 28, 28, 1, 460800, d966480867bb54c8cd044f18388ed486
|
||||
0, 29, 29, 1, 460800, 3ea6207942b3181fdd8e8aa6cae1062a
|
||||
0, 30, 30, 1, 460800, 2620df54aca086ec0fb9527c6e6f5135
|
||||
0, 31, 31, 1, 460800, 43bb7320f0bb583188dc965ddbfade90
|
||||
0, 32, 32, 1, 460800, 0cddaa04645f804e02f65b0836412113
|
||||
0, 33, 33, 1, 460800, 83b2dc95807289d7f4a4632bf18c2e97
|
||||
0, 34, 34, 1, 460800, 98134d0e41e6dd12827049ccf33b4669
|
||||
0, 35, 35, 1, 460800, 56f55631731fa39c7acbab0afeb2eb1b
|
||||
0, 36, 36, 1, 460800, 379c1105be09d836a515dc909455ddf4
|
||||
0, 37, 37, 1, 460800, 1df87c47e9d98731faf1c3885b77e5da
|
||||
0, 38, 38, 1, 460800, 9a8734bcbfdb4d97e530683b8b556a26
|
||||
0, 39, 39, 1, 460800, c7a7990d0cddc5adfbe27da7a42e025e
|
||||
0, 40, 40, 1, 460800, 0c81e46011e03be410feaf056207fd55
|
||||
0, 41, 41, 1, 460800, ca76e4e63016ff29d8aeeb9cb053bb6c
|
||||
0, 42, 42, 1, 460800, cebfbe299c17c1f8fc1e6b189555c3c2
|
||||
0, 43, 43, 1, 460800, 4f002c5feca5e75f07089e0df47507dd
|
||||
0, 44, 44, 1, 460800, c5fd83fc4a745abee9b3d9a6eec9dd3e
|
||||
0, 45, 45, 1, 460800, 57d9bad9b45aa2746de5d8bdc2c24969
|
||||
0, 46, 46, 1, 460800, 9831673ad7dec167af4a959f64258949
|
||||
0, 47, 47, 1, 460800, 77a1cb208f70f51bcb01e28d8cba73b4
|
57
tests/ref/fate/mov-3elist-1ctts
Normal file
57
tests/ref/fate/mov-3elist-1ctts
Normal file
@ -0,0 +1,57 @@
|
||||
#format: frame checksums
|
||||
#version: 2
|
||||
#hash: MD5
|
||||
#tb 0: 1/24
|
||||
#media_type 0: video
|
||||
#codec_id 0: rawvideo
|
||||
#dimensions 0: 640x480
|
||||
#sar 0: 0/1
|
||||
#stream#, dts, pts, duration, size, hash
|
||||
0, 0, 0, 1, 460800, 3dd21395fc5d3429f9b08492f47af093
|
||||
0, 1, 1, 1, 460800, 117009cceecc160c385dac3d344505c9
|
||||
0, 2, 2, 1, 460800, c093aa6e8747287cfeb758f2da7476d1
|
||||
0, 3, 3, 1, 460800, 6b7c94a3363f3381f7f930ac02b0c975
|
||||
0, 4, 4, 1, 460800, 87c3824a0ef3566f1a384c3c3e2b0d96
|
||||
0, 5, 5, 1, 460800, 3de48f3009a159e4737b5993102266de
|
||||
0, 6, 6, 1, 460800, 2be0ed1afe921093645af2ff917281ab
|
||||
0, 7, 7, 1, 460800, a89170c8413305fdba8d413a5080e57a
|
||||
0, 8, 8, 1, 460800, 5a3be131222c223ef8eccd9636330839
|
||||
0, 9, 9, 1, 460800, 01068b423526481b9732214c16b9e229
|
||||
0, 10, 10, 1, 460800, f9ea60560154e82d77e2661c34dca143
|
||||
0, 11, 11, 1, 460800, d77f5b82e34ea5a450076a85141a5618
|
||||
0, 12, 12, 1, 460800, 91ff4efcfc3a2301fb2329139e0e71a2
|
||||
0, 13, 13, 1, 460800, af8d914008f5f64f2ec1fadfae8bc697
|
||||
0, 14, 14, 1, 460800, abb2c4fd1f1ce3c449236da246b62bef
|
||||
0, 15, 15, 1, 460800, 66b0558f03dd5a472836fea045dd06ea
|
||||
0, 16, 16, 1, 460800, 224207d3e5b93fc4e8c71b782aabca51
|
||||
0, 17, 17, 1, 460800, ef975cfa7bc4de88f1333eb301f7ebdd
|
||||
0, 18, 18, 1, 460800, d75bf790003d2b1ee56bea0cef068e8e
|
||||
0, 19, 19, 1, 460800, d7a16935d7f808cca046db971e5b612a
|
||||
0, 20, 20, 1, 460800, f49d06ca4995c267fdc8c674c992cdd1
|
||||
0, 21, 21, 1, 460800, f53fd634154dec26ec85b6bef01ba890
|
||||
0, 22, 22, 1, 460800, d2d36371e50ace43ae4d2bab092a24c3
|
||||
0, 23, 23, 1, 460800, a4c08f4979e7dc914d69a170e198656c
|
||||
0, 24, 24, 1, 460800, 0d128e33f156fcc228d92117d56a5f93
|
||||
0, 25, 25, 1, 460800, 52fb8fc75c848ed9bc61d5129473f3fb
|
||||
0, 26, 26, 1, 460800, 5517f79d2ccb4fc93ede061bfcd632ea
|
||||
0, 27, 27, 1, 460800, c24fea9e8d02240328de3cb520904a6b
|
||||
0, 28, 28, 1, 460800, 0cbe46a4b91a0bd235d5e74084058e61
|
||||
0, 29, 29, 1, 460800, 355b17c2feb6b809c95bb71b333a670d
|
||||
0, 30, 30, 1, 460800, 063643ba941293ba95e024da202267cb
|
||||
0, 31, 31, 1, 460800, 8b31727d492fa9b25e025a1f45425b16
|
||||
0, 32, 32, 1, 460800, 45c5901c24d2ae2304b3e82c075a96bf
|
||||
0, 33, 33, 1, 460800, b7d4449d0e2157093727cb0f00648751
|
||||
0, 34, 34, 1, 460800, 167642e702f645853c974531853987f8
|
||||
0, 35, 35, 1, 460800, 2eb4596d675f099bab6c3b40ce30fd88
|
||||
0, 36, 36, 1, 460800, 8dd1aec35b92610cb22bedd3c54cb26a
|
||||
0, 37, 37, 1, 460800, 8eacf32e58d9a731467aba0f61d9e60f
|
||||
0, 38, 38, 1, 460800, 6a735f86d18ebe265894f633071a25d7
|
||||
0, 39, 39, 1, 460800, 843b0c938845b72e1c23bc39f7479cba
|
||||
0, 40, 40, 1, 460800, ca2099b43141cb9131505ab40ac3959f
|
||||
0, 41, 41, 1, 460800, e65322e1929def11f9985683365ab6bf
|
||||
0, 42, 42, 1, 460800, 565410a8c2f4b50a192f9590e6ab32c0
|
||||
0, 43, 43, 1, 460800, fa9a8ac625854cc279a07766ddad6e6f
|
||||
0, 44, 44, 1, 460800, a46ac62886c48edef3dc58de34a2a004
|
||||
0, 45, 45, 1, 460800, 414e01b6c24e71efc9c58f65dc0f4aca
|
||||
0, 46, 46, 1, 460800, e0501b903f21b490da049e51e7a02bae
|
||||
0, 47, 47, 1, 460800, 48b30eec1e9d862ee54b136045e1d90f
|
57
tests/ref/fate/mov-elist-starts-ctts-2ndsample
Normal file
57
tests/ref/fate/mov-elist-starts-ctts-2ndsample
Normal file
@ -0,0 +1,57 @@
|
||||
#format: frame checksums
|
||||
#version: 2
|
||||
#hash: MD5
|
||||
#tb 0: 1/24
|
||||
#media_type 0: video
|
||||
#codec_id 0: rawvideo
|
||||
#dimensions 0: 640x480
|
||||
#sar 0: 0/1
|
||||
#stream#, dts, pts, duration, size, hash
|
||||
0, 0, 0, 1, 460800, e2ec4074e83dd4f9188915b6b08aa3a2
|
||||
0, 1, 1, 1, 460800, 9ed1ba935bc22ef03e6f8fd5b0b37ee6
|
||||
0, 2, 2, 1, 460800, 3f1c536514750de86571122046b5858f
|
||||
0, 3, 3, 1, 460800, 4f7943cb6f7966d19d344081b0db0d71
|
||||
0, 4, 4, 1, 460800, 0661f34eb45398f8cd158b5a1637bd96
|
||||
0, 5, 5, 1, 460800, 177620fa17c4d6fddad1d31c1605e46e
|
||||
0, 6, 6, 1, 460800, 8e22cde58a50e0279be01c23dfd7c032
|
||||
0, 7, 7, 1, 460800, 8c74c4d8ceee929fded82eeb7a0a7c29
|
||||
0, 8, 8, 1, 460800, a50d00a8868f0722be55fa5953bc6ebf
|
||||
0, 9, 9, 1, 460800, f791233c8904da4e267bf7bcf5d6201e
|
||||
0, 10, 10, 1, 460800, 4ff703ef573eb8e88639d3c700645bf8
|
||||
0, 11, 11, 1, 460800, fd4c98487779aa7783e9fb3e874f9c8b
|
||||
0, 12, 12, 1, 460800, e11fbc6c36ad086ea6e611ddd28b211c
|
||||
0, 13, 13, 1, 460800, a63b8af666ee30a243cf9ea0d49834b5
|
||||
0, 14, 14, 1, 460800, 1cec6499bfaf054bf581efdab72f5799
|
||||
0, 15, 15, 1, 460800, 5cb8ea5a7158cac1112fc6453b2a577f
|
||||
0, 16, 16, 1, 460800, 2df256cb311f97f4648cdeee41ba20d1
|
||||
0, 17, 17, 1, 460800, afb2c133204a99fe434767340f50c2b9
|
||||
0, 18, 18, 1, 460800, 27c802932fa873af8663a6b8733391d7
|
||||
0, 19, 19, 1, 460800, c53872c43baf56d496811d2809ebcd9b
|
||||
0, 20, 20, 1, 460800, d3ca26ecb6bec6bfa508f07e2a66fa3a
|
||||
0, 21, 21, 1, 460800, 2d44e18ccf734fe0ed98a7ce1e361fe7
|
||||
0, 22, 22, 1, 460800, ac4078b5426e4664029923ccf6ea3377
|
||||
0, 23, 23, 1, 460800, 60d4460a8b97e58e72c12d0c7334b4e4
|
||||
0, 24, 24, 1, 460800, 95bceab68b4ecf5df261ff9d3743041a
|
||||
0, 25, 25, 1, 460800, 0b80ad5bf2afbfbe512b83af797afd84
|
||||
0, 26, 26, 1, 460800, fbc70468f9331a0538e8c09ec3ead20e
|
||||
0, 27, 27, 1, 460800, de0578b4a114235250b7e93e9f9bf6de
|
||||
0, 28, 28, 1, 460800, 72f50490650b718e394822f8873ad071
|
||||
0, 29, 29, 1, 460800, b26594051d313892823eef711a08dc00
|
||||
0, 30, 30, 1, 460800, 1122641658f6b433e82080e092fe6943
|
||||
0, 31, 31, 1, 460800, aae4ddc51bcbdf9428f68069f5881090
|
||||
0, 32, 32, 1, 460800, 018047addf7fd2ef4f1d231d69187bf5
|
||||
0, 33, 33, 1, 460800, bd03ace29c974b64e2a7a4cc815ec582
|
||||
0, 34, 34, 1, 460800, 7fddacb17f01d8facfb09df44ff8bdfd
|
||||
0, 35, 35, 1, 460800, e8d84d6b3406404900b8342183f6ada7
|
||||
0, 36, 36, 1, 460800, 5b24faed4fdd21bf9a1218658a113009
|
||||
0, 37, 37, 1, 460800, 8d82775c56b6b0ab31db0c522999b0a1
|
||||
0, 38, 38, 1, 460800, 282e5e03295c80b2a7b472b82c57483d
|
||||
0, 39, 39, 1, 460800, 0ad41f5975c2466fc3166ea20bde6842
|
||||
0, 40, 40, 1, 460800, 1439ad336ceafda0ad62355a7d0b6e50
|
||||
0, 41, 41, 1, 460800, d3a97471ad64ac2378591d4f6eadba1c
|
||||
0, 42, 42, 1, 460800, a40c32a1e589b103f639f2068b71bf02
|
||||
0, 43, 43, 1, 460800, a339b2bedc7ef46961f8502089abfb87
|
||||
0, 44, 44, 1, 460800, 2ccde43c94259682ea72188b08489e92
|
||||
0, 45, 45, 1, 460800, fc47cca1f029d44ec92d95853e9c46b4
|
||||
0, 46, 46, 1, 460800, 6c4d3b63dc1d4291ec88a4bb8c35aecd
|
||||
0, 47, 47, 1, 460800, 7a9be67aca439dd2a7ff17447b478974
|
@ -1 +1 @@
|
||||
f0c0fd7615cdef66fa72f5816632ca9b
|
||||
759cf5d12a4b2fb653e61f5219331f14
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user