Bug 1296531 - Add gtest for an encoding that ends before all pushed data has been consumed. r=jesup

MozReview-Commit-ID: HmHZcMlQRrM

--HG--
extra : rebase_source : 115f95c59007d69155917bf3f9ebfb1ebf54d2c4
This commit is contained in:
Andreas Pehrson 2017-01-30 18:56:24 +01:00
parent 2777981cd5
commit 378fa96194

View File

@ -848,6 +848,43 @@ TEST(VP8VideoTrackEncoder, SuspendedOverlap)
EXPECT_EQ(onePointTwo, totalDuration);
}
// Test that ending a track in the middle of already pushed data works.
TEST(VP8VideoTrackEncoder, PrematureEnding)
{
// Initiate VP8 encoder
TestVP8TrackEncoder encoder;
InitParam param = {true, 640, 480};
encoder.TestInit(param);
// Pass a 1s frame and end the track after 0.5s.
YUVBufferGenerator generator;
generator.Init(mozilla::gfx::IntSize(640, 480));
TimeStamp now = TimeStamp::Now();
VideoSegment segment;
segment.AppendFrame(generator.GenerateI420Image(),
mozilla::StreamTime(90000), // 1s
generator.GetSize(),
PRINCIPAL_HANDLE_NONE,
false,
now);
encoder.AppendVideoSegment(Move(segment));
encoder.NotifyCurrentTime(45000);
encoder.NotifyEndOfStream();
EncodedFrameContainer container;
ASSERT_TRUE(NS_SUCCEEDED(encoder.GetEncodedTrack(container)));
EXPECT_TRUE(encoder.IsEncodingComplete());
uint64_t totalDuration = 0;
for (auto& frame : container.GetEncodedFrames()) {
totalDuration += frame->GetDuration();
}
const uint64_t half = PR_USEC_PER_SEC / 2;
EXPECT_EQ(half, totalDuration);
}
// EOS test
TEST(VP8VideoTrackEncoder, EncodeComplete)
{