| 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..7d54bd95a1d6287ce620195b772d0ca3c6731dfc 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";
 | 
| @@ -486,15 +485,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 +620,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;
 | 
|  }
 | 
|  
 | 
| 
 |