// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef PPAPI_PROXY_MEDIA_STREAM_TRACK_RESOURCE_BASE_H_ #define PPAPI_PROXY_MEDIA_STREAM_TRACK_RESOURCE_BASE_H_ #include #include "base/macros.h" #include "ppapi/proxy/plugin_resource.h" #include "ppapi/proxy/ppapi_proxy_export.h" #include "ppapi/shared_impl/media_stream_buffer_manager.h" namespace ppapi { namespace proxy { class PPAPI_PROXY_EXPORT MediaStreamTrackResourceBase : public PluginResource, public MediaStreamBufferManager::Delegate { protected: MediaStreamTrackResourceBase(Connection connection, PP_Instance instance, int pending_renderer_id, const std::string& id); MediaStreamTrackResourceBase(Connection connection, PP_Instance instance); ~MediaStreamTrackResourceBase() override; std::string id() const { return id_; } void set_id(const std::string& id) { id_ = id; } bool has_ended() const { return has_ended_; } MediaStreamBufferManager* buffer_manager() { return &buffer_manager_; } void CloseInternal(); // Sends a buffer index to the corresponding PepperMediaStreamTrackHostBase // via an IPC message. The host adds the buffer index into its // |buffer_manager_| for reading or writing. // Also see |MediaStreamBufferManager|. void SendEnqueueBufferMessageToHost(int32_t index); // PluginResource overrides: void OnReplyReceived(const ResourceMessageReplyParams& params, const IPC::Message& msg) override; private: // Message handlers: void OnPluginMsgInitBuffers(const ResourceMessageReplyParams& params, int32_t number_of_buffers, int32_t buffer_size, bool readonly); void OnPluginMsgEnqueueBuffer(const ResourceMessageReplyParams& params, int32_t index); void OnPluginMsgEnqueueBuffers(const ResourceMessageReplyParams& params, const std::vector& indices); MediaStreamBufferManager buffer_manager_; std::string id_; bool has_ended_; DISALLOW_COPY_AND_ASSIGN(MediaStreamTrackResourceBase); }; } // namespace proxy } // namespace ppapi #endif // PPAPI_PROXY_MEDIA_STREAM_TRACK_RESOURCE_BASE_H_