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

Side by Side Diff: media/filters/chunk_demuxer_unittest.cc

Issue 710693003: Report PIPELINE_ERROR_DECODE when SourceState::Append fails. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: modify corresponding unit test Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « media/filters/chunk_demuxer.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <algorithm> 5 #include <algorithm>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "base/strings/string_split.h" 10 #include "base/strings/string_split.h"
(...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 }; 660 };
661 661
662 bool InitDemuxer(int stream_flags) { 662 bool InitDemuxer(int stream_flags) {
663 return InitDemuxerWithEncryptionInfo(stream_flags, false, false); 663 return InitDemuxerWithEncryptionInfo(stream_flags, false, false);
664 } 664 }
665 665
666 bool InitDemuxerWithEncryptionInfo( 666 bool InitDemuxerWithEncryptionInfo(
667 int stream_flags, bool is_audio_encrypted, bool is_video_encrypted) { 667 int stream_flags, bool is_audio_encrypted, bool is_video_encrypted) {
668 668
669 PipelineStatus expected_status = 669 PipelineStatus expected_status =
670 (stream_flags != 0) ? PIPELINE_OK : DEMUXER_ERROR_COULD_NOT_OPEN; 670 (stream_flags != 0) ? PIPELINE_OK : PIPELINE_ERROR_DECODE;
671 671
672 base::TimeDelta expected_duration = kNoTimestamp(); 672 base::TimeDelta expected_duration = kNoTimestamp();
673 if (expected_status == PIPELINE_OK) 673 if (expected_status == PIPELINE_OK)
674 expected_duration = kDefaultDuration(); 674 expected_duration = kDefaultDuration();
675 675
676 EXPECT_CALL(*this, DemuxerOpened()); 676 EXPECT_CALL(*this, DemuxerOpened());
677 677
678 // Adding expectation prior to CreateInitDoneCB() here because InSequence 678 // Adding expectation prior to CreateInitDoneCB() here because InSequence
679 // tests require init segment received before duration set. Also, only 679 // tests require init segment received before duration set. Also, only
680 // expect an init segment received callback if there is actually a track in 680 // expect an init segment received callback if there is actually a track in
(...skipping 999 matching lines...) Expand 10 before | Expand all | Expand 10 after
1680 1680
1681 EXPECT_CALL(host_, OnDemuxerError(PIPELINE_ERROR_DECODE)); 1681 EXPECT_CALL(host_, OnDemuxerError(PIPELINE_ERROR_DECODE));
1682 AppendCluster(cb.Finish()); 1682 AppendCluster(cb.Finish());
1683 } 1683 }
1684 1684
1685 // Test the case where a cluster is passed to AppendCluster() before 1685 // Test the case where a cluster is passed to AppendCluster() before
1686 // INFO & TRACKS data. 1686 // INFO & TRACKS data.
1687 TEST_F(ChunkDemuxerTest, ClusterBeforeInitSegment) { 1687 TEST_F(ChunkDemuxerTest, ClusterBeforeInitSegment) {
1688 EXPECT_CALL(*this, DemuxerOpened()); 1688 EXPECT_CALL(*this, DemuxerOpened());
1689 demuxer_->Initialize( 1689 demuxer_->Initialize(
1690 &host_, NewExpectedStatusCB(DEMUXER_ERROR_COULD_NOT_OPEN), true); 1690 &host_, NewExpectedStatusCB(PIPELINE_ERROR_DECODE), true);
1691 1691
1692 ASSERT_EQ(AddId(), ChunkDemuxer::kOk); 1692 ASSERT_EQ(AddId(), ChunkDemuxer::kOk);
1693 1693
1694 AppendCluster(GenerateCluster(0, 1)); 1694 AppendCluster(GenerateCluster(0, 1));
1695 } 1695 }
1696 1696
1697 // Test cases where we get an MarkEndOfStream() call during initialization. 1697 // Test cases where we get an MarkEndOfStream() call during initialization.
1698 TEST_F(ChunkDemuxerTest, EOSDuringInit) { 1698 TEST_F(ChunkDemuxerTest, EOSDuringInit) {
1699 EXPECT_CALL(*this, DemuxerOpened()); 1699 EXPECT_CALL(*this, DemuxerOpened());
1700 demuxer_->Initialize( 1700 demuxer_->Initialize(
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
2120 message_loop_.RunUntilIdle(); 2120 message_loop_.RunUntilIdle();
2121 2121
2122 EXPECT_TRUE(audio_read_done); 2122 EXPECT_TRUE(audio_read_done);
2123 EXPECT_TRUE(video_read_done); 2123 EXPECT_TRUE(video_read_done);
2124 } 2124 }
2125 2125
2126 TEST_F(ChunkDemuxerTest, ParseErrorDuringInit) { 2126 TEST_F(ChunkDemuxerTest, ParseErrorDuringInit) {
2127 EXPECT_CALL(*this, DemuxerOpened()); 2127 EXPECT_CALL(*this, DemuxerOpened());
2128 demuxer_->Initialize( 2128 demuxer_->Initialize(
2129 &host_, CreateInitDoneCB( 2129 &host_, CreateInitDoneCB(
2130 kNoTimestamp(), DEMUXER_ERROR_COULD_NOT_OPEN), true); 2130 kNoTimestamp(), PIPELINE_ERROR_DECODE), true);
2131 2131
2132 ASSERT_EQ(AddId(), ChunkDemuxer::kOk); 2132 ASSERT_EQ(AddId(), ChunkDemuxer::kOk);
2133 2133
2134 uint8 tmp = 0; 2134 uint8 tmp = 0;
2135 demuxer_->AppendData(kSourceId, &tmp, 1, 2135 demuxer_->AppendData(kSourceId, &tmp, 1,
2136 append_window_start_for_next_append_, 2136 append_window_start_for_next_append_,
2137 append_window_end_for_next_append_, 2137 append_window_end_for_next_append_,
2138 &timestamp_offset_map_[kSourceId], 2138 &timestamp_offset_map_[kSourceId],
2139 init_segment_received_cb_); 2139 init_segment_received_cb_);
2140 } 2140 }
2141 2141
2142 TEST_F(ChunkDemuxerTest, AVHeadersWithAudioOnlyType) { 2142 TEST_F(ChunkDemuxerTest, AVHeadersWithAudioOnlyType) {
2143 EXPECT_CALL(*this, DemuxerOpened()); 2143 EXPECT_CALL(*this, DemuxerOpened());
2144 demuxer_->Initialize( 2144 demuxer_->Initialize(
2145 &host_, CreateInitDoneCB(kNoTimestamp(), 2145 &host_, CreateInitDoneCB(kNoTimestamp(),
2146 DEMUXER_ERROR_COULD_NOT_OPEN), true); 2146 PIPELINE_ERROR_DECODE), true);
2147 2147
2148 std::vector<std::string> codecs(1); 2148 std::vector<std::string> codecs(1);
2149 codecs[0] = "vorbis"; 2149 codecs[0] = "vorbis";
2150 ASSERT_EQ(demuxer_->AddId(kSourceId, "audio/webm", codecs), 2150 ASSERT_EQ(demuxer_->AddId(kSourceId, "audio/webm", codecs),
2151 ChunkDemuxer::kOk); 2151 ChunkDemuxer::kOk);
2152 2152
2153 AppendInitSegment(HAS_AUDIO | HAS_VIDEO); 2153 AppendInitSegment(HAS_AUDIO | HAS_VIDEO);
2154 } 2154 }
2155 2155
2156 TEST_F(ChunkDemuxerTest, AVHeadersWithVideoOnlyType) { 2156 TEST_F(ChunkDemuxerTest, AVHeadersWithVideoOnlyType) {
2157 EXPECT_CALL(*this, DemuxerOpened()); 2157 EXPECT_CALL(*this, DemuxerOpened());
2158 demuxer_->Initialize( 2158 demuxer_->Initialize(
2159 &host_, CreateInitDoneCB(kNoTimestamp(), 2159 &host_, CreateInitDoneCB(kNoTimestamp(),
2160 DEMUXER_ERROR_COULD_NOT_OPEN), true); 2160 PIPELINE_ERROR_DECODE), true);
2161 2161
2162 std::vector<std::string> codecs(1); 2162 std::vector<std::string> codecs(1);
2163 codecs[0] = "vp8"; 2163 codecs[0] = "vp8";
2164 ASSERT_EQ(demuxer_->AddId(kSourceId, "video/webm", codecs), 2164 ASSERT_EQ(demuxer_->AddId(kSourceId, "video/webm", codecs),
2165 ChunkDemuxer::kOk); 2165 ChunkDemuxer::kOk);
2166 2166
2167 AppendInitSegment(HAS_AUDIO | HAS_VIDEO); 2167 AppendInitSegment(HAS_AUDIO | HAS_VIDEO);
2168 } 2168 }
2169 2169
2170 TEST_F(ChunkDemuxerTest, MultipleHeaders) { 2170 TEST_F(ChunkDemuxerTest, MultipleHeaders) {
(...skipping 1579 matching lines...) Expand 10 before | Expand all | Expand 10 after
3750 TEST_F(ChunkDemuxerTest, CuesBetweenClusters) { 3750 TEST_F(ChunkDemuxerTest, CuesBetweenClusters) {
3751 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); 3751 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO));
3752 3752
3753 AppendCluster(GenerateCluster(0, 0, 4)); 3753 AppendCluster(GenerateCluster(0, 0, 4));
3754 AppendData(kCuesHeader, sizeof(kCuesHeader)); 3754 AppendData(kCuesHeader, sizeof(kCuesHeader));
3755 AppendCluster(GenerateCluster(46, 66, 5)); 3755 AppendCluster(GenerateCluster(46, 66, 5));
3756 CheckExpectedRanges(kSourceId, "{ [0,115) }"); 3756 CheckExpectedRanges(kSourceId, "{ [0,115) }");
3757 } 3757 }
3758 3758
3759 } // namespace media 3759 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/chunk_demuxer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698