| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/filters/gpu_video_decoder.h" | 5 #include "media/filters/gpu_video_decoder.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
| 9 #include "base/cpu.h" | 9 #include "base/cpu.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 return; | 278 return; |
| 279 } | 279 } |
| 280 | 280 |
| 281 if (!pending_reset_cb_.is_null()) | 281 if (!pending_reset_cb_.is_null()) |
| 282 return; | 282 return; |
| 283 | 283 |
| 284 size_t size = buffer->GetDataSize(); | 284 size_t size = buffer->GetDataSize(); |
| 285 SHMBuffer* shm_buffer = GetSHM(size); | 285 SHMBuffer* shm_buffer = GetSHM(size); |
| 286 memcpy(shm_buffer->shm->memory(), buffer->GetData(), size); | 286 memcpy(shm_buffer->shm->memory(), buffer->GetData(), size); |
| 287 BitstreamBuffer bitstream_buffer( | 287 BitstreamBuffer bitstream_buffer( |
| 288 next_bitstream_buffer_id_++, shm_buffer->shm->handle(), size); | 288 next_bitstream_buffer_id_, shm_buffer->shm->handle(), size); |
| 289 // Mask against 30 bits, to avoid (undefined) wraparound on signed integer. |
| 290 next_bitstream_buffer_id_ = (next_bitstream_buffer_id_ + 1) & 0x3FFFFFFF; |
| 289 bool inserted = bitstream_buffers_in_decoder_.insert(std::make_pair( | 291 bool inserted = bitstream_buffers_in_decoder_.insert(std::make_pair( |
| 290 bitstream_buffer.id(), BufferPair(shm_buffer, buffer))).second; | 292 bitstream_buffer.id(), BufferPair(shm_buffer, buffer))).second; |
| 291 DCHECK(inserted); | 293 DCHECK(inserted); |
| 292 RecordBufferData(bitstream_buffer, *buffer); | 294 RecordBufferData(bitstream_buffer, *buffer); |
| 293 | 295 |
| 294 vda_loop_proxy_->PostTask(FROM_HERE, base::Bind( | 296 vda_loop_proxy_->PostTask(FROM_HERE, base::Bind( |
| 295 &VideoDecodeAccelerator::Decode, weak_vda_, bitstream_buffer)); | 297 &VideoDecodeAccelerator::Decode, weak_vda_, bitstream_buffer)); |
| 296 | 298 |
| 297 if (CanMoreDecodeWorkBeDone()) | 299 if (CanMoreDecodeWorkBeDone()) |
| 298 EnsureDemuxOrDecode(); | 300 EnsureDemuxOrDecode(); |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 582 | 584 |
| 583 error_occured_ = true; | 585 error_occured_ = true; |
| 584 | 586 |
| 585 if (!pending_read_cb_.is_null()) { | 587 if (!pending_read_cb_.is_null()) { |
| 586 base::ResetAndReturn(&pending_read_cb_).Run(kDecodeError, NULL); | 588 base::ResetAndReturn(&pending_read_cb_).Run(kDecodeError, NULL); |
| 587 return; | 589 return; |
| 588 } | 590 } |
| 589 } | 591 } |
| 590 | 592 |
| 591 } // namespace media | 593 } // namespace media |
| OLD | NEW |