Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(536)

Unified Diff: media/formats/mp4/mp4_stream_parser.cc

Issue 2254093002: Return buffers from StreamParsers in a single unified map (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Restored calling GetBuffers after each Parse in WebM test Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/formats/mp4/mp4_stream_parser.h ('k') | media/formats/mp4/mp4_stream_parser_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/formats/mp4/mp4_stream_parser.cc
diff --git a/media/formats/mp4/mp4_stream_parser.cc b/media/formats/mp4/mp4_stream_parser.cc
index af8485b17f9e3f564f32e3619da882e62c9760ef..bd95afce5790351a7f3778a66ed082af8cd04460 100644
--- a/media/formats/mp4/mp4_stream_parser.cc
+++ b/media/formats/mp4/mp4_stream_parser.cc
@@ -101,8 +101,7 @@ bool MP4StreamParser::Parse(const uint8_t* buf, int size) {
queue_.Push(buf, size);
- BufferQueue audio_buffers;
- BufferQueue video_buffers;
+ BufferQueueMap buffers;
bool result = false;
bool err = false;
@@ -125,7 +124,7 @@ bool MP4StreamParser::Parse(const uint8_t* buf, int size) {
break;
case kEmittingSamples:
- result = EnqueueSample(&audio_buffers, &video_buffers, &err);
+ result = EnqueueSample(&buffers, &err);
if (result) {
int64_t max_clear = runs_->GetMaxClearOffset() + moof_head_;
err = !ReadAndDiscardMDATsUntil(max_clear);
@@ -135,7 +134,7 @@ bool MP4StreamParser::Parse(const uint8_t* buf, int size) {
} while (result && !err);
if (!err)
- err = !SendAndFlushSamples(&audio_buffers, &video_buffers);
+ err = !SendAndFlushSamples(&buffers);
if (err) {
DLOG(ERROR) << "Error while parsing MP4";
@@ -200,9 +199,6 @@ bool MP4StreamParser::ParseMoov(BoxReader* reader) {
for (std::vector<Track>::const_iterator track = moov_->tracks.begin();
track != moov_->tracks.end(); ++track) {
- // TODO(strobe): Only the first audio and video track present in a file are
- // used. (Track selection is better accomplished via Source IDs, though, so
- // adding support for track selection within a stream is low-priority.)
const SampleDescription& samp_descr =
track->media.information.sample_table.description;
@@ -486,15 +482,13 @@ bool MP4StreamParser::PrepareAACBuffer(
return true;
}
-bool MP4StreamParser::EnqueueSample(BufferQueue* audio_buffers,
- BufferQueue* video_buffers,
- bool* err) {
+bool MP4StreamParser::EnqueueSample(BufferQueueMap* buffers, bool* err) {
DCHECK_EQ(state_, kEmittingSamples);
if (!runs_->IsRunValid()) {
// Flush any buffers we've gotten in this chunk so that buffers don't
// cross |new_segment_cb_| calls
- *err = !SendAndFlushSamples(audio_buffers, video_buffers);
+ *err = !SendAndFlushSamples(buffers);
if (*err)
return false;
@@ -623,27 +617,16 @@ bool MP4StreamParser::EnqueueSample(BufferQueue* audio_buffers,
<< ", cts=" << runs_->cts().InMilliseconds()
<< ", size=" << runs_->sample_size();
- if (audio) {
- audio_buffers->push_back(stream_buf);
- } else {
- video_buffers->push_back(stream_buf);
- }
-
+ (*buffers)[runs_->track_id()].push_back(stream_buf);
runs_->AdvanceSample();
return true;
}
-bool MP4StreamParser::SendAndFlushSamples(BufferQueue* audio_buffers,
- BufferQueue* video_buffers) {
- if (audio_buffers->empty() && video_buffers->empty())
+bool MP4StreamParser::SendAndFlushSamples(BufferQueueMap* buffers) {
+ if (buffers->empty())
return true;
-
- TextBufferQueueMap empty_text_map;
- bool success = new_buffers_cb_.Run(*audio_buffers,
- *video_buffers,
- empty_text_map);
- audio_buffers->clear();
- video_buffers->clear();
+ bool success = new_buffers_cb_.Run(*buffers);
+ buffers->clear();
return success;
}
« no previous file with comments | « media/formats/mp4/mp4_stream_parser.h ('k') | media/formats/mp4/mp4_stream_parser_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698