From d9726893f311b7bbbc9887db2c3ffbefaad78ca3 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Mon, 9 Nov 2015 14:24:26 +0100 Subject: avformat/mxfenc: Only store user comment related tags when needed Also support disabling them as they seem to cause problems to some Users. They are also not allowed in IRT D-10 thus the default for mxf_d10 is not to write them This also decreases the filesize when no user comment are stored Signed-off-by: Michael Niedermayer --- doc/muxers.texi | 15 ++++++++++ libavformat/mxfenc.c | 47 ++++++++++++++++++++++--------- tests/ref/lavf/mxf | 12 ++++---- tests/ref/lavf/mxf_d10 | 2 +- tests/ref/lavf/mxf_opatom | 2 +- tests/ref/lavf/mxf_opatom_audio | 4 +-- tests/ref/seek/lavf-mxf | 44 ++++++++++++++--------------- tests/ref/seek/lavf-mxf_opatom_audio | 54 ++++++++++++++++++------------------ 8 files changed, 108 insertions(+), 72 deletions(-) diff --git a/doc/muxers.texi b/doc/muxers.texi index 06483fa4ae..b6d88231ac 100644 --- a/doc/muxers.texi +++ b/doc/muxers.texi @@ -874,6 +874,21 @@ ffmpeg -i file.mpg -c copy \ -y out.ts @end example +@section mxf, mxf_d10 + +MXF muxer. + +@subsection Options + +The muxer options are: + +@table @option +@item store_user_comments @var{bool} +Set if user comments should be stored if available or never. +IRT D-10 does not allow user comments. The default is thus to write them for +mxf but not for mxf_d10 +@end table + @section null Null muxer. diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index f2e0e4d7e4..e4e42720fe 100644 --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -21,7 +21,8 @@ */ /* - * signal_standard, color_siting and klv_fill_key version fixes sponsored by NOA GmbH + * signal_standard, color_siting, store_user_comments and klv_fill_key version + * fixes sponsored by NOA GmbH */ /* @@ -323,6 +324,7 @@ typedef struct MXFContext { int signal_standard; uint32_t tagged_value_count; AVRational audio_edit_rate; + int store_user_comments; } MXFContext; static const uint8_t uuid_base[] = { 0xAD,0xAB,0x44,0x24,0x2f,0x25,0x4d,0xc7,0x92,0xff,0x29,0xbd }; @@ -380,7 +382,6 @@ static const MXFLocalTagPair mxf_local_tag_batch[] = { { 0x4404, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x07,0x02,0x01,0x10,0x02,0x05,0x00,0x00}}, /* Package Modified Date */ { 0x4402, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x01,0x03,0x03,0x02,0x01,0x00,0x00,0x00}}, /* Package Name */ { 0x4403, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x06,0x01,0x01,0x04,0x06,0x05,0x00,0x00}}, /* Tracks Strong reference array */ - { 0x4406, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x0C,0x00,0x00,0x00}}, /* User Comments */ { 0x4701, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x06,0x01,0x01,0x04,0x02,0x03,0x00,0x00}}, /* Descriptor */ // Track { 0x4801, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x01,0x07,0x01,0x01,0x00,0x00,0x00,0x00}}, /* Track ID */ @@ -400,9 +401,6 @@ static const MXFLocalTagPair mxf_local_tag_batch[] = { { 0x1501, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x07,0x02,0x01,0x03,0x01,0x05,0x00,0x00}}, /* Start Time Code */ { 0x1502, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x04,0x01,0x01,0x02,0x06,0x00,0x00}}, /* Rounded Time Code Base */ { 0x1503, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x04,0x01,0x01,0x05,0x00,0x00,0x00}}, /* Drop Frame */ - // Tagged Value - { 0x5001, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x09,0x01,0x00,0x00}}, /* Name */ - { 0x5003, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x0A,0x01,0x00,0x00}}, /* Value */ // File Descriptor { 0x3F01, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x04,0x06,0x01,0x01,0x04,0x06,0x0B,0x00,0x00}}, /* Sub Descriptors reference array */ { 0x3006, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x05,0x06,0x01,0x01,0x03,0x05,0x00,0x00,0x00}}, /* Linked Track ID */ @@ -448,6 +446,12 @@ static const MXFLocalTagPair mxf_local_tag_batch[] = { { 0x3D0A, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x05,0x04,0x02,0x03,0x02,0x01,0x00,0x00,0x00}}, /* Block Align */ }; +static const MXFLocalTagPair mxf_user_comments_local_tag[] = { + { 0x4406, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x0C,0x00,0x00,0x00}}, /* User Comments */ + { 0x5001, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x09,0x01,0x00,0x00}}, /* Name */ + { 0x5003, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x0A,0x01,0x00,0x00}}, /* Value */ +}; + static void mxf_write_uuid(AVIOContext *pb, enum MXFMetadataSetType type, int value) { avio_write(pb, uuid_base, 12); @@ -525,10 +529,12 @@ static int mxf_get_essence_container_ul_index(enum AVCodecID id) static void mxf_write_primer_pack(AVFormatContext *s) { + MXFContext *mxf = s->priv_data; AVIOContext *pb = s->pb; int local_tag_number, i = 0; local_tag_number = FF_ARRAY_ELEMS(mxf_local_tag_batch); + local_tag_number += mxf->store_user_comments * FF_ARRAY_ELEMS(mxf_user_comments_local_tag); avio_write(pb, primer_pack_key, 16); klv_encode_ber_length(pb, local_tag_number * 18 + 8); @@ -536,10 +542,15 @@ static void mxf_write_primer_pack(AVFormatContext *s) avio_wb32(pb, local_tag_number); // local_tag num avio_wb32(pb, 18); // item size, always 18 according to the specs - for (i = 0; i < local_tag_number; i++) { + for (i = 0; i < FF_ARRAY_ELEMS(mxf_local_tag_batch); i++) { avio_wb16(pb, mxf_local_tag_batch[i].local_tag); avio_write(pb, mxf_local_tag_batch[i].uid, 16); } + if (mxf->store_user_comments) + for (i = 0; i < FF_ARRAY_ELEMS(mxf_user_comments_local_tag); i++) { + avio_wb16(pb, mxf_user_comments_local_tag[i].local_tag); + avio_write(pb, mxf_user_comments_local_tag[i].uid, 16); + } } static void mxf_write_local_tag(AVIOContext *pb, int size, int tag) @@ -1253,14 +1264,15 @@ static void mxf_write_package(AVFormatContext *s, enum MXFMetadataSetType type, int user_comment_count = 0; if (type == MaterialPackage) { - user_comment_count = mxf_write_user_comments(s, s->metadata); + if (mxf->store_user_comments) + user_comment_count = mxf_write_user_comments(s, s->metadata); mxf_write_metadata_key(pb, 0x013600); PRINT_KEY(s, "Material Package key", pb->buf_ptr - 16); - klv_encode_ber_length(pb, 104 + name_size + (16*track_count) + (16*user_comment_count)); + klv_encode_ber_length(pb, 92 + name_size + (16*track_count) + (16*user_comment_count) + 12*mxf->store_user_comments); } else { mxf_write_metadata_key(pb, 0x013700); PRINT_KEY(s, "Source Package key", pb->buf_ptr - 16); - klv_encode_ber_length(pb, 124 + name_size + (16*track_count)); // 20 bytes length for descriptor reference + klv_encode_ber_length(pb, 112 + name_size + (16*track_count) + 12*mxf->store_user_comments); // 20 bytes length for descriptor reference } // write uid @@ -1295,10 +1307,12 @@ static void mxf_write_package(AVFormatContext *s, enum MXFMetadataSetType type, mxf_write_uuid(pb, type == MaterialPackage ? Track : Track + TypeBottom, i); // write user comment refs - mxf_write_local_tag(pb, user_comment_count*16 + 8, 0x4406); - mxf_write_refs_count(pb, user_comment_count); - for (i = 0; i < user_comment_count; i++) - mxf_write_uuid(pb, TaggedValue, mxf->tagged_value_count - user_comment_count + i); + if (mxf->store_user_comments) { + mxf_write_local_tag(pb, user_comment_count*16 + 8, 0x4406); + mxf_write_refs_count(pb, user_comment_count); + for (i = 0; i < user_comment_count; i++) + mxf_write_uuid(pb, TaggedValue, mxf->tagged_value_count - user_comment_count + i); + } // write multiple descriptor reference if (type == SourcePackage) { @@ -2038,6 +2052,9 @@ static int mxf_write_header(AVFormatContext *s) return -1; } + if (!av_dict_get(s->metadata, "comment_", NULL, AV_DICT_IGNORE_SUFFIX)) + mxf->store_user_comments = 0; + for (i = 0; i < s->nb_streams; i++) { AVStream *st = s->streams[i]; MXFStreamContext *sc = av_mallocz(sizeof(*sc)); @@ -2656,6 +2673,8 @@ static int mxf_interleave(AVFormatContext *s, AVPacket *out, AVPacket *pkt, int static const AVOption mxf_options[] = { MXF_COMMON_OPTIONS + { "store_user_comments", "", + offsetof(MXFContext, store_user_comments), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM}, { NULL }, }; @@ -2670,6 +2689,8 @@ static const AVOption d10_options[] = { { "d10_channelcount", "Force/set channelcount in generic sound essence descriptor", offsetof(MXFContext, channel_count), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 8, AV_OPT_FLAG_ENCODING_PARAM}, MXF_COMMON_OPTIONS + { "store_user_comments", "", + offsetof(MXFContext, store_user_comments), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM}, { NULL }, }; diff --git a/tests/ref/lavf/mxf b/tests/ref/lavf/mxf index 71f6cf848b..bc113f35ae 100644 --- a/tests/ref/lavf/mxf +++ b/tests/ref/lavf/mxf @@ -1,9 +1,9 @@ -030961ae56ab1c264390fd5ef0a95069 *./tests/data/lavf/lavf.mxf -525881 ./tests/data/lavf/lavf.mxf +6d00bf68ec95d0aac959defccdb0190e *./tests/data/lavf/lavf.mxf +525369 ./tests/data/lavf/lavf.mxf ./tests/data/lavf/lavf.mxf CRC=0xdbfff6f1 -b90dc91dee50a24c8b20a08a063f501a *./tests/data/lavf/lavf.mxf -561209 ./tests/data/lavf/lavf.mxf +0bbdd13de78db8ab9314f083b7da0f30 *./tests/data/lavf/lavf.mxf +560697 ./tests/data/lavf/lavf.mxf ./tests/data/lavf/lavf.mxf CRC=0x11a6178e -a0cfffed795686127061feae8cde07d1 *./tests/data/lavf/lavf.mxf -525881 ./tests/data/lavf/lavf.mxf +462f95f19b3e0fd119a204a96eb6f424 *./tests/data/lavf/lavf.mxf +525369 ./tests/data/lavf/lavf.mxf ./tests/data/lavf/lavf.mxf CRC=0xdbfff6f1 diff --git a/tests/ref/lavf/mxf_d10 b/tests/ref/lavf/mxf_d10 index 8b71d72fe9..134db876d5 100644 --- a/tests/ref/lavf/mxf_d10 +++ b/tests/ref/lavf/mxf_d10 @@ -1,3 +1,3 @@ -9b5bad981e08fa3eaeb9de818762218c *./tests/data/lavf/lavf.mxf_d10 +73c0cb416548c33d0651c59519a8f7e2 *./tests/data/lavf/lavf.mxf_d10 5330989 ./tests/data/lavf/lavf.mxf_d10 ./tests/data/lavf/lavf.mxf_d10 CRC=0x6c74d488 diff --git a/tests/ref/lavf/mxf_opatom b/tests/ref/lavf/mxf_opatom index 8a732faf46..8dfc55a824 100644 --- a/tests/ref/lavf/mxf_opatom +++ b/tests/ref/lavf/mxf_opatom @@ -1,3 +1,3 @@ -6cab8f702746ca7184c608b4c06a224b *./tests/data/lavf/lavf.mxf_opatom +2205907020248f73876eaad745d2f5b5 *./tests/data/lavf/lavf.mxf_opatom 4717113 ./tests/data/lavf/lavf.mxf_opatom ./tests/data/lavf/lavf.mxf_opatom CRC=0xf55aa22a diff --git a/tests/ref/lavf/mxf_opatom_audio b/tests/ref/lavf/mxf_opatom_audio index 8d558c6e2a..953df9094f 100644 --- a/tests/ref/lavf/mxf_opatom_audio +++ b/tests/ref/lavf/mxf_opatom_audio @@ -1,3 +1,3 @@ -6c6064f154688e455ec494d425b525f5 *./tests/data/lavf/lavf.mxf_opatom_audio -102457 ./tests/data/lavf/lavf.mxf_opatom_audio +d4ad5a0faf410a9d9e99b3328143e89d *./tests/data/lavf/lavf.mxf_opatom_audio +101945 ./tests/data/lavf/lavf.mxf_opatom_audio ./tests/data/lavf/lavf.mxf_opatom_audio CRC=0xd155c6ff diff --git a/tests/ref/seek/lavf-mxf b/tests/ref/seek/lavf-mxf index ea0e0b6995..93d419722b 100644 --- a/tests/ref/seek/lavf-mxf +++ b/tests/ref/seek/lavf-mxf @@ -1,48 +1,48 @@ -ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801 +ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 ret: 0 st:-1 flags:0 ts:-1.000000 -ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801 +ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 ret: 0 st:-1 flags:1 ts: 1.894167 -ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711 +ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711 ret: 0 st: 0 flags:0 ts: 0.800000 -ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711 +ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711 ret: 0 st: 0 flags:1 ts:-0.320000 -ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801 +ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 ret:-1 st: 1 flags:0 ts: 2.576667 ret: 0 st: 1 flags:1 ts: 1.470833 -ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711 +ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711 ret: 0 st:-1 flags:0 ts: 0.365002 -ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211968 size: 24786 +ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211456 size: 24786 ret: 0 st:-1 flags:1 ts:-0.740831 -ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801 +ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 ret:-1 st: 0 flags:0 ts: 2.160000 ret: 0 st: 0 flags:1 ts: 1.040000 -ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711 +ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711 ret: 0 st: 1 flags:0 ts:-0.058333 -ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801 +ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 ret: 0 st: 1 flags:1 ts: 2.835833 -ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711 +ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711 ret:-1 st:-1 flags:0 ts: 1.730004 ret: 0 st:-1 flags:1 ts: 0.624171 -ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211968 size: 24786 +ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211456 size: 24786 ret: 0 st: 0 flags:0 ts:-0.480000 -ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801 +ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 ret: 0 st: 0 flags:1 ts: 2.400000 -ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711 +ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711 ret:-1 st: 1 flags:0 ts: 1.306667 ret: 0 st: 1 flags:1 ts: 0.200833 -ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801 +ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 ret: 0 st:-1 flags:0 ts:-0.904994 -ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801 +ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 ret: 0 st:-1 flags:1 ts: 1.989173 -ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711 +ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711 ret: 0 st: 0 flags:0 ts: 0.880000 -ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711 +ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711 ret: 0 st: 0 flags:1 ts:-0.240000 -ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801 +ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 ret:-1 st: 1 flags:0 ts: 2.671667 ret: 0 st: 1 flags:1 ts: 1.565833 -ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711 +ret: 0 st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711 ret: 0 st:-1 flags:0 ts: 0.460008 -ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211968 size: 24786 +ret: 0 st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211456 size: 24786 ret: 0 st:-1 flags:1 ts:-0.645825 -ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6656 size: 24801 +ret: 0 st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos: 6144 size: 24801 diff --git a/tests/ref/seek/lavf-mxf_opatom_audio b/tests/ref/seek/lavf-mxf_opatom_audio index 12d4644dc2..2d1a7cc350 100644 --- a/tests/ref/seek/lavf-mxf_opatom_audio +++ b/tests/ref/seek/lavf-mxf_opatom_audio @@ -1,53 +1,53 @@ -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840 ret: 0 st:-1 flags:0 ts:-1.000000 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840 ret: 0 st:-1 flags:1 ts: 1.894167 -ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2 +ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2 ret: 0 st: 0 flags:0 ts: 0.788333 -ret: 0 st: 0 flags:1 dts: 0.788333 pts: 0.788333 pos: 80825 size: 3840 +ret: 0 st: 0 flags:1 dts: 0.788333 pts: 0.788333 pos: 80313 size: 3840 ret: 0 st: 0 flags:1 ts:-0.317500 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840 ret: 0 st:-1 flags:0 ts: 2.576668 -ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2 +ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2 ret: 0 st:-1 flags:1 ts: 1.470835 -ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2 +ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2 ret: 0 st: 0 flags:0 ts: 0.365000 -ret: 0 st: 0 flags:1 dts: 0.365000 pts: 0.365000 pos: 40185 size: 3840 +ret: 0 st: 0 flags:1 dts: 0.365000 pts: 0.365000 pos: 39673 size: 3840 ret: 0 st: 0 flags:1 ts:-0.740833 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840 ret: 0 st:-1 flags:0 ts: 2.153336 -ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2 +ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2 ret: 0 st:-1 flags:1 ts: 1.047503 -ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2 +ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2 ret: 0 st: 0 flags:0 ts:-0.058333 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840 ret: 0 st: 0 flags:1 ts: 2.835833 -ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2 +ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2 ret: 0 st:-1 flags:0 ts: 1.730004 -ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2 +ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2 ret: 0 st:-1 flags:1 ts: 0.624171 -ret: 0 st: 0 flags:1 dts: 0.624167 pts: 0.624167 pos: 65065 size: 3840 +ret: 0 st: 0 flags:1 dts: 0.624167 pts: 0.624167 pos: 64553 size: 3840 ret: 0 st: 0 flags:0 ts:-0.481667 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840 ret: 0 st: 0 flags:1 ts: 2.412500 -ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2 +ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2 ret: 0 st:-1 flags:0 ts: 1.306672 -ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2 +ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2 ret: 0 st:-1 flags:1 ts: 0.200839 -ret: 0 st: 0 flags:1 dts: 0.200833 pts: 0.200833 pos: 24425 size: 3840 +ret: 0 st: 0 flags:1 dts: 0.200833 pts: 0.200833 pos: 23913 size: 3840 ret: 0 st: 0 flags:0 ts:-0.905000 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840 ret: 0 st: 0 flags:1 ts: 1.989167 -ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2 +ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2 ret: 0 st:-1 flags:0 ts: 0.883340 -ret: 0 st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos: 89945 size: 3840 +ret: 0 st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos: 89433 size: 3840 ret: 0 st:-1 flags:1 ts:-0.222493 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840 ret: 0 st: 0 flags:0 ts: 2.671667 -ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2 +ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2 ret: 0 st: 0 flags:1 ts: 1.565833 -ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size: 2 +ret: 0 st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size: 2 ret: 0 st:-1 flags:0 ts: 0.460008 -ret: 0 st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos: 49305 size: 3840 +ret: 0 st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos: 48793 size: 3840 ret: 0 st:-1 flags:1 ts:-0.645825 -ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 5145 size: 3840 +ret: 0 st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos: 4633 size: 3840 -- cgit v1.2.3