| 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 d477f0bb83fe503d0bd740f49d584afa861620d1..3a4ada04a2b3a0946acf93f6dc6cfb281508a635 100644
|
| --- a/media/formats/webm/webm_stream_parser.cc
|
| +++ b/media/formats/webm/webm_stream_parser.cc
|
| @@ -20,6 +20,7 @@ namespace media {
|
|
|
| WebMStreamParser::WebMStreamParser()
|
| : state_(kWaitingForInit),
|
| + unknown_segment_size_(false),
|
| parsing_cluster_(false) {
|
| }
|
|
|
| @@ -150,6 +151,9 @@ int WebMStreamParser::ParseInfoAndTracks(const uint8* data, int size) {
|
| return result + element_size;
|
| break;
|
| case kWebMIdSegment:
|
| + // Segment of unknown size indicates live stream.
|
| + if (element_size == kWebMUnknownSize)
|
| + unknown_segment_size_ = true;
|
| // Just consume the segment header.
|
| return result;
|
| break;
|
| @@ -190,6 +194,9 @@ int WebMStreamParser::ParseInfoAndTracks(const uint8* data, int size) {
|
|
|
| params.timeline_offset = info_parser.date_utc();
|
|
|
| + params.live_mode = unknown_segment_size_ && (info_parser.duration() <= 0) &&
|
| + !info_parser.date_utc().is_null();
|
| +
|
| const AudioDecoderConfig& audio_config = tracks_parser.audio_decoder_config();
|
| if (audio_config.is_encrypted())
|
| FireNeedKey(tracks_parser.audio_encryption_key_id());
|
| @@ -205,7 +212,6 @@ int WebMStreamParser::ParseInfoAndTracks(const uint8* data, int size) {
|
| return -1;
|
| }
|
|
|
| -
|
| cluster_parser_.reset(new WebMClusterParser(
|
| info_parser.timecode_scale(),
|
| tracks_parser.audio_track_num(),
|
|
|