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

Unified Diff: media/webm/webm_cluster_parser.cc

Issue 23014009: media: Opus support for WebM in Media Source (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase and addressing comments Created 7 years, 3 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 9991d6b4d15a3fec60a407d84e59a1417b50dafc..1778a3ae267dd8bc358181d512c7b331dccc01eb 100644
--- a/media/webm/webm_cluster_parser.cc
+++ b/media/webm/webm_cluster_parser.cc
@@ -64,6 +64,7 @@ WebMClusterParser::WebMClusterParser(
block_duration_(-1),
block_add_id_(-1),
block_additional_data_size_(-1),
+ discard_padding_(-1),
cluster_timecode_(-1),
cluster_start_time_(kNoTimestamp()),
cluster_ended_(false),
@@ -137,6 +138,8 @@ WebMParserClient* WebMClusterParser::OnListStart(int id) {
block_data_.reset();
block_data_size_ = -1;
block_duration_ = -1;
+ discard_padding_ = -1;
+ discard_padding_set_ = false;
} else if (id == kWebMIdBlockAdditions) {
block_add_id_ = -1;
block_additional_data_.reset();
@@ -158,13 +161,16 @@ bool WebMClusterParser::OnListEnd(int id) {
bool result = ParseBlock(false, block_data_.get(), block_data_size_,
block_additional_data_.get(),
- block_additional_data_size_, block_duration_);
+ block_additional_data_size_, block_duration_,
+ discard_padding_);
block_data_.reset();
block_data_size_ = -1;
block_duration_ = -1;
block_add_id_ = -1;
block_additional_data_.reset();
block_additional_data_size_ = -1;
+ discard_padding_ = discard_padding_set_ ? discard_padding_ : 0;
acolwell GONE FROM CHROMIUM 2013/09/04 20:08:43 nit: Sorry if I wasn't clear. I meant to place thi
vignesh 2013/09/04 20:27:46 Done.
+ discard_padding_set_ = false;
return result;
}
@@ -180,6 +186,12 @@ bool WebMClusterParser::OnUInt(int id, int64 val) {
case kWebMIdBlockAddID:
dst = &block_add_id_;
break;
+ case kWebMIdDiscardPadding:
+ if (discard_padding_set_)
+ return false;
+ discard_padding_set_ = true;
+ discard_padding_ = val;
+ return true;
default:
return true;
}
@@ -191,7 +203,8 @@ bool WebMClusterParser::OnUInt(int id, int64 val) {
bool WebMClusterParser::ParseBlock(bool is_simple_block, const uint8* buf,
int size, const uint8* additional,
- int additional_size, int duration) {
+ int additional_size, int duration,
+ int64 discard_padding) {
if (size < 4)
return false;
@@ -219,13 +232,14 @@ bool WebMClusterParser::ParseBlock(bool is_simple_block, const uint8* buf,
const uint8* frame_data = buf + 4;
int frame_size = size - (frame_data - buf);
return OnBlock(is_simple_block, track_num, timecode, duration, flags,
- frame_data, frame_size, additional, additional_size);
+ frame_data, frame_size, additional, additional_size,
+ discard_padding);
}
bool WebMClusterParser::OnBinary(int id, const uint8* data, int size) {
switch (id) {
case kWebMIdSimpleBlock:
- return ParseBlock(true, data, size, NULL, -1, -1);
+ return ParseBlock(true, data, size, NULL, -1, -1, -1);
case kWebMIdBlock:
if (block_data_) {
@@ -270,7 +284,8 @@ bool WebMClusterParser::OnBlock(bool is_simple_block, int track_num,
int block_duration,
int flags,
const uint8* data, int size,
- const uint8* additional, int additional_size) {
+ const uint8* additional, int additional_size,
+ int64 discard_padding) {
DCHECK_GE(size, 0);
if (cluster_timecode_ == -1) {
MEDIA_LOG(log_cb_) << "Got a block before cluster timecode.";
@@ -350,6 +365,11 @@ bool WebMClusterParser::OnBlock(bool is_simple_block, int track_num,
block_duration * timecode_multiplier_));
}
+ if (discard_padding != 0) {
+ buffer->set_discard_padding(base::TimeDelta::FromMicroseconds(
+ discard_padding / 1000));
+ }
+
return track->AddBuffer(buffer);
}

Powered by Google App Engine
This is Rietveld 408576698