Index: media/mp4/mp4_stream_parser.cc |
diff --git a/media/mp4/mp4_stream_parser.cc b/media/mp4/mp4_stream_parser.cc |
index 56b340a9c6977e770a17daf166bcc0f971b0e525..1d311f40a678e0702270ac51e25f0af0d3d196e5 100644 |
--- a/media/mp4/mp4_stream_parser.cc |
+++ b/media/mp4/mp4_stream_parser.cc |
@@ -42,8 +42,7 @@ MP4StreamParser::~MP4StreamParser() {} |
void MP4StreamParser::Init(const InitCB& init_cb, |
const NewConfigCB& config_cb, |
- const NewBuffersCB& audio_cb, |
- const NewBuffersCB& video_cb, |
+ const NewBuffersCB& new_buffers_cb, |
const NewTextBuffersCB& /* text_cb */ , |
const NeedKeyCB& need_key_cb, |
const AddTextTrackCB& /* add_text_track_cb */ , |
@@ -54,15 +53,14 @@ void MP4StreamParser::Init(const InitCB& init_cb, |
DCHECK(init_cb_.is_null()); |
DCHECK(!init_cb.is_null()); |
DCHECK(!config_cb.is_null()); |
- DCHECK(!audio_cb.is_null() || !video_cb.is_null()); |
+ DCHECK(!new_buffers_cb.is_null()); |
DCHECK(!need_key_cb.is_null()); |
DCHECK(!end_of_segment_cb.is_null()); |
ChangeState(kParsingBoxes); |
init_cb_ = init_cb; |
config_cb_ = config_cb; |
- audio_cb_ = audio_cb; |
- video_cb_ = video_cb; |
+ new_buffers_cb_ = new_buffers_cb; |
need_key_cb_ = need_key_cb; |
new_segment_cb_ = new_segment_cb; |
end_of_segment_cb_ = end_of_segment_cb; |
@@ -324,7 +322,7 @@ bool MP4StreamParser::ParseMoof(BoxReader* reader) { |
runs_.reset(new TrackRunIterator(moov_.get(), log_cb_)); |
RCHECK(runs_->Init(moof)); |
EmitNeedKeyIfNecessary(moof.pssh); |
- new_segment_cb_.Run(runs_->GetMinDecodeTimestamp()); |
+ new_segment_cb_.Run(); |
ChangeState(kEmittingSamples); |
return true; |
} |
@@ -534,16 +532,13 @@ bool MP4StreamParser::EnqueueSample(BufferQueue* audio_buffers, |
bool MP4StreamParser::SendAndFlushSamples(BufferQueue* audio_buffers, |
BufferQueue* video_buffers) { |
- bool err = false; |
- if (!audio_buffers->empty()) { |
- err |= (audio_cb_.is_null() || !audio_cb_.Run(*audio_buffers)); |
- audio_buffers->clear(); |
- } |
- if (!video_buffers->empty()) { |
- err |= (video_cb_.is_null() || !video_cb_.Run(*video_buffers)); |
- video_buffers->clear(); |
- } |
- return !err; |
+ if (audio_buffers->empty() && video_buffers->empty()) |
+ return true; |
+ |
+ bool success = new_buffers_cb_.Run(*audio_buffers, *video_buffers); |
+ audio_buffers->clear(); |
+ video_buffers->clear(); |
+ return success; |
} |
bool MP4StreamParser::ReadAndDiscardMDATsUntil(const int64 offset) { |