diff options
author | acolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-21 05:45:54 +0000 |
---|---|---|
committer | acolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-21 05:45:54 +0000 |
commit | 11530d2c4423debe747b2051caf64bdd36dfc055 (patch) | |
tree | 1e6a2c6d8bc1579c1244f5669be850f1255fffa0 /media | |
parent | 40101ae21c7134b274be9724512dc10c017365fa (diff) | |
download | chromium_src-11530d2c4423debe747b2051caf64bdd36dfc055.zip chromium_src-11530d2c4423debe747b2051caf64bdd36dfc055.tar.gz chromium_src-11530d2c4423debe747b2051caf64bdd36dfc055.tar.bz2 |
Revert 133335 - Update MediaSource API implementation to match v0.4 spec.
- Adding support for sourceAddId() & sourceRemoveId().
- Adding id parameter to sourceAppend() signature.
BUG=122897
TEST=Covered by LayoutTests
TBR=scherkus@chromium.org
Review URL: http://codereview.chromium.org/10166015
TBR=acolwell@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10161017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@133339 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/filters/chunk_demuxer.cc | 39 | ||||
-rw-r--r-- | media/filters/chunk_demuxer.h | 29 | ||||
-rw-r--r-- | media/filters/chunk_demuxer_unittest.cc | 36 | ||||
-rw-r--r-- | media/filters/pipeline_integration_test.cc | 9 |
4 files changed, 14 insertions, 99 deletions
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc index fe3dc46..d3f532c 100644 --- a/media/filters/chunk_demuxer.cc +++ b/media/filters/chunk_demuxer.cc @@ -15,9 +15,6 @@ namespace media { -// TODO(acolwell): Remove this when fixing http://crbug.com/122909 . -const char* kDefaultSourceType = "video/webm; codecs=\"vp8, vorbis\""; - // Create an "end of stream" buffer. static Buffer* CreateEOSBuffer() { return new DataBuffer(0); @@ -458,40 +455,10 @@ void ChunkDemuxer::FlushData() { ChangeState_Locked(INITIALIZED); } -ChunkDemuxer::Status ChunkDemuxer::AddId(const std::string& id, - const std::string& type) { - // TODO(acolwell): Proper mimetype decoding and support for more than one ID - // will be added as part of http://crbug.com/122909 - if (type != kDefaultSourceType) - return kNotSupported; - - if (!source_id_.empty()) - return kReachedIdLimit; - - source_id_ = id; - return kOk; -} - -bool ChunkDemuxer::RemoveId(const std::string& id) { - DCHECK(!source_id_.empty()); - DCHECK_EQ(source_id_, id); - source_id_ = ""; - return true; -} - -bool ChunkDemuxer::AppendData(const std::string& id, - const uint8* data, - size_t length) { - DVLOG(1) << "AppendData(" << id << ", " << length << ")"; - - // TODO(acolwell): Remove when http://webk.it/83788 fix lands. - if (source_id_.empty()) - AddId(id, kDefaultSourceType); - - DCHECK(!source_id_.empty()); - DCHECK_EQ(source_id_, id); +bool ChunkDemuxer::AppendData(const uint8* data, size_t length) { + DVLOG(1) << "AppendData(" << length << ")"; - if (id.empty() || !data || length == 0u) + if (!data || length == 0u) return false; int64 buffered_bytes = 0; diff --git a/media/filters/chunk_demuxer.h b/media/filters/chunk_demuxer.h index 28f6fcb..ae690b9 100644 --- a/media/filters/chunk_demuxer.h +++ b/media/filters/chunk_demuxer.h @@ -6,7 +6,6 @@ #define MEDIA_FILTERS_CHUNK_DEMUXER_H_ #include <list> -#include <string> #include "base/synchronization/lock.h" #include "media/base/byte_queue.h" @@ -23,12 +22,6 @@ class FFmpegURLProtocol; // from JavaScript to the media stack. class MEDIA_EXPORT ChunkDemuxer : public Demuxer, public StreamParserHost { public: - enum Status { - kOk, // ID added w/o error. - kNotSupported, // Type specified is not supported. - kReachedIdLimit, // Reached ID limit. We can't handle any more IDs. - }; - explicit ChunkDemuxer(ChunkDemuxerClient* client); virtual ~ChunkDemuxer(); @@ -48,22 +41,9 @@ class MEDIA_EXPORT ChunkDemuxer : public Demuxer, public StreamParserHost { // Methods used by an external object to control this demuxer. void FlushData(); - // Registers a new |id| to use for AppendData() calls. |type| indicates - // the MIME type for the data that we intend to append for this ID. - // kOk is returned if the demuxer has enough resources to support another ID - // and supports the format indicated by |type|. - // kNotSupported is returned if |type| is not a supported format. - // kReachedIdLimit is returned if the demuxer cannot handle another ID right - // now. - Status AddId(const std::string& id, const std::string& type); - - // Removed an ID & associated resources that were previously added with - // AddId(). - bool RemoveId(const std::string& id); - - // Appends media data to the source buffer associated with |id|. Returns - // false if this method is called in an invalid state. - bool AppendData(const std::string& id, const uint8* data, size_t length); + // Appends media data to the stream. Returns false if this method + // is called in an invalid state. + bool AppendData(const uint8* data, size_t length); void EndOfStream(PipelineStatus status); bool HasEnded(); void Shutdown(); @@ -115,9 +95,6 @@ class MEDIA_EXPORT ChunkDemuxer : public Demuxer, public StreamParserHost { ByteQueue byte_queue_; - // TODO(acolwell): Remove this when fixing http://crbug.com/122909 . - std::string source_id_; - DISALLOW_COPY_AND_ASSIGN(ChunkDemuxer); }; diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc index e85ca9a..5bbc817 100644 --- a/media/filters/chunk_demuxer_unittest.cc +++ b/media/filters/chunk_demuxer_unittest.cc @@ -38,10 +38,6 @@ static const int kVideoTrackEntryHeaderSize = kVideoTrackSizeOffset + static const int kVideoTrackNum = 1; static const int kAudioTrackNum = 2; -static const char* kSourceId = "SourceId"; -static const char* kDefaultSourceType = "video/webm; codecs=\"vp8, vorbis\""; - - base::TimeDelta kDefaultDuration() { return base::TimeDelta::FromMilliseconds(201224); } @@ -168,7 +164,7 @@ class ChunkDemuxerTest : public testing::Test { EXPECT_CALL(host_, SetBufferedTime(_)).Times(AnyNumber()); EXPECT_CALL(host_, SetNetworkActivity(true)) .Times(AnyNumber()); - return demuxer_->AppendData(kSourceId, data, length); + return demuxer_->AppendData(data, length); } bool AppendDataInPieces(const uint8* data, size_t length) { @@ -223,9 +219,6 @@ class ChunkDemuxerTest : public testing::Test { demuxer_->Initialize( &host_, CreateInitDoneCB(kDefaultDuration(), expected_status)); - DCHECK_EQ(demuxer_->AddId(kSourceId, kDefaultSourceType), - ChunkDemuxer::kOk); - return AppendInfoTracks(has_audio, has_video, video_content_encoded); } @@ -279,9 +272,6 @@ class ChunkDemuxerTest : public testing::Test { demuxer_->Initialize( &host_, CreateInitDoneCB(duration, PIPELINE_OK)); - DCHECK_EQ(demuxer_->AddId(kSourceId, kDefaultSourceType), - ChunkDemuxer::kOk); - // Read a WebM file into memory and send the data to the demuxer. ReadTestDataFile(filename, &buffer, &buffer_size); if (!AppendDataInPieces(buffer.get(), buffer_size, 512)) @@ -470,8 +460,7 @@ TEST_F(ChunkDemuxerTest, TestAppendDataBeforeInit) { int info_tracks_size = 0; CreateInfoTracks(true, true, false, &info_tracks, &info_tracks_size); - EXPECT_FALSE(demuxer_->AppendData(kSourceId, info_tracks.get(), - info_tracks_size)); + EXPECT_FALSE(demuxer_->AppendData(info_tracks.get(), info_tracks_size)); } // Make sure Read() callbacks are dispatched with the proper data. @@ -538,8 +527,7 @@ TEST_F(ChunkDemuxerTest, TestOutOfOrderClusters) { AddSimpleBlock(&cb, kAudioTrackNum, 45); AddSimpleBlock(&cb, kVideoTrackNum, 45); scoped_ptr<Cluster> cluster_c(cb.Finish()); - EXPECT_FALSE(demuxer_->AppendData(kSourceId, cluster_c->data(), - cluster_c->size())); + EXPECT_FALSE(demuxer_->AppendData(cluster_c->data(), cluster_c->size())); } TEST_F(ChunkDemuxerTest, TestNonMonotonicButAboveClusterTimecode) { @@ -564,8 +552,7 @@ TEST_F(ChunkDemuxerTest, TestNonMonotonicButAboveClusterTimecode) { AddSimpleBlock(&cb, kAudioTrackNum, 20); AddSimpleBlock(&cb, kVideoTrackNum, 20); scoped_ptr<Cluster> cluster_b(cb.Finish()); - EXPECT_FALSE(demuxer_->AppendData(kSourceId, cluster_b->data(), - cluster_b->size())); + EXPECT_FALSE(demuxer_->AppendData(cluster_b->data(), cluster_b->size())); } TEST_F(ChunkDemuxerTest, TestBackwardsAndBeforeClusterTimecode) { @@ -590,8 +577,7 @@ TEST_F(ChunkDemuxerTest, TestBackwardsAndBeforeClusterTimecode) { AddSimpleBlock(&cb, kAudioTrackNum, 6); AddSimpleBlock(&cb, kVideoTrackNum, 6); scoped_ptr<Cluster> cluster_b(cb.Finish()); - EXPECT_FALSE(demuxer_->AppendData(kSourceId, cluster_b->data(), - cluster_b->size())); + EXPECT_FALSE(demuxer_->AppendData(cluster_b->data(), cluster_b->size())); } @@ -640,8 +626,7 @@ TEST_F(ChunkDemuxerTest, TestMonotonicallyIncreasingTimestampsAcrossClusters) { AddSimpleBlock(&cb, kAudioTrackNum, 10); AddSimpleBlock(&cb, kVideoTrackNum, 10); scoped_ptr<Cluster> cluster_c(cb.Finish()); - EXPECT_FALSE(demuxer_->AppendData(kSourceId, cluster_c->data(), - cluster_c->size())); + EXPECT_FALSE(demuxer_->AppendData(cluster_c->data(), cluster_c->size())); } // Test the case where a cluster is passed to AppendData() before @@ -651,8 +636,6 @@ TEST_F(ChunkDemuxerTest, TestClusterBeforeInfoTracks) { demuxer_->Initialize( &host_, NewExpectedStatusCB(DEMUXER_ERROR_COULD_NOT_OPEN)); - DCHECK_EQ(demuxer_->AddId(kSourceId, kDefaultSourceType), ChunkDemuxer::kOk); - ClusterBuilder cb; cb.SetClusterTimecode(0); AddSimpleBlock(&cb, kVideoTrackNum, 0); @@ -852,8 +835,6 @@ TEST_F(ChunkDemuxerTest, TestAppendingInPieces) { demuxer_->Initialize( &host_, CreateInitDoneCB(kDefaultDuration(), PIPELINE_OK)); - DCHECK_EQ(demuxer_->AddId(kSourceId, kDefaultSourceType), ChunkDemuxer::kOk); - scoped_array<uint8> info_tracks; int info_tracks_size = 0; CreateInfoTracks(true, true, false, &info_tracks, &info_tracks_size); @@ -1052,13 +1033,10 @@ TEST_F(ChunkDemuxerTest, TestParseErrorDuringInit) { EXPECT_CALL(*client_, DemuxerOpened(_)); demuxer_->Initialize( &host_, CreateInitDoneCB(kDefaultDuration(), PIPELINE_OK)); - - DCHECK_EQ(demuxer_->AddId(kSourceId, kDefaultSourceType), ChunkDemuxer::kOk); - ASSERT_TRUE(AppendInfoTracks(true, true, false)); uint8 tmp = 0; - ASSERT_TRUE(demuxer_->AppendData(kSourceId, &tmp, 1)); + ASSERT_TRUE(demuxer_->AppendData(&tmp, 1)); } } // namespace media diff --git a/media/filters/pipeline_integration_test.cc b/media/filters/pipeline_integration_test.cc index db06b3d..cfcbf87 100644 --- a/media/filters/pipeline_integration_test.cc +++ b/media/filters/pipeline_integration_test.cc @@ -14,9 +14,6 @@ namespace media { static const unsigned char kKeyId[] = "\x11\xa5\x18\x37\xc4\x73\x84\x03\xe5\xe6\x57\xed\x8e\x06\xd9\x7c"; -static const char* kSourceId = "SourceId"; -static const char* kDefaultSourceType = "video/webm; codecs=\"vp8, vorbis\""; - // Helper class that emulates calls made on the ChunkDemuxer by the // Media Source API. class MockMediaSource : public ChunkDemuxerClient { @@ -49,9 +46,7 @@ class MockMediaSource : public ChunkDemuxerClient { DCHECK(chunk_demuxer_.get()); DCHECK_LT(current_position_, file_data_size_); DCHECK_LE(current_position_ + size, file_data_size_); - DCHECK(chunk_demuxer_->AppendData(kSourceId, - file_data_.get() + current_position_, - size)); + chunk_demuxer_->AppendData(file_data_.get() + current_position_, size); current_position_ += size; } @@ -68,8 +63,6 @@ class MockMediaSource : public ChunkDemuxerClient { // ChunkDemuxerClient methods. virtual void DemuxerOpened(ChunkDemuxer* demuxer) { chunk_demuxer_ = demuxer; - DCHECK_EQ(chunk_demuxer_->AddId(kSourceId, kDefaultSourceType), - ChunkDemuxer::kOk); AppendData(initial_append_size_); } |