OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "content/renderer/pepper/pepper_audio_encoder_host.h" | 5 #include "content/renderer/pepper/pepper_audio_encoder_host.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 | 333 |
334 return false; | 334 return false; |
335 } | 335 } |
336 | 336 |
337 bool PepperAudioEncoderHost::AllocateBuffers( | 337 bool PepperAudioEncoderHost::AllocateBuffers( |
338 const ppapi::proxy::PPB_AudioEncodeParameters& parameters, | 338 const ppapi::proxy::PPB_AudioEncodeParameters& parameters, |
339 int32_t samples_per_frame) { | 339 int32_t samples_per_frame) { |
340 DCHECK(RenderThreadImpl::current()); | 340 DCHECK(RenderThreadImpl::current()); |
341 | 341 |
342 // Audio buffers size computation. | 342 // Audio buffers size computation. |
343 base::CheckedNumeric<size_t> audio_buffer_size = samples_per_frame; | 343 base::CheckedNumeric<uint32_t> audio_buffer_size = samples_per_frame; |
344 audio_buffer_size *= parameters.channels; | 344 audio_buffer_size *= parameters.channels; |
345 audio_buffer_size *= parameters.input_sample_size; | 345 audio_buffer_size *= parameters.input_sample_size; |
346 | 346 |
347 base::CheckedNumeric<size_t> total_audio_buffer_size = audio_buffer_size; | 347 base::CheckedNumeric<uint32_t> total_audio_buffer_size = audio_buffer_size; |
348 total_audio_buffer_size += sizeof(ppapi::MediaStreamBuffer::Audio); | 348 total_audio_buffer_size += sizeof(ppapi::MediaStreamBuffer::Audio); |
349 base::CheckedNumeric<size_t> total_audio_memory_size = | 349 base::CheckedNumeric<size_t> total_audio_memory_size = |
350 total_audio_buffer_size; | 350 total_audio_buffer_size; |
351 total_audio_memory_size *= kDefaultNumberOfAudioBuffers; | 351 total_audio_memory_size *= kDefaultNumberOfAudioBuffers; |
352 | 352 |
353 // Bitstream buffers size computation (individual bitstream buffers are | 353 // Bitstream buffers size computation (individual bitstream buffers are |
354 // twice the size of the raw data, to handle the worst case where | 354 // twice the size of the raw data, to handle the worst case where |
355 // compression doesn't work). | 355 // compression doesn't work). |
356 base::CheckedNumeric<size_t> bitstream_buffer_size = audio_buffer_size; | 356 base::CheckedNumeric<uint32_t> bitstream_buffer_size = audio_buffer_size; |
357 bitstream_buffer_size *= 2; | 357 bitstream_buffer_size *= 2; |
358 bitstream_buffer_size += sizeof(ppapi::MediaStreamBuffer::Bitstream); | 358 bitstream_buffer_size += sizeof(ppapi::MediaStreamBuffer::Bitstream); |
359 base::CheckedNumeric<size_t> total_bitstream_memory_size = | 359 base::CheckedNumeric<size_t> total_bitstream_memory_size = |
360 bitstream_buffer_size; | 360 bitstream_buffer_size; |
361 total_bitstream_memory_size *= kDefaultNumberOfAudioBuffers; | 361 total_bitstream_memory_size *= kDefaultNumberOfAudioBuffers; |
362 | 362 |
363 if (!total_audio_memory_size.IsValid() || | 363 if (!total_audio_memory_size.IsValid() || |
364 !total_bitstream_memory_size.IsValid()) | 364 !total_bitstream_memory_size.IsValid()) |
365 return false; | 365 return false; |
366 | 366 |
367 std::unique_ptr<base::SharedMemory> audio_memory( | 367 std::unique_ptr<base::SharedMemory> audio_memory( |
368 RenderThreadImpl::current()->HostAllocateSharedMemoryBuffer( | 368 RenderThreadImpl::current()->HostAllocateSharedMemoryBuffer( |
369 total_audio_memory_size.ValueOrDie())); | 369 total_audio_memory_size.ValueOrDie())); |
370 if (!audio_memory) | 370 if (!audio_memory) |
371 return false; | 371 return false; |
372 std::unique_ptr<ppapi::MediaStreamBufferManager> audio_buffer_manager( | 372 std::unique_ptr<ppapi::MediaStreamBufferManager> audio_buffer_manager( |
373 new ppapi::MediaStreamBufferManager(this)); | 373 new ppapi::MediaStreamBufferManager(this)); |
374 if (!audio_buffer_manager->SetBuffers(kDefaultNumberOfAudioBuffers, | 374 if (!audio_buffer_manager->SetBuffers( |
375 total_audio_buffer_size.ValueOrDie(), | 375 kDefaultNumberOfAudioBuffers, |
376 std::move(audio_memory), false)) | 376 base::ValueOrDieForType<int32_t>(total_audio_buffer_size), |
| 377 std::move(audio_memory), false)) |
377 return false; | 378 return false; |
378 | 379 |
379 for (int32_t i = 0; i < audio_buffer_manager->number_of_buffers(); ++i) { | 380 for (int32_t i = 0; i < audio_buffer_manager->number_of_buffers(); ++i) { |
380 ppapi::MediaStreamBuffer::Audio* buffer = | 381 ppapi::MediaStreamBuffer::Audio* buffer = |
381 &(audio_buffer_manager->GetBufferPointer(i)->audio); | 382 &(audio_buffer_manager->GetBufferPointer(i)->audio); |
382 buffer->header.size = total_audio_buffer_size.ValueOrDie(); | 383 buffer->header.size = total_audio_buffer_size.ValueOrDie(); |
383 buffer->header.type = ppapi::MediaStreamBuffer::TYPE_AUDIO; | 384 buffer->header.type = ppapi::MediaStreamBuffer::TYPE_AUDIO; |
384 buffer->sample_rate = | 385 buffer->sample_rate = |
385 static_cast<PP_AudioBuffer_SampleRate>(parameters.input_sample_rate); | 386 static_cast<PP_AudioBuffer_SampleRate>(parameters.input_sample_rate); |
386 buffer->number_of_channels = parameters.channels; | 387 buffer->number_of_channels = parameters.channels; |
387 buffer->number_of_samples = samples_per_frame; | 388 buffer->number_of_samples = samples_per_frame; |
388 buffer->data_size = audio_buffer_size.ValueOrDie(); | 389 buffer->data_size = audio_buffer_size.ValueOrDie(); |
389 } | 390 } |
390 | 391 |
391 std::unique_ptr<base::SharedMemory> bitstream_memory( | 392 std::unique_ptr<base::SharedMemory> bitstream_memory( |
392 RenderThreadImpl::current()->HostAllocateSharedMemoryBuffer( | 393 RenderThreadImpl::current()->HostAllocateSharedMemoryBuffer( |
393 total_bitstream_memory_size.ValueOrDie())); | 394 total_bitstream_memory_size.ValueOrDie())); |
394 if (!bitstream_memory) | 395 if (!bitstream_memory) |
395 return false; | 396 return false; |
396 std::unique_ptr<ppapi::MediaStreamBufferManager> bitstream_buffer_manager( | 397 std::unique_ptr<ppapi::MediaStreamBufferManager> bitstream_buffer_manager( |
397 new ppapi::MediaStreamBufferManager(this)); | 398 new ppapi::MediaStreamBufferManager(this)); |
398 if (!bitstream_buffer_manager->SetBuffers(kDefaultNumberOfAudioBuffers, | 399 if (!bitstream_buffer_manager->SetBuffers( |
399 bitstream_buffer_size.ValueOrDie(), | 400 kDefaultNumberOfAudioBuffers, |
400 std::move(bitstream_memory), true)) | 401 base::ValueOrDieForType<int32_t>(bitstream_buffer_size), |
| 402 std::move(bitstream_memory), true)) |
401 return false; | 403 return false; |
402 | 404 |
403 for (int32_t i = 0; i < bitstream_buffer_manager->number_of_buffers(); ++i) { | 405 for (int32_t i = 0; i < bitstream_buffer_manager->number_of_buffers(); ++i) { |
404 ppapi::MediaStreamBuffer::Bitstream* buffer = | 406 ppapi::MediaStreamBuffer::Bitstream* buffer = |
405 &(bitstream_buffer_manager->GetBufferPointer(i)->bitstream); | 407 &(bitstream_buffer_manager->GetBufferPointer(i)->bitstream); |
406 buffer->header.size = bitstream_buffer_size.ValueOrDie(); | 408 buffer->header.size = bitstream_buffer_size.ValueOrDie(); |
407 buffer->header.type = ppapi::MediaStreamBuffer::TYPE_BITSTREAM; | 409 buffer->header.type = ppapi::MediaStreamBuffer::TYPE_BITSTREAM; |
408 } | 410 } |
409 | 411 |
410 audio_buffer_manager_.swap(audio_buffer_manager); | 412 audio_buffer_manager_.swap(audio_buffer_manager); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 } | 495 } |
494 | 496 |
495 // static | 497 // static |
496 void PepperAudioEncoderHost::StopAudioEncoder( | 498 void PepperAudioEncoderHost::StopAudioEncoder( |
497 std::unique_ptr<AudioEncoderImpl> encoder, | 499 std::unique_ptr<AudioEncoderImpl> encoder, |
498 std::unique_ptr<ppapi::MediaStreamBufferManager> audio_buffer_manager, | 500 std::unique_ptr<ppapi::MediaStreamBufferManager> audio_buffer_manager, |
499 std::unique_ptr<ppapi::MediaStreamBufferManager> bitstream_buffer_manager) { | 501 std::unique_ptr<ppapi::MediaStreamBufferManager> bitstream_buffer_manager) { |
500 } | 502 } |
501 | 503 |
502 } // namespace content | 504 } // namespace content |
OLD | NEW |