Index: content/common/gpu/media/vt_video_decode_accelerator.cc |
diff --git a/content/common/gpu/media/vt_video_decode_accelerator.cc b/content/common/gpu/media/vt_video_decode_accelerator.cc |
index 62658fb70dfd64018f7a1c6a256adde726639372..2bef6931ba062eea1800c4d2039ce2f19383ba60 100644 |
--- a/content/common/gpu/media/vt_video_decode_accelerator.cc |
+++ b/content/common/gpu/media/vt_video_decode_accelerator.cc |
@@ -504,10 +504,10 @@ void VTVideoDecodeAccelerator::Output( |
void VTVideoDecodeAccelerator::DecodeDone(Frame* frame) { |
DCHECK(gpu_thread_checker_.CalledOnValidThread()); |
- DCHECK_EQ(frame->bitstream_id, pending_frames_.front()->bitstream_id); |
+ DCHECK_EQ(1u, pending_frames_.count(frame->bitstream_id)); |
Task task(TASK_FRAME); |
- task.frame = pending_frames_.front(); |
- pending_frames_.pop(); |
+ task.frame = pending_frames_[frame->bitstream_id]; |
+ pending_frames_.erase(frame->bitstream_id); |
task_queue_.push(task); |
ProcessWorkQueues(); |
} |
@@ -530,10 +530,10 @@ void VTVideoDecodeAccelerator::FlushDone(TaskType type) { |
void VTVideoDecodeAccelerator::Decode(const media::BitstreamBuffer& bitstream) { |
DCHECK(gpu_thread_checker_.CalledOnValidThread()); |
- DCHECK_EQ(assigned_bitstream_ids_.count(bitstream.id()), 0u); |
+ DCHECK_EQ(0u, assigned_bitstream_ids_.count(bitstream.id())); |
assigned_bitstream_ids_.insert(bitstream.id()); |
Frame* frame = new Frame(bitstream.id()); |
- pending_frames_.push(make_linked_ptr(frame)); |
+ pending_frames_[frame->bitstream_id] = make_linked_ptr(frame); |
decoder_thread_.message_loop_proxy()->PostTask(FROM_HERE, base::Bind( |
&VTVideoDecodeAccelerator::DecodeTask, base::Unretained(this), |
bitstream, frame)); |