Chromium Code Reviews| Index: media/webm/webm_stream_parser.cc |
| diff --git a/media/webm/webm_stream_parser.cc b/media/webm/webm_stream_parser.cc |
| index 514a6d0bfaee80e8133a10c84d6bfd62a73b4e78..3e790538fb26e7b981051431cdc0c086c5c414a8 100644 |
| --- a/media/webm/webm_stream_parser.cc |
| +++ b/media/webm/webm_stream_parser.cc |
| @@ -29,6 +29,8 @@ void WebMStreamParser::Init(const InitCB& init_cb, |
| const NewBuffersCB& audio_cb, |
| const NewBuffersCB& video_cb, |
| const NeedKeyCB& need_key_cb, |
| + const TextTrackCB& text_track_cb, |
| + const NewBuffersCB& text_cb, |
| const NewMediaSegmentCB& new_segment_cb, |
| const base::Closure& end_of_segment_cb, |
| const LogCB& log_cb) { |
| @@ -47,6 +49,8 @@ void WebMStreamParser::Init(const InitCB& init_cb, |
| audio_cb_ = audio_cb; |
| video_cb_ = video_cb; |
| need_key_cb_ = need_key_cb; |
| + text_track_cb_ = text_track_cb; |
| + text_cb_ = text_cb; |
| new_segment_cb_ = new_segment_cb; |
| end_of_segment_cb_ = end_of_segment_cb; |
| log_cb_ = log_cb; |
| @@ -198,6 +202,13 @@ int WebMStreamParser::ParseInfoAndTracks(const uint8* data, int size) { |
| return -1; |
| } |
| + const std::set<int>& text_tracks = tracks_parser.text_tracks(); |
| + |
| + if (!text_tracks.empty()) { |
| + // TODO(matthewjheaney): resolve cardinality, and track kind, name, lang |
| + text_track_cb_.Run(kTextSubtitles, "", ""); |
|
acolwell GONE FROM CHROMIUM
2013/04/05 16:29:23
If text_track_cb_ returns a NewBuffersCB then you
Matthew Heaney (Chromium)
2013/05/09 03:53:11
OK, I implemented this roughly as you describe.
|
| + } |
| + |
| cluster_parser_.reset(new WebMClusterParser( |
| info_parser.timecode_scale(), |
| tracks_parser.audio_track_num(), |
| @@ -268,6 +279,18 @@ int WebMStreamParser::ParseCluster(const uint8* data, int size) { |
| if (!video_buffers.empty() && !video_cb_.Run(video_buffers)) |
| return -1; |
| + WebMClusterParser::TextTrackIterator tt_iter = |
| + cluster_parser_->CreateTextTrackIterator(); |
| + |
| + int tt_num; |
| + const BufferQueue* tt_buffers; |
| + |
| + // TODO(matthewjheaney): resolve cardinality |
| + if (tt_iter(&tt_num, &tt_buffers)) { |
| + if (!text_cb_.Run(*tt_buffers)) |
| + return -1; |
| + } |
| + |
| if (cluster_ended) |
| end_of_segment_cb_.Run(); |