| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/mp3/mp3_stream_parser.h" | 5 #include "media/mp3/mp3_stream_parser.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "media/base/bit_reader.h" | 10 #include "media/base/bit_reader.h" |
| 11 #include "media/base/buffers.h" | 11 #include "media/base/buffers.h" |
| 12 #include "media/base/stream_parser_buffer.h" | 12 #include "media/base/stream_parser_buffer.h" |
| 13 #include "media/base/text_track_config.h" |
| 13 #include "media/base/video_decoder_config.h" | 14 #include "media/base/video_decoder_config.h" |
| 14 #include "net/http/http_util.h" | 15 #include "net/http/http_util.h" |
| 15 | 16 |
| 16 namespace media { | 17 namespace media { |
| 17 | 18 |
| 18 static const uint32 kMP3StartCodeMask = 0xffe00000; | 19 static const uint32 kMP3StartCodeMask = 0xffe00000; |
| 19 static const uint32 kICYStartCode = 0x49435920; // 'ICY ' | 20 static const uint32 kICYStartCode = 0x49435920; // 'ICY ' |
| 20 | 21 |
| 21 // Arbitrary upper bound on the size of an IceCast header before it | 22 // Arbitrary upper bound on the size of an IceCast header before it |
| 22 // triggers an error. | 23 // triggers an error. |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 in_media_segment_(false) { | 113 in_media_segment_(false) { |
| 113 } | 114 } |
| 114 | 115 |
| 115 MP3StreamParser::~MP3StreamParser() {} | 116 MP3StreamParser::~MP3StreamParser() {} |
| 116 | 117 |
| 117 void MP3StreamParser::Init(const InitCB& init_cb, | 118 void MP3StreamParser::Init(const InitCB& init_cb, |
| 118 const NewConfigCB& config_cb, | 119 const NewConfigCB& config_cb, |
| 119 const NewBuffersCB& new_buffers_cb, | 120 const NewBuffersCB& new_buffers_cb, |
| 120 const NewTextBuffersCB& text_cb, | 121 const NewTextBuffersCB& text_cb, |
| 121 const NeedKeyCB& need_key_cb, | 122 const NeedKeyCB& need_key_cb, |
| 122 const AddTextTrackCB& add_text_track_cb, | |
| 123 const NewMediaSegmentCB& new_segment_cb, | 123 const NewMediaSegmentCB& new_segment_cb, |
| 124 const base::Closure& end_of_segment_cb, | 124 const base::Closure& end_of_segment_cb, |
| 125 const LogCB& log_cb) { | 125 const LogCB& log_cb) { |
| 126 DVLOG(1) << __FUNCTION__; | 126 DVLOG(1) << __FUNCTION__; |
| 127 DCHECK_EQ(state_, UNINITIALIZED); | 127 DCHECK_EQ(state_, UNINITIALIZED); |
| 128 init_cb_ = init_cb; | 128 init_cb_ = init_cb; |
| 129 config_cb_ = config_cb; | 129 config_cb_ = config_cb; |
| 130 new_buffers_cb_ = new_buffers_cb; | 130 new_buffers_cb_ = new_buffers_cb; |
| 131 new_segment_cb_ = new_segment_cb; | 131 new_segment_cb_ = new_segment_cb; |
| 132 end_of_segment_cb_ = end_of_segment_cb; | 132 end_of_segment_cb_ = end_of_segment_cb; |
| (...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 base::TimeDelta(), base::TimeDelta()); | 403 base::TimeDelta(), base::TimeDelta()); |
| 404 | 404 |
| 405 base::TimeDelta base_timestamp; | 405 base::TimeDelta base_timestamp; |
| 406 if (timestamp_helper_) | 406 if (timestamp_helper_) |
| 407 base_timestamp = timestamp_helper_->GetTimestamp(); | 407 base_timestamp = timestamp_helper_->GetTimestamp(); |
| 408 | 408 |
| 409 timestamp_helper_.reset(new AudioTimestampHelper(sample_rate)); | 409 timestamp_helper_.reset(new AudioTimestampHelper(sample_rate)); |
| 410 timestamp_helper_->SetBaseTimestamp(base_timestamp); | 410 timestamp_helper_->SetBaseTimestamp(base_timestamp); |
| 411 | 411 |
| 412 VideoDecoderConfig video_config; | 412 VideoDecoderConfig video_config; |
| 413 bool success = config_cb_.Run(config_, video_config); | 413 bool success = config_cb_.Run(config_, video_config, TextTrackConfigMap()); |
| 414 | 414 |
| 415 if (!init_cb_.is_null()) | 415 if (!init_cb_.is_null()) |
| 416 base::ResetAndReturn(&init_cb_).Run(success, kInfiniteDuration()); | 416 base::ResetAndReturn(&init_cb_).Run(success, kInfiniteDuration()); |
| 417 | 417 |
| 418 if (!success) | 418 if (!success) |
| 419 return -1; | 419 return -1; |
| 420 } | 420 } |
| 421 | 421 |
| 422 scoped_refptr<StreamParserBuffer> buffer = | 422 scoped_refptr<StreamParserBuffer> buffer = |
| 423 StreamParserBuffer::CopyFrom(data, frame_size, true); | 423 StreamParserBuffer::CopyFrom(data, frame_size, true); |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 588 | 588 |
| 589 if (end_of_segment) { | 589 if (end_of_segment) { |
| 590 in_media_segment_ = false; | 590 in_media_segment_ = false; |
| 591 end_of_segment_cb_.Run(); | 591 end_of_segment_cb_.Run(); |
| 592 } | 592 } |
| 593 | 593 |
| 594 return true; | 594 return true; |
| 595 } | 595 } |
| 596 | 596 |
| 597 } // namespace media | 597 } // namespace media |
| OLD | NEW |