Index: media/filters/frame_processor_unittest.cc |
diff --git a/media/filters/frame_processor_unittest.cc b/media/filters/frame_processor_unittest.cc |
index 99f27704fcf24c5dbe312971109abc738c9d8ae4..ff2f16c4a586f990c368933bce7ec45615e6ade5 100644 |
--- a/media/filters/frame_processor_unittest.cc |
+++ b/media/filters/frame_processor_unittest.cc |
@@ -664,6 +664,30 @@ TEST_P(FrameProcessorTest, PartialAppendWindowFilterNoDiscontinuity) { |
CheckReadsThenReadStalls(audio_.get(), "7:0 19"); |
} |
+TEST_P(FrameProcessorTest, PartialAppendWindowFilterNoNewMediaSegment) { |
+ // Tests that a new media segment is not forcibly signalled for audio frame |
+ // partial front trim, to prevent incorrect introduction of a discontinuity |
+ // and potentially a non-keyframe video frame to be processed next after the |
+ // discontinuity. |
+ InSequence s; |
+ AddTestTracks(HAS_AUDIO | HAS_VIDEO); |
+ new_media_segment_ = true; |
+ frame_processor_->SetSequenceMode(GetParam()); |
+ EXPECT_CALL(callbacks_, PossibleDurationIncrease(frame_duration_)); |
+ ProcessFrames("", "0K"); |
+ EXPECT_CALL(callbacks_, PossibleDurationIncrease(frame_duration_)); |
+ ProcessFrames("-5K", ""); |
+ EXPECT_CALL(callbacks_, PossibleDurationIncrease(frame_duration_* 2)); |
+ ProcessFrames("", "10"); |
+ |
+ EXPECT_EQ(base::TimeDelta(), timestamp_offset_); |
+ EXPECT_FALSE(new_media_segment_); |
+ CheckExpectedRangesByTimestamp(audio_.get(), "{ [0,5) }"); |
+ CheckExpectedRangesByTimestamp(video_.get(), "{ [0,20) }"); |
+ CheckReadsThenReadStalls(audio_.get(), "0:-5"); |
+ CheckReadsThenReadStalls(video_.get(), "0 10"); |
+} |
+ |
INSTANTIATE_TEST_CASE_P(SequenceMode, FrameProcessorTest, Values(true)); |
INSTANTIATE_TEST_CASE_P(SegmentsMode, FrameProcessorTest, Values(false)); |