Index: media/filters/chunk_demuxer.cc |
diff --git a/media/filters/chunk_demuxer.cc b/media/filters/chunk_demuxer.cc |
index 73dbae6c0cf4e3144b4b2a459642e6b63a74ee39..8f28f7e04bb70a52e328f74e56c24510e8fd6f0d 100644 |
--- a/media/filters/chunk_demuxer.cc |
+++ b/media/filters/chunk_demuxer.cc |
@@ -50,7 +50,7 @@ class SourceState { |
// updated at this time. |
bool SetTimestampOffset(TimeDelta timestamp_offset); |
- TimeDelta timestamp_offset() const { return timestamp_offset_; } |
+ TimeDelta GetTimestampOffset() const { return timestamp_offset_; } |
scherkus (not reviewing)
2013/06/22 00:09:28
wait -- I think this needs to be what it originall
|
private: |
// Called by the |stream_parser_| at the beginning of a new media segment. |
@@ -96,9 +96,7 @@ class SourceState { |
}; |
SourceState::SourceState(scoped_ptr<StreamParser> stream_parser) |
- : can_update_offset_(true), |
- stream_parser_(stream_parser.release()) { |
-} |
+ : can_update_offset_(true), stream_parser_(stream_parser.release()) {} |
void SourceState::Init(const StreamParser::InitCB& init_cb, |
const StreamParser::NewConfigCB& config_cb, |
@@ -109,20 +107,19 @@ void SourceState::Init(const StreamParser::InitCB& init_cb, |
const AddTextTrackCB& add_text_track_cb, |
const StreamParser::NewMediaSegmentCB& new_segment_cb, |
const LogCB& log_cb) { |
- stream_parser_->Init(init_cb, config_cb, |
- base::Bind(&SourceState::OnBuffers, |
- base::Unretained(this), audio_cb), |
- base::Bind(&SourceState::OnBuffers, |
- base::Unretained(this), video_cb), |
- base::Bind(&SourceState::OnTextBuffers, |
- base::Unretained(this), text_cb), |
- need_key_cb, |
- add_text_track_cb, |
- base::Bind(&SourceState::OnNewMediaSegment, |
- base::Unretained(this), new_segment_cb), |
- base::Bind(&SourceState::OnEndOfMediaSegment, |
- base::Unretained(this)), |
- log_cb); |
+ stream_parser_->Init( |
+ init_cb, |
+ config_cb, |
+ base::Bind(&SourceState::OnBuffers, base::Unretained(this), audio_cb), |
+ base::Bind(&SourceState::OnBuffers, base::Unretained(this), video_cb), |
+ base::Bind(&SourceState::OnTextBuffers, base::Unretained(this), text_cb), |
+ need_key_cb, |
+ add_text_track_cb, |
+ base::Bind(&SourceState::OnNewMediaSegment, |
+ base::Unretained(this), |
+ new_segment_cb), |
+ base::Bind(&SourceState::OnEndOfMediaSegment, base::Unretained(this)), |
+ log_cb); |
} |
bool SourceState::SetTimestampOffset(TimeDelta timestamp_offset) { |
@@ -148,10 +145,11 @@ void SourceState::AdjustBufferTimestamps( |
return; |
for (StreamParser::BufferQueue::const_iterator itr = buffers.begin(); |
- itr != buffers.end(); ++itr) { |
- (*itr)->SetDecodeTimestamp( |
- (*itr)->GetDecodeTimestamp() + timestamp_offset_); |
- (*itr)->SetTimestamp((*itr)->GetTimestamp() + timestamp_offset_); |
+ itr != buffers.end(); |
+ ++itr) { |
+ (*itr) |
+ ->SetDecodeTimestamp((*itr)->GetDecodeTimestamp() + timestamp_offset_); |
+ (*itr)->set_timestamp((*itr)->timestamp() + timestamp_offset_); |
} |
} |
@@ -281,15 +279,13 @@ class ChunkDemuxerStream : public DemuxerStream { |
ChunkDemuxerStream::ChunkDemuxerStream(const AudioDecoderConfig& audio_config, |
const LogCB& log_cb) |
- : type_(AUDIO), |
- state_(RETURNING_DATA_FOR_READS) { |
+ : type_(AUDIO), state_(RETURNING_DATA_FOR_READS) { |
stream_.reset(new SourceBufferStream(audio_config, log_cb)); |
} |
ChunkDemuxerStream::ChunkDemuxerStream(const VideoDecoderConfig& video_config, |
const LogCB& log_cb) |
- : type_(VIDEO), |
- state_(RETURNING_DATA_FOR_READS) { |
+ : type_(VIDEO), state_(RETURNING_DATA_FOR_READS) { |
stream_.reset(new SourceBufferStream(video_config, log_cb)); |
} |
@@ -438,8 +434,10 @@ static void RunOnMessageLoop( |
DemuxerStream::Status status, |
const scoped_refptr<DecoderBuffer>& buffer) { |
if (!message_loop_proxy->BelongsToCurrentThread()) { |
- message_loop_proxy->PostTask(FROM_HERE, base::Bind( |
- &RunOnMessageLoop, read_cb, message_loop_proxy, status, buffer)); |
+ message_loop_proxy->PostTask( |
+ FROM_HERE, |
+ base::Bind( |
+ &RunOnMessageLoop, read_cb, message_loop_proxy, status, buffer)); |
return; |
} |
@@ -458,8 +456,8 @@ void ChunkDemuxerStream::Read(const ReadCB& read_cb) { |
} |
} |
- base::MessageLoopProxy::current()->PostTask(FROM_HERE, base::Bind( |
- read_cb, status, buffer)); |
+ base::MessageLoopProxy::current()->PostTask( |
+ FROM_HERE, base::Bind(read_cb, status, buffer)); |
} |
DemuxerStream::Type ChunkDemuxerStream::type() { return type_; } |
@@ -481,8 +479,7 @@ VideoDecoderConfig ChunkDemuxerStream::video_decoder_config() { |
void ChunkDemuxerStream::ChangeState_Locked(State state) { |
lock_.AssertAcquired(); |
DVLOG(1) << "ChunkDemuxerStream::ChangeState_Locked() : " |
- << "type " << type_ |
- << " - " << state_ << " -> " << state; |
+ << "type " << type_ << " - " << state_ << " -> " << state; |
state_ = state; |
} |
@@ -492,8 +489,8 @@ void ChunkDemuxerStream::DeferRead_Locked(const ReadCB& read_cb) { |
lock_.AssertAcquired(); |
// Wrap & store |read_cb| so that it will |
// get called on the current MessageLoop. |
- read_cbs_.push_back(base::Bind(&RunOnMessageLoop, read_cb, |
- base::MessageLoopProxy::current())); |
+ read_cbs_.push_back(base::Bind( |
+ &RunOnMessageLoop, read_cb, base::MessageLoopProxy::current())); |
} |
void ChunkDemuxerStream::CreateReadDoneClosures_Locked(ClosureQueue* closures) { |
@@ -507,8 +504,7 @@ void ChunkDemuxerStream::CreateReadDoneClosures_Locked(ClosureQueue* closures) { |
while (!read_cbs_.empty()) { |
if (!GetNextBuffer_Locked(&status, &buffer)) |
return; |
- closures->push_back(base::Bind(read_cbs_.front(), |
- status, buffer)); |
+ closures->push_back(base::Bind(read_cbs_.front(), status, buffer)); |
read_cbs_.pop_front(); |
} |
} |
@@ -579,8 +575,8 @@ void ChunkDemuxer::Initialize(DemuxerHost* host, const PipelineStatusCB& cb) { |
base::AutoLock auto_lock(lock_); |
if (state_ == SHUTDOWN) { |
- base::MessageLoopProxy::current()->PostTask(FROM_HERE, base::Bind( |
- cb, DEMUXER_ERROR_COULD_NOT_OPEN)); |
+ base::MessageLoopProxy::current()->PostTask( |
+ FROM_HERE, base::Bind(cb, DEMUXER_ERROR_COULD_NOT_OPEN)); |
return; |
} |
DCHECK_EQ(state_, WAITING_FOR_INIT); |
@@ -645,9 +641,7 @@ DemuxerStream* ChunkDemuxer::GetStream(DemuxerStream::Type type) { |
return NULL; |
} |
-TimeDelta ChunkDemuxer::GetStartTime() const { |
- return TimeDelta(); |
-} |
+TimeDelta ChunkDemuxer::GetStartTime() const { return TimeDelta(); } |
void ChunkDemuxer::StartWaitingForSeek() { |
DVLOG(1) << "StartWaitingForSeek()"; |
@@ -693,9 +687,8 @@ ChunkDemuxer::Status ChunkDemuxer::AddId(const std::string& id, |
bool has_audio = false; |
bool has_video = false; |
- scoped_ptr<media::StreamParser> stream_parser( |
- StreamParserFactory::Create(type, codecs, log_cb_, |
- &has_audio, &has_video)); |
+ scoped_ptr<media::StreamParser> stream_parser(StreamParserFactory::Create( |
+ type, codecs, log_cb_, &has_audio, &has_video)); |
if (!stream_parser) |
return ChunkDemuxer::kNotSupported; |
@@ -709,21 +702,23 @@ ChunkDemuxer::Status ChunkDemuxer::AddId(const std::string& id, |
if (has_audio) { |
source_id_audio_ = id; |
- audio_cb = base::Bind(&ChunkDemuxer::OnAudioBuffers, |
- base::Unretained(this)); |
+ audio_cb = |
+ base::Bind(&ChunkDemuxer::OnAudioBuffers, base::Unretained(this)); |
} |
if (has_video) { |
source_id_video_ = id; |
- video_cb = base::Bind(&ChunkDemuxer::OnVideoBuffers, |
- base::Unretained(this)); |
+ video_cb = |
+ base::Bind(&ChunkDemuxer::OnVideoBuffers, base::Unretained(this)); |
} |
scoped_ptr<SourceState> source_state(new SourceState(stream_parser.Pass())); |
source_state->Init( |
base::Bind(&ChunkDemuxer::OnSourceInitDone, base::Unretained(this)), |
- base::Bind(&ChunkDemuxer::OnNewConfigs, base::Unretained(this), |
- has_audio, has_video), |
+ base::Bind(&ChunkDemuxer::OnNewConfigs, |
+ base::Unretained(this), |
+ has_audio, |
+ has_video), |
audio_cb, |
video_cb, |
base::Bind(&ChunkDemuxer::OnTextBuffers, base::Unretained(this)), |
@@ -800,7 +795,7 @@ Ranges<TimeDelta> ChunkDemuxer::ComputeIntersection() const { |
// This is enforced by the logic that controls the transition to ENDED. |
DCHECK((audio_start <= video_start && video_start <= audio_end) || |
(video_start <= audio_start && audio_start <= video_end)); |
- result.Add(result.end(result.size()-1), std::max(audio_end, video_end)); |
+ result.Add(result.end(result.size() - 1), std::max(audio_end, video_end)); |
} |
return result; |
@@ -1026,15 +1021,16 @@ void ChunkDemuxer::Shutdown() { |
void ChunkDemuxer::ChangeState_Locked(State new_state) { |
lock_.AssertAcquired(); |
- DVLOG(1) << "ChunkDemuxer::ChangeState_Locked() : " |
- << state_ << " -> " << new_state; |
+ DVLOG(1) << "ChunkDemuxer::ChangeState_Locked() : " << state_ << " -> " |
+ << new_state; |
state_ = new_state; |
} |
ChunkDemuxer::~ChunkDemuxer() { |
DCHECK_NE(state_, INITIALIZED); |
for (SourceStateMap::iterator it = source_state_map_.begin(); |
- it != source_state_map_.end(); ++it) { |
+ it != source_state_map_.end(); |
+ ++it) { |
delete it->second; |
} |
source_state_map_.clear(); |
@@ -1086,8 +1082,8 @@ bool ChunkDemuxer::IsSeekPending_Locked() const { |
} |
void ChunkDemuxer::OnSourceInitDone(bool success, TimeDelta duration) { |
- DVLOG(1) << "OnSourceInitDone(" << success << ", " |
- << duration.InSecondsF() << ")"; |
+ DVLOG(1) << "OnSourceInitDone(" << success << ", " << duration.InSecondsF() |
+ << ")"; |
lock_.AssertAcquired(); |
DCHECK_EQ(state_, INITIALIZING); |
if (!success || (!audio_ && !video_)) { |
@@ -1117,12 +1113,13 @@ void ChunkDemuxer::OnSourceInitDone(bool success, TimeDelta duration) { |
base::ResetAndReturn(&init_cb_).Run(PIPELINE_OK); |
} |
-bool ChunkDemuxer::OnNewConfigs(bool has_audio, bool has_video, |
+bool ChunkDemuxer::OnNewConfigs(bool has_audio, |
+ bool has_video, |
const AudioDecoderConfig& audio_config, |
const VideoDecoderConfig& video_config) { |
- DVLOG(1) << "OnNewConfigs(" << has_audio << ", " << has_video |
- << ", " << audio_config.IsValidConfig() |
- << ", " << video_config.IsValidConfig() << ")"; |
+ DVLOG(1) << "OnNewConfigs(" << has_audio << ", " << has_video << ", " |
+ << audio_config.IsValidConfig() << ", " |
+ << video_config.IsValidConfig() << ")"; |
lock_.AssertAcquired(); |
if (!audio_config.IsValidConfig() && !video_config.IsValidConfig()) { |
@@ -1205,25 +1202,24 @@ bool ChunkDemuxer::OnVideoBuffers(const StreamParser::BufferQueue& buffers) { |
return true; |
} |
-bool ChunkDemuxer::OnTextBuffers( |
- TextTrack* text_track, |
- const StreamParser::BufferQueue& buffers) { |
+bool ChunkDemuxer::OnTextBuffers(TextTrack* text_track, |
+ const StreamParser::BufferQueue& buffers) { |
lock_.AssertAcquired(); |
DCHECK_NE(state_, SHUTDOWN); |
// TODO(matthewjheaney): IncreaseDurationIfNecessary |
for (StreamParser::BufferQueue::const_iterator itr = buffers.begin(); |
- itr != buffers.end(); ++itr) { |
+ itr != buffers.end(); |
+ ++itr) { |
const StreamParserBuffer* const buffer = itr->get(); |
- const base::TimeDelta start = buffer->GetTimestamp(); |
- const base::TimeDelta end = start + buffer->GetDuration(); |
+ const base::TimeDelta start = buffer->timestamp(); |
+ const base::TimeDelta end = start + buffer->duration(); |
std::string id, settings, content; |
- WebMWebVTTParser::Parse(buffer->GetData(), |
- buffer->GetDataSize(), |
- &id, &settings, &content); |
+ WebMWebVTTParser::Parse( |
+ buffer->data(), buffer->data_size(), &id, &settings, &content); |
text_track->addWebVTTCue(start, end, id, content, settings); |
} |
@@ -1272,7 +1268,7 @@ void ChunkDemuxer::IncreaseDurationIfNecessary( |
const StreamParser::BufferQueue& buffers, |
ChunkDemuxerStream* stream) { |
DCHECK(!buffers.empty()); |
- if (buffers.back()->GetTimestamp() <= duration_) |
+ if (buffers.back()->timestamp() <= duration_) |
return; |
Ranges<TimeDelta> ranges = stream->GetBufferedRanges(kInfiniteDuration()); |