Chromium Code Reviews| 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 "media/filters/source_buffer_stream.h" | 5 #include "media/filters/source_buffer_stream.h" |
| 6 | 6 |
| 7 #include <string> | |
| 8 | |
| 7 #include "base/logging.h" | 9 #include "base/logging.h" |
| 8 #include "media/base/data_buffer.h" | 10 #include "media/base/data_buffer.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 12 |
| 11 namespace media { | 13 namespace media { |
| 12 | 14 |
| 13 static const int kDefaultFramesPerSecond = 30; | 15 static const int kDefaultFramesPerSecond = 30; |
| 14 static const int kDefaultKeyframesPerSecond = 6; | 16 static const int kDefaultKeyframesPerSecond = 6; |
| 15 static const uint8 kDataA = 0x11; | 17 static const uint8 kDataA = 0x11; |
| 16 static const uint8 kDataB = 0x33; | 18 static const uint8 kDataB = 0x33; |
| 17 static const int kDataSize = 1; | 19 static const int kDataSize = 1; |
| 18 static const gfx::Size kCodedSize(320, 240); | 20 static const gfx::Size kCodedSize(320, 240); |
| 19 | 21 |
| 20 class SourceBufferStreamTest : public testing::Test { | 22 class SourceBufferStreamTest : public testing::Test { |
| 21 protected: | 23 protected: |
| 22 SourceBufferStreamTest() { | 24 SourceBufferStreamTest() { |
| 23 config_.Initialize(kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN, | 25 config_.Initialize(kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN, |
| 24 VideoFrame::YV12, kCodedSize, gfx::Rect(kCodedSize), | 26 VideoFrame::YV12, kCodedSize, gfx::Rect(kCodedSize), |
| 25 kCodedSize, NULL, 0, false); | 27 kCodedSize, NULL, 0, false, false); |
| 26 stream_.reset(new SourceBufferStream(config_)); | 28 stream_.reset(new SourceBufferStream(config_)); |
| 27 SetStreamInfo(kDefaultFramesPerSecond, kDefaultKeyframesPerSecond); | 29 SetStreamInfo(kDefaultFramesPerSecond, kDefaultKeyframesPerSecond); |
| 28 } | 30 } |
| 29 | 31 |
| 30 void SetMemoryLimit(int buffers_of_data) { | 32 void SetMemoryLimit(int buffers_of_data) { |
| 31 stream_->set_memory_limit(buffers_of_data * kDataSize); | 33 stream_->set_memory_limit(buffers_of_data * kDataSize); |
| 32 } | 34 } |
| 33 | 35 |
| 34 void SetStreamInfo(int frames_per_second, int keyframes_per_second) { | 36 void SetStreamInfo(int frames_per_second, int keyframes_per_second) { |
| 35 frames_per_second_ = frames_per_second; | 37 frames_per_second_ = frames_per_second; |
| (...skipping 1794 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1830 // Fulfill the seek by appending one buffer at 15. | 1832 // Fulfill the seek by appending one buffer at 15. |
| 1831 NewSegmentAppend(15, 1, &kDataA); | 1833 NewSegmentAppend(15, 1, &kDataA); |
| 1832 CheckExpectedBuffers(15, 15, &kDataA); | 1834 CheckExpectedBuffers(15, 15, &kDataA); |
| 1833 CheckExpectedRanges("{ [15,15) [20,28) }"); | 1835 CheckExpectedRanges("{ [15,15) [20,28) }"); |
| 1834 } | 1836 } |
| 1835 | 1837 |
| 1836 TEST_F(SourceBufferStreamTest, ConfigChange_Basic) { | 1838 TEST_F(SourceBufferStreamTest, ConfigChange_Basic) { |
| 1837 gfx::Size kNewCodedSize(kCodedSize.width() * 2, kCodedSize.height() * 2); | 1839 gfx::Size kNewCodedSize(kCodedSize.width() * 2, kCodedSize.height() * 2); |
| 1838 VideoDecoderConfig new_config( | 1840 VideoDecoderConfig new_config( |
| 1839 kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN, VideoFrame::YV12, kNewCodedSize, | 1841 kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN, VideoFrame::YV12, kNewCodedSize, |
| 1840 gfx::Rect(kNewCodedSize), kNewCodedSize, NULL, 0); | 1842 gfx::Rect(kNewCodedSize), kNewCodedSize, NULL, false, false); |
|
acolwell GONE FROM CHROMIUM
2012/09/17 17:41:17
Should be 0, false
xhwang
2012/09/17 19:42:25
Done.
| |
| 1841 ASSERT_FALSE(new_config.Matches(config_)); | 1843 ASSERT_FALSE(new_config.Matches(config_)); |
| 1842 | 1844 |
| 1843 Seek(0); | 1845 Seek(0); |
| 1844 CheckConfig(config_); | 1846 CheckConfig(config_); |
| 1845 | 1847 |
| 1846 // Append 5 buffers at positions 0 through 4 | 1848 // Append 5 buffers at positions 0 through 4 |
| 1847 NewSegmentAppend(0, 5, &kDataA); | 1849 NewSegmentAppend(0, 5, &kDataA); |
| 1848 | 1850 |
| 1849 CheckConfig(config_); | 1851 CheckConfig(config_); |
| 1850 | 1852 |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 1877 CheckConfig(new_config); | 1879 CheckConfig(new_config); |
| 1878 EXPECT_EQ(stream_->GetNextBuffer(&buffer), SourceBufferStream::kSuccess); | 1880 EXPECT_EQ(stream_->GetNextBuffer(&buffer), SourceBufferStream::kSuccess); |
| 1879 } | 1881 } |
| 1880 } | 1882 } |
| 1881 | 1883 |
| 1882 TEST_F(SourceBufferStreamTest, ConfigChange_Seek) { | 1884 TEST_F(SourceBufferStreamTest, ConfigChange_Seek) { |
| 1883 scoped_refptr<StreamParserBuffer> buffer; | 1885 scoped_refptr<StreamParserBuffer> buffer; |
| 1884 gfx::Size kNewCodedSize(kCodedSize.width() * 2, kCodedSize.height() * 2); | 1886 gfx::Size kNewCodedSize(kCodedSize.width() * 2, kCodedSize.height() * 2); |
| 1885 VideoDecoderConfig new_config( | 1887 VideoDecoderConfig new_config( |
| 1886 kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN, VideoFrame::YV12, kNewCodedSize, | 1888 kCodecVP8, VIDEO_CODEC_PROFILE_UNKNOWN, VideoFrame::YV12, kNewCodedSize, |
| 1887 gfx::Rect(kNewCodedSize), kNewCodedSize, NULL, 0); | 1889 gfx::Rect(kNewCodedSize), kNewCodedSize, NULL, false, false); |
|
acolwell GONE FROM CHROMIUM
2012/09/17 17:41:17
Should be 0, false
xhwang
2012/09/17 19:42:25
Done.
| |
| 1888 | 1890 |
| 1889 Seek(0); | 1891 Seek(0); |
| 1890 NewSegmentAppend(0, 5, &kDataA); | 1892 NewSegmentAppend(0, 5, &kDataA); |
| 1891 stream_->UpdateVideoConfig(new_config); | 1893 stream_->UpdateVideoConfig(new_config); |
| 1892 NewSegmentAppend(5, 5, &kDataB); | 1894 NewSegmentAppend(5, 5, &kDataB); |
| 1893 | 1895 |
| 1894 // Seek to the start of the buffers with the new config and make sure a | 1896 // Seek to the start of the buffers with the new config and make sure a |
| 1895 // config change is signalled. | 1897 // config change is signalled. |
| 1896 CheckConfig(config_); | 1898 CheckConfig(config_); |
| 1897 Seek(5); | 1899 Seek(5); |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2043 CheckExpectedRanges("{ [0,4) [10,10) }"); | 2045 CheckExpectedRanges("{ [0,4) [10,10) }"); |
| 2044 } | 2046 } |
| 2045 | 2047 |
| 2046 // TODO(vrk): Add unit tests where keyframes are unaligned between streams. | 2048 // TODO(vrk): Add unit tests where keyframes are unaligned between streams. |
| 2047 // (crbug.com/133557) | 2049 // (crbug.com/133557) |
| 2048 | 2050 |
| 2049 // TODO(vrk): Add unit tests with end of stream being called at interesting | 2051 // TODO(vrk): Add unit tests with end of stream being called at interesting |
| 2050 // times. | 2052 // times. |
| 2051 | 2053 |
| 2052 } // namespace media | 2054 } // namespace media |
| OLD | NEW |