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

Unified Diff: content/renderer/pepper/pepper_media_stream_track_host_base.cc

Issue 290993005: Support configuring number of audio buffers in MediaStream Pepper API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix uninitialized variable Created 6 years, 7 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
Index: content/renderer/pepper/pepper_media_stream_track_host_base.cc
diff --git a/content/renderer/pepper/pepper_media_stream_track_host_base.cc b/content/renderer/pepper/pepper_media_stream_track_host_base.cc
index d76684eecf22f0ef9f042e33020c12a3875e109d..9ad40a9cf08f8de9ce4f9839ae8a934b1fbc09d2 100644
--- a/content/renderer/pepper/pepper_media_stream_track_host_base.cc
+++ b/content/renderer/pepper/pepper_media_stream_track_host_base.cc
@@ -5,6 +5,7 @@
#include "content/renderer/pepper/pepper_media_stream_track_host_base.h"
#include "base/logging.h"
+#include "base/numerics/safe_math.h"
#include "content/public/renderer/render_thread.h"
#include "content/public/renderer/renderer_ppapi_host.h"
#include "ppapi/c/pp_errors.h"
@@ -36,20 +37,26 @@ bool PepperMediaStreamTrackHostBase::InitBuffers(int32_t number_of_buffers,
DCHECK_GT(buffer_size,
static_cast<int32_t>(sizeof(ppapi::MediaStreamBuffer::Header)));
// Make each buffer 4 byte aligned.
- buffer_size = (buffer_size + 3) & ~0x3;
+ base::CheckedNumeric<int32_t> buffer_size_aligned = buffer_size;
+ buffer_size_aligned += (4 - buffer_size % 4);
// TODO(penghuang): |HostAllocateSharedMemoryBuffer| uses sync IPC. We should
// avoid it.
- int32_t size = number_of_buffers * buffer_size;
+ base::CheckedNumeric<int32_t> size = number_of_buffers * buffer_size_aligned;
+ if (!size.IsValid())
+ return false;
+
content::RenderThread* render_thread = content::RenderThread::Get();
scoped_ptr<base::SharedMemory> shm(
- render_thread->HostAllocateSharedMemoryBuffer(size).Pass());
+ render_thread->HostAllocateSharedMemoryBuffer(size.ValueOrDie()).Pass());
if (!shm)
return false;
base::SharedMemoryHandle shm_handle = shm->handle();
- if (!buffer_manager_.SetBuffers(
- number_of_buffers, buffer_size, shm.Pass(), true)) {
+ if (!buffer_manager_.SetBuffers(number_of_buffers,
+ buffer_size_aligned.ValueOrDie(),
+ shm.Pass(),
+ true)) {
return false;
}
@@ -62,13 +69,14 @@ bool PepperMediaStreamTrackHostBase::InitBuffers(int32_t number_of_buffers,
#error Not implemented.
#endif
SerializedHandle handle(host_->ShareHandleWithRemote(platform_file, false),
- size);
+ size.ValueOrDie());
bool readonly = (track_type == kRead);
host()->SendUnsolicitedReplyWithHandles(
pp_resource(),
- PpapiPluginMsg_MediaStreamTrack_InitBuffers(number_of_buffers,
- buffer_size,
- readonly),
+ PpapiPluginMsg_MediaStreamTrack_InitBuffers(
+ number_of_buffers,
+ buffer_size_aligned.ValueOrDie(),
+ readonly),
std::vector<SerializedHandle>(1, handle));
return true;
}
« no previous file with comments | « content/renderer/pepper/pepper_media_stream_audio_track_host.cc ('k') | ppapi/api/ppb_media_stream_audio_track.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698