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

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: Created 7 years, 4 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..94859ecbfa32e500c6b3ddd942ed74a05f6d5a66 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,7 @@ WebMParserClient* WebMClusterParser::OnListStart(int id) {
block_data_.reset();
block_data_size_ = -1;
block_duration_ = -1;
+ discard_padding_ = -1;
} else if (id == kWebMIdBlockAdditions) {
block_add_id_ = -1;
block_additional_data_.reset();
@@ -158,13 +160,15 @@ 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_ = -1;
return result;
}
@@ -180,6 +184,9 @@ bool WebMClusterParser::OnUInt(int id, int64 val) {
case kWebMIdBlockAddID:
dst = &block_add_id_;
break;
+ case kWebMIdDiscardPadding:
+ dst = &discard_padding_;
+ break;
default:
return true;
}
@@ -191,7 +198,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 +227,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 +279,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 +360,10 @@ bool WebMClusterParser::OnBlock(bool is_simple_block, int track_num,
block_duration * timecode_multiplier_));
}
+ if (discard_padding >= 0) {
+ buffer->set_discard_padding(discard_padding);
+ }
+
return track->AddBuffer(buffer);
}

Powered by Google App Engine
This is Rietveld 408576698