| 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 516 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 527 } | 527 } | 
| 528 | 528 | 
| 529 TEST_F(FFmpegDemuxerTest, Seeking_PreferredStreamSelection) { | 529 TEST_F(FFmpegDemuxerTest, Seeking_PreferredStreamSelection) { | 
| 530   const int64_t kTimelineOffsetMs = 1352550896000LL; | 530   const int64_t kTimelineOffsetMs = 1352550896000LL; | 
| 531 | 531 | 
| 532   // Test the start time is the first timestamp of the video and audio stream. | 532   // Test the start time is the first timestamp of the video and audio stream. | 
| 533   CreateDemuxer("nonzero-start-time.webm"); | 533   CreateDemuxer("nonzero-start-time.webm"); | 
| 534   InitializeDemuxerWithTimelineOffset( | 534   InitializeDemuxerWithTimelineOffset( | 
| 535       base::Time::FromJsTime(kTimelineOffsetMs)); | 535       base::Time::FromJsTime(kTimelineOffsetMs)); | 
| 536 | 536 | 
| 537   DemuxerStream* video = GetStream(DemuxerStream::VIDEO); | 537   FFmpegDemuxerStream* video = | 
| 538   DemuxerStream* audio = GetStream(DemuxerStream::AUDIO); | 538       static_cast<FFmpegDemuxerStream*>(GetStream(DemuxerStream::VIDEO)); | 
|  | 539   FFmpegDemuxerStream* audio = | 
|  | 540       static_cast<FFmpegDemuxerStream*>(GetStream(DemuxerStream::AUDIO)); | 
| 539 | 541 | 
| 540   const base::TimeDelta video_start_time = | 542   const base::TimeDelta video_start_time = | 
| 541       base::TimeDelta::FromMicroseconds(400000); | 543       base::TimeDelta::FromMicroseconds(400000); | 
| 542   const base::TimeDelta audio_start_time = | 544   const base::TimeDelta audio_start_time = | 
| 543       base::TimeDelta::FromMicroseconds(396000); | 545       base::TimeDelta::FromMicroseconds(396000); | 
| 544 | 546 | 
| 545   // Seeking to a position lower than the start time of either stream should | 547   // Seeking to a position lower than the start time of either stream should | 
| 546   // prefer video stream for seeking. | 548   // prefer video stream for seeking. | 
| 547   EXPECT_EQ(video, preferred_seeking_stream(base::TimeDelta())); | 549   EXPECT_EQ(video, preferred_seeking_stream(base::TimeDelta())); | 
| 548   // Seeking to a position that has audio data, but not video, should prefer | 550   // Seeking to a position that has audio data, but not video, should prefer | 
| (...skipping 937 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1486   EXPECT_EQ(kSampleFormatS32, audio_config.sample_format()); | 1488   EXPECT_EQ(kSampleFormatS32, audio_config.sample_format()); | 
| 1487 } | 1489 } | 
| 1488 | 1490 | 
| 1489 // Verify that FFmpeg demuxer falls back to choosing disabled streams for | 1491 // Verify that FFmpeg demuxer falls back to choosing disabled streams for | 
| 1490 // seeking if there's no suitable enabled stream found. | 1492 // seeking if there's no suitable enabled stream found. | 
| 1491 TEST_F(FFmpegDemuxerTest, Seek_FallbackToDisabledVideoStream) { | 1493 TEST_F(FFmpegDemuxerTest, Seek_FallbackToDisabledVideoStream) { | 
| 1492   // Input has only video stream, no audio. | 1494   // Input has only video stream, no audio. | 
| 1493   CreateDemuxer("bear-320x240-video-only.webm"); | 1495   CreateDemuxer("bear-320x240-video-only.webm"); | 
| 1494   InitializeDemuxer(); | 1496   InitializeDemuxer(); | 
| 1495   EXPECT_EQ(nullptr, GetStream(DemuxerStream::AUDIO)); | 1497   EXPECT_EQ(nullptr, GetStream(DemuxerStream::AUDIO)); | 
| 1496   DemuxerStream* vstream = GetStream(DemuxerStream::VIDEO); | 1498   FFmpegDemuxerStream* vstream = | 
|  | 1499       static_cast<FFmpegDemuxerStream*>(GetStream(DemuxerStream::VIDEO)); | 
| 1497   EXPECT_NE(nullptr, vstream); | 1500   EXPECT_NE(nullptr, vstream); | 
| 1498   EXPECT_EQ(vstream, preferred_seeking_stream(base::TimeDelta())); | 1501   EXPECT_EQ(vstream, preferred_seeking_stream(base::TimeDelta())); | 
| 1499 | 1502 | 
| 1500   // Now pretend that video stream got disabled, e.g. due to current tab going | 1503   // Now pretend that video stream got disabled, e.g. due to current tab going | 
| 1501   // into background. | 1504   // into background. | 
| 1502   vstream->set_enabled(false, base::TimeDelta()); | 1505   vstream->set_enabled(false, base::TimeDelta()); | 
| 1503   // Since there's no other enabled streams, the preferred seeking stream should | 1506   // Since there's no other enabled streams, the preferred seeking stream should | 
| 1504   // still be the video stream. | 1507   // still be the video stream. | 
| 1505   EXPECT_EQ(vstream, preferred_seeking_stream(base::TimeDelta())); | 1508   EXPECT_EQ(vstream, preferred_seeking_stream(base::TimeDelta())); | 
| 1506 } | 1509 } | 
| 1507 | 1510 | 
| 1508 TEST_F(FFmpegDemuxerTest, Seek_FallbackToDisabledAudioStream) { | 1511 TEST_F(FFmpegDemuxerTest, Seek_FallbackToDisabledAudioStream) { | 
| 1509   CreateDemuxer("bear-320x240-audio-only.webm"); | 1512   CreateDemuxer("bear-320x240-audio-only.webm"); | 
| 1510   InitializeDemuxer(); | 1513   InitializeDemuxer(); | 
| 1511   DemuxerStream* astream = GetStream(DemuxerStream::AUDIO); | 1514   FFmpegDemuxerStream* astream = | 
|  | 1515       static_cast<FFmpegDemuxerStream*>(GetStream(DemuxerStream::AUDIO)); | 
| 1512   EXPECT_NE(nullptr, astream); | 1516   EXPECT_NE(nullptr, astream); | 
| 1513   EXPECT_EQ(nullptr, GetStream(DemuxerStream::VIDEO)); | 1517   EXPECT_EQ(nullptr, GetStream(DemuxerStream::VIDEO)); | 
| 1514   EXPECT_EQ(astream, preferred_seeking_stream(base::TimeDelta())); | 1518   EXPECT_EQ(astream, preferred_seeking_stream(base::TimeDelta())); | 
| 1515 | 1519 | 
| 1516   // Now pretend that audio stream got disabled. | 1520   // Now pretend that audio stream got disabled. | 
| 1517   astream->set_enabled(false, base::TimeDelta()); | 1521   astream->set_enabled(false, base::TimeDelta()); | 
| 1518   // Since there's no other enabled streams, the preferred seeking stream should | 1522   // Since there's no other enabled streams, the preferred seeking stream should | 
| 1519   // still be the audio stream. | 1523   // still be the audio stream. | 
| 1520   EXPECT_EQ(astream, preferred_seeking_stream(base::TimeDelta())); | 1524   EXPECT_EQ(astream, preferred_seeking_stream(base::TimeDelta())); | 
| 1521 } | 1525 } | 
| 1522 | 1526 | 
| 1523 }  // namespace media | 1527 }  // namespace media | 
| OLD | NEW | 
|---|