PP_Resource resource)
: ResourceHost(host->GetPpapiHost(), instance, resource),
host_(host),
- buffer_manager_(this) {
-}
+ buffer_manager_(this) {}
-PepperMediaStreamTrackHostBase::~PepperMediaStreamTrackHostBase() {
-}
+PepperMediaStreamTrackHostBase::~PepperMediaStreamTrackHostBase() {}
bool PepperMediaStreamTrackHostBase::InitBuffers(int32_t number_of_buffers,
- int32_t buffer_size) {
+ int32_t buffer_size,
+ TrackType track_type) {
DCHECK_GT(number_of_buffers, 0);
DCHECK_GT(buffer_size,
static_cast<int32_t>(sizeof(ppapi::MediaStreamBuffer::Header)));
base::SharedMemoryHandle shm_handle = shm->handle();
if (!buffer_manager_.SetBuffers(
- number_of_buffers, buffer_size, shm.Pass(), true)) {
+ number_of_buffers, buffer_size, shm.Pass(), true)) {
return false;
}
base::PlatformFile platform_file =
#if defined(OS_WIN)
- shm_handle;
+ shm_handle;
#elif defined(OS_POSIX)
- shm_handle.fd;
+ shm_handle.fd;
#else
#error Not implemented.
#endif
- SerializedHandle handle(
- host_->ShareHandleWithRemote(platform_file, false), size);
- host()->SendUnsolicitedReplyWithHandles(pp_resource(),
+ SerializedHandle handle(host_->ShareHandleWithRemote(platform_file, false),
+ size);
+ bool readonly = (track_type == kRead);
+ host()->SendUnsolicitedReplyWithHandles(
+ pp_resource(),
PpapiPluginMsg_MediaStreamTrack_InitBuffers(number_of_buffers,
- buffer_size),
+ buffer_size,
+ readonly),
std::vector<SerializedHandle>(1, handle));
return true;
}
int32_t index) {
DCHECK_GE(index, 0);
DCHECK_LT(index, buffer_manager_.number_of_buffers());
+ host()->SendUnsolicitedReply(
+ pp_resource(), PpapiPluginMsg_MediaStreamTrack_EnqueueBuffer(index));
+}
+
+void PepperMediaStreamTrackHostBase::SendEnqueueBuffersMessageToPlugin(
+ const std::vector<int32_t>& indices) {
+ DCHECK_GE(indices.size(), 0U);
host()->SendUnsolicitedReply(pp_resource(),
- PpapiPluginMsg_MediaStreamTrack_EnqueueBuffer(index));
+ PpapiPluginMsg_MediaStreamTrack_EnqueueBuffers(indices));
}
int32_t PepperMediaStreamTrackHostBase::OnResourceMessageReceived(
const IPC::Message& msg,
HostMessageContext* context) {
IPC_BEGIN_MESSAGE_MAP(PepperMediaStreamTrackHostBase, msg)
- PPAPI_DISPATCH_HOST_RESOURCE_CALL(
- PpapiHostMsg_MediaStreamTrack_EnqueueBuffer, OnHostMsgEnqueueBuffer)
- PPAPI_DISPATCH_HOST_RESOURCE_CALL_0(
- PpapiHostMsg_MediaStreamTrack_Close, OnHostMsgClose)
+ PPAPI_DISPATCH_HOST_RESOURCE_CALL(PpapiHostMsg_MediaStreamTrack_EnqueueBuffer,
+ OnHostMsgEnqueueBuffer)
+ PPAPI_DISPATCH_HOST_RESOURCE_CALL_0(PpapiHostMsg_MediaStreamTrack_Close,
+ OnHostMsgClose)
IPC_END_MESSAGE_MAP()
return ppapi::host::ResourceHost::OnResourceMessageReceived(msg, context);
}