| Index: Source/modules/mediasource/SourceBuffer.cpp
|
| diff --git a/Source/modules/mediasource/SourceBuffer.cpp b/Source/modules/mediasource/SourceBuffer.cpp
|
| index 3f9bbf97b7ac9d4c9188c45eccb459d9880f1c03..d3c03c0c6b597c2b09224ec28a1b1c4e657b1cd3 100644
|
| --- a/Source/modules/mediasource/SourceBuffer.cpp
|
| +++ b/Source/modules/mediasource/SourceBuffer.cpp
|
| @@ -483,6 +483,13 @@ void SourceBuffer::scheduleEvent(const AtomicString& eventName)
|
| m_asyncEventQueue->enqueueEvent(event.release());
|
| }
|
|
|
| +void SourceBuffer::updateTimestampOffsetIfNecessary()
|
| +{
|
| + double offset = m_webSourceBuffer->updatedTimestampOffset();
|
| + if (!std::isnan(offset))
|
| + m_timestampOffset = offset;
|
| +}
|
| +
|
| void SourceBuffer::appendBufferInternal(const unsigned char* data, unsigned size, ExceptionState& exceptionState)
|
| {
|
| // Section 3.2 appendBuffer()
|
| @@ -536,6 +543,10 @@ void SourceBuffer::appendBufferAsyncPart()
|
| }
|
| m_webSourceBuffer->append(m_pendingAppendData.data(), appendSize);
|
|
|
| + // Update our cached |m_timestampOffset| since the implementation may change
|
| + // it during append() processing.
|
| + updateTimestampOffsetIfNecessary();
|
| +
|
| // 3. Set the updating attribute to false.
|
| m_updating = false;
|
| m_pendingAppendData.clear();
|
| @@ -690,6 +701,10 @@ void SourceBuffer::didReceiveDataForClient(const char* data, unsigned dataLength
|
| ASSERT(m_loader);
|
|
|
| m_webSourceBuffer->append(reinterpret_cast<const unsigned char*>(data), dataLength);
|
| +
|
| + // Update our cached |m_timestampOffset| since the implementation may change
|
| + // it during append() processing.
|
| + updateTimestampOffsetIfNecessary();
|
| }
|
|
|
| void SourceBuffer::didFinishLoading()
|
|
|