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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "media/base/audio_decoder_config.h" | 6 #include "media/base/audio_decoder_config.h" |
7 #include "media/base/decoder_buffer.h" | 7 #include "media/base/decoder_buffer.h" |
8 #include "media/base/mock_callback.h" | 8 #include "media/base/mock_callback.h" |
9 #include "media/base/mock_demuxer_host.h" | 9 #include "media/base/mock_demuxer_host.h" |
10 #include "media/base/test_data_util.h" | 10 #include "media/base/test_data_util.h" |
(...skipping 1783 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1794 demuxer_->GetStream(DemuxerStream::VIDEO); | 1794 demuxer_->GetStream(DemuxerStream::VIDEO); |
1795 | 1795 |
1796 GenerateExpectedReads(0, 4, audio, video); | 1796 GenerateExpectedReads(0, 4, audio, video); |
1797 GenerateExpectedReads(46, 66, 5, audio, video); | 1797 GenerateExpectedReads(46, 66, 5, audio, video); |
1798 | 1798 |
1799 EndOfStreamHelper end_of_stream_helper(demuxer_); | 1799 EndOfStreamHelper end_of_stream_helper(demuxer_); |
1800 end_of_stream_helper.RequestReads(); | 1800 end_of_stream_helper.RequestReads(); |
1801 end_of_stream_helper.CheckIfReadDonesWereCalled(true); | 1801 end_of_stream_helper.CheckIfReadDonesWereCalled(true); |
1802 } | 1802 } |
1803 | 1803 |
1804 TEST_F(ChunkDemuxerTest, TestTimestampPositiveOffset) { | |
1805 ASSERT_TRUE(InitDemuxer(true, true, false)); | |
1806 | |
1807 demuxer_->SetTimestampOffset(kSourceId, 30); | |
acolwell GONE FROM CHROMIUM
2012/07/25 18:22:43
nit: ASSERT_TRUE() here and below.
vrk (LEFT CHROMIUM)
2012/07/25 22:56:50
Done.
| |
1808 scoped_ptr<Cluster> cluster(GenerateCluster(0, 2)); | |
1809 ASSERT_TRUE(AppendData(cluster->data(), cluster->size())); | |
1810 | |
1811 scoped_refptr<DemuxerStream> audio = | |
1812 demuxer_->GetStream(DemuxerStream::AUDIO); | |
1813 scoped_refptr<DemuxerStream> video = | |
1814 demuxer_->GetStream(DemuxerStream::VIDEO); | |
1815 | |
1816 bool audio_read_done = false; | |
1817 bool video_read_done = false; | |
1818 audio->Read(base::Bind(&OnReadDone, | |
acolwell GONE FROM CHROMIUM
2012/07/25 18:22:43
nit: I think using GenerateExpectedReads(30000, 2,
vrk (LEFT CHROMIUM)
2012/07/25 22:56:50
Done.
| |
1819 base::TimeDelta::FromSeconds(30), | |
1820 &audio_read_done)); | |
1821 video->Read(base::Bind(&OnReadDone, | |
1822 base::TimeDelta::FromSeconds(30), | |
1823 &video_read_done)); | |
1824 | |
1825 EXPECT_TRUE(audio_read_done); | |
1826 EXPECT_TRUE(video_read_done); | |
1827 } | |
1828 | |
1829 TEST_F(ChunkDemuxerTest, TestTimestampNegativeOffset) { | |
1830 ASSERT_TRUE(InitDemuxer(true, true, false)); | |
1831 | |
1832 demuxer_->SetTimestampOffset(kSourceId, -1); | |
1833 scoped_ptr<Cluster> cluster = GenerateCluster(1000, 2); | |
1834 ASSERT_TRUE(AppendData(cluster->data(), cluster->size())); | |
1835 | |
1836 scoped_refptr<DemuxerStream> audio = | |
1837 demuxer_->GetStream(DemuxerStream::AUDIO); | |
1838 scoped_refptr<DemuxerStream> video = | |
1839 demuxer_->GetStream(DemuxerStream::VIDEO); | |
1840 | |
1841 bool audio_read_done = false; | |
1842 bool video_read_done = false; | |
1843 audio->Read(base::Bind(&OnReadDone, | |
acolwell GONE FROM CHROMIUM
2012/07/25 18:22:43
nit: ditto w/ different timestamp
vrk (LEFT CHROMIUM)
2012/07/25 22:56:50
Done.
| |
1844 base::TimeDelta::FromSeconds(0), | |
1845 &audio_read_done)); | |
1846 video->Read(base::Bind(&OnReadDone, | |
1847 base::TimeDelta::FromSeconds(0), | |
1848 &video_read_done)); | |
1849 | |
1850 EXPECT_TRUE(audio_read_done); | |
1851 EXPECT_TRUE(video_read_done); | |
1852 } | |
1853 | |
1854 TEST_F(ChunkDemuxerTest, TestTimestampOffsetSeparateStreams) { | |
1855 std::string audio_id = "audio1"; | |
1856 std::string video_id = "video1"; | |
1857 ASSERT_TRUE(InitDemuxerAudioAndVideoSources(audio_id, video_id)); | |
1858 | |
1859 scoped_refptr<DemuxerStream> audio = | |
1860 demuxer_->GetStream(DemuxerStream::AUDIO); | |
1861 scoped_refptr<DemuxerStream> video = | |
1862 demuxer_->GetStream(DemuxerStream::VIDEO); | |
1863 | |
1864 scoped_ptr<Cluster> cluster_a( | |
1865 GenerateSingleStreamCluster( | |
1866 2500, 2500 + kAudioBlockDuration * 4, kAudioTrackNum, | |
1867 kAudioBlockDuration)); | |
1868 | |
1869 scoped_ptr<Cluster> cluster_v( | |
1870 GenerateSingleStreamCluster( | |
1871 0, kVideoBlockDuration * 4, kVideoTrackNum, kVideoBlockDuration)); | |
1872 | |
1873 demuxer_->SetTimestampOffset(audio_id, -2.5f); | |
1874 ASSERT_TRUE(AppendData(audio_id, cluster_a->data(), cluster_a->size())); | |
1875 GenerateSingleStreamExpectedReads(0, 4, audio, kAudioBlockDuration); | |
1876 | |
1877 demuxer_->SetTimestampOffset(video_id, 27.3f); | |
1878 ASSERT_TRUE(AppendData(video_id, cluster_v->data(), cluster_v->size())); | |
1879 GenerateSingleStreamExpectedReads(27300, 4, video, kVideoBlockDuration); | |
1880 } | |
1804 } // namespace media | 1881 } // namespace media |
acolwell GONE FROM CHROMIUM
2012/07/25 18:22:43
nit: Add a test for rejecting an offset change mid
vrk (LEFT CHROMIUM)
2012/07/25 22:56:50
Good idea, done.
| |
OLD | NEW |