Add m2ts and audio tests in packager_test

Change-Id: I11cc65a2baa69bc5e3bc022027bca6712f810f1a
This commit is contained in:
Kongqun Yang 2014-04-24 12:29:53 -07:00 committed by KongQun Yang
parent e8e83cc37c
commit 53287e5fe7
2 changed files with 44 additions and 6 deletions

View File

@ -116,7 +116,7 @@ Status Fragmenter::AddSample(scoped_refptr<MediaSample> sample) {
} else {
// Can we safely assume the first sample in the media has the earliest
// presentation timestamp?
DCHECK_GT(pts, presentation_start_time_);
DCHECK_GE(pts, presentation_start_time_);
pts -= presentation_start_time_;
}
}

View File

@ -23,7 +23,8 @@ using ::testing::ValuesIn;
namespace media {
namespace {
const char* kMediaFiles[] = {"bear-1280x720.mp4", "bear-1280x720-av_frag.mp4"};
const char* kMediaFiles[] = {"bear-1280x720.mp4", "bear-1280x720-av_frag.mp4",
"bear-1280x720.ts"};
// Muxer options.
const double kSegmentDurationInSeconds = 1.0;
@ -131,6 +132,10 @@ MuxerOptions PackagerTestBasic::SetupOptions(const std::string& output,
options.fragment_duration = kFragmentDurationInSecodns;
options.segment_sap_aligned = kSegmentSapAligned;
options.fragment_sap_aligned = kFragmentSapAligned;
// The mp4 muxer does not generate EditList, so the starting timestamp in the
// source is not carried over. Normalize the PTS so a second parse of the
// muxed output generates the same output.
options.normalize_presentation_timestamp = true;
options.num_subsegments_per_sidx = kNumSubsegmentsPerSidx;
options.output_file_name = GetFullPath(output);
@ -190,7 +195,7 @@ void PackagerTestBasic::Remux(const std::string& input,
ASSERT_OK(demuxer.Run());
}
TEST_P(PackagerTestBasic, MP4MuxerSingleSegmentUnencrypted) {
TEST_P(PackagerTestBasic, MP4MuxerSingleSegmentUnencryptedVideo) {
ASSERT_NO_FATAL_FAILURE(Remux(GetParam(),
kOutputVideo,
kOutputNone,
@ -198,7 +203,15 @@ TEST_P(PackagerTestBasic, MP4MuxerSingleSegmentUnencrypted) {
kDisableEncryption));
}
TEST_P(PackagerTestBasic, MP4MuxerSingleSegmentEncrypted) {
TEST_P(PackagerTestBasic, MP4MuxerSingleSegmentUnencryptedAudio) {
ASSERT_NO_FATAL_FAILURE(Remux(GetParam(),
kOutputNone,
kOutputAudio,
kSingleSegment,
kDisableEncryption));
}
TEST_P(PackagerTestBasic, MP4MuxerSingleSegmentEncryptedVideo) {
ASSERT_NO_FATAL_FAILURE(Remux(GetParam(),
kOutputVideo,
kOutputNone,
@ -212,6 +225,20 @@ TEST_P(PackagerTestBasic, MP4MuxerSingleSegmentEncrypted) {
EXPECT_TRUE(demuxer.streams()[0]->info()->is_encrypted());
}
TEST_P(PackagerTestBasic, MP4MuxerSingleSegmentEncryptedAudio) {
ASSERT_NO_FATAL_FAILURE(Remux(GetParam(),
kOutputNone,
kOutputAudio,
kSingleSegment,
kEnableEncryption));
// Expect the output to be encrypted.
Demuxer demuxer(GetFullPath(kOutputAudio), decryptor_source_);
ASSERT_OK(demuxer.Initialize());
ASSERT_EQ(1u, demuxer.streams().size());
EXPECT_TRUE(demuxer.streams()[0]->info()->is_encrypted());
}
class PackagerTest : public PackagerTestBasic {
public:
virtual void SetUp() OVERRIDE {
@ -231,7 +258,7 @@ class PackagerTest : public PackagerTestBasic {
}
};
TEST_P(PackagerTest, MP4MuxerSingleSegmentUnencryptedAgain) {
TEST_P(PackagerTest, MP4MuxerSingleSegmentUnencryptedVideoAgain) {
// Take the muxer output and feed into muxer again. The new muxer output
// should contain the same contents as the previous muxer output.
ASSERT_NO_FATAL_FAILURE(Remux(kOutputVideo,
@ -242,6 +269,17 @@ TEST_P(PackagerTest, MP4MuxerSingleSegmentUnencryptedAgain) {
EXPECT_TRUE(ContentsEqual(kOutputVideo, kOutputVideo2));
}
TEST_P(PackagerTest, MP4MuxerSingleSegmentUnencryptedAudioAgain) {
// Take the muxer output and feed into muxer again. The new muxer output
// should contain the same contents as the previous muxer output.
ASSERT_NO_FATAL_FAILURE(Remux(kOutputAudio,
kOutputNone,
kOutputAudio2,
kSingleSegment,
kDisableEncryption));
EXPECT_TRUE(ContentsEqual(kOutputAudio, kOutputAudio2));
}
TEST_P(PackagerTest, MP4MuxerSingleSegmentUnencryptedSeparateAudioVideo) {
ASSERT_NO_FATAL_FAILURE(Remux(GetParam(),
kOutputVideo2,
@ -254,7 +292,7 @@ TEST_P(PackagerTest, MP4MuxerSingleSegmentUnencryptedSeparateAudioVideo) {
EXPECT_TRUE(ContentsEqual(kOutputAudio, kOutputAudio2));
}
TEST_P(PackagerTest, MP4MuxerMultiSegmentsUnencrypted) {
TEST_P(PackagerTest, MP4MuxerMultiSegmentsUnencryptedVideo) {
ASSERT_NO_FATAL_FAILURE(Remux(GetParam(),
kOutputVideo2,
kOutputNone,