Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(194)

Issue 310483005: MSE: Test append window discontinuity detection (Closed)

Created:
6 years, 6 months ago by wolenetz
Modified:
6 years, 4 months ago
CC:
chromium-reviews, feature-media-reviews_chromium.org
Visibility:
Public.

Description

MSE: Test append window discontinuity detection In both sequence and segments append modes, no discontinuity processing should occur if append window filtering drops no more than two full frame durations plus any partial frame discards since the track buffer's last decode timestamp. Discontinuity processing should occur otherwise. This change includes unit tests for these cases, and notes some curious compliant sequence mode discontinuity detection behavior. R=acolwell@chromium.org BUG=249422 TEST=new unit test

Patch Set 1 #

Patch Set 2 : Fix lint error #

Unified diffs Side-by-side diffs Delta from patch set Stats (+80 lines, -0 lines) Patch
M media/filters/frame_processor.cc View 1 chunk +2 lines, -0 lines 0 comments Download
M media/filters/frame_processor_unittest.cc View 1 1 chunk +78 lines, -0 lines 0 comments Download

Messages

Total messages: 1 (0 generated)
wolenetz
6 years, 6 months ago (2014-05-31 01:11:27 UTC) #1
PTAL @ PS2 on your return:

w.r.t. strange compliant sequence mode (lack of) discontinuity detection, ISTM
this is by-design in the spec. WDYT? I have not filed either a crbug or w3c bug
yet.

Here's some detail on how large gaps in buffered ranges can be introduced in
contiguous appends in sequence mode, with append window filtering:

SequenceMode/AudioOnly_AppendWindowAndMinimalDiscontinuity :

frame_processor.cc(24)] SetSequenceMode(1)
frame_processor.cc(101)] ProcessFrame: Processing frame Type=1, TrackID=-2,
PTS=0, DTS=0, DUR=0.01
frame_processor.cc(149)] ProcessFrame: updated timestampOffset is now 0 
frame_processor_base.cc(91)] NotifyNewMediaSegmentStarting(0)
chunk_demuxer.cc(846)] ChunkDemuxerStream::OnNewMediaSegment(0)
frame_processor.cc(333)] ProcessFrame: Sending processed frame to stream, PTS=0,
DTS=0
frame_processor.cc(101)] ProcessFrame: Processing frame Type=1, TrackID=-2,
PTS=0.01, DTS=0.01, DUR=0.01
frame_processor.cc(333)] ProcessFrame: Sending processed frame to stream,
PTS=0.01, DTS=0.01
frame_processor.cc(101)] ProcessFrame: Processing frame Type=1, TrackID=-2,
PTS=0.02, DTS=0.02, DUR=0.01
frame_processor.cc(296)] Dropping frame that is outside append window.
frame_processor.cc(101)] ProcessFrame: Processing frame Type=1, TrackID=-2,
PTS=0.03, DTS=0.03, DUR=0.01
frame_processor.cc(296)] Dropping frame that is outside append window.
frame_processor.cc(101)] ProcessFrame: Processing frame Type=1, TrackID=-2,
PTS=0.04, DTS=0.04, DUR=0.01
frame_processor.cc(225)] ProcessFrame : Sequence mode discontinuity, GETS: 0.02
frame_processor_base.cc(74)] Reset()
frame_processor_base.cc(26)] Reset()
frame_processor.cc(236)] ProcessFrame: Discontinuity: reprocessing frame
frame_processor.cc(101)] ProcessFrame: Processing frame Type=1, TrackID=-2,
PTS=0.04, DTS=0.04, DUR=0.01
frame_processor.cc(149)] ProcessFrame: updated timestampOffset is now -0.02

*******
No further discontinuity can be detected until track buffer gets another
surviving frame, since track buffer's last decode timestamp remains unset since
last discontinuity. So timestampOffset does not get updated further, and a gap
at least as large as 2 * last frame duration is introduced.
*******

frame_processor.cc(296)] Dropping frame that is outside append window.
frame_processor.cc(101)] ProcessFrame: Processing frame Type=1, TrackID=-2,
PTS=0.05, DTS=0.05, DUR=0.01
frame_processor.cc(296)] Dropping frame that is outside append window.
frame_processor.cc(101)] ProcessFrame: Processing frame Type=1, TrackID=-2,
PTS=0.06, DTS=0.06, DUR=0.01
frame_processor.cc(333)] ProcessFrame: Sending processed frame to stream,
PTS=0.04, DTS=0.04
frame_processor.cc(101)] ProcessFrame: Processing frame Type=1, TrackID=-2,
PTS=0.07, DTS=0.07, DUR=0.01
frame_processor.cc(333)] ProcessFrame: Sending processed frame to stream,
PTS=0.05, DTS=0.05
frame_processor_unittest.cc(248)] StoreStatusAndBufferstatus: 0 ts: 0
frame_processor_unittest.cc(248)] StoreStatusAndBufferstatus: 0 ts: 0.01
frame_processor_unittest.cc(248)] StoreStatusAndBufferstatus: 0 ts: 0.04
frame_processor_unittest.cc(248)] StoreStatusAndBufferstatus: 0 ts: 0.05
frame_processor.cc(20)] ~FrameProcessor

Powered by Google App Engine
This is Rietveld 408576698