Index: media/formats/webm/webm_stream_parser.cc |
diff --git a/media/formats/webm/webm_stream_parser.cc b/media/formats/webm/webm_stream_parser.cc |
index eae0371f0654960b1c54a209836b1e3f0cd3c431..1a49c6694b2254953cbe05d52731c5240e3a2874 100644 |
--- a/media/formats/webm/webm_stream_parser.cc |
+++ b/media/formats/webm/webm_stream_parser.cc |
@@ -180,11 +180,11 @@ int WebMStreamParser::ParseInfoAndTracks(const uint8* data, int size) { |
bytes_parsed += result; |
+ double timecode_scale_in_us = info_parser.timecode_scale() / 1000.0; |
base::TimeDelta duration = kInfiniteDuration(); |
if (info_parser.duration() > 0) { |
- double mult = info_parser.timecode_scale() / 1000.0; |
- int64 duration_in_us = info_parser.duration() * mult; |
+ int64 duration_in_us = info_parser.duration() * timecode_scale_in_us; |
duration = base::TimeDelta::FromMicroseconds(duration_in_us); |
} |
@@ -203,10 +203,13 @@ int WebMStreamParser::ParseInfoAndTracks(const uint8* data, int size) { |
return -1; |
} |
+ |
cluster_parser_.reset(new WebMClusterParser( |
info_parser.timecode_scale(), |
tracks_parser.audio_track_num(), |
+ tracks_parser.GetAudioDefaultDuration(timecode_scale_in_us), |
tracks_parser.video_track_num(), |
+ tracks_parser.GetVideoDefaultDuration(timecode_scale_in_us), |
tracks_parser.text_tracks(), |
tracks_parser.ignored_tracks(), |
tracks_parser.audio_encryption_key_id(), |
@@ -263,9 +266,10 @@ int WebMStreamParser::ParseCluster(const uint8* data, int size) { |
new_segment_cb_.Run(); |
} |
- const BufferQueue& audio_buffers = cluster_parser_->audio_buffers(); |
- const BufferQueue& video_buffers = cluster_parser_->video_buffers(); |
+ const BufferQueue& audio_buffers = cluster_parser_->GetAudioBuffers(); |
+ const BufferQueue& video_buffers = cluster_parser_->GetVideoBuffers(); |
const TextBufferQueueMap& text_map = cluster_parser_->GetTextBuffers(); |
+ |
bool cluster_ended = cluster_parser_->cluster_ended(); |
if ((!audio_buffers.empty() || !video_buffers.empty() || !text_map.empty()) && |