Index: media/filters/ffmpeg_demuxer_unittest.cc |
diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc |
index 4225530af56ace84f41d510283508a68498d263f..b5b3f748df28d7583d94da603c3d0778719fbeaf 100644 |
--- a/media/filters/ffmpeg_demuxer_unittest.cc |
+++ b/media/filters/ffmpeg_demuxer_unittest.cc |
@@ -1471,4 +1471,38 @@ TEST_F(FFmpegDemuxerTest, Read_Flac) { |
EXPECT_EQ(kSampleFormatS32, audio_config.sample_format()); |
} |
+// Verify that FFmpeg demuxer falls back to choosing disabled streams for |
+// seeking if there's no suitable enabled stream found. |
+TEST_F(FFmpegDemuxerTest, Seek_FallbackToDisabledVideoStream) { |
+ // Input has only video stream, no audio. |
+ CreateDemuxer("bear-320x240-video-only.webm"); |
+ InitializeDemuxer(); |
+ EXPECT_EQ(nullptr, demuxer_->GetStream(DemuxerStream::AUDIO)); |
+ DemuxerStream* vstream = demuxer_->GetStream(DemuxerStream::VIDEO); |
+ EXPECT_NE(nullptr, vstream); |
+ EXPECT_EQ(vstream, preferred_seeking_stream(base::TimeDelta())); |
+ |
+ // Now pretend that video stream got disabled, e.g. due to current tab going |
+ // into background. |
+ vstream->set_enabled(false, base::TimeDelta()); |
+ // Since there's no other enabled streams, the preferred seeking stream should |
+ // still be the video stream. |
+ EXPECT_EQ(vstream, preferred_seeking_stream(base::TimeDelta())); |
+} |
+ |
+TEST_F(FFmpegDemuxerTest, Seek_FallbackToDisabledAudioStream) { |
+ CreateDemuxer("bear-320x240-audio-only.webm"); |
+ InitializeDemuxer(); |
+ DemuxerStream* astream = demuxer_->GetStream(DemuxerStream::AUDIO); |
+ EXPECT_NE(nullptr, astream); |
+ EXPECT_EQ(nullptr, demuxer_->GetStream(DemuxerStream::VIDEO)); |
+ EXPECT_EQ(astream, preferred_seeking_stream(base::TimeDelta())); |
+ |
+ // Now pretend that audio stream got disabled. |
+ astream->set_enabled(false, base::TimeDelta()); |
+ // Since there's no other enabled streams, the preferred seeking stream should |
+ // still be the audio stream. |
+ EXPECT_EQ(astream, preferred_seeking_stream(base::TimeDelta())); |
+} |
+ |
} // namespace media |