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 f39a8e3212e140cf731eb082065ae8cf3ac8c5db..fcb55deed365b6c0ab464de77e275c9e5a7bef2e 100644 |
--- a/media/formats/webm/webm_stream_parser.cc |
+++ b/media/formats/webm/webm_stream_parser.cc |
@@ -28,7 +28,7 @@ WebMStreamParser::~WebMStreamParser() { |
void WebMStreamParser::Init(const InitCB& init_cb, |
const NewConfigCB& config_cb, |
const NewBuffersCB& new_buffers_cb, |
- const NewTextBuffersCB& text_cb, |
+ bool ignore_text_tracks, |
const NeedKeyCB& need_key_cb, |
const NewMediaSegmentCB& new_segment_cb, |
const base::Closure& end_of_segment_cb, |
@@ -46,7 +46,7 @@ void WebMStreamParser::Init(const InitCB& init_cb, |
init_cb_ = init_cb; |
config_cb_ = config_cb; |
new_buffers_cb_ = new_buffers_cb; |
- text_cb_ = text_cb; |
+ ignore_text_tracks_ = ignore_text_tracks; |
need_key_cb_ = need_key_cb; |
new_segment_cb_ = new_segment_cb; |
end_of_segment_cb_ = end_of_segment_cb; |
@@ -171,7 +171,7 @@ int WebMStreamParser::ParseInfoAndTracks(const uint8* data, int size) { |
cur_size -= result; |
bytes_parsed += result; |
- WebMTracksParser tracks_parser(log_cb_, text_cb_.is_null()); |
+ WebMTracksParser tracks_parser(log_cb_, ignore_text_tracks_); |
result = tracks_parser.Parse(cur, cur_size); |
if (result <= 0) |
@@ -266,24 +266,14 @@ int WebMStreamParser::ParseCluster(const uint8* data, int size) { |
const BufferQueue& audio_buffers = cluster_parser_->audio_buffers(); |
const BufferQueue& video_buffers = cluster_parser_->video_buffers(); |
+ const TextBufferQueueMap& text_map = cluster_parser_->GetTextBuffers(); |
bool cluster_ended = cluster_parser_->cluster_ended(); |
- if ((!audio_buffers.empty() || !video_buffers.empty()) && |
- !new_buffers_cb_.Run(audio_buffers, video_buffers)) { |
+ if ((!audio_buffers.empty() || !video_buffers.empty() || !text_map.empty()) && |
+ !new_buffers_cb_.Run(audio_buffers, video_buffers, text_map)) { |
return -1; |
} |
- WebMClusterParser::TextTrackIterator text_track_iter = |
- cluster_parser_->CreateTextTrackIterator(); |
- |
- int text_track_num; |
- const BufferQueue* text_buffers; |
- |
- while (text_track_iter(&text_track_num, &text_buffers)) { |
- if (!text_buffers->empty() && !text_cb_.Run(text_track_num, *text_buffers)) |
- return -1; |
- } |
- |
if (cluster_ended) { |
parsing_cluster_ = false; |
end_of_segment_cb_.Run(); |