Browse code

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 <michael@niedermayer.cc>

Michael Niedermayer authored on 2015/11/09 22:24:26
Showing 8 changed files
... ...
@@ -874,6 +874,21 @@ ffmpeg -i file.mpg -c copy \
874 874
      -y out.ts
875 875
 @end example
876 876
 
877
+@section mxf, mxf_d10
878
+
879
+MXF muxer.
880
+
881
+@subsection Options
882
+
883
+The muxer options are:
884
+
885
+@table @option
886
+@item store_user_comments @var{bool}
887
+Set if user comments should be stored if available or never.
888
+IRT D-10 does not allow user comments. The default is thus to write them for
889
+mxf but not for mxf_d10
890
+@end table
891
+
877 892
 @section null
878 893
 
879 894
 Null muxer.
... ...
@@ -21,7 +21,8 @@
21 21
  */
22 22
 
23 23
 /*
24
- * signal_standard, color_siting and klv_fill_key version fixes sponsored by NOA GmbH
24
+ * signal_standard, color_siting, store_user_comments and klv_fill_key version
25
+ * fixes sponsored by NOA GmbH
25 26
  */
26 27
 
27 28
 /*
... ...
@@ -323,6 +324,7 @@ typedef struct MXFContext {
323 323
     int signal_standard;
324 324
     uint32_t tagged_value_count;
325 325
     AVRational audio_edit_rate;
326
+    int store_user_comments;
326 327
 } MXFContext;
327 328
 
328 329
 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[] = {
380 380
     { 0x4404, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x07,0x02,0x01,0x10,0x02,0x05,0x00,0x00}}, /* Package Modified Date */
381 381
     { 0x4402, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x01,0x03,0x03,0x02,0x01,0x00,0x00,0x00}}, /* Package Name */
382 382
     { 0x4403, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x06,0x01,0x01,0x04,0x06,0x05,0x00,0x00}}, /* Tracks Strong reference array */
383
-    { 0x4406, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x0C,0x00,0x00,0x00}}, /* User Comments */
384 383
     { 0x4701, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x06,0x01,0x01,0x04,0x02,0x03,0x00,0x00}}, /* Descriptor */
385 384
     // Track
386 385
     { 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[] = {
400 400
     { 0x1501, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x07,0x02,0x01,0x03,0x01,0x05,0x00,0x00}}, /* Start Time Code */
401 401
     { 0x1502, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x04,0x04,0x01,0x01,0x02,0x06,0x00,0x00}}, /* Rounded Time Code Base */
402 402
     { 0x1503, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x01,0x04,0x04,0x01,0x01,0x05,0x00,0x00,0x00}}, /* Drop Frame */
403
-    // Tagged Value
404
-    { 0x5001, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x09,0x01,0x00,0x00}}, /* Name */
405
-    { 0x5003, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x0A,0x01,0x00,0x00}}, /* Value */
406 403
     // File Descriptor
407 404
     { 0x3F01, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x04,0x06,0x01,0x01,0x04,0x06,0x0B,0x00,0x00}}, /* Sub Descriptors reference array */
408 405
     { 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[] = {
448 448
     { 0x3D0A, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x05,0x04,0x02,0x03,0x02,0x01,0x00,0x00,0x00}}, /* Block Align */
449 449
 };
450 450
 
451
+static const MXFLocalTagPair mxf_user_comments_local_tag[] = {
452
+    { 0x4406, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x0C,0x00,0x00,0x00}}, /* User Comments */
453
+    { 0x5001, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x09,0x01,0x00,0x00}}, /* Name */
454
+    { 0x5003, {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x03,0x02,0x01,0x02,0x0A,0x01,0x00,0x00}}, /* Value */
455
+};
456
+
451 457
 static void mxf_write_uuid(AVIOContext *pb, enum MXFMetadataSetType type, int value)
452 458
 {
453 459
     avio_write(pb, uuid_base, 12);
... ...
@@ -525,10 +529,12 @@ static int mxf_get_essence_container_ul_index(enum AVCodecID id)
525 525
 
526 526
 static void mxf_write_primer_pack(AVFormatContext *s)
527 527
 {
528
+    MXFContext *mxf = s->priv_data;
528 529
     AVIOContext *pb = s->pb;
529 530
     int local_tag_number, i = 0;
530 531
 
531 532
     local_tag_number = FF_ARRAY_ELEMS(mxf_local_tag_batch);
533
+    local_tag_number += mxf->store_user_comments * FF_ARRAY_ELEMS(mxf_user_comments_local_tag);
532 534
 
533 535
     avio_write(pb, primer_pack_key, 16);
534 536
     klv_encode_ber_length(pb, local_tag_number * 18 + 8);
... ...
@@ -536,10 +542,15 @@ static void mxf_write_primer_pack(AVFormatContext *s)
536 536
     avio_wb32(pb, local_tag_number); // local_tag num
537 537
     avio_wb32(pb, 18); // item size, always 18 according to the specs
538 538
 
539
-    for (i = 0; i < local_tag_number; i++) {
539
+    for (i = 0; i < FF_ARRAY_ELEMS(mxf_local_tag_batch); i++) {
540 540
         avio_wb16(pb, mxf_local_tag_batch[i].local_tag);
541 541
         avio_write(pb, mxf_local_tag_batch[i].uid, 16);
542 542
     }
543
+    if (mxf->store_user_comments)
544
+        for (i = 0; i < FF_ARRAY_ELEMS(mxf_user_comments_local_tag); i++) {
545
+            avio_wb16(pb, mxf_user_comments_local_tag[i].local_tag);
546
+            avio_write(pb, mxf_user_comments_local_tag[i].uid, 16);
547
+        }
543 548
 }
544 549
 
545 550
 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,
1253 1253
     int user_comment_count = 0;
1254 1254
 
1255 1255
     if (type == MaterialPackage) {
1256
-        user_comment_count = mxf_write_user_comments(s, s->metadata);
1256
+        if (mxf->store_user_comments)
1257
+            user_comment_count = mxf_write_user_comments(s, s->metadata);
1257 1258
         mxf_write_metadata_key(pb, 0x013600);
1258 1259
         PRINT_KEY(s, "Material Package key", pb->buf_ptr - 16);
1259
-        klv_encode_ber_length(pb, 104 + name_size + (16*track_count) + (16*user_comment_count));
1260
+        klv_encode_ber_length(pb, 92 + name_size + (16*track_count) + (16*user_comment_count) + 12*mxf->store_user_comments);
1260 1261
     } else {
1261 1262
         mxf_write_metadata_key(pb, 0x013700);
1262 1263
         PRINT_KEY(s, "Source Package key", pb->buf_ptr - 16);
1263
-        klv_encode_ber_length(pb, 124 + name_size + (16*track_count)); // 20 bytes length for descriptor reference
1264
+        klv_encode_ber_length(pb, 112 + name_size + (16*track_count) + 12*mxf->store_user_comments); // 20 bytes length for descriptor reference
1264 1265
     }
1265 1266
 
1266 1267
     // write uid
... ...
@@ -1295,10 +1307,12 @@ static void mxf_write_package(AVFormatContext *s, enum MXFMetadataSetType type,
1295 1295
         mxf_write_uuid(pb, type == MaterialPackage ? Track : Track + TypeBottom, i);
1296 1296
 
1297 1297
     // write user comment refs
1298
-    mxf_write_local_tag(pb, user_comment_count*16 + 8, 0x4406);
1299
-    mxf_write_refs_count(pb, user_comment_count);
1300
-    for (i = 0; i < user_comment_count; i++)
1301
-         mxf_write_uuid(pb, TaggedValue, mxf->tagged_value_count - user_comment_count + i);
1298
+    if (mxf->store_user_comments) {
1299
+        mxf_write_local_tag(pb, user_comment_count*16 + 8, 0x4406);
1300
+        mxf_write_refs_count(pb, user_comment_count);
1301
+        for (i = 0; i < user_comment_count; i++)
1302
+            mxf_write_uuid(pb, TaggedValue, mxf->tagged_value_count - user_comment_count + i);
1303
+    }
1302 1304
 
1303 1305
     // write multiple descriptor reference
1304 1306
     if (type == SourcePackage) {
... ...
@@ -2038,6 +2052,9 @@ static int mxf_write_header(AVFormatContext *s)
2038 2038
         return -1;
2039 2039
     }
2040 2040
 
2041
+    if (!av_dict_get(s->metadata, "comment_", NULL, AV_DICT_IGNORE_SUFFIX))
2042
+        mxf->store_user_comments = 0;
2043
+
2041 2044
     for (i = 0; i < s->nb_streams; i++) {
2042 2045
         AVStream *st = s->streams[i];
2043 2046
         MXFStreamContext *sc = av_mallocz(sizeof(*sc));
... ...
@@ -2656,6 +2673,8 @@ static int mxf_interleave(AVFormatContext *s, AVPacket *out, AVPacket *pkt, int
2656 2656
 
2657 2657
 static const AVOption mxf_options[] = {
2658 2658
     MXF_COMMON_OPTIONS
2659
+    { "store_user_comments", "",
2660
+      offsetof(MXFContext, store_user_comments), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM},
2659 2661
     { NULL },
2660 2662
 };
2661 2663
 
... ...
@@ -2670,6 +2689,8 @@ static const AVOption d10_options[] = {
2670 2670
     { "d10_channelcount", "Force/set channelcount in generic sound essence descriptor",
2671 2671
       offsetof(MXFContext, channel_count), AV_OPT_TYPE_INT, {.i64 = -1}, -1, 8, AV_OPT_FLAG_ENCODING_PARAM},
2672 2672
     MXF_COMMON_OPTIONS
2673
+    { "store_user_comments", "",
2674
+      offsetof(MXFContext, store_user_comments), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM},
2673 2675
     { NULL },
2674 2676
 };
2675 2677
 
... ...
@@ -1,9 +1,9 @@
1
-030961ae56ab1c264390fd5ef0a95069 *./tests/data/lavf/lavf.mxf
2
-525881 ./tests/data/lavf/lavf.mxf
1
+6d00bf68ec95d0aac959defccdb0190e *./tests/data/lavf/lavf.mxf
2
+525369 ./tests/data/lavf/lavf.mxf
3 3
 ./tests/data/lavf/lavf.mxf CRC=0xdbfff6f1
4
-b90dc91dee50a24c8b20a08a063f501a *./tests/data/lavf/lavf.mxf
5
-561209 ./tests/data/lavf/lavf.mxf
4
+0bbdd13de78db8ab9314f083b7da0f30 *./tests/data/lavf/lavf.mxf
5
+560697 ./tests/data/lavf/lavf.mxf
6 6
 ./tests/data/lavf/lavf.mxf CRC=0x11a6178e
7
-a0cfffed795686127061feae8cde07d1 *./tests/data/lavf/lavf.mxf
8
-525881 ./tests/data/lavf/lavf.mxf
7
+462f95f19b3e0fd119a204a96eb6f424 *./tests/data/lavf/lavf.mxf
8
+525369 ./tests/data/lavf/lavf.mxf
9 9
 ./tests/data/lavf/lavf.mxf CRC=0xdbfff6f1
... ...
@@ -1,3 +1,3 @@
1
-9b5bad981e08fa3eaeb9de818762218c *./tests/data/lavf/lavf.mxf_d10
1
+73c0cb416548c33d0651c59519a8f7e2 *./tests/data/lavf/lavf.mxf_d10
2 2
 5330989 ./tests/data/lavf/lavf.mxf_d10
3 3
 ./tests/data/lavf/lavf.mxf_d10 CRC=0x6c74d488
... ...
@@ -1,3 +1,3 @@
1
-6cab8f702746ca7184c608b4c06a224b *./tests/data/lavf/lavf.mxf_opatom
1
+2205907020248f73876eaad745d2f5b5 *./tests/data/lavf/lavf.mxf_opatom
2 2
 4717113 ./tests/data/lavf/lavf.mxf_opatom
3 3
 ./tests/data/lavf/lavf.mxf_opatom CRC=0xf55aa22a
... ...
@@ -1,3 +1,3 @@
1
-6c6064f154688e455ec494d425b525f5 *./tests/data/lavf/lavf.mxf_opatom_audio
2
-102457 ./tests/data/lavf/lavf.mxf_opatom_audio
1
+d4ad5a0faf410a9d9e99b3328143e89d *./tests/data/lavf/lavf.mxf_opatom_audio
2
+101945 ./tests/data/lavf/lavf.mxf_opatom_audio
3 3
 ./tests/data/lavf/lavf.mxf_opatom_audio CRC=0xd155c6ff
... ...
@@ -1,48 +1,48 @@
1
-ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6656 size: 24801
1
+ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6144 size: 24801
2 2
 ret: 0         st:-1 flags:0  ts:-1.000000
3
-ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6656 size: 24801
3
+ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6144 size: 24801
4 4
 ret: 0         st:-1 flags:1  ts: 1.894167
5
-ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
5
+ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
6 6
 ret: 0         st: 0 flags:0  ts: 0.800000
7
-ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
7
+ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
8 8
 ret: 0         st: 0 flags:1  ts:-0.320000
9
-ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6656 size: 24801
9
+ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6144 size: 24801
10 10
 ret:-1         st: 1 flags:0  ts: 2.576667
11 11
 ret: 0         st: 1 flags:1  ts: 1.470833
12
-ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
12
+ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
13 13
 ret: 0         st:-1 flags:0  ts: 0.365002
14
-ret: 0         st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211968 size: 24786
14
+ret: 0         st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211456 size: 24786
15 15
 ret: 0         st:-1 flags:1  ts:-0.740831
16
-ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6656 size: 24801
16
+ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6144 size: 24801
17 17
 ret:-1         st: 0 flags:0  ts: 2.160000
18 18
 ret: 0         st: 0 flags:1  ts: 1.040000
19
-ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
19
+ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
20 20
 ret: 0         st: 1 flags:0  ts:-0.058333
21
-ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6656 size: 24801
21
+ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6144 size: 24801
22 22
 ret: 0         st: 1 flags:1  ts: 2.835833
23
-ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
23
+ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
24 24
 ret:-1         st:-1 flags:0  ts: 1.730004
25 25
 ret: 0         st:-1 flags:1  ts: 0.624171
26
-ret: 0         st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211968 size: 24786
26
+ret: 0         st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211456 size: 24786
27 27
 ret: 0         st: 0 flags:0  ts:-0.480000
28
-ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6656 size: 24801
28
+ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6144 size: 24801
29 29
 ret: 0         st: 0 flags:1  ts: 2.400000
30
-ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
30
+ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
31 31
 ret:-1         st: 1 flags:0  ts: 1.306667
32 32
 ret: 0         st: 1 flags:1  ts: 0.200833
33
-ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6656 size: 24801
33
+ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6144 size: 24801
34 34
 ret: 0         st:-1 flags:0  ts:-0.904994
35
-ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6656 size: 24801
35
+ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6144 size: 24801
36 36
 ret: 0         st:-1 flags:1  ts: 1.989173
37
-ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
37
+ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
38 38
 ret: 0         st: 0 flags:0  ts: 0.880000
39
-ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
39
+ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
40 40
 ret: 0         st: 0 flags:1  ts:-0.240000
41
-ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6656 size: 24801
41
+ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6144 size: 24801
42 42
 ret:-1         st: 1 flags:0  ts: 2.671667
43 43
 ret: 0         st: 1 flags:1  ts: 1.565833
44
-ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460800 size: 24711
44
+ret: 0         st: 0 flags:1 dts: 0.840000 pts: 0.960000 pos: 460288 size: 24711
45 45
 ret: 0         st:-1 flags:0  ts: 0.460008
46
-ret: 0         st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211968 size: 24786
46
+ret: 0         st: 0 flags:1 dts: 0.360000 pts: 0.480000 pos: 211456 size: 24786
47 47
 ret: 0         st:-1 flags:1  ts:-0.645825
48
-ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6656 size: 24801
48
+ret: 0         st: 0 flags:1 dts:-0.040000 pts: 0.000000 pos:   6144 size: 24801
... ...
@@ -1,53 +1,53 @@
1
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5145 size:  3840
1
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   4633 size:  3840
2 2
 ret: 0         st:-1 flags:0  ts:-1.000000
3
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5145 size:  3840
3
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   4633 size:  3840
4 4
 ret: 0         st:-1 flags:1  ts: 1.894167
5
-ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size:     2
5
+ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size:     2
6 6
 ret: 0         st: 0 flags:0  ts: 0.788333
7
-ret: 0         st: 0 flags:1 dts: 0.788333 pts: 0.788333 pos:  80825 size:  3840
7
+ret: 0         st: 0 flags:1 dts: 0.788333 pts: 0.788333 pos:  80313 size:  3840
8 8
 ret: 0         st: 0 flags:1  ts:-0.317500
9
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5145 size:  3840
9
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   4633 size:  3840
10 10
 ret: 0         st:-1 flags:0  ts: 2.576668
11
-ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size:     2
11
+ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size:     2
12 12
 ret: 0         st:-1 flags:1  ts: 1.470835
13
-ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size:     2
13
+ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size:     2
14 14
 ret: 0         st: 0 flags:0  ts: 0.365000
15
-ret: 0         st: 0 flags:1 dts: 0.365000 pts: 0.365000 pos:  40185 size:  3840
15
+ret: 0         st: 0 flags:1 dts: 0.365000 pts: 0.365000 pos:  39673 size:  3840
16 16
 ret: 0         st: 0 flags:1  ts:-0.740833
17
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5145 size:  3840
17
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   4633 size:  3840
18 18
 ret: 0         st:-1 flags:0  ts: 2.153336
19
-ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size:     2
19
+ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size:     2
20 20
 ret: 0         st:-1 flags:1  ts: 1.047503
21
-ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size:     2
21
+ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size:     2
22 22
 ret: 0         st: 0 flags:0  ts:-0.058333
23
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5145 size:  3840
23
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   4633 size:  3840
24 24
 ret: 0         st: 0 flags:1  ts: 2.835833
25
-ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size:     2
25
+ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size:     2
26 26
 ret: 0         st:-1 flags:0  ts: 1.730004
27
-ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size:     2
27
+ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size:     2
28 28
 ret: 0         st:-1 flags:1  ts: 0.624171
29
-ret: 0         st: 0 flags:1 dts: 0.624167 pts: 0.624167 pos:  65065 size:  3840
29
+ret: 0         st: 0 flags:1 dts: 0.624167 pts: 0.624167 pos:  64553 size:  3840
30 30
 ret: 0         st: 0 flags:0  ts:-0.481667
31
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5145 size:  3840
31
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   4633 size:  3840
32 32
 ret: 0         st: 0 flags:1  ts: 2.412500
33
-ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size:     2
33
+ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size:     2
34 34
 ret: 0         st:-1 flags:0  ts: 1.306672
35
-ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size:     2
35
+ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size:     2
36 36
 ret: 0         st:-1 flags:1  ts: 0.200839
37
-ret: 0         st: 0 flags:1 dts: 0.200833 pts: 0.200833 pos:  24425 size:  3840
37
+ret: 0         st: 0 flags:1 dts: 0.200833 pts: 0.200833 pos:  23913 size:  3840
38 38
 ret: 0         st: 0 flags:0  ts:-0.905000
39
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5145 size:  3840
39
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   4633 size:  3840
40 40
 ret: 0         st: 0 flags:1  ts: 1.989167
41
-ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size:     2
41
+ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size:     2
42 42
 ret: 0         st:-1 flags:0  ts: 0.883340
43
-ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos:  89945 size:  3840
43
+ret: 0         st: 0 flags:1 dts: 0.883333 pts: 0.883333 pos:  89433 size:  3840
44 44
 ret: 0         st:-1 flags:1  ts:-0.222493
45
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5145 size:  3840
45
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   4633 size:  3840
46 46
 ret: 0         st: 0 flags:0  ts: 2.671667
47
-ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size:     2
47
+ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size:     2
48 48
 ret: 0         st: 0 flags:1  ts: 1.565833
49
-ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 101143 size:     2
49
+ret: 0         st: 0 flags:1 dts: 0.999979 pts: 0.999979 pos: 100631 size:     2
50 50
 ret: 0         st:-1 flags:0  ts: 0.460008
51
-ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos:  49305 size:  3840
51
+ret: 0         st: 0 flags:1 dts: 0.460000 pts: 0.460000 pos:  48793 size:  3840
52 52
 ret: 0         st:-1 flags:1  ts:-0.645825
53
-ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   5145 size:  3840
53
+ret: 0         st: 0 flags:1 dts: 0.000000 pts: 0.000000 pos:   4633 size:  3840