Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Unified Diff: media/webm/webm_cluster_parser.cc

Issue 10692053: Remove buffer duration calculation from WebMClusterParser and update SourceBufferStream accordingly (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase ToT Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..4187e2322a9702eedb82cf5bd0d6f5ab69455e2a 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,77 +231,6 @@ 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_
acolwell GONE FROM CHROMIUM 2012/07/09 18:15:55 nit: s/AddToBufferQueue/AddBuffer
vrk (LEFT CHROMIUM) 2012/07/10 00:05:33 Done.
<< " ts " << buffer->GetTimestamp().InSecondsF()
<< " dur " << buffer->GetDuration().InSecondsF()
@@ -309,6 +238,11 @@ void WebMClusterParser::Track::AddToBufferQueue(
<< " size " << buffer->GetDataSize();
buffers_.push_back(buffer);
+ return true;
+}
+
+void WebMClusterParser::Track::Reset() {
+ buffers_.clear();
}
} // namespace media
« media/filters/source_buffer_stream_unittest.cc ('K') | « media/webm/webm_cluster_parser.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698