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

Unified Diff: media/formats/webm/webm_cluster_parser.cc

Issue 149153002: MSE: Add StreamParser buffer remuxing utility and tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments from PS4 Created 6 years, 10 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
« no previous file with comments | « media/formats/webm/webm_cluster_parser.h ('k') | media/formats/webm/webm_cluster_parser_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/formats/webm/webm_cluster_parser.cc
diff --git a/media/formats/webm/webm_cluster_parser.cc b/media/formats/webm/webm_cluster_parser.cc
index 67e6d82576c9755e1b4a995da25645f8f8e7cc37..a762e2c40b34411594a5a30f0438e36f96d31a57 100644
--- a/media/formats/webm/webm_cluster_parser.cc
+++ b/media/formats/webm/webm_cluster_parser.cc
@@ -292,7 +292,7 @@ bool WebMClusterParser::OnBlock(bool is_simple_block, int track_num,
}
Track* track = NULL;
- bool is_text = false;
+ StreamParserBuffer::Type buffer_type = DemuxerStream::AUDIO;
std::string encryption_key_id;
if (track_num == audio_.track_num()) {
track = &audio_;
@@ -300,6 +300,7 @@ bool WebMClusterParser::OnBlock(bool is_simple_block, int track_num,
} else if (track_num == video_.track_num()) {
track = &video_;
encryption_key_id = video_encryption_key_id_;
+ buffer_type = DemuxerStream::VIDEO;
} else if (ignored_tracks_.find(track_num) != ignored_tracks_.end()) {
return true;
} else if (Track* const text_track = FindTextTrack(track_num)) {
@@ -308,7 +309,7 @@ bool WebMClusterParser::OnBlock(bool is_simple_block, int track_num,
if (block_duration < 0) // not specified
return false;
track = text_track;
- is_text = true;
+ buffer_type = DemuxerStream::TEXT;
} else {
MEDIA_LOG(log_cb_) << "Unexpected track number " << track_num;
return false;
@@ -320,7 +321,7 @@ bool WebMClusterParser::OnBlock(bool is_simple_block, int track_num,
(cluster_timecode_ + timecode) * timecode_multiplier_);
scoped_refptr<StreamParserBuffer> buffer;
- if (!is_text) {
+ if (buffer_type != DemuxerStream::TEXT) {
// The first bit of the flags is set when a SimpleBlock contains only
// keyframes. If this is a Block, then inspection of the payload is
// necessary to determine whether it contains a keyframe or not.
@@ -342,10 +343,13 @@ bool WebMClusterParser::OnBlock(bool is_simple_block, int track_num,
return false;
}
+ // TODO(wolenetz/acolwell): Validate and use a common cross-parser TrackId
+ // type with remapped bytestream track numbers and allow multiple tracks as
+ // applicable. See https://crbug.com/341581.
buffer = StreamParserBuffer::CopyFrom(
data + data_offset, size - data_offset,
additional, additional_size,
- is_keyframe);
+ is_keyframe, buffer_type, track_num);
if (decrypt_config)
buffer->set_decrypt_config(decrypt_config.Pass());
@@ -358,12 +362,15 @@ bool WebMClusterParser::OnBlock(bool is_simple_block, int track_num,
settings.begin(), settings.end(),
&side_data);
+ // TODO(wolenetz/acolwell): Validate and use a common cross-parser TrackId
+ // type with remapped bytestream track numbers and allow multiple tracks as
+ // applicable. See https://crbug.com/341581.
buffer = StreamParserBuffer::CopyFrom(
reinterpret_cast<const uint8*>(content.data()),
content.length(),
&side_data[0],
side_data.size(),
- true);
+ true, buffer_type, track_num);
}
buffer->set_timestamp(timestamp);
« no previous file with comments | « media/formats/webm/webm_cluster_parser.h ('k') | media/formats/webm/webm_cluster_parser_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698