Index: media/webm/webm_cluster_parser.cc |
diff --git a/media/webm/webm_cluster_parser.cc b/media/webm/webm_cluster_parser.cc |
index be5e724c14af8d4f0dc23c4f1d98b7e401a031be..c5a2fdc598237800758df3d8e88acdefc914cff4 100644 |
--- a/media/webm/webm_cluster_parser.cc |
+++ b/media/webm/webm_cluster_parser.cc |
@@ -46,8 +46,8 @@ void WebMClusterParser::Reset() { |
} |
int WebMClusterParser::Parse(const uint8* buf, int size) { |
- audio_.ClearBufferQueue(); |
- video_.ClearBufferQueue(); |
+ audio_.Reset(); |
+ video_.Reset(); |
int result = parser_.Parse(buf, size); |
@@ -231,84 +231,18 @@ WebMClusterParser::Track::~Track() {} |
bool WebMClusterParser::Track::AddBuffer( |
const scoped_refptr<StreamParserBuffer>& buffer) { |
- if (!buffers_.empty() && |
- buffer->GetTimestamp() == buffers_.back()->GetTimestamp()) { |
- DVLOG(1) << "Got a block timecode that is not strictly monotonically " |
- << "increasing for track " << track_num_; |
- return false; |
- } |
- |
- if (!delayed_buffers_.empty()) { |
- // Update the duration of the delayed buffer and place it into the queue. |
- scoped_refptr<StreamParserBuffer> delayed_buffer = delayed_buffers_.front(); |
- |
- // If we get another buffer with the same timestamp, put it in the delay |
- // queue. |
- if (buffer->GetTimestamp() == delayed_buffer->GetTimestamp()) { |
- delayed_buffers_.push_back(buffer); |
- |
- // If this buffer happens to have a duration, use it to set the |
- // duration on all the other buffers in the queue. |
- if (buffer->GetDuration() != kNoTimestamp()) |
- SetDelayedBufferDurations(buffer->GetDuration()); |
- |
- return true; |
- } |
- |
- base::TimeDelta new_duration = |
- buffer->GetTimestamp() - delayed_buffer->GetTimestamp(); |
- |
- if (new_duration < base::TimeDelta()) { |
- DVLOG(1) << "Detected out of order timestamps."; |
- return false; |
- } |
- |
- SetDelayedBufferDurations(new_duration); |
- } |
- |
- // Place the buffer in delayed buffer slot if we don't know |
- // its duration. |
- if (buffer->GetDuration() == kNoTimestamp()) { |
- delayed_buffers_.push_back(buffer); |
- return true; |
- } |
- |
- AddToBufferQueue(buffer); |
- return true; |
-} |
- |
-void WebMClusterParser::Track::Reset() { |
- buffers_.clear(); |
- delayed_buffers_.clear(); |
-} |
- |
-void WebMClusterParser::Track::ClearBufferQueue() { |
- buffers_.clear(); |
-} |
- |
-void WebMClusterParser::Track::SetDelayedBufferDurations( |
- base::TimeDelta duration) { |
- |
- for (BufferQueue::iterator itr = delayed_buffers_.begin(); |
- itr < delayed_buffers_.end(); ++itr) { |
- (*itr)->SetDuration(duration); |
- |
- AddToBufferQueue(*itr); |
- } |
- delayed_buffers_.clear(); |
-} |
- |
-void WebMClusterParser::Track::AddToBufferQueue( |
- const scoped_refptr<StreamParserBuffer>& buffer) { |
- DCHECK(buffer->GetDuration() > base::TimeDelta()); |
- |
- DVLOG(2) << "AddToBufferQueue() : " << track_num_ |
+ DVLOG(2) << "AddBuffer() : " << track_num_ |
<< " ts " << buffer->GetTimestamp().InSecondsF() |
<< " dur " << buffer->GetDuration().InSecondsF() |
<< " kf " << buffer->IsKeyframe() |
<< " size " << buffer->GetDataSize(); |
buffers_.push_back(buffer); |
+ return true; |
+} |
+ |
+void WebMClusterParser::Track::Reset() { |
+ buffers_.clear(); |
} |
} // namespace media |