Title: [236695] releases/WebKitGTK/webkit-2.22
Revision
236695
Author
ape...@igalia.com
Date
2018-10-01 16:12:44 -0700 (Mon, 01 Oct 2018)

Log Message

Merged patch for #190085 - [MSE] Use tolerance when growing the coded frame group
https://bugs.webkit.org/show_bug.cgi?id=190085

Patch by Alicia Boya García <ab...@igalia.com> on 2018-10-01
Reviewed by NOBODY (OOPS!).

build-releng/../LayoutTests:

A test simulating unordered appends with imprecise timestamps,
overlapping <1ms (replicating a typical WebM 30fps video file) is
added.

* media/media-source/media-source-append-acb-tolerance.html: Added.

build-releng/../Source/WebCore:

Test: media/media-source/media-source-append-acb-tolerance.html

This patch introduces a millisecond tolerance in the range of
potential frames that should be erased frame from the track buffer
when the coded frame group is growing.

This is necessary because some files have imprecise overlapping
timestamps (especially WebM files).

This fixes a stall when seeking back and forth in YouTube with WebM
video.

A test case simulating the problem with video/mock using timestamps
similar to those of a typical 30 fps WebM video is also added.

* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

Modified Paths

Added Paths

Diff

Modified: releases/WebKitGTK/webkit-2.22/LayoutTests/ChangeLog (236694 => 236695)


--- releases/WebKitGTK/webkit-2.22/LayoutTests/ChangeLog	2018-10-01 22:43:05 UTC (rev 236694)
+++ releases/WebKitGTK/webkit-2.22/LayoutTests/ChangeLog	2018-10-01 23:12:44 UTC (rev 236695)
@@ -1,3 +1,14 @@
+2018-10-01  Alicia Boya García  <ab...@igalia.com>
+
+        [MSE] Use tolerance when growing the coded frame group
+        https://bugs.webkit.org/show_bug.cgi?id=190085
+
+        A test simulating unordered appends with imprecise timestamps,
+        overlapping <1ms (replicating a typical WebM 30fps video file) is
+        added.
+
+        * media/media-source/media-source-append-acb-tolerance.html: Added.
+
 2018-09-27  Alicia Boya García  <ab...@igalia.com>
 
         [MSE] Fix unwanted sample erase from the decode queue

Added: releases/WebKitGTK/webkit-2.22/LayoutTests/media/media-source/media-source-append-acb-tolerance-expected.txt (0 => 236695)


--- releases/WebKitGTK/webkit-2.22/LayoutTests/media/media-source/media-source-append-acb-tolerance-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.22/LayoutTests/media/media-source/media-source-append-acb-tolerance-expected.txt	2018-10-01 23:12:44 UTC (rev 236695)
@@ -0,0 +1,466 @@
+
+EXPECTED (source.readyState == 'closed') OK
+EVENT(sourceopen)
+RUN(sourceBuffer = source.addSourceBuffer("video/mock; codecs=mock"))
+RUN(sourceBuffer.appendBuffer(initSegment))
+EVENT(updateend)
+RUN(sourceBuffer.appendBuffer(impreciseSampleRun(0, 5)))
+EVENT(updateend)
+RUN(sourceBuffer.appendBuffer(impreciseSampleRun(10, 15)))
+EVENT(updateend)
+RUN(sourceBuffer.appendBuffer(impreciseSampleRun(5, 10)))
+EVENT(updateend)
+EXPECTED (bufferedSamples.length == '450') OK
+EXPECTED (enqueuedSamples.length == '450') OK
+{PTS({0/1000000 = 0.000000}), DTS({0/1000000 = 0.000000}), duration({33333/1000000 = 0.033333}), flags(1), generation(0)}
+{PTS({33000/1000000 = 0.033000}), DTS({33000/1000000 = 0.033000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({67000/1000000 = 0.067000}), DTS({67000/1000000 = 0.067000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({100000/1000000 = 0.100000}), DTS({100000/1000000 = 0.100000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({133000/1000000 = 0.133000}), DTS({133000/1000000 = 0.133000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({167000/1000000 = 0.167000}), DTS({167000/1000000 = 0.167000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({200000/1000000 = 0.200000}), DTS({200000/1000000 = 0.200000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({233000/1000000 = 0.233000}), DTS({233000/1000000 = 0.233000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({267000/1000000 = 0.267000}), DTS({267000/1000000 = 0.267000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({300000/1000000 = 0.300000}), DTS({300000/1000000 = 0.300000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({333000/1000000 = 0.333000}), DTS({333000/1000000 = 0.333000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({367000/1000000 = 0.367000}), DTS({367000/1000000 = 0.367000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({400000/1000000 = 0.400000}), DTS({400000/1000000 = 0.400000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({433000/1000000 = 0.433000}), DTS({433000/1000000 = 0.433000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({467000/1000000 = 0.467000}), DTS({467000/1000000 = 0.467000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({500000/1000000 = 0.500000}), DTS({500000/1000000 = 0.500000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({533000/1000000 = 0.533000}), DTS({533000/1000000 = 0.533000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({567000/1000000 = 0.567000}), DTS({567000/1000000 = 0.567000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({600000/1000000 = 0.600000}), DTS({600000/1000000 = 0.600000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({633000/1000000 = 0.633000}), DTS({633000/1000000 = 0.633000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({667000/1000000 = 0.667000}), DTS({667000/1000000 = 0.667000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({700000/1000000 = 0.700000}), DTS({700000/1000000 = 0.700000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({733000/1000000 = 0.733000}), DTS({733000/1000000 = 0.733000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({767000/1000000 = 0.767000}), DTS({767000/1000000 = 0.767000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({800000/1000000 = 0.800000}), DTS({800000/1000000 = 0.800000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({833000/1000000 = 0.833000}), DTS({833000/1000000 = 0.833000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({867000/1000000 = 0.867000}), DTS({867000/1000000 = 0.867000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({900000/1000000 = 0.900000}), DTS({900000/1000000 = 0.900000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({933000/1000000 = 0.933000}), DTS({933000/1000000 = 0.933000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({967000/1000000 = 0.967000}), DTS({967000/1000000 = 0.967000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1000000/1000000 = 1.000000}), DTS({1000000/1000000 = 1.000000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1033000/1000000 = 1.033000}), DTS({1033000/1000000 = 1.033000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1067000/1000000 = 1.067000}), DTS({1067000/1000000 = 1.067000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1100000/1000000 = 1.100000}), DTS({1100000/1000000 = 1.100000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1133000/1000000 = 1.133000}), DTS({1133000/1000000 = 1.133000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1167000/1000000 = 1.167000}), DTS({1167000/1000000 = 1.167000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1200000/1000000 = 1.200000}), DTS({1200000/1000000 = 1.200000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1233000/1000000 = 1.233000}), DTS({1233000/1000000 = 1.233000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1267000/1000000 = 1.267000}), DTS({1267000/1000000 = 1.267000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1300000/1000000 = 1.300000}), DTS({1300000/1000000 = 1.300000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1333000/1000000 = 1.333000}), DTS({1333000/1000000 = 1.333000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1367000/1000000 = 1.367000}), DTS({1367000/1000000 = 1.367000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1400000/1000000 = 1.400000}), DTS({1400000/1000000 = 1.400000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1433000/1000000 = 1.433000}), DTS({1433000/1000000 = 1.433000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1467000/1000000 = 1.467000}), DTS({1467000/1000000 = 1.467000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1500000/1000000 = 1.500000}), DTS({1500000/1000000 = 1.500000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1533000/1000000 = 1.533000}), DTS({1533000/1000000 = 1.533000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1567000/1000000 = 1.567000}), DTS({1567000/1000000 = 1.567000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1600000/1000000 = 1.600000}), DTS({1600000/1000000 = 1.600000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1633000/1000000 = 1.633000}), DTS({1633000/1000000 = 1.633000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1667000/1000000 = 1.667000}), DTS({1667000/1000000 = 1.667000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1700000/1000000 = 1.700000}), DTS({1700000/1000000 = 1.700000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1733000/1000000 = 1.733000}), DTS({1733000/1000000 = 1.733000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1767000/1000000 = 1.767000}), DTS({1767000/1000000 = 1.767000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1800000/1000000 = 1.800000}), DTS({1800000/1000000 = 1.800000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1833000/1000000 = 1.833000}), DTS({1833000/1000000 = 1.833000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1867000/1000000 = 1.867000}), DTS({1867000/1000000 = 1.867000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1900000/1000000 = 1.900000}), DTS({1900000/1000000 = 1.900000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1933000/1000000 = 1.933000}), DTS({1933000/1000000 = 1.933000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({1967000/1000000 = 1.967000}), DTS({1967000/1000000 = 1.967000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2000000/1000000 = 2.000000}), DTS({2000000/1000000 = 2.000000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2033000/1000000 = 2.033000}), DTS({2033000/1000000 = 2.033000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2067000/1000000 = 2.067000}), DTS({2067000/1000000 = 2.067000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2100000/1000000 = 2.100000}), DTS({2100000/1000000 = 2.100000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2133000/1000000 = 2.133000}), DTS({2133000/1000000 = 2.133000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2167000/1000000 = 2.167000}), DTS({2167000/1000000 = 2.167000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2200000/1000000 = 2.200000}), DTS({2200000/1000000 = 2.200000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2233000/1000000 = 2.233000}), DTS({2233000/1000000 = 2.233000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2267000/1000000 = 2.267000}), DTS({2267000/1000000 = 2.267000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2300000/1000000 = 2.300000}), DTS({2300000/1000000 = 2.300000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2333000/1000000 = 2.333000}), DTS({2333000/1000000 = 2.333000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2367000/1000000 = 2.367000}), DTS({2367000/1000000 = 2.367000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2400000/1000000 = 2.400000}), DTS({2400000/1000000 = 2.400000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2433000/1000000 = 2.433000}), DTS({2433000/1000000 = 2.433000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2467000/1000000 = 2.467000}), DTS({2467000/1000000 = 2.467000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2500000/1000000 = 2.500000}), DTS({2500000/1000000 = 2.500000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2533000/1000000 = 2.533000}), DTS({2533000/1000000 = 2.533000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2567000/1000000 = 2.567000}), DTS({2567000/1000000 = 2.567000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2600000/1000000 = 2.600000}), DTS({2600000/1000000 = 2.600000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2633000/1000000 = 2.633000}), DTS({2633000/1000000 = 2.633000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2667000/1000000 = 2.667000}), DTS({2667000/1000000 = 2.667000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2700000/1000000 = 2.700000}), DTS({2700000/1000000 = 2.700000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2733000/1000000 = 2.733000}), DTS({2733000/1000000 = 2.733000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2767000/1000000 = 2.767000}), DTS({2767000/1000000 = 2.767000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2800000/1000000 = 2.800000}), DTS({2800000/1000000 = 2.800000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2833000/1000000 = 2.833000}), DTS({2833000/1000000 = 2.833000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2867000/1000000 = 2.867000}), DTS({2867000/1000000 = 2.867000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2900000/1000000 = 2.900000}), DTS({2900000/1000000 = 2.900000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2933000/1000000 = 2.933000}), DTS({2933000/1000000 = 2.933000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({2967000/1000000 = 2.967000}), DTS({2967000/1000000 = 2.967000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3000000/1000000 = 3.000000}), DTS({3000000/1000000 = 3.000000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3033000/1000000 = 3.033000}), DTS({3033000/1000000 = 3.033000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3067000/1000000 = 3.067000}), DTS({3067000/1000000 = 3.067000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3100000/1000000 = 3.100000}), DTS({3100000/1000000 = 3.100000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3133000/1000000 = 3.133000}), DTS({3133000/1000000 = 3.133000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3167000/1000000 = 3.167000}), DTS({3167000/1000000 = 3.167000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3200000/1000000 = 3.200000}), DTS({3200000/1000000 = 3.200000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3233000/1000000 = 3.233000}), DTS({3233000/1000000 = 3.233000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3267000/1000000 = 3.267000}), DTS({3267000/1000000 = 3.267000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3300000/1000000 = 3.300000}), DTS({3300000/1000000 = 3.300000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3333000/1000000 = 3.333000}), DTS({3333000/1000000 = 3.333000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3367000/1000000 = 3.367000}), DTS({3367000/1000000 = 3.367000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3400000/1000000 = 3.400000}), DTS({3400000/1000000 = 3.400000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3433000/1000000 = 3.433000}), DTS({3433000/1000000 = 3.433000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3467000/1000000 = 3.467000}), DTS({3467000/1000000 = 3.467000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3500000/1000000 = 3.500000}), DTS({3500000/1000000 = 3.500000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3533000/1000000 = 3.533000}), DTS({3533000/1000000 = 3.533000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3567000/1000000 = 3.567000}), DTS({3567000/1000000 = 3.567000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3600000/1000000 = 3.600000}), DTS({3600000/1000000 = 3.600000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3633000/1000000 = 3.633000}), DTS({3633000/1000000 = 3.633000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3667000/1000000 = 3.667000}), DTS({3667000/1000000 = 3.667000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3700000/1000000 = 3.700000}), DTS({3700000/1000000 = 3.700000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3733000/1000000 = 3.733000}), DTS({3733000/1000000 = 3.733000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3767000/1000000 = 3.767000}), DTS({3767000/1000000 = 3.767000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3800000/1000000 = 3.800000}), DTS({3800000/1000000 = 3.800000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3833000/1000000 = 3.833000}), DTS({3833000/1000000 = 3.833000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3867000/1000000 = 3.867000}), DTS({3867000/1000000 = 3.867000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3900000/1000000 = 3.900000}), DTS({3900000/1000000 = 3.900000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3933000/1000000 = 3.933000}), DTS({3933000/1000000 = 3.933000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({3967000/1000000 = 3.967000}), DTS({3967000/1000000 = 3.967000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4000000/1000000 = 4.000000}), DTS({4000000/1000000 = 4.000000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4033000/1000000 = 4.033000}), DTS({4033000/1000000 = 4.033000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4067000/1000000 = 4.067000}), DTS({4067000/1000000 = 4.067000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4100000/1000000 = 4.100000}), DTS({4100000/1000000 = 4.100000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4133000/1000000 = 4.133000}), DTS({4133000/1000000 = 4.133000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4167000/1000000 = 4.167000}), DTS({4167000/1000000 = 4.167000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4200000/1000000 = 4.200000}), DTS({4200000/1000000 = 4.200000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4233000/1000000 = 4.233000}), DTS({4233000/1000000 = 4.233000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4267000/1000000 = 4.267000}), DTS({4267000/1000000 = 4.267000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4300000/1000000 = 4.300000}), DTS({4300000/1000000 = 4.300000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4333000/1000000 = 4.333000}), DTS({4333000/1000000 = 4.333000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4367000/1000000 = 4.367000}), DTS({4367000/1000000 = 4.367000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4400000/1000000 = 4.400000}), DTS({4400000/1000000 = 4.400000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4433000/1000000 = 4.433000}), DTS({4433000/1000000 = 4.433000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4467000/1000000 = 4.467000}), DTS({4467000/1000000 = 4.467000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4500000/1000000 = 4.500000}), DTS({4500000/1000000 = 4.500000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4533000/1000000 = 4.533000}), DTS({4533000/1000000 = 4.533000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4567000/1000000 = 4.567000}), DTS({4567000/1000000 = 4.567000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4600000/1000000 = 4.600000}), DTS({4600000/1000000 = 4.600000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4633000/1000000 = 4.633000}), DTS({4633000/1000000 = 4.633000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4667000/1000000 = 4.667000}), DTS({4667000/1000000 = 4.667000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4700000/1000000 = 4.700000}), DTS({4700000/1000000 = 4.700000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4733000/1000000 = 4.733000}), DTS({4733000/1000000 = 4.733000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4767000/1000000 = 4.767000}), DTS({4767000/1000000 = 4.767000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4800000/1000000 = 4.800000}), DTS({4800000/1000000 = 4.800000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4833000/1000000 = 4.833000}), DTS({4833000/1000000 = 4.833000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4867000/1000000 = 4.867000}), DTS({4867000/1000000 = 4.867000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4900000/1000000 = 4.900000}), DTS({4900000/1000000 = 4.900000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4933000/1000000 = 4.933000}), DTS({4933000/1000000 = 4.933000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({4967000/1000000 = 4.967000}), DTS({4967000/1000000 = 4.967000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5000000/1000000 = 5.000000}), DTS({5000000/1000000 = 5.000000}), duration({33333/1000000 = 0.033333}), flags(1), generation(0)}
+{PTS({5033000/1000000 = 5.033000}), DTS({5033000/1000000 = 5.033000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5067000/1000000 = 5.067000}), DTS({5067000/1000000 = 5.067000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5100000/1000000 = 5.100000}), DTS({5100000/1000000 = 5.100000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5133000/1000000 = 5.133000}), DTS({5133000/1000000 = 5.133000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5167000/1000000 = 5.167000}), DTS({5167000/1000000 = 5.167000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5200000/1000000 = 5.200000}), DTS({5200000/1000000 = 5.200000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5233000/1000000 = 5.233000}), DTS({5233000/1000000 = 5.233000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5267000/1000000 = 5.267000}), DTS({5267000/1000000 = 5.267000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5300000/1000000 = 5.300000}), DTS({5300000/1000000 = 5.300000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5333000/1000000 = 5.333000}), DTS({5333000/1000000 = 5.333000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5367000/1000000 = 5.367000}), DTS({5367000/1000000 = 5.367000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5400000/1000000 = 5.400000}), DTS({5400000/1000000 = 5.400000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5433000/1000000 = 5.433000}), DTS({5433000/1000000 = 5.433000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5467000/1000000 = 5.467000}), DTS({5467000/1000000 = 5.467000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5500000/1000000 = 5.500000}), DTS({5500000/1000000 = 5.500000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5533000/1000000 = 5.533000}), DTS({5533000/1000000 = 5.533000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5567000/1000000 = 5.567000}), DTS({5567000/1000000 = 5.567000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5600000/1000000 = 5.600000}), DTS({5600000/1000000 = 5.600000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5633000/1000000 = 5.633000}), DTS({5633000/1000000 = 5.633000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5667000/1000000 = 5.667000}), DTS({5667000/1000000 = 5.667000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5700000/1000000 = 5.700000}), DTS({5700000/1000000 = 5.700000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5733000/1000000 = 5.733000}), DTS({5733000/1000000 = 5.733000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5767000/1000000 = 5.767000}), DTS({5767000/1000000 = 5.767000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5800000/1000000 = 5.800000}), DTS({5800000/1000000 = 5.800000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5833000/1000000 = 5.833000}), DTS({5833000/1000000 = 5.833000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5867000/1000000 = 5.867000}), DTS({5867000/1000000 = 5.867000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5900000/1000000 = 5.900000}), DTS({5900000/1000000 = 5.900000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5933000/1000000 = 5.933000}), DTS({5933000/1000000 = 5.933000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({5967000/1000000 = 5.967000}), DTS({5967000/1000000 = 5.967000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6000000/1000000 = 6.000000}), DTS({6000000/1000000 = 6.000000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6033000/1000000 = 6.033000}), DTS({6033000/1000000 = 6.033000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6067000/1000000 = 6.067000}), DTS({6067000/1000000 = 6.067000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6100000/1000000 = 6.100000}), DTS({6100000/1000000 = 6.100000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6133000/1000000 = 6.133000}), DTS({6133000/1000000 = 6.133000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6167000/1000000 = 6.167000}), DTS({6167000/1000000 = 6.167000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6200000/1000000 = 6.200000}), DTS({6200000/1000000 = 6.200000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6233000/1000000 = 6.233000}), DTS({6233000/1000000 = 6.233000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6267000/1000000 = 6.267000}), DTS({6267000/1000000 = 6.267000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6300000/1000000 = 6.300000}), DTS({6300000/1000000 = 6.300000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6333000/1000000 = 6.333000}), DTS({6333000/1000000 = 6.333000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6367000/1000000 = 6.367000}), DTS({6367000/1000000 = 6.367000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6400000/1000000 = 6.400000}), DTS({6400000/1000000 = 6.400000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6433000/1000000 = 6.433000}), DTS({6433000/1000000 = 6.433000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6467000/1000000 = 6.467000}), DTS({6467000/1000000 = 6.467000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6500000/1000000 = 6.500000}), DTS({6500000/1000000 = 6.500000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6533000/1000000 = 6.533000}), DTS({6533000/1000000 = 6.533000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6567000/1000000 = 6.567000}), DTS({6567000/1000000 = 6.567000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6600000/1000000 = 6.600000}), DTS({6600000/1000000 = 6.600000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6633000/1000000 = 6.633000}), DTS({6633000/1000000 = 6.633000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6667000/1000000 = 6.667000}), DTS({6667000/1000000 = 6.667000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6700000/1000000 = 6.700000}), DTS({6700000/1000000 = 6.700000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6733000/1000000 = 6.733000}), DTS({6733000/1000000 = 6.733000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6767000/1000000 = 6.767000}), DTS({6767000/1000000 = 6.767000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6800000/1000000 = 6.800000}), DTS({6800000/1000000 = 6.800000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6833000/1000000 = 6.833000}), DTS({6833000/1000000 = 6.833000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6867000/1000000 = 6.867000}), DTS({6867000/1000000 = 6.867000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6900000/1000000 = 6.900000}), DTS({6900000/1000000 = 6.900000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6933000/1000000 = 6.933000}), DTS({6933000/1000000 = 6.933000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({6967000/1000000 = 6.967000}), DTS({6967000/1000000 = 6.967000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7000000/1000000 = 7.000000}), DTS({7000000/1000000 = 7.000000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7033000/1000000 = 7.033000}), DTS({7033000/1000000 = 7.033000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7067000/1000000 = 7.067000}), DTS({7067000/1000000 = 7.067000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7100000/1000000 = 7.100000}), DTS({7100000/1000000 = 7.100000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7133000/1000000 = 7.133000}), DTS({7133000/1000000 = 7.133000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7167000/1000000 = 7.167000}), DTS({7167000/1000000 = 7.167000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7200000/1000000 = 7.200000}), DTS({7200000/1000000 = 7.200000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7233000/1000000 = 7.233000}), DTS({7233000/1000000 = 7.233000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7267000/1000000 = 7.267000}), DTS({7267000/1000000 = 7.267000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7300000/1000000 = 7.300000}), DTS({7300000/1000000 = 7.300000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7333000/1000000 = 7.333000}), DTS({7333000/1000000 = 7.333000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7367000/1000000 = 7.367000}), DTS({7367000/1000000 = 7.367000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7400000/1000000 = 7.400000}), DTS({7400000/1000000 = 7.400000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7433000/1000000 = 7.433000}), DTS({7433000/1000000 = 7.433000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7467000/1000000 = 7.467000}), DTS({7467000/1000000 = 7.467000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7500000/1000000 = 7.500000}), DTS({7500000/1000000 = 7.500000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7533000/1000000 = 7.533000}), DTS({7533000/1000000 = 7.533000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7567000/1000000 = 7.567000}), DTS({7567000/1000000 = 7.567000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7600000/1000000 = 7.600000}), DTS({7600000/1000000 = 7.600000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7633000/1000000 = 7.633000}), DTS({7633000/1000000 = 7.633000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7667000/1000000 = 7.667000}), DTS({7667000/1000000 = 7.667000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7700000/1000000 = 7.700000}), DTS({7700000/1000000 = 7.700000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7733000/1000000 = 7.733000}), DTS({7733000/1000000 = 7.733000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7767000/1000000 = 7.767000}), DTS({7767000/1000000 = 7.767000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7800000/1000000 = 7.800000}), DTS({7800000/1000000 = 7.800000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7833000/1000000 = 7.833000}), DTS({7833000/1000000 = 7.833000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7867000/1000000 = 7.867000}), DTS({7867000/1000000 = 7.867000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7900000/1000000 = 7.900000}), DTS({7900000/1000000 = 7.900000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7933000/1000000 = 7.933000}), DTS({7933000/1000000 = 7.933000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({7967000/1000000 = 7.967000}), DTS({7967000/1000000 = 7.967000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8000000/1000000 = 8.000000}), DTS({8000000/1000000 = 8.000000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8033000/1000000 = 8.033000}), DTS({8033000/1000000 = 8.033000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8067000/1000000 = 8.067000}), DTS({8067000/1000000 = 8.067000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8100000/1000000 = 8.100000}), DTS({8100000/1000000 = 8.100000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8133000/1000000 = 8.133000}), DTS({8133000/1000000 = 8.133000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8167000/1000000 = 8.167000}), DTS({8167000/1000000 = 8.167000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8200000/1000000 = 8.200000}), DTS({8200000/1000000 = 8.200000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8233000/1000000 = 8.233000}), DTS({8233000/1000000 = 8.233000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8267000/1000000 = 8.267000}), DTS({8267000/1000000 = 8.267000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8300000/1000000 = 8.300000}), DTS({8300000/1000000 = 8.300000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8333000/1000000 = 8.333000}), DTS({8333000/1000000 = 8.333000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8367000/1000000 = 8.367000}), DTS({8367000/1000000 = 8.367000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8400000/1000000 = 8.400000}), DTS({8400000/1000000 = 8.400000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8433000/1000000 = 8.433000}), DTS({8433000/1000000 = 8.433000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8467000/1000000 = 8.467000}), DTS({8467000/1000000 = 8.467000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8500000/1000000 = 8.500000}), DTS({8500000/1000000 = 8.500000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8533000/1000000 = 8.533000}), DTS({8533000/1000000 = 8.533000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8567000/1000000 = 8.567000}), DTS({8567000/1000000 = 8.567000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8600000/1000000 = 8.600000}), DTS({8600000/1000000 = 8.600000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8633000/1000000 = 8.633000}), DTS({8633000/1000000 = 8.633000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8667000/1000000 = 8.667000}), DTS({8667000/1000000 = 8.667000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8700000/1000000 = 8.700000}), DTS({8700000/1000000 = 8.700000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8733000/1000000 = 8.733000}), DTS({8733000/1000000 = 8.733000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8767000/1000000 = 8.767000}), DTS({8767000/1000000 = 8.767000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8800000/1000000 = 8.800000}), DTS({8800000/1000000 = 8.800000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8833000/1000000 = 8.833000}), DTS({8833000/1000000 = 8.833000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8867000/1000000 = 8.867000}), DTS({8867000/1000000 = 8.867000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8900000/1000000 = 8.900000}), DTS({8900000/1000000 = 8.900000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8933000/1000000 = 8.933000}), DTS({8933000/1000000 = 8.933000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({8967000/1000000 = 8.967000}), DTS({8967000/1000000 = 8.967000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9000000/1000000 = 9.000000}), DTS({9000000/1000000 = 9.000000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9033000/1000000 = 9.033000}), DTS({9033000/1000000 = 9.033000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9067000/1000000 = 9.067000}), DTS({9067000/1000000 = 9.067000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9100000/1000000 = 9.100000}), DTS({9100000/1000000 = 9.100000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9133000/1000000 = 9.133000}), DTS({9133000/1000000 = 9.133000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9167000/1000000 = 9.167000}), DTS({9167000/1000000 = 9.167000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9200000/1000000 = 9.200000}), DTS({9200000/1000000 = 9.200000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9233000/1000000 = 9.233000}), DTS({9233000/1000000 = 9.233000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9267000/1000000 = 9.267000}), DTS({9267000/1000000 = 9.267000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9300000/1000000 = 9.300000}), DTS({9300000/1000000 = 9.300000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9333000/1000000 = 9.333000}), DTS({9333000/1000000 = 9.333000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9367000/1000000 = 9.367000}), DTS({9367000/1000000 = 9.367000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9400000/1000000 = 9.400000}), DTS({9400000/1000000 = 9.400000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9433000/1000000 = 9.433000}), DTS({9433000/1000000 = 9.433000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9467000/1000000 = 9.467000}), DTS({9467000/1000000 = 9.467000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9500000/1000000 = 9.500000}), DTS({9500000/1000000 = 9.500000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9533000/1000000 = 9.533000}), DTS({9533000/1000000 = 9.533000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9567000/1000000 = 9.567000}), DTS({9567000/1000000 = 9.567000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9600000/1000000 = 9.600000}), DTS({9600000/1000000 = 9.600000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9633000/1000000 = 9.633000}), DTS({9633000/1000000 = 9.633000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9667000/1000000 = 9.667000}), DTS({9667000/1000000 = 9.667000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9700000/1000000 = 9.700000}), DTS({9700000/1000000 = 9.700000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9733000/1000000 = 9.733000}), DTS({9733000/1000000 = 9.733000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9767000/1000000 = 9.767000}), DTS({9767000/1000000 = 9.767000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9800000/1000000 = 9.800000}), DTS({9800000/1000000 = 9.800000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9833000/1000000 = 9.833000}), DTS({9833000/1000000 = 9.833000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9867000/1000000 = 9.867000}), DTS({9867000/1000000 = 9.867000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9900000/1000000 = 9.900000}), DTS({9900000/1000000 = 9.900000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9933000/1000000 = 9.933000}), DTS({9933000/1000000 = 9.933000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({9967000/1000000 = 9.967000}), DTS({9967000/1000000 = 9.967000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10000000/1000000 = 10.000000}), DTS({10000000/1000000 = 10.000000}), duration({33333/1000000 = 0.033333}), flags(1), generation(0)}
+{PTS({10033000/1000000 = 10.033000}), DTS({10033000/1000000 = 10.033000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10067000/1000000 = 10.067000}), DTS({10067000/1000000 = 10.067000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10100000/1000000 = 10.100000}), DTS({10100000/1000000 = 10.100000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10133000/1000000 = 10.133000}), DTS({10133000/1000000 = 10.133000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10167000/1000000 = 10.167000}), DTS({10167000/1000000 = 10.167000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10200000/1000000 = 10.200000}), DTS({10200000/1000000 = 10.200000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10233000/1000000 = 10.233000}), DTS({10233000/1000000 = 10.233000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10267000/1000000 = 10.267000}), DTS({10267000/1000000 = 10.267000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10300000/1000000 = 10.300000}), DTS({10300000/1000000 = 10.300000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10333000/1000000 = 10.333000}), DTS({10333000/1000000 = 10.333000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10367000/1000000 = 10.367000}), DTS({10367000/1000000 = 10.367000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10400000/1000000 = 10.400000}), DTS({10400000/1000000 = 10.400000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10433000/1000000 = 10.433000}), DTS({10433000/1000000 = 10.433000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10467000/1000000 = 10.467000}), DTS({10467000/1000000 = 10.467000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10500000/1000000 = 10.500000}), DTS({10500000/1000000 = 10.500000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10533000/1000000 = 10.533000}), DTS({10533000/1000000 = 10.533000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10567000/1000000 = 10.567000}), DTS({10567000/1000000 = 10.567000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10600000/1000000 = 10.600000}), DTS({10600000/1000000 = 10.600000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10633000/1000000 = 10.633000}), DTS({10633000/1000000 = 10.633000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10667000/1000000 = 10.667000}), DTS({10667000/1000000 = 10.667000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10700000/1000000 = 10.700000}), DTS({10700000/1000000 = 10.700000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10733000/1000000 = 10.733000}), DTS({10733000/1000000 = 10.733000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10767000/1000000 = 10.767000}), DTS({10767000/1000000 = 10.767000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10800000/1000000 = 10.800000}), DTS({10800000/1000000 = 10.800000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10833000/1000000 = 10.833000}), DTS({10833000/1000000 = 10.833000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10867000/1000000 = 10.867000}), DTS({10867000/1000000 = 10.867000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10900000/1000000 = 10.900000}), DTS({10900000/1000000 = 10.900000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10933000/1000000 = 10.933000}), DTS({10933000/1000000 = 10.933000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({10967000/1000000 = 10.967000}), DTS({10967000/1000000 = 10.967000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11000000/1000000 = 11.000000}), DTS({11000000/1000000 = 11.000000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11033000/1000000 = 11.033000}), DTS({11033000/1000000 = 11.033000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11067000/1000000 = 11.067000}), DTS({11067000/1000000 = 11.067000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11100000/1000000 = 11.100000}), DTS({11100000/1000000 = 11.100000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11133000/1000000 = 11.133000}), DTS({11133000/1000000 = 11.133000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11167000/1000000 = 11.167000}), DTS({11167000/1000000 = 11.167000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11200000/1000000 = 11.200000}), DTS({11200000/1000000 = 11.200000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11233000/1000000 = 11.233000}), DTS({11233000/1000000 = 11.233000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11267000/1000000 = 11.267000}), DTS({11267000/1000000 = 11.267000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11300000/1000000 = 11.300000}), DTS({11300000/1000000 = 11.300000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11333000/1000000 = 11.333000}), DTS({11333000/1000000 = 11.333000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11367000/1000000 = 11.367000}), DTS({11367000/1000000 = 11.367000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11400000/1000000 = 11.400000}), DTS({11400000/1000000 = 11.400000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11433000/1000000 = 11.433000}), DTS({11433000/1000000 = 11.433000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11467000/1000000 = 11.467000}), DTS({11467000/1000000 = 11.467000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11500000/1000000 = 11.500000}), DTS({11500000/1000000 = 11.500000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11533000/1000000 = 11.533000}), DTS({11533000/1000000 = 11.533000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11567000/1000000 = 11.567000}), DTS({11567000/1000000 = 11.567000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11600000/1000000 = 11.600000}), DTS({11600000/1000000 = 11.600000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11633000/1000000 = 11.633000}), DTS({11633000/1000000 = 11.633000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11667000/1000000 = 11.667000}), DTS({11667000/1000000 = 11.667000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11700000/1000000 = 11.700000}), DTS({11700000/1000000 = 11.700000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11733000/1000000 = 11.733000}), DTS({11733000/1000000 = 11.733000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11767000/1000000 = 11.767000}), DTS({11767000/1000000 = 11.767000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11800000/1000000 = 11.800000}), DTS({11800000/1000000 = 11.800000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11833000/1000000 = 11.833000}), DTS({11833000/1000000 = 11.833000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11867000/1000000 = 11.867000}), DTS({11867000/1000000 = 11.867000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11900000/1000000 = 11.900000}), DTS({11900000/1000000 = 11.900000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11933000/1000000 = 11.933000}), DTS({11933000/1000000 = 11.933000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({11967000/1000000 = 11.967000}), DTS({11967000/1000000 = 11.967000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12000000/1000000 = 12.000000}), DTS({12000000/1000000 = 12.000000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12033000/1000000 = 12.033000}), DTS({12033000/1000000 = 12.033000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12067000/1000000 = 12.067000}), DTS({12067000/1000000 = 12.067000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12100000/1000000 = 12.100000}), DTS({12100000/1000000 = 12.100000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12133000/1000000 = 12.133000}), DTS({12133000/1000000 = 12.133000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12167000/1000000 = 12.167000}), DTS({12167000/1000000 = 12.167000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12200000/1000000 = 12.200000}), DTS({12200000/1000000 = 12.200000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12233000/1000000 = 12.233000}), DTS({12233000/1000000 = 12.233000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12267000/1000000 = 12.267000}), DTS({12267000/1000000 = 12.267000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12300000/1000000 = 12.300000}), DTS({12300000/1000000 = 12.300000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12333000/1000000 = 12.333000}), DTS({12333000/1000000 = 12.333000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12367000/1000000 = 12.367000}), DTS({12367000/1000000 = 12.367000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12400000/1000000 = 12.400000}), DTS({12400000/1000000 = 12.400000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12433000/1000000 = 12.433000}), DTS({12433000/1000000 = 12.433000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12467000/1000000 = 12.467000}), DTS({12467000/1000000 = 12.467000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12500000/1000000 = 12.500000}), DTS({12500000/1000000 = 12.500000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12533000/1000000 = 12.533000}), DTS({12533000/1000000 = 12.533000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12567000/1000000 = 12.567000}), DTS({12567000/1000000 = 12.567000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12600000/1000000 = 12.600000}), DTS({12600000/1000000 = 12.600000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12633000/1000000 = 12.633000}), DTS({12633000/1000000 = 12.633000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12667000/1000000 = 12.667000}), DTS({12667000/1000000 = 12.667000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12700000/1000000 = 12.700000}), DTS({12700000/1000000 = 12.700000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12733000/1000000 = 12.733000}), DTS({12733000/1000000 = 12.733000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12767000/1000000 = 12.767000}), DTS({12767000/1000000 = 12.767000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12800000/1000000 = 12.800000}), DTS({12800000/1000000 = 12.800000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12833000/1000000 = 12.833000}), DTS({12833000/1000000 = 12.833000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12867000/1000000 = 12.867000}), DTS({12867000/1000000 = 12.867000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12900000/1000000 = 12.900000}), DTS({12900000/1000000 = 12.900000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12933000/1000000 = 12.933000}), DTS({12933000/1000000 = 12.933000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({12967000/1000000 = 12.967000}), DTS({12967000/1000000 = 12.967000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13000000/1000000 = 13.000000}), DTS({13000000/1000000 = 13.000000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13033000/1000000 = 13.033000}), DTS({13033000/1000000 = 13.033000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13067000/1000000 = 13.067000}), DTS({13067000/1000000 = 13.067000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13100000/1000000 = 13.100000}), DTS({13100000/1000000 = 13.100000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13133000/1000000 = 13.133000}), DTS({13133000/1000000 = 13.133000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13167000/1000000 = 13.167000}), DTS({13167000/1000000 = 13.167000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13200000/1000000 = 13.200000}), DTS({13200000/1000000 = 13.200000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13233000/1000000 = 13.233000}), DTS({13233000/1000000 = 13.233000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13267000/1000000 = 13.267000}), DTS({13267000/1000000 = 13.267000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13300000/1000000 = 13.300000}), DTS({13300000/1000000 = 13.300000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13333000/1000000 = 13.333000}), DTS({13333000/1000000 = 13.333000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13367000/1000000 = 13.367000}), DTS({13367000/1000000 = 13.367000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13400000/1000000 = 13.400000}), DTS({13400000/1000000 = 13.400000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13433000/1000000 = 13.433000}), DTS({13433000/1000000 = 13.433000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13467000/1000000 = 13.467000}), DTS({13467000/1000000 = 13.467000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13500000/1000000 = 13.500000}), DTS({13500000/1000000 = 13.500000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13533000/1000000 = 13.533000}), DTS({13533000/1000000 = 13.533000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13567000/1000000 = 13.567000}), DTS({13567000/1000000 = 13.567000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13600000/1000000 = 13.600000}), DTS({13600000/1000000 = 13.600000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13633000/1000000 = 13.633000}), DTS({13633000/1000000 = 13.633000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13667000/1000000 = 13.667000}), DTS({13667000/1000000 = 13.667000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13700000/1000000 = 13.700000}), DTS({13700000/1000000 = 13.700000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13733000/1000000 = 13.733000}), DTS({13733000/1000000 = 13.733000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13767000/1000000 = 13.767000}), DTS({13767000/1000000 = 13.767000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13800000/1000000 = 13.800000}), DTS({13800000/1000000 = 13.800000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13833000/1000000 = 13.833000}), DTS({13833000/1000000 = 13.833000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13867000/1000000 = 13.867000}), DTS({13867000/1000000 = 13.867000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13900000/1000000 = 13.900000}), DTS({13900000/1000000 = 13.900000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13933000/1000000 = 13.933000}), DTS({13933000/1000000 = 13.933000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({13967000/1000000 = 13.967000}), DTS({13967000/1000000 = 13.967000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14000000/1000000 = 14.000000}), DTS({14000000/1000000 = 14.000000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14033000/1000000 = 14.033000}), DTS({14033000/1000000 = 14.033000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14067000/1000000 = 14.067000}), DTS({14067000/1000000 = 14.067000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14100000/1000000 = 14.100000}), DTS({14100000/1000000 = 14.100000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14133000/1000000 = 14.133000}), DTS({14133000/1000000 = 14.133000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14167000/1000000 = 14.167000}), DTS({14167000/1000000 = 14.167000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14200000/1000000 = 14.200000}), DTS({14200000/1000000 = 14.200000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14233000/1000000 = 14.233000}), DTS({14233000/1000000 = 14.233000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14267000/1000000 = 14.267000}), DTS({14267000/1000000 = 14.267000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14300000/1000000 = 14.300000}), DTS({14300000/1000000 = 14.300000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14333000/1000000 = 14.333000}), DTS({14333000/1000000 = 14.333000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14367000/1000000 = 14.367000}), DTS({14367000/1000000 = 14.367000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14400000/1000000 = 14.400000}), DTS({14400000/1000000 = 14.400000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14433000/1000000 = 14.433000}), DTS({14433000/1000000 = 14.433000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14467000/1000000 = 14.467000}), DTS({14467000/1000000 = 14.467000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14500000/1000000 = 14.500000}), DTS({14500000/1000000 = 14.500000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14533000/1000000 = 14.533000}), DTS({14533000/1000000 = 14.533000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14567000/1000000 = 14.567000}), DTS({14567000/1000000 = 14.567000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14600000/1000000 = 14.600000}), DTS({14600000/1000000 = 14.600000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14633000/1000000 = 14.633000}), DTS({14633000/1000000 = 14.633000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14667000/1000000 = 14.667000}), DTS({14667000/1000000 = 14.667000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14700000/1000000 = 14.700000}), DTS({14700000/1000000 = 14.700000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14733000/1000000 = 14.733000}), DTS({14733000/1000000 = 14.733000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14767000/1000000 = 14.767000}), DTS({14767000/1000000 = 14.767000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14800000/1000000 = 14.800000}), DTS({14800000/1000000 = 14.800000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14833000/1000000 = 14.833000}), DTS({14833000/1000000 = 14.833000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14867000/1000000 = 14.867000}), DTS({14867000/1000000 = 14.867000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14900000/1000000 = 14.900000}), DTS({14900000/1000000 = 14.900000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14933000/1000000 = 14.933000}), DTS({14933000/1000000 = 14.933000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+{PTS({14967000/1000000 = 14.967000}), DTS({14967000/1000000 = 14.967000}), duration({33333/1000000 = 0.033333}), flags(0), generation(0)}
+END OF TEST
+

Added: releases/WebKitGTK/webkit-2.22/LayoutTests/media/media-source/media-source-append-acb-tolerance.html (0 => 236695)


--- releases/WebKitGTK/webkit-2.22/LayoutTests/media/media-source/media-source-append-acb-tolerance.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.22/LayoutTests/media/media-source/media-source-append-acb-tolerance.html	2018-10-01 23:12:44 UTC (rev 236695)
@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>media-source-append-acb-tolerance</title>
+    <script src=""
+    <script src=""
+    <script>
+    var source;
+    var sourceBuffer;
+    var initSegment;
+    var bufferedSamples;
+    var enqueuedSamples;
+
+    if (window.internals)
+        internals.initializeMockMediaSource();
+
+    function makeAWebMLikeSample(presentationTimeMilliseconds, durationMicroseconds, trackID, flags, generation) {
+        // The original makeASample() function uses millisecond precision for all the fields, but for this test we need
+        // to test what happens with overlaps smaller than that.
+
+        var byteLength = 30;
+        var buffer = new ArrayBuffer(byteLength);
+        var array = new Uint8Array(buffer);
+        array.set(stringToArray('smpl'));
+
+        var view = new DataView(buffer);
+        view.setUint32(4, byteLength, true);
+
+        var timeScale = 1e6;
+        view.setInt32(8, timeScale, true);
+        view.setInt32(12, presentationTimeMilliseconds * 1000, true);
+        view.setInt32(16, presentationTimeMilliseconds * 1000, true);
+        view.setInt32(20, durationMicroseconds, true);
+        view.setInt32(24, trackID, true);
+        view.setUint8(28, flags);
+        view.setUint8(29, generation);
+
+        return buffer
+    }
+
+    function impreciseSampleRun(start, end) {
+        // A common case for WebM files is for duration to have greater precision than timestamps.
+        // This is because DefaultDuration is always set in nanoseconds (per spec), while other timestamps are set in
+        // Timescale (usually milliseconds).
+        // These settings try to replicate the timing found in a typical WebM 30 fps video.
+        // Duration here is set to microseconds instead of nanoseconds because otherwise MockSampleBox would overflow
+        // after just 2.133 seconds.
+        const samples = [];
+        const fps = 30;
+        const numFrames = (end - start) * fps;
+        for (let numFrame = 0; numFrame < numFrames; numFrame++) {
+            const ptsMilliseconds = Math.round(1000 * (start + numFrame / fps));
+            const durationMicroseconds = 33333;
+            samples.push(makeAWebMLikeSample(ptsMilliseconds, durationMicroseconds, 1, numFrame === 0 ? SAMPLE_FLAG.SYNC : SAMPLE_FLAG.NONE));
+        }
+        return concatenateSamples(samples);
+    }
+
+    window.addEventListener('load', async () => {
+        findMediaElement();
+        source = new MediaSource();
+        testExpected('source.readyState', 'closed');
+        const sourceOpened = waitFor(source, 'sourceopen');
+
+        const videoSource = document.createElement('source');
+        videoSource.type = 'video/mock; codecs=mock';
+        videoSource.src = ""
+        video.appendChild(videoSource);
+
+        await sourceOpened;
+        run('sourceBuffer = source.addSourceBuffer("video/mock; codecs=mock")');
+
+        initSegment = makeAInit(15, [makeATrack(1, 'mock', TRACK_KIND.VIDEO)]);
+
+        run('sourceBuffer.appendBuffer(initSegment)');
+        await waitFor(sourceBuffer, 'updateend');
+
+        // Segment A
+        run('sourceBuffer.appendBuffer(impreciseSampleRun(0, 5))');
+        await waitFor(sourceBuffer, 'updateend');
+
+        // Segment C
+        run('sourceBuffer.appendBuffer(impreciseSampleRun(10, 15))');
+        await waitFor(sourceBuffer, 'updateend');
+
+        // Segment B
+        run('sourceBuffer.appendBuffer(impreciseSampleRun(5, 10))');
+        await waitFor(sourceBuffer, 'updateend');
+
+        bufferedSamples = internals.bufferedSamplesForTrackID(sourceBuffer, 1);
+        enqueuedSamples = internals.enqueuedSamplesForTrackID(sourceBuffer, 1);
+
+        // 30 samples were appended in total. All of them should have ended up in buffered samples and in the decode queue.
+        testExpected('bufferedSamples.length', 15 * 30);
+        testExpected('enqueuedSamples.length', 15 * 30);
+
+        enqueuedSamples.forEach(consoleWrite);
+
+        endTest();
+    });
+    </script>
+</head>
+<body>
+    <video controls></video>
+</body>
+</html>
\ No newline at end of file

Modified: releases/WebKitGTK/webkit-2.22/Source/WebCore/ChangeLog (236694 => 236695)


--- releases/WebKitGTK/webkit-2.22/Source/WebCore/ChangeLog	2018-10-01 22:43:05 UTC (rev 236694)
+++ releases/WebKitGTK/webkit-2.22/Source/WebCore/ChangeLog	2018-10-01 23:12:44 UTC (rev 236695)
@@ -1,5 +1,28 @@
 2018-10-01  Alicia Boya García  <ab...@igalia.com>
 
+        [MSE] Use tolerance when growing the coded frame group
+        https://bugs.webkit.org/show_bug.cgi?id=190085
+
+        Test: media/media-source/media-source-append-acb-tolerance.html
+
+        This patch introduces a millisecond tolerance in the range of
+        potential frames that should be erased frame from the track buffer
+        when the coded frame group is growing.
+
+        This is necessary because some files have imprecise overlapping
+        timestamps (especially WebM files).
+
+        This fixes a stall when seeking back and forth in YouTube with WebM
+        video.
+
+        A test case simulating the problem with video/mock using timestamps
+        similar to those of a typical 30 fps WebM video is also added.
+
+        * Modules/mediasource/SourceBuffer.cpp:
+        (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):
+
+2018-10-01  Alicia Boya García  <ab...@igalia.com>
+
         [MSE][GStreamer] Set a minimum sample duration
         https://bugs.webkit.org/show_bug.cgi?id=190125
 

Modified: releases/WebKitGTK/webkit-2.22/Source/WebCore/Modules/mediasource/SourceBuffer.cpp (236694 => 236695)


--- releases/WebKitGTK/webkit-2.22/Source/WebCore/Modules/mediasource/SourceBuffer.cpp	2018-10-01 22:43:05 UTC (rev 236694)
+++ releases/WebKitGTK/webkit-2.22/Source/WebCore/Modules/mediasource/SourceBuffer.cpp	2018-10-01 23:12:44 UTC (rev 236695)
@@ -1543,6 +1543,14 @@
                 erasedSamples.addRange(iter_pair.first, iter_pair.second);
         }
 
+        // There are many files out there where the frame times are not perfectly contiguous and may have small overlaps
+        // between the beginning of a frame and the end of the previous one; therefore a tolerance is needed whenever
+        // durations are considered.
+        // For instance, most WebM files are muxed rounded to the millisecond (the default TimecodeScale of the format)
+        // but their durations use a finer timescale (causing a sub-millisecond overlap). More rarely, there are also
+        // MP4 files with slightly off tfdt boxes, presenting a similar problem at the beginning of each fragment.
+        const MediaTime contiguousFrameTolerance = MediaTime(1, 1000);
+
         // If highest presentation timestamp for track buffer is set and less than or equal to presentation timestamp
         if (trackBuffer.highestPresentationTimestamp.isValid() && trackBuffer.highestPresentationTimestamp <= presentationTimestamp) {
             // Remove all coded frames from track buffer that have a presentation timestamp greater than highest
@@ -1556,14 +1564,16 @@
                     break;
 
                 MediaTime highestBufferedTime = trackBuffer.buffered.maximumBufferedTime();
+                MediaTime eraseBeginTime = trackBuffer.highestPresentationTimestamp;
+                MediaTime eraseEndTime = frameEndTimestamp - contiguousFrameTolerance;
 
                 PresentationOrderSampleMap::iterator_range range;
                 if (highestBufferedTime - trackBuffer.highestPresentationTimestamp < trackBuffer.lastFrameDuration)
                     // If the new frame is at the end of the buffered ranges, perform a sequential scan from end (O(1)).
-                    range = trackBuffer.samples.presentationOrder().findSamplesBetweenPresentationTimesFromEnd(trackBuffer.highestPresentationTimestamp, frameEndTimestamp);
+                    range = trackBuffer.samples.presentationOrder().findSamplesBetweenPresentationTimesFromEnd(eraseBeginTime, eraseEndTime);
                 else
                     // In any other case, perform a binary search (O(log(n)).
-                    range = trackBuffer.samples.presentationOrder().findSamplesBetweenPresentationTimes(trackBuffer.highestPresentationTimestamp, frameEndTimestamp);
+                    range = trackBuffer.samples.presentationOrder().findSamplesBetweenPresentationTimes(eraseBeginTime, eraseEndTime);
 
                 if (range.first != trackBuffer.samples.presentationOrder().end())
                     erasedSamples.addRange(range.first, range.second);
@@ -1616,10 +1626,6 @@
         //
         // In order to check whether a frame should be added to the decode queue we check whether it starts after the
         // lastEnqueuedDecodeEndTime or even a bit before that to accomodate files with imprecise timing information.
-        //
-        // There are many files out there where the frame times are not perfectly contiguous, therefore a tolerance is needed.
-        // For instance, most WebM files are muxed rounded to the millisecond (the default TimecodeScale of the format).
-        const MediaTime contiguousFrameTolerance = MediaTime(1, 1000);
         if (trackBuffer.lastEnqueuedDecodeEndTime.isInvalid() || decodeTimestamp >= (trackBuffer.lastEnqueuedDecodeEndTime - contiguousFrameTolerance)) {
             DecodeOrderSampleMap::KeyType decodeKey(sample.decodeTime(), sample.presentationTime());
             trackBuffer.decodeQueue.insert(DecodeOrderSampleMap::MapType::value_type(decodeKey, &sample));
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to