summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-03 00:28:29 +0000
committerscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-03 00:28:29 +0000
commitf7b0633c3475362a1e6933277304df5b7e8af4c7 (patch)
tree051b41ac59e52b9e2f61a7dd7b870304e011a516 /media
parent4d5cbc3650a335b8bccb6fce4f4dd06360033066 (diff)
downloadchromium_src-f7b0633c3475362a1e6933277304df5b7e8af4c7.zip
chromium_src-f7b0633c3475362a1e6933277304df5b7e8af4c7.tar.gz
chromium_src-f7b0633c3475362a1e6933277304df5b7e8af4c7.tar.bz2
media::SeekableBuffer should use kNoTimestamp() instead of zero.
I noticed this while debugging bug 120396 that the reported time remained zero even after appending the initial audio buffer that has a timestamp of zero. BUG=none TEST=none Review URL: https://chromiumcodereview.appspot.com/10342005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@135050 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r--media/base/seekable_buffer.cc5
-rw-r--r--media/base/seekable_buffer_unittest.cc31
-rw-r--r--media/filters/audio_renderer_impl_unittest.cc5
3 files changed, 26 insertions, 15 deletions
diff --git a/media/base/seekable_buffer.cc b/media/base/seekable_buffer.cc
index b88153a..8cfcf98 100644
--- a/media/base/seekable_buffer.cc
+++ b/media/base/seekable_buffer.cc
@@ -61,7 +61,7 @@ bool SeekableBuffer::GetCurrentChunk(const uint8** data, int* size) const {
}
bool SeekableBuffer::Append(Buffer* buffer_in) {
- if (buffers_.empty() && buffer_in->GetTimestamp().InMicroseconds() > 0) {
+ if (buffers_.empty() && buffer_in->GetTimestamp() != kNoTimestamp()) {
current_time_ = buffer_in->GetTimestamp();
}
@@ -267,8 +267,7 @@ int SeekableBuffer::InternalRead(uint8* data, int size,
void SeekableBuffer::UpdateCurrentTime(BufferQueue::iterator buffer,
int offset) {
// Garbage values are unavoidable, so this check will remain.
- if (buffer != buffers_.end() &&
- (*buffer)->GetTimestamp().InMicroseconds() > 0) {
+ if (buffer != buffers_.end() && (*buffer)->GetTimestamp() != kNoTimestamp()) {
int64 time_offset = ((*buffer)->GetDuration().InMicroseconds() *
offset) / (*buffer)->GetDataSize();
diff --git a/media/base/seekable_buffer_unittest.cc b/media/base/seekable_buffer_unittest.cc
index 8d2e1dc..cc8cd09 100644
--- a/media/base/seekable_buffer_unittest.cc
+++ b/media/base/seekable_buffer_unittest.cc
@@ -291,22 +291,31 @@ TEST_F(SeekableBufferTest, AllMethods) {
TEST_F(SeekableBufferTest, GetTime) {
+ const int64 kNoTS = kNoTimestamp().ToInternalValue();
const struct {
int64 first_time_useconds;
int64 duration_useconds;
int consume_bytes;
int64 expected_time;
} tests[] = {
- // Timestamps of 0 are treated as garbage.
- { 0, 1000000, 0, kNoTimestamp().ToInternalValue() },
- { 0, 4000000, 0, kNoTimestamp().ToInternalValue() },
- { 0, 8000000, 0, kNoTimestamp().ToInternalValue() },
- { 0, 1000000, 4, kNoTimestamp().ToInternalValue() },
- { 0, 4000000, 4, kNoTimestamp().ToInternalValue() },
- { 0, 8000000, 4, kNoTimestamp().ToInternalValue() },
- { 0, 1000000, kWriteSize, kNoTimestamp().ToInternalValue() },
- { 0, 4000000, kWriteSize, kNoTimestamp().ToInternalValue() },
- { 0, 8000000, kWriteSize, kNoTimestamp().ToInternalValue() },
+ { kNoTS, 1000000, 0, kNoTS },
+ { kNoTS, 4000000, 0, kNoTS },
+ { kNoTS, 8000000, 0, kNoTS },
+ { kNoTS, 1000000, kWriteSize / 2, kNoTS },
+ { kNoTS, 4000000, kWriteSize / 2, kNoTS },
+ { kNoTS, 8000000, kWriteSize / 2, kNoTS },
+ { kNoTS, 1000000, kWriteSize, kNoTS },
+ { kNoTS, 4000000, kWriteSize, kNoTS },
+ { kNoTS, 8000000, kWriteSize, kNoTS },
+ { 0, 1000000, 0, 0 },
+ { 0, 4000000, 0, 0 },
+ { 0, 8000000, 0, 0 },
+ { 0, 1000000, kWriteSize / 2, 500000 },
+ { 0, 4000000, kWriteSize / 2, 2000000 },
+ { 0, 8000000, kWriteSize / 2, 4000000 },
+ { 0, 1000000, kWriteSize, 1000000 },
+ { 0, 4000000, kWriteSize, 4000000 },
+ { 0, 8000000, kWriteSize, 8000000 },
{ 5, 1000000, 0, 5 },
{ 5, 4000000, 0, 5 },
{ 5, 8000000, 0, 5 },
@@ -339,7 +348,7 @@ TEST_F(SeekableBufferTest, GetTime) {
EXPECT_EQ(tests[i].expected_time, actual) << "With test = { start:"
<< tests[i].first_time_useconds << ", duration:"
<< tests[i].duration_useconds << ", consumed:"
- << tests[i].consume_bytes << "}\n";
+ << tests[i].consume_bytes << " }\n";
buffer_.Clear();
}
diff --git a/media/filters/audio_renderer_impl_unittest.cc b/media/filters/audio_renderer_impl_unittest.cc
index 862b734..7dfd5db 100644
--- a/media/filters/audio_renderer_impl_unittest.cc
+++ b/media/filters/audio_renderer_impl_unittest.cc
@@ -63,6 +63,10 @@ class AudioRendererImplTest : public ::testing::Test {
.Times(AnyNumber());
EXPECT_CALL(*decoder_, samples_per_second())
.Times(AnyNumber());
+
+ // We'll pretend time never advances.
+ EXPECT_CALL(host_, GetTime())
+ .WillRepeatedly(Return(base::TimeDelta()));
}
virtual ~AudioRendererImplTest() {
@@ -370,7 +374,6 @@ TEST_F(AudioRendererImplTest, Underflow_EndOfStream) {
DeliverEndOfStream();
EXPECT_CALL(host_, NotifyEnded());
- EXPECT_CALL(host_, GetTime()).WillOnce(Return(base::TimeDelta()));
EXPECT_FALSE(ConsumeBufferedData(kDataSize, &muted));
EXPECT_FALSE(muted);
}