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

Side by Side Diff: media/test/pipeline_integration_test.cc

Issue 1922333002: Implement mapping blink track id to demuxer streams (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: CR feedback Created 4 years, 6 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
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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <memory> 8 #include <memory>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 CHECK_NE(codecs_param_end, std::string::npos); 622 CHECK_NE(codecs_param_end, std::string::npos);
623 623
624 std::string codecs_param = mimetype_.substr( 624 std::string codecs_param = mimetype_.substr(
625 codecs_param_start, codecs_param_end - codecs_param_start); 625 codecs_param_start, codecs_param_end - codecs_param_start);
626 codecs = base::SplitString(codecs_param, ",", base::KEEP_WHITESPACE, 626 codecs = base::SplitString(codecs_param, ",", base::KEEP_WHITESPACE,
627 base::SPLIT_WANT_NONEMPTY); 627 base::SPLIT_WANT_NONEMPTY);
628 } 628 }
629 629
630 CHECK_EQ(chunk_demuxer_->AddId(kSourceId, type, codecs), ChunkDemuxer::kOk); 630 CHECK_EQ(chunk_demuxer_->AddId(kSourceId, type, codecs), ChunkDemuxer::kOk);
631 chunk_demuxer_->SetTracksWatcher( 631 chunk_demuxer_->SetTracksWatcher(
632 kSourceId, base::Bind(&MockMediaSource::InitSegmentReceivedWrapper, 632 kSourceId, base::Bind(&MockMediaSource::InitSegmentReceived,
633 base::Unretained(this))); 633 base::Unretained(this)));
634 634
635 AppendData(initial_append_size_); 635 AppendData(initial_append_size_);
636 } 636 }
637 637
638 void OnEncryptedMediaInitData(EmeInitDataType init_data_type, 638 void OnEncryptedMediaInitData(EmeInitDataType init_data_type,
639 const std::vector<uint8_t>& init_data) { 639 const std::vector<uint8_t>& init_data) {
640 DCHECK(!init_data.empty()); 640 DCHECK(!init_data.empty());
641 CHECK(!encrypted_media_init_data_cb_.is_null()); 641 CHECK(!encrypted_media_init_data_cb_.is_null());
642 encrypted_media_init_data_cb_.Run(init_data_type, init_data); 642 encrypted_media_init_data_cb_.Run(init_data_type, init_data);
643 } 643 }
644 644
645 base::TimeDelta last_timestamp_offset() const { 645 base::TimeDelta last_timestamp_offset() const {
646 return last_timestamp_offset_; 646 return last_timestamp_offset_;
647 } 647 }
648 648
649 // A workaround for gtest mocks not allowing moving scoped_ptrs. 649 void InitSegmentReceived(std::unique_ptr<MediaTracks> tracks) {
650 void InitSegmentReceivedWrapper(std::unique_ptr<MediaTracks> tracks) { 650 CHECK(tracks.get());
651 InitSegmentReceived(tracks); 651 EXPECT_GT(tracks->tracks().size(), 0u);
652 CHECK(chunk_demuxer_);
653 // Generate track ids.
654 std::vector<unsigned> track_ids;
655 for (size_t track_id = 1; track_id <= tracks->tracks().size(); ++track_id) {
656 track_ids.push_back(track_id);
657 }
658
659 chunk_demuxer_->OnTrackIdsAssigned(*tracks.get(), track_ids);
660 InitSegmentReceivedMock(tracks);
652 } 661 }
653 662
654 MOCK_METHOD1(InitSegmentReceived, void(std::unique_ptr<MediaTracks>&)); 663 MOCK_METHOD1(InitSegmentReceivedMock, void(std::unique_ptr<MediaTracks>&));
655 664
656 private: 665 private:
657 scoped_refptr<DecoderBuffer> file_data_; 666 scoped_refptr<DecoderBuffer> file_data_;
658 size_t current_position_; 667 size_t current_position_;
659 size_t initial_append_size_; 668 size_t initial_append_size_;
660 std::string mimetype_; 669 std::string mimetype_;
661 ChunkDemuxer* chunk_demuxer_; 670 ChunkDemuxer* chunk_demuxer_;
662 std::unique_ptr<Demuxer> owned_chunk_demuxer_; 671 std::unique_ptr<Demuxer> owned_chunk_demuxer_;
663 Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb_; 672 Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb_;
664 base::TimeDelta last_timestamp_offset_; 673 base::TimeDelta last_timestamp_offset_;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 public: 713 public:
705 PipelineStatus StartPipelineWithMediaSource(MockMediaSource* source) { 714 PipelineStatus StartPipelineWithMediaSource(MockMediaSource* source) {
706 return StartPipelineWithMediaSource(source, kNormal); 715 return StartPipelineWithMediaSource(source, kNormal);
707 } 716 }
708 717
709 PipelineStatus StartPipelineWithMediaSource(MockMediaSource* source, 718 PipelineStatus StartPipelineWithMediaSource(MockMediaSource* source,
710 uint8_t test_type) { 719 uint8_t test_type) {
711 hashing_enabled_ = test_type & kHashed; 720 hashing_enabled_ = test_type & kHashed;
712 clockless_playback_ = test_type & kClockless; 721 clockless_playback_ = test_type & kClockless;
713 722
714 EXPECT_CALL(*source, InitSegmentReceived(_)).Times(AtLeast(1)); 723 EXPECT_CALL(*source, InitSegmentReceivedMock(_)).Times(AtLeast(1));
715 EXPECT_CALL(*this, OnMetadata(_)) 724 EXPECT_CALL(*this, OnMetadata(_))
716 .Times(AtMost(1)) 725 .Times(AtMost(1))
717 .WillRepeatedly(SaveArg<0>(&metadata_)); 726 .WillRepeatedly(SaveArg<0>(&metadata_));
718 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) 727 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH))
719 .Times(AnyNumber()); 728 .Times(AnyNumber());
720 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)) 729 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_NOTHING))
721 .Times(AnyNumber()); 730 .Times(AnyNumber());
722 EXPECT_CALL(*this, OnDurationChange()).Times(AnyNumber()); 731 EXPECT_CALL(*this, OnDurationChange()).Times(AnyNumber());
723 EXPECT_CALL(*this, OnVideoNaturalSizeChange(_)).Times(AtMost(1)); 732 EXPECT_CALL(*this, OnVideoNaturalSizeChange(_)).Times(AtMost(1));
724 EXPECT_CALL(*this, OnVideoOpacityChange(_)).Times(AtMost(1)); 733 EXPECT_CALL(*this, OnVideoOpacityChange(_)).Times(AtMost(1));
725 734
726 // Encrypted content not used, so this is never called. 735 // Encrypted content not used, so this is never called.
727 EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0); 736 EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0);
728 737
729 demuxer_ = source->GetDemuxer(); 738 demuxer_ = source->GetDemuxer();
730 pipeline_->Start(demuxer_.get(), CreateRenderer(), this, 739 pipeline_->Start(demuxer_.get(), CreateRenderer(), this,
731 base::Bind(&PipelineIntegrationTest::OnStatusCallback, 740 base::Bind(&PipelineIntegrationTest::OnStatusCallback,
732 base::Unretained(this))); 741 base::Unretained(this)));
733 message_loop_.Run(); 742 message_loop_.Run();
734 EXPECT_EQ(PIPELINE_OK, pipeline_status_); 743 EXPECT_EQ(PIPELINE_OK, pipeline_status_);
735 return pipeline_status_; 744 return pipeline_status_;
736 } 745 }
737 746
738 void StartPipelineWithEncryptedMedia(MockMediaSource* source, 747 void StartPipelineWithEncryptedMedia(MockMediaSource* source,
739 FakeEncryptedMedia* encrypted_media) { 748 FakeEncryptedMedia* encrypted_media) {
740 EXPECT_CALL(*source, InitSegmentReceived(_)).Times(AtLeast(1)); 749 EXPECT_CALL(*source, InitSegmentReceivedMock(_)).Times(AtLeast(1));
741 EXPECT_CALL(*this, OnMetadata(_)) 750 EXPECT_CALL(*this, OnMetadata(_))
742 .Times(AtMost(1)) 751 .Times(AtMost(1))
743 .WillRepeatedly(SaveArg<0>(&metadata_)); 752 .WillRepeatedly(SaveArg<0>(&metadata_));
744 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) 753 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH))
745 .Times(AnyNumber()); 754 .Times(AnyNumber());
746 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_NOTHING)) 755 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_NOTHING))
747 .Times(AnyNumber()); 756 .Times(AnyNumber());
748 EXPECT_CALL(*this, OnDurationChange()).Times(AnyNumber()); 757 EXPECT_CALL(*this, OnDurationChange()).Times(AnyNumber());
749 EXPECT_CALL(*this, OnVideoNaturalSizeChange(_)).Times(AtMost(1)); 758 EXPECT_CALL(*this, OnVideoNaturalSizeChange(_)).Times(AtMost(1));
750 EXPECT_CALL(*this, OnVideoOpacityChange(_)).Times(AtMost(1)); 759 EXPECT_CALL(*this, OnVideoOpacityChange(_)).Times(AtMost(1));
(...skipping 1465 matching lines...) Expand 10 before | Expand all | Expand 10 after
2216 2225
2217 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { 2226 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) {
2218 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); 2227 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm"));
2219 Play(); 2228 Play();
2220 ASSERT_TRUE(WaitUntilOnEnded()); 2229 ASSERT_TRUE(WaitUntilOnEnded());
2221 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), 2230 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000),
2222 demuxer_->GetStartTime()); 2231 demuxer_->GetStartTime());
2223 } 2232 }
2224 2233
2225 } // namespace media 2234 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698