| OLD | NEW |
| 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 <algorithm> | 8 #include <algorithm> |
| 9 #include <deque> | 9 #include <deque> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 message_loop_.task_runner(), data_source_.get(), | 103 message_loop_.task_runner(), data_source_.get(), |
| 104 encrypted_media_init_data_cb, tracks_updated_cb, new MediaLog())); | 104 encrypted_media_init_data_cb, tracks_updated_cb, new MediaLog())); |
| 105 } | 105 } |
| 106 | 106 |
| 107 MOCK_METHOD1(CheckPoint, void(int v)); | 107 MOCK_METHOD1(CheckPoint, void(int v)); |
| 108 | 108 |
| 109 void InitializeDemuxerInternal(bool enable_text, | 109 void InitializeDemuxerInternal(bool enable_text, |
| 110 media::PipelineStatus expected_pipeline_status, | 110 media::PipelineStatus expected_pipeline_status, |
| 111 base::Time timeline_offset) { | 111 base::Time timeline_offset) { |
| 112 if (expected_pipeline_status == PIPELINE_OK) | 112 if (expected_pipeline_status == PIPELINE_OK) |
| 113 EXPECT_CALL(host_, SetDuration(_)); | 113 EXPECT_CALL(host_, SetDuration(_)).Times(AnyNumber()); |
| 114 WaitableMessageLoopEvent event; | 114 WaitableMessageLoopEvent event; |
| 115 demuxer_->Initialize(&host_, event.GetPipelineStatusCB(), enable_text); | 115 demuxer_->Initialize(&host_, event.GetPipelineStatusCB(), enable_text); |
| 116 demuxer_->timeline_offset_ = timeline_offset; | 116 demuxer_->timeline_offset_ = timeline_offset; |
| 117 event.RunAndWaitForStatus(expected_pipeline_status); | 117 event.RunAndWaitForStatus(expected_pipeline_status); |
| 118 } | 118 } |
| 119 | 119 |
| 120 void InitializeDemuxer() { | 120 void InitializeDemuxer() { |
| 121 InitializeDemuxerInternal(/*enable_text=*/false, PIPELINE_OK, base::Time()); | 121 InitializeDemuxerInternal(/*enable_text=*/false, PIPELINE_OK, base::Time()); |
| 122 } | 122 } |
| 123 | 123 |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 MOCK_METHOD2(OnEncryptedMediaInitData, | 215 MOCK_METHOD2(OnEncryptedMediaInitData, |
| 216 void(EmeInitDataType init_data_type, | 216 void(EmeInitDataType init_data_type, |
| 217 const std::vector<uint8_t>& init_data)); | 217 const std::vector<uint8_t>& init_data)); |
| 218 | 218 |
| 219 void OnMediaTracksUpdated(std::unique_ptr<MediaTracks> tracks) { | 219 void OnMediaTracksUpdated(std::unique_ptr<MediaTracks> tracks) { |
| 220 CHECK(tracks.get()); | 220 CHECK(tracks.get()); |
| 221 media_tracks_ = std::move(tracks); | 221 media_tracks_ = std::move(tracks); |
| 222 } | 222 } |
| 223 | 223 |
| 224 // Accessor to demuxer internals. | 224 // Accessor to demuxer internals. |
| 225 void set_duration_known(bool duration_known) { | 225 void SetDurationKnown(bool duration_known) { |
| 226 demuxer_->duration_known_ = duration_known; | 226 demuxer_->duration_known_ = duration_known; |
| 227 if (!duration_known) |
| 228 demuxer_->duration_ = kInfiniteDuration; |
| 227 } | 229 } |
| 228 | 230 |
| 229 bool IsStreamStopped(DemuxerStream::Type type) { | 231 bool IsStreamStopped(DemuxerStream::Type type) { |
| 230 DemuxerStream* stream = demuxer_->GetStream(type); | 232 DemuxerStream* stream = demuxer_->GetStream(type); |
| 231 CHECK(stream); | 233 CHECK(stream); |
| 232 return !static_cast<FFmpegDemuxerStream*>(stream)->demuxer_; | 234 return !static_cast<FFmpegDemuxerStream*>(stream)->demuxer_; |
| 233 } | 235 } |
| 234 | 236 |
| 235 // Fixture members. | 237 // Fixture members. |
| 236 std::unique_ptr<FileDataSource> data_source_; | 238 std::unique_ptr<FileDataSource> data_source_; |
| (...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 796 base::RunLoop().Run(); | 798 base::RunLoop().Run(); |
| 797 } | 799 } |
| 798 | 800 |
| 799 EXPECT_TRUE(got_eos_buffer); | 801 EXPECT_TRUE(got_eos_buffer); |
| 800 } | 802 } |
| 801 | 803 |
| 802 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration) { | 804 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration) { |
| 803 // Verify that end of stream buffers are created. | 805 // Verify that end of stream buffers are created. |
| 804 CreateDemuxer("bear-320x240.webm"); | 806 CreateDemuxer("bear-320x240.webm"); |
| 805 InitializeDemuxer(); | 807 InitializeDemuxer(); |
| 806 set_duration_known(false); | 808 SetDurationKnown(false); |
| 807 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2767))); | 809 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2767))); |
| 808 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::AUDIO)); | 810 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::AUDIO)); |
| 809 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::VIDEO)); | 811 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::VIDEO)); |
| 810 } | 812 } |
| 811 | 813 |
| 812 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration_VideoOnly) { | 814 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration_VideoOnly) { |
| 813 // Verify that end of stream buffers are created. | 815 // Verify that end of stream buffers are created. |
| 814 CreateDemuxer("bear-320x240-video-only.webm"); | 816 CreateDemuxer("bear-320x240-video-only.webm"); |
| 815 InitializeDemuxer(); | 817 InitializeDemuxer(); |
| 816 set_duration_known(false); | 818 SetDurationKnown(false); |
| 817 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2736))); | 819 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2736))); |
| 818 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::VIDEO)); | 820 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::VIDEO)); |
| 819 } | 821 } |
| 820 | 822 |
| 821 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration_AudioOnly) { | 823 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration_AudioOnly) { |
| 822 // Verify that end of stream buffers are created. | 824 // Verify that end of stream buffers are created. |
| 823 CreateDemuxer("bear-320x240-audio-only.webm"); | 825 CreateDemuxer("bear-320x240-audio-only.webm"); |
| 824 InitializeDemuxer(); | 826 InitializeDemuxer(); |
| 825 set_duration_known(false); | 827 SetDurationKnown(false); |
| 826 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2767))); | 828 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(2767))); |
| 827 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::AUDIO)); | 829 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::AUDIO)); |
| 828 } | 830 } |
| 829 | 831 |
| 830 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration_UnsupportedStream) { | 832 TEST_F(FFmpegDemuxerTest, Read_EndOfStream_NoDuration_UnsupportedStream) { |
| 831 // Verify that end of stream buffers are created and we don't crash | 833 // Verify that end of stream buffers are created and we don't crash |
| 832 // if there are streams in the file that we don't support. | 834 // if there are streams in the file that we don't support. |
| 833 CreateDemuxer("vorbis_audio_wmv_video.mkv"); | 835 CreateDemuxer("vorbis_audio_wmv_video.mkv"); |
| 834 InitializeDemuxer(); | 836 InitializeDemuxer(); |
| 835 set_duration_known(false); | 837 SetDurationKnown(false); |
| 836 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(1014))); | 838 EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(1014))); |
| 837 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::AUDIO)); | 839 ReadUntilEndOfStream(demuxer_->GetStream(DemuxerStream::AUDIO)); |
| 838 } | 840 } |
| 839 | 841 |
| 840 TEST_F(FFmpegDemuxerTest, Seek) { | 842 TEST_F(FFmpegDemuxerTest, Seek) { |
| 841 // We're testing that the demuxer frees all queued packets when it receives | 843 // We're testing that the demuxer frees all queued packets when it receives |
| 842 // a Seek(). | 844 // a Seek(). |
| 843 CreateDemuxer("bear-320x240.webm"); | 845 CreateDemuxer("bear-320x240.webm"); |
| 844 InitializeDemuxer(); | 846 InitializeDemuxer(); |
| 845 | 847 |
| (...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1395 | 1397 |
| 1396 const MediaTrack& audio_track = *(media_tracks_->tracks()[1]); | 1398 const MediaTrack& audio_track = *(media_tracks_->tracks()[1]); |
| 1397 EXPECT_EQ(audio_track.type(), MediaTrack::Audio); | 1399 EXPECT_EQ(audio_track.type(), MediaTrack::Audio); |
| 1398 EXPECT_EQ(audio_track.bytestream_track_id(), 2); | 1400 EXPECT_EQ(audio_track.bytestream_track_id(), 2); |
| 1399 EXPECT_EQ(audio_track.kind(), "main"); | 1401 EXPECT_EQ(audio_track.kind(), "main"); |
| 1400 EXPECT_EQ(audio_track.label(), ""); | 1402 EXPECT_EQ(audio_track.label(), ""); |
| 1401 EXPECT_EQ(audio_track.language(), ""); | 1403 EXPECT_EQ(audio_track.language(), ""); |
| 1402 } | 1404 } |
| 1403 | 1405 |
| 1404 } // namespace media | 1406 } // namespace media |
| OLD | NEW |